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 :D
Pa da pocnemo:
1.)
na vrh moda stavite varijablu
new KosiTravu[MAX_PLAYERS]; // ovde se svakom igracu cuva njegova varijabla
#define BELA 0xFFFFFFAA // definisemo belu boju
#define SIVA 0xBFC0C2FF // definisemo sivu boju
pod OnPlayerConect stavite ovo:
KosiTravu[playerid] = 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[2]; // 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[i]) return 1;
}
return 0;
}
sad pod OnGameModeInit dodajte sledece
kosilica[0] = AddStaticVehicleEx(572,1960.2535,-1228.7362,19.5318,99.1372,0,0,40); //dodali smo vozilo(kosilicu) u mod
kosilica[1] = 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[0] ... kosilica[1], a nikako nesme da ide kosilica[1] ... kosilica[2]
3.)
Prelazimo na komandu koja pokrece posao, samo zapamtite, PlayerInfo[playerid][pPosao] promenite onako kako je vama u modu...
ZCMD Komanda:
CMD:kositravu(playerid, params[])
{
new idv = GetPlayerVehicleID(playerid);
if(PlayerInfo[playerid][pPosao] != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu[playerid] >= 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[playerid] = 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[playerid][pPosao] != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu[playerid] >= 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[playerid] = 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[playerid][pPosao] != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac Trave! ");
return 1;
}
if(KosiTravu[playerid] >= 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[playerid] = 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[playerid][pPosao] != 1)// proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu[playerid] >= 1) // proverava da li igrac kosi travu
{
KosiTravu[playerid] = 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[playerid][pPosao] != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu[playerid] >= 1) // proverava da li igrac kosi travu
{
KosiTravu[playerid] = 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[playerid][pPosao] != 1) // proverava jel igrac ima odgovarajuci posao
{
SendClientMessage(playerid, SIVA, "Nisi Kosac trave!");
return 1;
}
if(KosiTravu[playerid] >= 1)// proverava da li igrac kosi travu
{
KosiTravu[playerid] = 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[playerid] == 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[playerid] = 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[playerid] == 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[playerid] = 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[playerid] == 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[playerid] = 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[playerid] == 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[playerid] = 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[playerid] == 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[playerid] = 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[playerid][pPosao] > 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[playerid][pPosao] = 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[playerid][pPosao] > 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[playerid][pPosao] = 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[playerid][pPosao] > 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[playerid][pPosao] = 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[playerid][pPosao] < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo[playerid][pPosao] = 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[playerid][pPosao] < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo[playerid][pPosao] = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
}
STRCMP Komanda:
if(strcmp(cmdtext, "/otkaz", true))
{
if(PlayerInfo[playerid][pPosao] < 1) return SendClientMessage(playerid,-1,"Niste zaposljeni!"); // proverava da li ej igrac zaposlen
PlayerInfo[playerid][pPosao] = 0; // stavlja mu posao na 0 (nezaposlen)
SendClientMessage(playerid,-1,"Dali ste otkaz");
return true;
}
Naravno nezaboravite da PlayerInfo[playerid][pPosao] promenite u ono kako vama stoji u modu.
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
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 :)
Svaka cast maki ovo si lijepo objasnio :D.
Auuu dobar Tut korisno!!!
Super je, lepo objasnjeno.
Dodaj jos komandu za zaposljavanje i otkaz i bice kompletan :)
hvala...
a valjda znaju da urade zaposljavanje i otkaz... :D
@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 :D
btw, tek sam sad video sta pise u pravilu, al jbg, tut je vec postavljen :P
Takoder definiraj sve boje Siva i ostale ...
jednostavno kod tavih tutova stavis za boju bijelu tj. -1 ...
[quote author=
Maki187 link=topic=40142.msg301057#msg301057 date=1331403116]
btw, tek sam sad video sta pise u pravilu, al jbg, tut je vec postavljen :P
[/quote]
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.
Eno update sam prvi post kao sto je predlozeno... :)
Ovako kako si dao tut, kad ukucas bilo koju komandu pise nisi "Kosac Trave".
Mozda zato sto nisi sebi postavio posao na 1 ? -.-
ili ako koristis [cenzura]i STRCMP, onda umesto if(strcmp(cmdtext, "/stopkosenje", true)) stavi
if(!strcmp(cmdtext, "/stopkosenje", true))
isto je i za pocetak posla
dobar tut
ZCMD najbolje za koristenje
Ja mapo neku kuću za dilera droge, i sluÄajno naletim na ovaj tut i pomogne mi za zcmd :D
Svaka Äast, tut je odliÄan :)
dobar tutorial,sve pohvale ;)
lijepo objasnjeno ;)
Svidja mi se tut.
Ali mi se cini da ima isto jedan ovakav tut da ga je uradio djuro ne kazem da si ti kopira od njega nego ima i bolje je objasnjeno po meni!
Dobar TuT , posluzice nekome :)
Citat: Davidoff poslato Mart 13, 2012, 22:38:15 POSLE PODNE
Svidja mi se tut.
Ali mi se cini da ima isto jedan ovakav tut da ga je uradio djuro ne kazem da si ti kopira od njega nego ima i bolje je objasnjeno po meni!
Cini mi se da je njegov samo za GF, plus koristi neke praistoriske komande... i jos mu je ceo tut u strcmp :D
Dobar tut svaka cast :D pohvala pomogo si :D
Maki brw jos jednom za tebe odlican tut lijepo objasnjen posluzit ce pocetnicima
10/10 dobar tut pomogao mi je.