Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Coldplay poslato Februar 20, 2013, 18:03:49 POSLE PODNE

Naslov: [TuT] Dynamic Firma System
Poruka od: Coldplay poslato Februar 20, 2013, 18:03:49 POSLE PODNE
UVOD
Evo, da ozivivmo ovaj podforum, svjezim tutorijalima :D ... Ovo ce biti objasnjeno, tako da svi mogu razmujeti, pa cak i oni koji nikada nisu vidjeli pawno. Jer cemu sluzi tutorial, nego da naucis nove stvari?








TUTORIAL
1 Korak:Prvo moramo staviti sve potrebne include-ve...
Mala Skola Skriptanja
#include <a_samp> je potreban include za sve FilterScripte i GameModove
#include <YSI\y_commands> Mi cemo koristiti ovaj procesor komandi, jer je po meni najbolji, i po preporukama, najbrzi
#include <YSI\y_ini> Posto koristimo YCMD procesor komandi, koristicemo i spremanje!
Kod vezan za tutorial
#include <YSI\y_commands> // Mi cemo koristiti ovaj procesor komandi, jer je po meni najbolji, i po preporukama, najbrzi
#include <YSI\y_ini>// spremanje podataka







2 Korak:Sada cemo definirati nekoliko stvari
Mala Skola Skriptanja

Å to znaci ''#define SCM SendClientMessage'' Kako ne bi se mucili i stalno pisali SendClientMessage, jednostavno cemo je definirati SCM, kako bismo ustedjeli vrijeme

Å to znaci ''#define FPATH "/Firme/%i.ini"'' Ovdje cemo koristiti spremanje bizinisa i sve unutar njega

Kod vezan za tutorial
#define SCM SendClientMessage
#define FPATH "/Firme/%i.ini" //Spremanje
#define COLOR_GREY          0xAFAFAFAA // Siva boja







3 Korak:Sada cemo napraviti provjeru, ali vise o tome kasnije
Kod vezan za tutorial
new uFirmi;[MAX_PLAYERS]




4 Korak:Sada cemo napraviti enum, vise objasnjenja u kodu


Kod vezan za tutorial

enum fInformacije {
    fOwned, // Imali vlasnika
    fCijena, // Kolika je cjena
    fVlasnik[MAX_PLAYER_NAME],// Ako ima vlasnika, ime njegovo
    fTip, // Tip firme, npr butik
    fZakljucana, // Jeli zakljucana
    fNovac,// Novac firme
    Float:fUlazX,//Koordinata X ulaza u firmu
    Float:fUlazY,//Koordinata Y ulaza u firmu
    Float:fUlazZ,//Koordinata Z ulaza u firmu
    Float:fUlazA,//Koordinata A ulaza u firmu
    Float:fIzasaoX,// Koordinata X izlaza iz firme
    Float:fIzasaoY,// Koordinata Y izlaza iz firme
    Float:fIzasaoZ,// Koordinata Z izlaza iz firme
    Float:fIzasaoA,// Koordinata A izlaza iz firme
    fInt,// Interior
    fVW,// Virtual World
    fUinterioru,
    fUvw,
    fIkona,
    fIzvanIkone,
    fIme[128]
}
new FirmaInformacije[200][fInformacije];





5 Korak:U vas ''enum PlayerInfo'' stavite ovaj kod (vise o tomu kasnije)


Kod vezan za tutorial
FirmaID




6 Korak:Sada idemo u ''OnGameModeInit''


Kod vezan za tutorial
new str[40];
    for(new idx = 1; idx < sizeof(FirmaInformacije); idx++)// Kreira loop, koji ce ici kroz sve firme
    {
        format(str, sizeof(str), FPATH, idx);// Ovo ide u spremanje, koje smo napravili ranije
        INI_ParseFile(str, "sacuvajbiz_%s", .fExtra = true, .extra = idx );
        FirmaInformacije[idx][fIkona] = CreateDynamicPickup(1272, 1, FirmaInformacije[idx][fUlazX], FirmaInformacije[idx][fUlazY], FirmaInformacije[idx][fUlazZ], FirmaInformacije[idx][fVW]); // Ovo ce automatski napravi pickup (ULAZ)
        FirmaInformacije[idx][fIzvanIkone] = CreateDynamicPickup(1272, 1, FirmaInformacije[idx][fIzasaoX], FirmaInformacije[idx][fIzasaoY], FirmaInformacije[idx][fIzasaoZ], FirmaInformacije[idx][fUvw]); // Kreira pickup unutar interijera
    }





7 Korak:Sada cemo u ''OnGameModeExit'', staviti jos nekoliko podataka...


Kod vezan za tutorial
for(new id = 1; id < sizeof(FirmaInformacije); id++)// Loop...
    {
        if(FirmaInformacije[id][fCijena] == 0) break;//Krsi cijenu ako je cjena 0 (kao da ne postoji)
        CuvajFirmu(id);// Funkcija Cuvaj Firmu ili ako ocete da je SaveFirma...
    }





8 Korak:Sada cemo napraviti public za cuvanje firme, ili ti CuvajFirmu...


Kod vezan za tutorial
forward CuvajFirmu(id);
public CuvajFirmu(id)
{
    new file4[40];
    format(file4, sizeof(file4), FPATH, id);
    new INI:File = INI_Open(file4);
    INI_SetTag(File,"data");
    INI_WriteInt(File,"fOwned", FirmaInformacije[id][fOwned]);
    INI_WriteInt(File,"fCijena", FirmaInformacije[id][fCijena]);
    INI_WriteString(File,"fVlasnik", FirmaInformacije[id][fVlasnik]);
    INI_WriteInt(File,"fTip", FirmaInformacije[id][fTip]);
    INI_WriteInt(File,"fZakljucana", FirmaInformacije[id][fZakljucan]);
    INI_WriteInt(File,"fNovac", FirmaInformacije[id][fNovac]);
    INI_WriteFloat(File,"fUlazX", FirmaInformacije[id][fUlazX]);
    INI_WriteFloat(File,"fUlazY", FirmaInformacije[id][fUlazY]);
    INI_WriteFloat(File,"fUlazZ", FirmaInformacije[id][fUlazZ]);
    INI_WriteFloat(File,"fUlazA", FirmaInformacije[id][fUlazA]);
    INI_WriteFloat(File,"fIzasaoX", FirmaInformacije[id][fIzasaoX]);
    INI_WriteFloat(File,"fIzasaoY", FirmaInformacije[id][fIzasaoY]);
    INI_WriteFloat(File,"fIzasaoZ", FirmaInformacije[id][fIzasaoZ]);
    INI_WriteFloat(File,"fIzasaoA", FirmaInformacije[id][fIzasaoA]);
    INI_WriteInt(File,"fInt", FirmaInformacije[id][fInt]);
    INI_WriteInt(File,"fVW", FirmaInformacije[id][fVW]);
    INI_WriteInt(File,"fUinterioru", FirmaInformacije[id][fUinterioru]);
    INI_WriteInt(File,"fUvw", FirmaInformacije[id][fUvw]);
    INI_WriteString(File,"fIme", FirmaInformacije[id][fIme]);
    INI_Close(File);
    return 1;
}



9 Korak:Moramo sada "vratiti" sve podatke o biznisu igraču ako ponovo udje u igru (ako ne razumijete, procitajte o spremanju y_ini-a).


Kod vezan za tutorial
forward sacuvajbiz_data(idx, name[], value[]);
public sacuvajbiz_data(idx, name[], value[])
{
    INI_Int("fOwned", FirmaInformacije[idx][fOwned]);
    INI_Int("fCijena", FirmaInformacije[idx][fCijena]);
    INI_String("fVlasnik", FirmaInformacije[idx][fVlasnik], 24);
    INI_Int("fTip", FirmaInformacije[idx][fTip]);
    INI_Int("fZakljucan", FirmaInformacije[idx][fZakljucan]);
    INI_Int("fNovac", FirmaInformacije[idx][fNovac]);
    INI_Float("fUlazX", FirmaInformacije[idx][fUlazX]);
    INI_Float("fUlazY", FirmaInformacije[idx][fUlazY]);
    INI_Float("fUlazZ", FirmaInformacije[idx][fUlazZ]);
    INI_Float("fUlazA", FirmaInformacije[idx][fUlazA]);
    INI_Float("fIzasaoX", FirmaInformacije[idx][fIzasaoX]);
    INI_Float("fIzasaoY", FirmaInformacije[idx][fIzasaoY]);
    INI_Float("fIzasaoZ", FirmaInformacije[idx][fIzasaoZ]);
    INI_Float("fIzasaoA", FirmaInformacije[idx][fIzasaoA]);
    INI_Int("fInt", FirmaInformacije[idx][fInt]);
    INI_Int("fVW", FirmaInformacije[idx][fVW]);
    INI_Int("fUinterioru", FirmaInformacije[idx][fUinterioru]);
    INI_Int("fUvw", FirmaInformacije[idx][fUvw]);
    INI_String("fIme", FirmaInformacije[idx][fIme], 128);
    return 1;
}



10 Korak:Sada možemo raditi komande koje idu uz firmu.


Kod vezan za tutorial
YCMD:napravifirmu(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SCM(playerid, COLOR_GREY, "Nisi ovlasten da koristis ovu komandu");//Provjerava da li je igrač RCON admin... Ovo promjenite u vas Admin system, tj. u vasu provjeru jeli admin, ako zelite se koristiti svojim adminom iz GameMode-a

    new cijena, level, id, int, fVW, string[128], Float:Xi, Float:Yi, Float:Zi, inti;// Sve definicije koje trebamo
    if(sscanf(params, "dddfff", cijena, level, inti, Xi, Yi, Zi)) return SendClientMessage(playerid, COLOR_GREY, "Server: /napravi firmu [cijena] [tip firme] [interior] [X] [Y] [Z]");

    if(level < 0 || level > 4) return SendClientMessage(playerid, COLOR_GREY, "Server: Ne ispod 0 ne vise od 10");//

    if(cijena < 10000) return SendClientMessage(playerid, COLOR_GREY, "Server: cijena ne smije biti ispod 10.000 $");// Provjerava koliko unosi cjenu, slobodno promjenite u koju ocete

    for(new h = 1;h < sizeof(FirmaInformacije);h++)
    {
        if(FirmaInformacije[h][fCijena] == 0)
        {
            id = h;
            break;
        }
    }
    new Float:X,Float:Y,Float:Z,Float:A;//Jos definicija
    GetPlayerPos(playerid, X, Y, Z);//Dobiva igračevu poziciju, i sprema je u float
    GetPlayerFacingAngle(playerid, A);
    int = GetPlayerInterior(playerid);//Dobiva igračev interijer
    world = GetPlayerVirtualWorld(playerid);//Virutal World
    FirmaInformacije[id][fUinterioru] = inti;
    FirmaInformacije[id][fIzasaoX] = Xi;
    FirmaInformacije[id][fIzasaoY] = Yi;
    FirmaInformacije[id][fIzasaoZ] = Zi;
   
    FirmaInformacije[id][fOwned] = 0;
    FirmaInformacije[id][fCijena] = cijena;
    FirmaInformacije[id][fTip] = level;
    FirmaInformacije[id][fUlazX] = X;
    FirmaInformacije[id][fUlazY] = Y;
    FirmaInformacije[id][fUlazZ] = Z;
    FirmaInformacije[id][fUlazA] = A;
    FirmaInformacije[id][fZakljucano] = 1;

    FirmaInformacije[id][fInt] =int;
    FirmaInformacije[id][fVW] =world;
    FirmaInformacije[id][fUvw] =id;
   
    format(string, sizeof(string), "Nema");
    strmid(FirmaInformacije[id][fIme], string, 0, strlen(string), 255);
   
    if(FirmaInformacije[id][fIzvanIkone]) DestroyDynamicPickup(FirmaInformacije[id][fIzvanIkone]);
    if(FirmaInformacije[id][fIkona]) DestroyDynamicPickup(FirmaInformacije[id][fIkona]);
    FirmaInformacije[id][fIzvanIkone] = CreateDynamicPickup(1272, 1, FirmaInformacije[id][fUlazX], FirmaInformacije[id][fUlazY], FirmaInformacije[id][fUlazZ], FirmaInformacije[id][fVW]);//Stvara pickup na vasoj lokaciji
    FirmaInformacije[id][fIkona] = CreateDynamicPickup(1272, 1, FirmaInformacije[id][fIzasaoX], FirmaInformacije[id][fIzasaoY], FirmaInformacije[id][fIzasaoZ], FirmaInformacije[id][fUvw]);//Stvara pickup na vasoj lokaciji
    new file4[40];
    format(file4, sizeof(file4), FPATH, id);
    new INI:File = INI_Open(file4);
    INI_SetTag(File,"data");
    INI_WriteInt(File,"fOwned", FirmaInformacije[id][fOwned]);
    INI_WriteInt(File,"fCijena", FirmaInformacije[id][fCijena]);
    INI_WriteString(File,"fVlasnik", FirmaInformacije[id][fVlasnik]);
    INI_WriteInt(File,"fTip", FirmaInformacije[id][fTip]);
    INI_WriteInt(File,"fZakljucano", FirmaInformacije[id][fZakljucano]);
    INI_WriteInt(File,"fNovac", FirmaInformacije[id][fNovac]);
    INI_WriteFloat(File,"fUlazX", FirmaInformacije[id][fUlazX]);
    INI_WriteFloat(File,"fUlazY", FirmaInformacije[id][fUlazY]);
    INI_WriteFloat(File,"fUlazZ", FirmaInformacije[id][fUlazZ]);
    INI_WriteFloat(File,"fUlazA", FirmaInformacije[id][fUlazA]);
    INI_WriteFloat(File,"fIzasaoX", FirmaInformacije[id][fIzasaoX]);
    INI_WriteFloat(File,"fIzasaoY", FirmaInformacije[id][fIzasaoY]);
    INI_WriteFloat(File,"fIzasaoZ", FirmaInformacije[id][fIzasaoZ]);
    INI_WriteFloat(File,"fIzasaoA", FirmaInformacije[id][fIzasaoA]);
    INI_WriteInt(File,"fInt", FirmaInformacije[id][fInt]);
    INI_WriteInt(File,"fVW", FirmaInformacije[id][fVW]);
    INI_WriteInt(File,"fUinterioru", FirmaInformacije[id][fUinterioru]);
    INI_WriteInt(File,"fUvw", FirmaInformacije[id][fUvw]);
    INI_WriteString(File,"fIme", FirmaInformacije[id][fIme]);
    INI_Close(File);
    return 1;
}



11 Korak:Izbrisati firmu cemo napraviti... S komandom /Izbrisifirmu


Kod vezan za tutorial

YCMD:izbrisifirmu(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return 1; // Provjerava da li je igrač RCON admin, slobodno promjenite u admin system, kakav je u vasem GameMode-u

    new id;

    if(sscanf(params, "d", id)) return SendClientMessage(playerid, COLOR_GREY, "YCMD: /izbrisifirmu [id]");
    if(FirmaInformacije[id][fOwned] == 1) return SCM(playerid, COLOR_GREY, "Ova firma ima vlasnika");//Provjerava da li firma ima vlasnika, ako ima, nece je izbrisati
        // Restartira sve opcije u enumu
    FirmaInformacije[id][fOwned] = 0;
    FirmaInformacije[id][fCijena] = 0;
    FirmaInformacije[id][fVlasnik] = 0;
    FirmaInformacije[id][fTip] = 0;
    FirmaInformacije[id][fZakljucano] = 0;
    FirmaInformacije[id][fIme] = 0;
    FirmaInformacije[id][fNovac] = 0;
    FirmaInformacije[id][fUlazX] = 0;
    FirmaInformacije[id][fUlazY] = 0;
    FirmaInformacije[id][fUlazZ] = 0;
    FirmaInformacije[id][fUlazA] = 0;
    FirmaInformacije[id][fIzasaoX] = 0;
    FirmaInformacije[id][fIzasaoY] = 0;
    FirmaInformacije[id][fIzasaoZ] = 0;
    FirmaInformacije[id][fIzasaoA] = 0;
    FirmaInformacije[id][fInt] = 0;
    FirmaInformacije[id][fVW] = 0;

    if(FrimaInformacije[id][fIzvanIkone]) DestroyDynamicPickup(FrimaInformacije[id][fIzvanIkone]);//Unistava pickup

    new string[128];

    format(string, sizeof(string), FPATH, id);
    fremove(string);
    return 1;
}



12 Korak:Sada cemo napraviti, kada igrač stane na pickup, da mu dadne neke informacije vezane za firmu


Kod vezan za tutorial

public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
    new string[256];
    for(new b = 1;b < sizeof(FirmaInformacije);b++)
    {
        if(pickupid == FirmaInformacije[b][fIzvanIkone])//provjerava jeli na ikoni
        {
           if(FirmaInformacije[b][fOwned] == 0)//Ako firmu nitko ne posjeduje, oznacava o
           {
                format(string, sizeof(string), "~g~Ime:~w~%s~n~~w~Ova firma je na ~g~prodaji!~n~~r~Cjena:~g~%i~n~Tip Firme:~w~%s~n~~g~ID firme:~w~%i", FirmaInformacije[b][fIme], FirmaInformacije[b][fCijena], TipFirme(b), b);//Daje mu informacije
                GameTextForPlayer(playerid, string, 3000, 3);
           }
           if(FirmaInformacije[b][fOwned] == 1)//Ako firmu netko posjeduje, oznacava 1
           {
                format(string, sizeof(string), "~g~Ime:~w~%s~n~~g~Vlasnik:~w~%s~n~~g~Tip Firme:~w~%s ~n~~g~ID firme:~w~%i", FirmaInformacije[b][fIme], FirmaInformacije[b][fVlasnik], TipFirme(b), b);//Formats a string with all the info.
                GameTextForPlayer(playerid, string, 3000, 3);
           }
        }
    }
    return 1;
}



13 Korak:Napraviti cemo stock, gdje cemo smjestiti tipove firme


Kod vezan za tutorial

stock TipFirme(b)// Stock.
{
    new string[30];
    switch(FirmaInformacije[b][fTip])
    {
        case 4: string = "24/7";
        case 3: string = "Nocni klub";
        case 2: string = "Kafic";
        case 1: string = "Butik";
    }
    return string;
}



14 Korak:Jos jedna vazna fukncija, koja ce provjeravati da li je igrač u blizini firme.


Kod vezan za tutorial
IsPlayerBlizuUlazaFirme(playerid)
{
    for(new b = 1; b < sizeof(FirmaInformacije); b++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 2.0, FirmaInformacije[b][fUlazX], FirmaInformacije[b][fUlazY], FirmaInformacije[b][fUlazZ])) return b;
    }
    return -1;
}



15 Korak:Idemo napraviti komandu za zakljucavanje firme. /zakljucajfirmu


Kod vezan za tutorial
YCMD:zakljucajfirmu(playerid, params[])
{
    new id = IsPlayerBlizuUlazaFirme(playerid);//Upotrebljavamo funkciju koju smo napravili korak prije
    if(id != PlayerInfo[playerid][FirmaID]) return SCM(playerid, COLOR_GREY, "Ovo nije tvoja firma");
    if(FirmaInformacije[id][fZakljucano] == 1)// Ako je firma zakljucana vraca mu sljedecu poruku
    {
        FirmaInformacije[id][fZakljucano] = 0;
        GameTextForPlayer(playerid, "Firma ~g~otkljucana!", 3000, 3);
    }
    else
    {
        FirmaInformacije[id][fZakljucano] = 1;
        GameTextForPlayer(playerid, "Firma ~r~zakljucana!", 3000, 3);
    }
    return 1;
}



16 Korak:Komandu /enter cemo napraviti, koji sluzi za ulaz, ali i izlaz iz firme


Kod vezan za tutorial

YCMD:enter(playerid, params[])
{
    for(new b = 1; b < sizeof(FirmaInformacije); b++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, FirmaInformacije[b][fUlazX], FirmaInformacije[b][fUlazY], FirmaInformacije[b][bEntranceZ]))
        {
            if(FirmaInformacije[b][fZakljucano] == 1) return SendClientMessage(playerid, COLOR_GREY, "Ova firma je zakljucana");//Provjerava da li je zakljucana
            SetPlayerPos(playerid, FirmaInformacije[b][fIzasaoX], FirmaInformacije[b][fIzasaoY], FirmaInformacije[b][fIzasaoZ]);
            SetPlayerFacingAngle(playerid, FirmaInformacije[b][fIzasaoA]);
            SetPlayerInterior(playerid, FirmaInformacije[b][fUinterioru]);
            SetPlayerVirtualWorld(playerid, FirmaInformacije[b][fUvw]);
            Ufirmi[playerid] = b;
            return 1;
        }
        if(IsPlayerInRangeOfPoint(playerid, 2.0, FirmaInformacije[b][fIzasaoX], FirmaInformacije[b][fIzasaoY], FirmaInformacije[b][fIzasaoZ]) && GetPlayerVirtualWorld(playerid) == FirmaInformacije[b][fUvw])
        {
            SetPlayerPos(playerid, FirmaInformacije[b][fUlazX], FirmaInformacije[b][fUlazY], FirmaInformacije[b][fUlazZ]);
            SetPlayerFacingAngle(playerid, FirmaInformacije[b][bfUlazA]);
            SetPlayerInterior(playerid, FirmaInformacije[b][fInt]);
            SetPlayerVirtualWorld(playerid, FirmaInformacije[b][fVW]);
            uFirmi[playerid] = 0;
            return 1;
        }
    }
    return 1;



17 Korak:S komandom /kupifirmu se kupuje firmu, logicno :D


Kod vezan za tutorial

YCMD:kupifirumu(playerid, params[])
{
    new id = IsPlayerBlizuUlazaFirme(playerid);

    if(id == -1 || id == 0) return SendClientMessage(playerid, COLOR_GREY, "Niste blizu firme");

    if(FirmaInformacije[id][fOwned] != 0 || FirmaInformacije[id][fCijena] == 0) return SendClientMessage(playerid, COLOR_GREY, "Ova firma nije na prodaju");

    if(PlayerInfo[playerid][FirmaID] != 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "Vec posjedujes firmu");

    if(PlayerInfo[playerid][Novac] < FirmaInformacije[id][fCijena]) return SendClientMessage(playerid, COLOR_LIGHTRED, "Zalim, nemate dovoljno novaca za ovu firmu");

    PlayerInfo[playerid][BizID] = id;
    PlayerInfo[playerid][Money] -= FirmaInformacije[id][fCjena];
    GivePlayerMoney(playerid, -FirmaInformacije[id][bPrice]);

    FirmaInformacije[id][fZakljucano] = 0;
    FirmaInformacije[id][fOwned] = 1;
    FirmaInformacije[id][fVlasnik] = RemoveUnderScore(playerid);

    SendClientMessage(playerid, COLOR_YELLOW, "Cestitamo, kupili ste FIRMU!");
    return 1;
}



18 Korak:Ovdje je komanda za prodati firmu


Kod vezan za tutorial
YCMD:prodajfirmu(playerid, params[])
{
    new id = PlayerInfo[playerid][FirmaID];
    if(PlayerInfo[playerid][FirmaID] == 0) return SCM(playerid, COLOR_GREY, "Ne posjedujes firmu!");
    FirmaInformacije[id][fOwned] = 0;// nije vise owned
    FirmaInformacije[id][fVlasnik] = 0;//Nema vlasnika
    FirmaInformacije[id][fZakljucano] = 1;//zakljucava se
    PlayerInfo[playerid][Novac] = FirmaInformacije[id][fCjena];
    PlayerInfo[playerid][FirmaID] = 0;
    SCM(playerid, COLOR_YELLOW, "Firma prodana!");
    return 1;
}



19 Korak:Da promjenimo ime firmi


Kod vezan za tutorial
YCMD:imefirme(playerid, params[])
{
    new name[128];
    if(sscanf(params, "s[128]", name)) return SCM(playerid, COLOR_GREY, "/imefirme [IME]");
    if(PlayerInfo[playerid][BizID] == 0) return SCM(playerid, COLOR_GREY, "Ne posjedujes firmu");
    FirmaInformacije[PlayerInfo[playerid][FirmaID]][fIme] = name;
    SCM(playerid, COLOR_YELLOW, "Ime promjenjeno!");
    return 1;
}



20 Korak:Ovo i nije potrebno, takodjer zadnji korak, ovo je primjer kako mogu glasiti komande za firumu


Kod vezan za tutorial
YCMD:odjeca(playerid, params[])
{
    new skin;
    if(sscanf(params, "i", skin)) return SCM(playerid, COLOR_GREY, "YCMD:/skin [skinid]");
    if(PlayerInfo[playerid][Novac] < 100) return SCM(playerid, COLOR_GREY, "Morate imate barem 100 $");
    if(FirmaInformacije[Ufirmi[playerid]][fTip] != 1) return SCM(playerid, COLOR_GREY, "Moras biti u butiku");
    if(1 > skin ||  299 < skin || skin == 288 || skin == 287 || skin == 286 || skin == 285 || skin == 284 || skin == 283 || skin == 282 || skin == 281 || skin == 280 || skin == 279 || skin == 278 || skin == 277 || skin == 276 || skin == 275 || skin == 274) return SCM(playerid, COLOR_GREY, "Skin ID ne valja");// ovo su skinovi policajaca i slicno, pa se nemogu uzimati ti skinovi
    SetPlayerSkin(playerid, skin);
    PlayerInfo[playerid][Skin] = skin;
    GivePlayerMoney(playerid, -100);
    FirmaInformacije[Ufirmi[playerid]][fNovac] += 100;
    return 1;
}








KRAJ








Hvala na čitanju. Greške u tutorijalu su moguće!!!








Coldplay







Tutorijal preuzet s Offical Samp Forum-a! Link (http://forum.sa-mp.com/showthread.php?t=349466)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Dimi poslato Februar 20, 2013, 18:13:09 POSLE PODNE
Bravo zmaju extra objasnjno
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: N1XTON poslato Februar 20, 2013, 18:15:09 POSLE PODNE
dobar tut pomoci ce pocetnicima i onima kojim nije jasno napraviti bizz sistem
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Artieâ„¢ poslato Februar 20, 2013, 19:19:17 POSLE PODNE
Sve pohvale za vrijeme uloženo, odličan tutorijal  ;)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Blaeks poslato Februar 20, 2013, 19:28:10 POSLE PODNE
ovo ti je odlicno koki, samo si mogao da skratis komande kada si vec koristio sscanf, no nema veze sada, 10/10  :D
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Coldplay poslato Februar 20, 2013, 19:50:48 POSLE PODNE
Hvala svima :)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: |W|SoaD123 poslato Februar 20, 2013, 19:55:32 POSLE PODNE
ljepo je sta koristis y_ini sistem spremanja,tutorial ko tutorial nije los...samo tako dalje
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Ljubo poslato Februar 20, 2013, 20:08:54 POSLE PODNE
Odlican tut, pohvale za trud :)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Coldplay poslato Februar 20, 2013, 20:31:15 POSLE PODNE
Hvala svima

Citat: |LG|Yui_Sang poslato Februar 20, 2013, 20:28:39 POSLE PODNE
Tut kako tut nije los al morao si postavit link oficialnog i da si upisao da si preveo ovo

Orginal : http://forum.sa-mp.com/showthread.php?t=349466
Credit's-i su normalno ostavljeni, nisi sve procitao, imas na kraju u desnom kutu ;)

Da ne bi ispalo sad da sam stavio credit's-e imate kad sam editovao, a to je bio mala greska u pravopisu, to je bilo prije 2 sata :)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: _HarDy_ poslato Februar 20, 2013, 20:37:43 POSLE PODNE
Hahhah fin Tut , objasnjeno fino

Mogao si staviti manja slova od ovog creditsa xD

Nisam ni vidio
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: pllopen poslato Februar 20, 2013, 21:24:38 POSLE PODNE
I ako si mogao napraviti sa labelom i da ulazis sa enter/f jer ipak nije samp u kamenom dobu da se to koristi :P I jos imas jednu gresku koristis YCMD procesor ,a u komandama ti fali parametar "help". Inace tutorijal nije los jako fino si ga objasnio ;)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Markonו poslato Februar 20, 2013, 21:26:42 POSLE PODNE
Kida brale, svaka cast!
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: 99Mile99 poslato Februar 20, 2013, 21:58:01 POSLE PODNE
Lijepo :D
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Dimi poslato Februar 23, 2013, 13:47:05 POSLE PODNE
imas u tutu BIZID a ti si define FirmaID to ispravi ... zatim bentrance .... i fextra prepravi u bextra
zatim definisano ti je fZakljucana ili fZakljucan a ti stavljao u komande li fZakljucano...
zatim fCjena si stavljao a definisao fCijena
zatim undefined symbol "RemoveUnderScore"
stock RemoveUnderScore(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i = 0; i < MAX_PLAYER_NAME; i++)
    {
        if(name[i] == '_') name[i] = ' ';
    }
    return name;
}

zatim na ycmd komande nema , help na kraju sto pravi probelm ... ubacite na kraju , help i dodajte     #pragma unused help

imas i bPrice zamenite sa fCijena
onda bEnterance... zameni sa fUlazZ
Imas i Frima sto treba da se ispravi sa Firma logicno
i imas wolrd undefinied i to kad se sredo compile sa 0 warninga i erora :P

nisam hteo da te hejtujem samo da ukazem na greske
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Coldplay poslato Februar 23, 2013, 14:02:55 POSLE PODNE
budem popravio ;)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Dimi poslato Februar 23, 2013, 14:12:06 POSLE PODNE
jos 1 bug ne sacuvama vlasnika firme kad izadje
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Dimi poslato Februar 23, 2013, 19:28:19 POSLE PODNE
sry za dp eo za resenje za cuvanje ..

Pod onplayerconn stavite
new zzid = IsPlayerBlizuUlazaFirme(playerid);
PlayerInfo[playerid][FirmaID] = zzid;


a u komandi kupifirmu stavite
stavite na dnu
CuvajFirmu(id);
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Markonו poslato Mart 24, 2013, 08:22:13 PRE PODNE
Aj napravi za ZCMD, jebiga, taj koristim :D
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Cimbur poslato Mart 24, 2013, 11:10:35 PRE PODNE
Citat: Markonו poslato Mart 24, 2013, 08:22:13 PRE PODNE
Aj napravi za ZCMD, jebiga, taj koristim :D
Pa isto je :)
CMD:komanda(playerid, params[])
{
i sada funkcije i to :)
return 1;
}

:)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Rolex. poslato Mart 24, 2013, 11:20:41 PRE PODNE
Lep tut,bravo :)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Markonו poslato Mart 24, 2013, 12:14:13 POSLE PODNE
Kako isto ? I ne razumem to "sad funkcije i to", bili mi prilagodio za ZCMD :D ?

EDIT: I da se ulazi na space
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: [AS]Benac poslato Mart 24, 2013, 19:27:24 POSLE PODNE
aj napravi u strcmp pls i sta je reko ovaj da se vlasnik nesprema ?
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: David003 poslato April 01, 2013, 22:23:04 POSLE PODNE
Napravio sam sve kako pise ali mi dolaze ovi errori:

C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(114) : error 010: invalid function or declaration
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(472) : error 017: undefined symbol "TipFirme"
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(477) : error 017: undefined symbol "TipFirme"
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(496) : error 017: undefined symbol "fZakljucan"
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(522) : error 017: undefined symbol "fZakljucan"
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(1019) : error 017: undefined symbol "fExtra"
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(1019) : warning 215: expression has no effect
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(1019) : error 029: invalid expression, assumed zero
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(1019) : error 017: undefined symbol "extra"
C:\Users\David Babić\Desktop\City_Life_RolePlay_v5.0_0.3x\gamemodes\CLRP.pwn(1019) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


9 Errors.
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Kunnaâ„¢ poslato April 03, 2013, 18:36:15 POSLE PODNE
Lepo objasnjeno
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: [BE:RP]Dzoni poslato April 27, 2013, 16:15:57 POSLE PODNE
Bravo care
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Farkias poslato April 29, 2013, 18:16:08 POSLE PODNE
Odlično , svaka ti čast :D
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Pynokyo poslato April 30, 2013, 15:13:19 POSLE PODNE
Svaka Cast Brate Extra Tut :)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: slasher poslato Maj 01, 2013, 23:23:45 POSLE PODNE
Fino objasnjeno, pohvale :)
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: KiMu poslato Maj 08, 2013, 16:51:35 POSLE PODNE
Lijepo odradjeno :D
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Ino42O poslato Maj 08, 2013, 17:49:15 POSLE PODNE
Dobar tut svaka cast
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Mleko123 poslato Maj 08, 2013, 17:49:35 POSLE PODNE
Dobar tut
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: Mato RP poslato Novembar 08, 2013, 19:06:37 POSLE PODNE
Kada to stavim doÄ'u mi ovi errori i warninzi neznam sto je evo vam kod pa molim vas pomozite mi!

F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(743) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(764) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(809) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(837) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(957) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1030) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1051) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1070) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1092) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1124) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1160) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1188) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_ini.inc(1221) : warning 219: local variable "file" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(219) : warning 201: redefinition of constant/macro (symbol "CMD:%0(%1)")
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(220) : warning 201: redefinition of constant/macro (symbol "COMMAND")
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(878) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(1437) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(1492) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(1545) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(1567) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(1630) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(1858) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(1962) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(2103) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\pawno\include\YSI\y_commands.inc(2400) : warning 219: local variable "hash" shadows a variable at a preceding level
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(85) : error 017: undefined symbol "FirmaInformacije"
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(174) : error 010: invalid function or declaration
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(187) : error 017: undefined symbol "fZakljucan"
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(213) : error 017: undefined symbol "fZakljucan"
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(241) : warning 217: loose indentation
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(249) : warning 217: loose indentation
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(250) : warning 217: loose indentation
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(253) : error 017: undefined symbol "fExtra"
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(253) : warning 215: expression has no effect
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(253) : error 029: invalid expression, assumed zero
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(253) : error 017: undefined symbol "extra"
F:\My Orion Mark 2\Orion Mark RolePlay\gamemodes\OrionMark.pwn(253) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


8 Errors.
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: LuKsA poslato Februar 20, 2014, 14:34:51 POSLE PODNE
Znam da je refresh teme, ali:

http://forum.sa-mp.com/showthread.php?t=349466

creditse nebi postavio?

PS: Tut ti uopce nije dobar jer si doslovno prekopirao ovaj iznad ali pogresno kopirao :).
Naslov: Odg: [TuT] Dynamic Firma System
Poruka od: matosek123 poslato Februar 20, 2014, 17:38:15 POSLE PODNE
KraÄ'a teme, i preuzimanje zasluge.. LOCK!