[TuT] Posao kosač trave / Sa objektima trave

Započeo Hitman
21. Apr. 2014. Zaključano
7,801
pregleda
19
postova
Hitman
5
Crime Lord
21. Apr. 2014.
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)





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 dodali
  • Dodat ćemo pod public OnPlayerConnect sljedeće

KosacPosao = 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 = 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$
}
}




vladan98ful
2
Wheel Man
21. Apr. 2014.
Fino si uradio opis i skripta je fino objaÅ¡njena zato evo ti 10/10 😄

Svaka čast ! 🙂
Hitman
5
Crime Lord
21. Apr. 2014.
Quote from April 21, 2014, 11:29 pm:
Fino si uradio opis i skripta je fino objaÅ¡njena zato evo ti 10/10 😄

Svaka čast ! 🙂


hvala  😄
BocaBajrovic1995
5
Kingpin
22. Apr. 2014.
Quote from April 21, 2014, 11:29 pm:
Fino si uradio opis i skripta je fino objaÅ¡njena zato evo ti 10/10 😄

Svaka čast ! 🙂
xyzcod2
5
Underboss
22. Apr. 2014.
Quote from April 21, 2014, 11:29 pm:
Fino si uradio opis i skripta je fino objaÅ¡njena zato evo ti 10/10 😄

Svaka čast ! 🙂
BalkaNation
4
Enforcer
22. Apr. 2014.
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)
Pasa
4
Enforcer
22. Apr. 2014.
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 🙂
James_SmithXDl
6
OG Legend
22. Apr. 2014.
Denim wrote on April 22, 2014, 11:36 am:
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...
[DV] Ognjen
4
Shot Caller
22. Apr. 2014.
10/10
Razor55
4
Shot Caller
22. Apr. 2014.
Svaka cast moze posluziti novim skripterima da su bar bili ovako jasni tutovi kada sam ja "skriptao" xD sve pohvale
Miki King
3
Hustler
22. Apr. 2014.
Pohvale, dobar tut 🙂
Hitman
5
Crime Lord
22. Apr. 2014.
Denim wrote on April 22, 2014, 11:36 am:
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  🙂
matosek123
4
Shot Caller
25. Apr. 2014.
Lock, citaj pravila. Pise da se ne rade vise nikakvi poslovi!
Blaeks_Biofor
5
Forum Don
25. Apr. 2014.
matosek123 wrote on April 25, 2014, 2:02 pm:
Lock, citaj pravila. Pise da se ne rade vise nikakvi poslovi!
Doslo je do izmene pravila
Faris_Farkias
6
Godfather
🔥33
25. Apr. 2014.
Jako dobro objašnjeno, dobar tut.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha