Problem(error/warning): Imam problem, napravio sam respawn sistem ali ne znam kako da napravim da dok je igrac u vozilu to vozilo se nece respawnovati.
Deo skripte: [pawn]//[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
[pawn]new bool: vzauzeto[MAX_VEHICLES];
if(!vzauzeto[vehicleid])
{
SetVehicleToRespawn(vehicleid);
}
eto osnova neka sad zavrsi sb u timer-u[/pawn]
Jasno mi je sta hoces da uradim, samo, gde bih mogao da stavim to vzauzeto da proverava. Tj. gde da stavim da se vzauzeto = 1 a gde da bude 0. Kontao sam na OnPlayerEnterVehicle stavm da bude zauzeto a na Exit da bude 0 ali ako npr nekog bringam bez vozila, vozilo ce i dalje ostati da je zauzeto. Ako razumes sta hocu da kazem.
zasto bi uopce to napravio ? Cemu onda tipa poruka ko i na svim ostalim modovima udite u vase vozilo ako nezelite da bude respawan-ano tipa ja mislim
[pawn]
new bool:vehOccupied[MAX_VEHICLES] = {false,...};
new vehicleid=0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid == 0) continue;
vehOccupied[vehicleid]=true;
}
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(vehOccupied[vehicleid]) continue;
SetVehicleToRespawn(i);
}
[/pawn]
Ovako nesto bi trebalo da radi...
E imam problem, kad sam u vozilu ne respawna ali ne respawna nista iako sam ja samo u 1 vozilu.
Promenio sam ovaj deo [pawn]vehicleid = GetPlayerVehicleID(playerid);[/pawn] u [pawn]vehicleid = GetPlayerVehicleID(i);[/pawn]
pa kontam da je do toga ali ne moze da ocita playerid u OnGameModeInit
Ipak nije do toga sto sam promenio jer i sa playerid ne respawna ni jedno vozilo ako sam ja u bilo kojem od njih
Dobro si ti zamenio, moja je greska. Treba:
[pawn] vehicleid = GetPlayerVehicleID(playerid);[/pawn]
Zameni, recompile i test. Pazi, one promenive nisu globalne nego lokalne. Znaci citav kod sto sam ti poslao je lokalni, bukvalno ga mozes samo ubaciti u neku funkciju ili komandu.
Pa ti i jesi napisao [pawn]vehicleid = GetPlayerVehicleID(playerid);[/pawn]
ja sam promenio u [pawn]vehicleid = GetPlayerVehicleID(i);[/pawn]
E vidi, pokusao sam i sa playerid i sa i i ni jedno ne radi. Dole cu ti poslati Timer koji automatski salje i kako timer izgleda.
OVO JE TIMER:
[pawn]forward RespawnVozila();
public RespawnVozila()
{
new bool:vehOccupied[MAX_VEHICLES] = {false,...};
new vehicleid=0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
vehicleid = GetPlayerVehicleID(i);
if(vehicleid == 0) continue;
vehOccupied[vehicleid]=true;
}
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(vehOccupied[vehicleid]) continue;
SetVehicleToRespawn(i);
}
SCMA(-1,"{004AFF}[RESPAWN] {FFFFFF}Sva vozila su respawnovana! Naredni respawn je za 40 minuta!");
return 1;
}
forward RespawnMsg();
public RespawnMsg()
{
SCMA(-1,"{004AFF}[RESPAWN] {FFFFFF}Sva vozila ce biti respawnovana za 5 minuta!");
return 1;
}[/pawn]
A OVO SU TA DVA TIMERA U ONGAMEMODEINIT:
[pawn] SetTimer("RespawnMsg", 15000, true);
SetTimer("RespawnVozila", 20000, true);[/pawn]
EDIT: samo da napomenem i kad stavim vehicleid = GetPlayerVehicleID(i); i vehicleid = GetPlayerVehicleID(playerid); oba ne funkcionisu
[pawn]
forward RespawnVozila();
public RespawnVozila()
{
new bool:vehOccupied[MAX_VEHICLES] = {false,...};
new vehicleid=0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
vehicleid = GetPlayerVehicleID(i);
if(vehicleid == 0) continue;
vehOccupied[vehicleid]=true;
}
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(vehOccupied) continue;
SetVehicleToRespawn(i);
}
SCMA(-1,"{004AFF}[RESPAWN] {FFFFFF}Sva vozila su respawnovana! Naredni respawn je za 40 minuta!");
return 1;
}
[/pawn]
Zajebo sam ja na 2 mesta koliko vidim :D
Jbg to je kad pises na forumu a ne u editor (kad sam kreten, ko mi brani da otvorim novi fajl...)
Uglavnom probaj ovo sto sam poslao sad pa javi ako radi i sta se desava ako ne.
Sve radi, hvala majstore!