UVOD- 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 (http://www.solidfiles.com/d/879d1213462fc1562d16d464e90c8cf9/))
POÄŒETAK- Za poÄetak ćemo definirati nekoliko varijabli koje ćemo koristiti
- Dodajemo ih naravno pri vrhu skripte
new Trava[5][MAX_PLAYERS];//objekti trave...broj 5 = broj objekata koje smo dodali
new KosacPosao[MAX_PLAYERS];//treba nam za provjeru dali je igraÄ već poÄeo kositi travu
new TravaTimer[MAX_PLAYERS];//trebat će nam za uništavanje timera
new Kosilica[3];//ukupan broj kosilica koje smo dodali
- Dodat ćemo pod public OnPlayerConnect sljedeće
KosacPosao[playerid] = 0;//stavlja igraÄu varijablu za kosenje na 0
VOZILA- Prvo ćemo dodati kosilice pa ćemo krenuti dalje
- Sljedeće dodajemo pod public OnGameModeInit, dodajte kod ostalih vozila
Kosilica[0] = AddStaticVehicleEx(572,1956.7000000,-1163.5000000,20.3000000,90.0000000,128,128, 1000);//stvara kosilicu i pamti njegov id u varijabli Kosilica[0]
Kosilica[1] = AddStaticVehicleEx(572,1956.7000000,-1166.3000000,20.3000000,90.0000000,128,128, 1000);//stvara kosilicu i pamti njegov id u varijabli Kosilica[1]
Kosilica[2] = AddStaticVehicleEx(572,1956.7000000,-1169.0000000,20.3000000,90.0000000,128,128, 1000);//stvara kosilicu i pamti njegov id u varijabli Kosilica[2]
- 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[i]) 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[playerid][pPosao] != 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[playerid][pPosao] != 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[playerid][pLevel] < 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[playerid][pPosao] = 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[playerid][pPosao] == 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[playerid][pPosao] = 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[playerid][pPosao] != 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[playerid] == 1) return SendClientMessage(playerid, -1, "GRESKA: Vec ste zapoceli kosenje trave!");//ukoliko je igraÄ već zapoÄeo koÅ¡enje, izbacuje mu poruku
TravaTimer[playerid] = 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[playerid] = 1;//stavlja igraÄu varijablu za koÅ¡enje na 1, znaÄi da je zapoÄeo kosenje
Trava[0][playerid] = CreatePlayerObject(playerid,864,1952.6000000,-1157.2000000,20.2000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava[1][playerid] = CreatePlayerObject(playerid,864,1945.2000000,-1157.8000000,20.5000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava[2][playerid] = CreatePlayerObject(playerid,864,1938.0000000,-1158.2000000,20.8000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava[3][playerid] = CreatePlayerObject(playerid,864,1929.1000000,-1159.1000000,21.2000000,0.00000000,0.00000000,0.00000000);//kreiramo objekt za igraÄa
Trava[4][playerid] = 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[3];//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[i][playerid], Pos[0], Pos[1], Pos[2]);//uzima x,y,z pozicije objekata trave
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos[0], Pos[1], Pos[2]) && VoziloKosaca(GetPlayerVehicleID(playerid)))//provjera dali je igraÄ u blizini objekta trave i dali je u kosilici
{
DestroyPlayerObject(playerid, Trava[i][playerid]);//unistava objekt trave kroz koji smo prosli
Trava[i][playerid] = 999;//stavlja varijablu za objekat na 999
}
if(Trava[i][playerid] == 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[playerid] = 0;//stavlja igraÄu varijablu za kosaca na 0
KillTimer(TravaTimer[playerid]);//uništava timer
GivePlayerMoney(playerid, 150);//daje igraÄu 150$
}
}
Fino si uradio opis i skripta je fino objašnjena zato evo ti 10/10 :D
Svaka Äast ! :)
Citat: [EM] King poslato April 22, 2014, 01:29:28 PRE PODNE
Fino si uradio opis i skripta je fino objašnjena zato evo ti 10/10 :D
Svaka Äast ! :)
hvala :D
Citat: [EM] King poslato April 22, 2014, 01:29:28 PRE PODNE
Fino si uradio opis i skripta je fino objašnjena zato evo ti 10/10 :D
Svaka Äast ! :)
Citat: [EM] King poslato April 22, 2014, 01:29:28 PRE PODNE
Fino si uradio opis i skripta je fino objašnjena zato evo ti 10/10 :D
Svaka Äast ! :)
Stavljanje variable za objekat na 999 i nije bas najbolje jer ako je limit objekata na sampu 1000 moze biti da ti se unisti neki objekat sa strane koji ima id 999...
Mozda i sasvim nebitno ali bolje stavi INVALID_OBJECT_ID ili (-1)
Ovo je više guide tipa copy/paste nego tut jer si samo kodove dao i rekao gdje šta ide a nisi objasnio kako to uopšte funckioniše/šta koji kod radi...
Pohvale za trud :)
Citat: Denim poslato April 22, 2014, 13:36:20 POSLE PODNE
Ovo je više guide tipa copy/paste nego tut jer si samo kodove dao i rekao gdje šta ide a nisi objasnio kako to uopšte funckioniše/šta koji kod radi...
Pohvale za trud :)
Naprotiv sve sto je napisao veoma je dobro shvatljivo i smartam da ko je i otvorio pawno zna kako funkcionise ovaj kod...
Hitman cestitke veoma dobro...
10/10
Svaka cast moze posluziti novim skripterima da su bar bili ovako jasni tutovi kada sam ja "skriptao" xD sve pohvale
Pohvale, dobar tut :)
Citat: Denim poslato April 22, 2014, 13:36:20 POSLE PODNE
Ovo je više guide tipa copy/paste nego tut jer si samo kodove dao i rekao gdje šta ide a nisi objasnio kako to uopšte funckioniše/šta koji kod radi...
Pohvale za trud :)
Zašto ne pregledaš opet ?
hvala svima haha :)
Lock, citaj pravila. Pise da se ne rade vise nikakvi poslovi!
Citat: matosek123 poslato April 25, 2014, 16:02:15 POSLE PODNE
Lock, citaj pravila. Pise da se ne rade vise nikakvi poslovi!
Doslo je do izmene pravila
Jako dobro objašnjeno, dobar tut.
Citat: Farkias poslato April 25, 2014, 19:20:18 POSLE PODNE
Jako dobro objašnjeno, dobar tut.
potrudio sam se ahah, hvala:P
Sve je to lijepo sto si se ti potrudio,ali ja koliko vidim ovo si samo vidio Gagijev post u 'Razgovor u vezi PAWN-skriptanja' i prekopirao i usput nesto malo objasnio.Svakako pohvale ali se trebaju vratiti creditsi gagiju ;)
Citat: Streetboy poslato April 29, 2014, 11:29:06 PRE PODNE
Sve je to lijepo sto si se ti potrudio,ali ja koliko vidim ovo si samo vidio Gagijev post u 'Razgovor u vezi PAWN-skriptanja' i prekopirao i usput nesto malo objasnio.Svakako pohvale ali se trebaju vratiti creditsi gagiju ;)
nisam ja vidio taj post :)
Hvala ti