[Pomoc] oko posla


Započeo CoNe998, Jul 17, 2016, 00:50:16 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Skripta koju koristim:BERP
Detaljan opis problema: Pravim posao kosac trave. E sada ne bih zeleo da napravim onaj klasican sa CP-ovima jer je on previse dosadan. Hteo bih da napravim da kada se igrac sa kosilicom priblizi travi (koja ce biti ubacena kao neki objekat) ona nestane za sve koji rade posao i da se vrati recimo posle 15 sekundi.
Dio skripte: /
Neke slike/video za lakse dobivanje pomoci(neobavezno): /
Poslednja Izmena: Jul 17, 2016, 00:54:29 PRE PODNE od CoNe998

Negde pri vrhu definisi.
new Trava[5][MAX_PLAYERS];//objekti trave...broj 5 = broj objekata koje smo dodali
new KosacPosao[MAX_PLAYERS];//treba nam za proveru dali je igrač već počeo kositi travu
new TravaTimer[MAX_PLAYERS];//trebace nam za uništavanje timera
new Kosilica[3];//kosilice


Pod OnPlayerConnect

KosacPosao[playerid] = 0;//stavlja igraču varijablu za kosenje na 0


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


E sada gde su ti ostali stockovi za vozila samo ubaci ovaj.

stock VoziloKosaca(carid)
{
for(new i = 0; i < sizeof(Kosilica); i++)
{
if(carid == Kosilica[i]) return 1;
}
return 0;
}

Provera u kojoj izbacuje igraca iz vozila (ti definisi po idu koji tb odgovara)
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
}
}


Sada komanda BE koristi YCMD ja msm
YCMD:kosenje(playerid, params[],help)
{
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;
}


Dalje ide obican tajmer

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

Ovo ubaci gde su ti ostali public. Takodje moras ovo prilagoditi modu a ne samo ubaciti. Ako zapnes javljaj


EDIT: ovo je tut sa drugog foruma pa nisam hteo link kaciti.
Poslednja Izmena: Jul 17, 2016, 10:51:54 PRE PODNE od [VG] Tosic ツ

Eto Tosic ti je dao tutorial jesi uspeo da sredis sve to ?