[TuT] Posao kosač trave / Sa objektima trave

Započeo Hitman, April 21, 2014, 18:25:54 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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[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 ! :)



[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

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 :)
NAPUSTIO SAM SAMP

Oproštajni post

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...
69


Svaka cast moze posluziti novim skripterima da su bar bili ovako jasni tutovi kada sam ja "skriptao" xD sve pohvale


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!
Vatrogasac - Vozač

Where You go out, firefighters goes in