[TuT] Posao kosač trave / Sa objektima trave

Hitman Započeo Hitman
pre 11 godina
7,753
pregleda
19
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
Hitman
Crime Lord
pre 11 godina
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
Wheel Man
pre 11 godina
Fino si uradio opis i skripta je fino objaÅ¡njena zato evo ti 10/10 😄

Svaka čast ! 🙂
Hitman
Crime Lord
pre 11 godina
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
Kingpin
pre 11 godina
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
Underboss
pre 11 godina
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
Enforcer
pre 11 godina
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
Enforcer
pre 11 godina
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
OG Legend
pre 11 godina
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
Shot Caller
pre 11 godina
10/10
Razor55
Shot Caller
pre 11 godina
Svaka cast moze posluziti novim skripterima da su bar bili ovako jasni tutovi kada sam ja "skriptao" xD sve pohvale
Miki King
Hustler
pre 11 godina
Pohvale, dobar tut 🙂
Hitman
Crime Lord
pre 11 godina
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
Shot Caller
pre 11 godina
Lock, citaj pravila. Pise da se ne rade vise nikakvi poslovi!
Blaeks_Biofor
Forum Don
pre 11 godina
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
Godfather
pre 11 godina
Jako dobro objašnjeno, dobar tut.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava