CMD:respawnveiculos(playerid, params[]) { new Cargo[126]; if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, CorErro, "[ERRO] Comando invбlido."); for(new i = 0; i < MAX_VEHICLES; i++) { if(GetVehicleDriver(i)) { if(!IsVehicleOccupied(i)) SetVehicleToRespawn(i); if(!IsVehicleOccupied(i) & FoiCriado[i] == true) DestroyVehicle(i); } } switch(PlayerInfo[playerid][pAdmin]) { case 1: Cargo = "Ajudante"; case 2: Cargo = "Moderador(a)"; case 3: Cargo = "Administrador(a)"; case 4: Cargo = "Staff"; } format(Str, sizeof(Str), "[M.D - ADMIN] O(A) %s %s respawnou todos os veнculos nгo utilizados.", Cargo, PlayerName(playerid)); SendClientMessageToAll(AzulClaro, Str); // return 1; }
1є Trocar if(GetVehicleDriver(i)) por if(!IsVehicleOccupied(i))
Remover if(!IsVehicleOccupied(i)) de dentro do bloco pois nгo serб mais necessбrio. |
for(new i = 0; i < MAX_VEHICLES; i++) { if(!IsVehicleOccupied(i)) { SetVehicleToRespawn(i); if(FoiCriado[i] == true) DestroyVehicle(i); } }
2є Inevitбvel a nгo ser que fique salvando tudo a todo momento mas isso nгo й viбvel pois vai consumir muitos recursos.
|
stock IsVehicleOccupied(vehicleid)
{
for(new i = 0; i < MAX_PLAYERS; i++ )
{
if(IsPlayerConnected(i))
{
if(IsPlayerInVehicle(i, vehicleid)) return 1;
}
}
return 0;
}
1. Manda sua funзгo IsVehicleOccupied ou tente essa que eu uso:
pawn Код:
|
2. Coloca pra salvar o status do jogador a cada 5 minutos, dessa forma se houver rollback й de no mбximo 5 minutos.
|
#define INVALID_VEHICLE_ID (0xFFFF) //Topo da GM ou FS
CMD:respawnveiculos(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, CorErro, "[ERRO] Comando invбlido.");
new Cargo[18];
new bool:Veh_Ocupado[MAX_VEHICLES];//Variavel de veiculos ocupados!
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
{
Veh_Ocupado[GetPlayerVehicleID(playerid)] = true;
}
SetVehicleToRespawn(i);
}
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(i != INVALID_VEHICLE_ID)
{
if(!Veh_Ocupado[i])
{
if(FoiCriado[i])
DestroyVehicle(i);
else
SetVehicleToRespawn(i);
}
}
}
switch(PlayerInfo[playerid][pAdmin])
{
case 1: Cargo = "Ajudante";
case 2: Cargo = "Moderador(a)";
case 3: Cargo = "Administrador(a)";
case 4: Cargo = "Staff";
}
format(Str, sizeof(Str), "[M.D - ADMIN] O(A) %s %s respawnou todos os veнculos nгo utilizados.", Cargo, PlayerName(playerid));
SendClientMessageToAll(AzulClaro, Str);
return 1;
}