Napravio sam ovaj tutorial jer vidim da mnogi poÄetnici traže ovako neÅ¡to, a nisam joÅ¡ vidio tut na forumu
Morate sami znati kako dodati varijable za uÄitavanje/spremanje jer ja to neću objaÅ¡njavati
Trebat će nam ZCMD za komande (Download: Klik)
POÄŒETAK
Za poÄetak ćemo definirati nekoliko varijabli koje ćemo koristiti
Dodajemo ih naravno pri vrhu skripte
new Trava;//objekti trave...broj 5 = broj objekata koje smo dodali
new KosacPosao;//treba nam za provjeru dali je igraÄ već poÄeo kositi travu
new TravaTimer;//trebat će nam za uništavanje timera
new Kosilica;//ukupan broj kosilica koje smo dodaliDodat ćemo pod public OnPlayerConnect sljedeće
KosacPosao = 0;//stavlja igraÄu varijablu za kosenje na 0VOZILA
Prvo ćemo dodati kosilice pa ćemo krenuti dalje
Sljedeće dodajemo pod public OnGameModeInit, dodajte kod ostalih vozila
Kosilica = AddStaticVehicleEx(572,1956.7000000,-1163.5000000,20.3000000,90.0000000,128,128, 1000);//stvara kosilicu i pamti njegov id u varijabli Kosilica
Kosilica = AddStaticVehicleEx(572,1956.7000000,-1166.3000000,20.3000000,90.0000000,128,128, 1000);//stvara kosilicu i pamti njegov id u varijabli Kosilica
Kosilica = AddStaticVehicleEx(572,1956.7000000,-1169.0000000,20.3000000,90.0000000,128,128, 1000);//stvara kosilicu i pamti njegov id u varijabli Kosilica
Nakon što smo dodali kosilice, napravit ćemo stock za njih
Stock dodajte negdje u skripti (izvan publica), najbolje gdje vam se nalaze ostali ili na kraj skripte
stock VoziloKosaca(carid)
{
for(new i = 0; i < sizeof(Kosilica); i++)
{
if(carid == Kosilica) return 1;
}
return 0;
}
Sada ćemo dodati pod public OnPlayerStateChange ako igraÄ nije zaposlen kao kosaÄ da neće moći voziti kosilicu
if(newstate == PLAYER_STATE_DRIVER)//provjera dali je na mjestu vozaca
{
if(VoziloKosaca(GetPlayerVehicleID(playerid)) && PlayerInfo != 1)//provjera dali je igraÄ u kosilici i dali je zaposlen kao kosaÄ trave
{
SendClientMessage(playerid, -1, "GRESKA: Niste zaposleni kao kosac trave!");//Å¡alje igraÄu poruku
RemovePlayerFromVehicle(playerid);//izbacuje igraÄa iz vozila
}
}
KOMANDA /posao
Sada ćemo napraviti komandu kojom ćemo se zaposliti kao kosaÄ trave
Vi u tu komandu možete dodavati i ostale poslove, nevažno sad...
CMD:posao(playerid, params[])
{
if(PlayerInfo != 0) return SendClientMessage(playerid, -1, "GRESKA: Vec imate posao!");//izbacuje poruku igraÄu ukoliko je već zaposlen
if(IsPlayerInRangeOfPoint(playerid, 2, 1958.6124,-1150.7917,21.3419))//provjera dali je na mjestu zapoÅ¡ljavanja za kosaÄa trave
{
if(PlayerInfo < 2) return SendClientMessage(playerid, -1, "GRESKA: Moras biti level 2!");//ukoliko igraÄ nije lvl 2+ neće se moći zaposlit
SendClientMessage(playerid, -1, "INFO: Uspjesno si se zaposlio kao kosac trave.");//Å¡alje igraÄu poruku da se zaposlio
PlayerInfo = 1;//postavlja igraÄu varijablu za posao na 1 (inaÄe 1 je id posla,vi sebi stavite kako želite)
}
return 1;
}
KOMANDA /otkaz
Odmah ćemo napraviti i komandu za otkaz
Vi sebi možete dodavati npr ugovor za posao itd..
CMD:otkaz(playerid, params[])
{
if(PlayerInfo == 0) return SendClientMessage(playerid, "GRESKA: Niste zaposleni!");//ukoliko igraÄ nije zaposlen izbacuje mu poruku
SendClientMessage(playerid, -1, "INFO: Uspjesno ste dali otkaz");//Å¡alje igraÄu poruku da je dao otkaz
PlayerInfo = 0; //postavlja igraÄu varijablu za posao na 0 (znaci da nema posao)
return 1;
}
KOMANDA /kosenje
Sada ćemo napraviti komandu kojom ćemo pokretati košenje trave
Ja sam stavio samo 5 objekata trave, vi sebi dodajite po želji
CMD:kosenje(playerid, params[])
{
if(PlayerInfo != 1) return SendClientMessage(playerid, -1, "GRESKA: Niste zaposleni kao kosac trave!");//ukoliko igraÄ nije kosaÄ trave izbacuje mu poruku
if(!VoziloKosaca(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid, -1, "GRESKA: Morate biti u kosilici!");//ukoliko igraÄ nije u kosilici izbacuje mu poruku
if(KosacPosao == 1) return SendClientMessage(playerid, -1, "GRESKA: Vec ste zapoceli kosenje trave!");//ukoliko je igraÄ već zapoÄeo koÅ¡enje, izbacuje mu poruku
TravaTimer = SetTimerEx("TimerTrava", 500, true, "i", playerid);//kreiramo timer od 500 milisekundi koji će provjeravati dali smo blizu objekta trave
SendClientMessage(playerid, -1, "Pokosi travu i zaradi novac.");//šalje igracu poruku
KosacPosao = 1;//stavlja igraÄu varijablu za koÅ¡enje na 1, znaÄi da je zapoÄeo kosenje
Trava = CreatePlayerObject(playerid,864,1952.6000000,-1157.2000000,20.2000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava = CreatePlayerObject(playerid,864,1945.2000000,-1157.8000000,20.5000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava = CreatePlayerObject(playerid,864,1938.0000000,-1158.2000000,20.8000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava = CreatePlayerObject(playerid,864,1929.1000000,-1159.1000000,21.2000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava = CreatePlayerObject(playerid,864,1921.3000000,-1160.4000000,21.7000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
return 1;
}
TIMER
I za kraj dodajemo timer koji smo aktivirali komandom /kosenje
forward TimerTrava(playerid);
public TimerTrava(playerid)
{
new Float:Pos;//x,y,z pozicije objekata trave
new pokoseno = 0;//broj pokošene trave
for(new i = 0; i < sizeof(Trava); i++)//prolazi kroz sve objekte trave koje smo kreirali
{
GetPlayerObjectPos(playerid, Trava, Pos, Pos, Pos);//uzima x,y,z pozicije objekata trave
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos) && VoziloKosaca(GetPlayerVehicleID(playerid)))//provjera dali je igraÄ u blizini objekta trave i dali je u kosilici
{
DestroyPlayerObject(playerid, Trava);//unistava objekt trave kroz koji smo prosli
Trava = 999;//stavlja varijablu za objekat na 999
}
if(Trava == 999)//provjera dali je objekt trave na 999...
{
pokoseno++;//...ako je na 999, povecava broj pokosene trave za 1
}
}
if(pokoseno == 5)//broj pokoÅ¡ene trave nakon koje ce igraÄ dobiti novac (ako je pokosio 5 objekata, zavrÅ¡ava posao)
{
SendClientMessage(playerid, -1, "Zavrsili ste kosenje trave i zaradili 150$!");//Å¡alje igraÄu poruku
KosacPosao = 0;//stavlja igraÄu varijablu za kosaca na 0
KillTimer(TravaTimer);//uništava timer
GivePlayerMoney(playerid, 150);//daje igraÄu 150$
}
}