[TuT] Izrada posla - Kosac Trave (ZCMD/YCMD/STRCMP)

Započeo [BR]Maki187
10. Mar. 2012. Zaključano
8,531
pregleda
22
postova
Maki187
5
Crime Lord
10. Mar. 2012.
U ovom tut-u cu vam pokazati kako da napravite jednostavan posao, u ovom slucaju kosaca trave, ovaj posao je namenjen svim modovima, pocevsi od GF edita, do onih od nule... (zavisi kako ga podesite)
Ujedno ovo mi je prvi tut  😄

Pa da pocnemo:

1.)
na vrh moda stavite varijablu
new KosiTravu; // ovde se svakom igracu cuva njegova varijabla
#define BELA 0xFFFFFFAA // definisemo belu boju
#define SIVA 0xBFC0C2FF // definisemo sivu boju


pod OnPlayerConect stavite ovo:
 KosiTravu = 0; // kad se igrac konektuje, stavi mu ovu varijablu na 0, sto znaci da trenutno nekosi travu




2.)
Sad prelazimo na ubacivanje vozila za kosaca, to ce te uraditi ovako:

na vrh skripte dodajemo
new kosilica; // broj 2 je broj max vozila, menjate ga po zelji, tj koliko vozila ubacite


zatim kod ostalih stockova ubacite sledecu proveru
stock VoziloKosaca(carid)
{
for(new i = 0; i < sizeof(kosilica); i++) // prolazi kroz sva vozila za kosenje i proverava da li se u njemu nalazite
{
if(carid == kosilica) return 1;
}
return 0;
}


sad pod OnGameModeInit dodajte sledece
kosilica = AddStaticVehicleEx(572,1960.2535,-1228.7362,19.5318,99.1372,0,0,40); //dodali smo vozilo(kosilicu) u mod
kosilica = AddStaticVehicleEx(572,1960.2535,-1228.7362,19.5318,99.1372,0,0,40); //dodali smo vozilo(kosilicu) u mod

samo zapamtite, vozila idu od 0, ne od 1! (treba da ide kosilica ... kosilica, a nikako nesme da ide kosilica ... kosilica



3.)
Prelazimo na komandu koja pokrece posao, samo zapamtite, PlayerInfo promenite onako kako je vama u modu...

ZCMD Komanda:

CMD:kositravu(playerid, params[])
{
        new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu >= 1) // proverava jel igrac vec zapoceo sa kosenjem trave
{
SendClientMessage(playerid, SIVA, "Vec kosis travu!");
return 1;
}
if(!VoziloKosaca(idv)) // proverava jel igrac u vozilu kosaca, ako nije nemoze da kosi travu
{
SendClientMessage(playerid, SIVA, "Nisi u vozilu kosaca trave!");
return 1;
}
if(VoziloKosaca(idv)) // proverava da li je igrac u vozilu kosaca, ako jeste, nastavlja komandu...
{
KosiTravu = 1; // postavlja igracu varijablu na 1, sto znaci da je zapoceo posao
SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu CP(marker) na zeljene koordinate
SendClientMessage(playerid, BELA, "Vozite do crvenog markera!");
}
return 1;
    }


YCMD Komanda:

YCMD:kositravu(playerid, params[], help)
{
        #pragma unused help
        new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu >= 1) // proverava jel igrac vec zapoceo sa kosenjem trave
{
SendClientMessage(playerid, SIVA, "Vec kosis travu!");
return 1;
}
if(!VoziloKosaca(idv)) // proverava jel igrac u vozilu kosaca, ako nije nemoze da kosi travu
{
SendClientMessage(playerid, SIVA, "Nisi u vozilu kosaca trave!");
return 1;
}
if(VoziloKosaca(idv)) // proverava da li je igrac u vozilu kosaca, ako jeste, nastavlja komandu...
{
KosiTravu = 1; // postavlja igracu varijablu na 1, sto znaci da je zapoceo posao
SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu CP(marker) na zeljene koordinate
SendClientMessage(playerid, BELA, "Vozite do crvenog markera!");
}
return 1;
    }


STRCMP Komanda:

if(strcmp(cmdtext, "/kositravu", true))
{
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu >= 1) // proverava jel igrac vec zapoceo sa kosenjem trave
{
SendClientMessage(playerid, SIVA, "Vec kosis travu!");
return 1;
}
if(!VoziloKosaca(idv)) // proverava jel igrac u vozilu kosaca, ako nije nemoze da kosi travu
{
SendClientMessage(playerid, SIVA, "Nisi u vozilu kosaca trave!");
return 1;
}
if(VoziloKosaca(idv)) // proverava da li je igrac u vozilu kosaca, ako jeste, nastavlja komandu...
{
KosiTravu = 1; // postavlja igracu varijablu na 1, sto znaci da je zapoceo posao
SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu CP(marker) na zeljene koordinate
SendClientMessage(playerid, BELA, "Vozite do crvenog markera!");
}
return 1;
    }


Moja preporuka vam je da koristite ZCMD (mada je YCMD skoro isto), strcmp nikako...



4.)

Posto smo napravili komandu kojom pokrecemo posao, moramo da napravimo i komandu koju obustavljamo posao, ako nezelimo da ga dovrismo do kraja...

ZCMD Komanda:

CMD:stopkosenje(playerid, params[])
{
    new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1)// proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu >= 1) // proverava da li igrac kosi travu
{
KosiTravu = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
if(VoziloKosaca(idv)) // ako igrac nije izaso iz vozila a zapoceo je kosenje, respawnuje vozilo
    {
SetVehicleToRespawn(idv);
}
}
else // ako igrac nije zapoceo kosenje, salje mu poruku
{
SendClientMessage(playerid, SIVA, "Nisi ni zapoceo kosenje trave!");
return 1;
}
return 1;
    }


YCMD Komanda:

YCMD:stopkosenje(playerid, params[], help)
{
        #pragma unused help
        new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu >= 1) // proverava da li igrac kosi travu
{
KosiTravu = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
if(VoziloKosaca(idv)) // ako igrac nije izaso iz vozila a zapoceo je kosenje, respawnuje vozilo
    {
SetVehicleToRespawn(idv);
}
}
else // ako igrac nije zapoceo kosenje, salje mu poruku
{
SendClientMessage(playerid, SIVA, "Nisi ni zapoceo kosenje trave!");
return 1;
}
return 1;
    }


STRCMP Komanda:

if(strcmp(cmdtext, "/stopkosenje", true))
{
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu >= 1)// proverava da li igrac kosi travu
{
KosiTravu = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
if(VoziloKosaca(idv)) // ako igrac nije izaso iz vozila a zapoceo je kosenje, respawnuje vozilo
    {
SetVehicleToRespawn(idv);
}
}
else // ako igrac nije zapoceo kosenje, salje mu poruku
{
SendClientMessage(playerid, SIVA, "Nisi ni zapoceo kosenje trave!");
return 1;
}
return 1;
    }




5.)

Sad prelazimo na postavljanje CP-a (markera)

pod OnPlayerEnterCheckpoint(playerid) stavite sledece

if(KosiTravu == 1) // proverava da li je igraceva varijablva za kosenje na 1
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
    if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
    {
KosiTravu = 2; // stavlja igracu varijablu na 2
            DisablePlayerCheckpoint(playerid); // uklanja stari CP
            SetPlayerCheckpoint(playerid,1908.1815,-1177.1769,22.9238, 5.0); // postavlja igracu novi cp
    }
    return 1;
}

if(KosiTravu == 2) // proverava da li je igraceva varijablva za kosenje na 2
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
    if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
    {
KosiTravu = 3; // stavlja igracu varijablu na 3
            DisablePlayerCheckpoint(playerid); // uklanja stari CP
            SetPlayerCheckpoint(playerid,2026.7825,-1158.4764,21.7321, 5.0); // postavlja igracu novi cp
    }
    return 1;
}
if(KosiTravu == 3) // proverava da li je igraceva varijablva za kosenje na 3
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
    if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
    {
KosiTravu = 4; // stavlja igracu varijablu na 4
            DisablePlayerCheckpoint(playerid); // uklanja stari CP
            SetPlayerCheckpoint(playerid,2035.3783,-1230.5975,22.1612, 5.0); // postavlja igracu novi cp
    }
    return 1;
}
if(KosiTravu == 4) // proverava da li je igraceva varijablva za kosenje na 4
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
    if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
    {
KosiTravu = 5; // stavlja igracu varijablu na 5
            DisablePlayerCheckpoint(playerid); // uklanja stari CP
            SetPlayerCheckpoint(playerid,1905.4629,-1228.2189,16.2359, 5.0); // postavlja igracu novi cp
    }
    return 1;
}
if(KosiTravu == 5) // proverava da li je igraceva varijablva za kosenje na 4
{
new idv = GetPlayerVehicleID(playerid); // uzima id vozila
    if(VoziloKosaca(idv)) // proverava jel u vozilu kosaca
    {
KosiTravu = 0; // stavlja igracu varijablu na 0
            DisablePlayerCheckpoint(playerid); // uklanja stari CP
            GivePlayerMoney(playerid, 100); // daje igracu 100 dolara
SendClientMessage(playerid, BELA, "Prekinuo si kosenje trave!");
            // ovim poslednjim CP-om smo zavrsili posao :)
    }
    return 1;
}


Ovim je ceo posao gotov, akd dodjete do poslednjeg cp-a, dobiajte 100 dolara...

Posao je testiran, na brzinu, tako da ako nes neradi, javite 🙂




6.)

Ovo mozete i nemorate da ubacite, a to je zaposljavanje...

pod OnGameModeInit dodajte sledece
AddStaticPickup(1274, 1, 1961.4186,-1232.6809,19.9813);// dodali smo pickup za kosaca


a sad nam treba i komanda za zaposljavanje

ZCMD Komanda:

CMD:takejob(playerid, params[])
{
    if(PlayerInfo > 0) // proverava jel igracev posao veci od 0
    {
        SendClientMessage(playerid, SIVA, "Vec si zaposlen, kucaj /otkaz da bi dao otkaz.");
        return 1;
    }
if(IsPlayerInRangeOfPoint(playerid, 2, 1961.4186,-1232.6809,19.9813)) // proverava da li se igrac nalazi an tim koordinatama
{
PlayerInfo = 1; // psotavlja igracu posao na 1
SendClientMessage(playerid, BELA, "Uspesno si se zaposlio kao kosac trave.");
SendClientMessage(playerid, BELA, "Komande: /kositravu | /stopkosenje");
}
else { SendClientMessage(playerid, SIVA, "Nisi kod kosaca!"); return 1; } // ako igrac nije na odredjenim koordinatama, salje mu poruku.
return 1;
    }


YCMD Komanda:

YCMD:takejob(playerid, params[], help)
{
        #pragma unused help
        if(PlayerInfo > 0) // proverava jel igracev posao veci od 0
    {
        SendClientMessage(playerid, SIVA, "Vec si zaposlen, kucaj /otkaz da bi dao otkaz.");
        return 1;
    }
if(IsPlayerInRangeOfPoint(playerid, 2, 1961.4186,-1232.6809,19.9813)) // proverava da li se igrac nalazi an tim koordinatama
{
PlayerInfo = 1; // psotavlja igracu posao na 1
SendClientMessage(playerid, BELA, "Uspesno si se zaposlio kao kosac trave.");
SendClientMessage(playerid, BELA, "Komande: /kositravu | /stopkosenje");
}
else { SendClientMessage(playerid, SIVA, "Nisi kod kosaca!"); return 1; } // ako igrac nije na odredjenim koordinatama, salje mu poruku.
return 1;
    }


STRCMP Komanda:

if(strcmp(cmdtext, "/takejob", true))
{
if(PlayerInfo > 0) // proverava jel igracev posao veci od 0
    {
        SendClientMessage(playerid, SIVA, "Vec si zaposlen, kucaj /otkaz da bi dao otkaz.");
        return 1;
    }
if(IsPlayerInRangeOfPoint(playerid, 2, 1961.4186,-1232.6809,19.9813)) // proverava da li se igrac nalazi an tim koordinatama
{
PlayerInfo = 1; // psotavlja igracu posao na 1
SendClientMessage(playerid, BELA, "Uspesno si se zaposlio kao kosac trave.");
SendClientMessage(playerid, BELA, "Komande: /kositravu | /stopkosenje");
}
else { SendClientMessage(playerid, SIVA, "Nisi kod kosaca!"); return 1; } // ako igrac nije na odredjenim koordinatama, salje mu poruku.
return 1;
    }




7.)

I potrebna nam je i komanda za otkaz (ovu komandu je uradio ναηιℓℓα.ιη¢)

ZCMD Komanda:

CMD:otkaz(playerid, params[])
{
if(PlayerInfo < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
}


YCMD Komanda:

YCMD:otkaz(playerid, params[], help)
{
    #pragma unused help
    if(PlayerInfo < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
    }


STRCMP Komanda:

if(strcmp(cmdtext, "/otkaz", true))
{
if(PlayerInfo < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
}


Naravno nezaboravite da PlayerInfo promenite u ono kako vama stoji u modu.
Dr.Nino
5
Underboss
10. Mar. 2012.
STRCMP ti ni netreba
YCMD samo sa puno komandi a ne u FSovima i slicno
ZCMD uvijek i 100 %
nije ti definirano BELA sto ce zbuniti mnoge
inace solidan tut
Maki187
5
Crime Lord
10. Mar. 2012.
Hvala, eno definisao sam boju, to sam zab da uradim... hvala

strcmp sam stavio jer obicno pocetnici koji ne znaju da urade posao, koriste strcmp, i tvrdoglavi su pa nece da koriste zcmd, zato sam im stavio, pa nek odluce sta ce koristiti  🙂
Deleted User
Obrisan korisnik
10. Mar. 2012.
Svaka cast maki ovo si lijepo objasnio 😄.
Armin123
4
Made Man
10. Mar. 2012.
Auuu dobar Tut korisno!!!
Marjan_King
5
Kingpin
10. Mar. 2012.
Super je, lepo objasnjeno.
Dodaj jos komandu za zaposljavanje i otkaz i bice kompletan  🙂
Maki187
5
Crime Lord
10. Mar. 2012.
hvala...
a valjda znaju da urade zaposljavanje i otkaz...  😄

@vanila , hvala, to mi je reko i Gagi, al ja sve ovako skriptam, posto mi je lakse da se snadjem, onako se zbunim i nzm sta sam hteo  😄

btw, tek sam sad video sta pise u pravilu, al jbg, tut je vec postavljen 😛
Luis
5
Godfather
10. Mar. 2012.
Takoder definiraj sve boje Siva i ostale ...
jednostavno kod tavih tutova stavis za boju bijelu tj. -1 ...
Marjan_King
5
Kingpin
10. Mar. 2012.
Quote from March 10, 2012, 6:11 pm:
btw, tek sam sad video sta pise u pravilu, al jbg, tut je vec postavljen 😛

Neka, koristan je tutorijal, mnogo bolji od onog tako da nije problem. Od sad pa na dalje vise nema potrebe bilo kakav tutorijal vezan za posao.
Zato ti kazem da ga dovrsis i napravis te 2 komande.
Maki187
5
Crime Lord
10. Mar. 2012.
Eno update sam prvi post kao sto je predlozeno...  🙂
Ljube_Savic
4
Enforcer
10. Mar. 2012.
Ovako kako si dao tut, kad ukucas bilo koju komandu pise nisi "Kosac Trave".
Maki187
5
Crime Lord
10. Mar. 2012.
Mozda zato sto nisi sebi postavio posao na 1 ? -.-

ili ako koristis i STRCMP, onda umesto if(strcmp(cmdtext, "/stopkosenje", true)) stavi

if(!strcmp(cmdtext, "/stopkosenje", true))

isto je i za pocetak posla
JONY
4
Enforcer
10. Mar. 2012.
dobar tut
ZCMD najbolje za koristenje
Frank99
4
Enforcer
11. Mar. 2012.
Ja mapo neku kuću za dilera droge, i slučajno naletim na ovaj tut i pomogne mi za zcmd 😄

Svaka čast, tut je odličan 🙂
The Woozie
5
Kingpin
11. Mar. 2012.
dobar tutorial,sve pohvale 😉

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha