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 bojupod OnPlayerConect stavite ovo:
KosiTravu = 0; // kad se igrac konektuje, stavi mu ovu varijablu na 0, sto znaci da trenutno nekosi travu2.)
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 ubacitezatim 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 kosacaa 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.
