Como se quita el comando /llaves del GM De Zenon City
#1

Mucha gente lo ha preguntado antes que yo, pero nunca se le ha respondido correctamente. Me gustarнa que cuando el jugador spawnee, los vehнculos spawneen automaticamente en su estacionamiento, sin necesidad del /llaves.

CMD:llaves(playerid, params[])
{
new vstring[512], stext[11];
for(new i; i < MAX_PLAYERVEHICLES; i++)
{
switch(PlayerVehicleInfo[playerid][i][pvSpawned])
{
case 0: stext = "stored";
case 1: stext = "spawned";
}
if(PlayerVehicleInfo[playerid][i][pvModelId] != 0)
format(vstring, sizeof(vstring), "%s\n%s - (%s)", vstring, VehicleName[PlayerVehicleInfo[playerid][i][pvModelId] - 400], stext);

else if(PlayerVehicleInfo[playerid][i][pvImpounded] == 1)
format(vstring, sizeof(vstring), "%s\n%s (Embargado) (%s)", vstring, VehicleName[PlayerVehicleInfo[playerid][i][pvModelId] - 400], stext);

else
format(vstring, sizeof(vstring), "%s\nVacнo", vstring);
}
SafeDialogEx(playerid, CARSPAWN, DIALOG_STYLE_LIST, "Tus Coches:", vstring, "(De)Spawn", "Salir");
return 1;
}



case CARSPAWN:
{
if (response == 1)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
}
}
return 1;
}
Reply
#2

Usted debe similar la funciуn de spawn cars en OnPlayerSpawn del jugador o similar, el ejemplo:

public OnPlayerSpawn(playerid)
{
for(new listitem = 0; listitem < 3; listitem++)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
return 1;
}
Reply
#3

Quote:
Originally Posted by Ebaristo
Посмотреть сообщение
Usted debe similar la funciуn de spawn cars en OnPlayerSpawn del jugador o similar, el ejemplo:

public OnPlayerSpawn(playerid)
{
for(new listitem = 0; listitem < 3; listitem++)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
return 1;
}
Asн no serнa :S
Reply
#4

Ahora estoy desconcertado, tu sabes como no serнa pero no sabes como es?

Te digo que es asн, funciona perfectamente, no hay que ser un genio para saber que si editas los mensajes quedarб mejor al spawnear (Ej: Vehiculos Spawneados en sus posiciones guardadas)

En el loop aumenta el numero 3 para cargar mбs coches si lo necesitas.

Para ser mбs especifico (ya demasiado) solo debes agregar esta parte al callback OnPlayerSpawn:
Код:
for(new listitem = 0; listitem < 3; listitem++)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
El resto quedarб igual.
Reply
#5

Quote:
Originally Posted by Ebaristo
Посмотреть сообщение
Ahora estoy desconcertado, tu sabes como no serнa pero no sabes como es?

Te digo que es asн, funciona perfectamente, no hay que ser un genio para saber que si editas los mensajes quedarб mejor al spawnear (Ej: Vehiculos Spawneados en sus posiciones guardadas)

En el loop aumenta el numero 3 para cargar mбs coches si lo necesitas.

Para ser mбs especifico (ya demasiado) solo debes agregar esta parte al callback OnPlayerSpawn:
Код:
for(new listitem = 0; listitem < 3; listitem++)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
El resto quedarб igual.
Pawn Compilary dejу de funcionar.

Esta funciуn es de un comando, por lo que no funciona :S
Reply
#6

La estarбs agregando mal, como dije debes agregarlo luego de la primera llave { de OnPlayerSpawn (SIN QUITAR NADA DE ESE CALLBACK), la funciуn esa es CARSPAWN la que spawnea los coches, solo que imitamos el uso del dialogo, con un loop es lo mismo que spawnear los coches manualmente solo que lo hace.

Asi quedarнa el callback completo en OnPlayerSpawn (el GM ZC que yo tengo sin editar)
Код:
public OnPlayerSpawn(playerid)
{
for(new listitem = 0; listitem < 3; listitem++)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
	if(!gPlayerLogged{playerid})
	{
	    SendClientMessageEx(playerid, COLOR_WHITE, "ERROR: No has ingresado correctamente al servidor!");
        Kick(playerid);
        return 1;
 	}
	if(IsPlayerNPC(playerid)) return 1;
	if(!gPlayerAnimLibsPreloaded[playerid])
	{
        LoadAnimLibs(playerid);
		gPlayerAnimLibsPreloaded[playerid] = 1;
	}
	SetPlayerWantedLevel(playerid, Info[playerid][pWantedLevel]);
	gTeam[playerid] = Info[playerid][pTeam]; //Set the Team
	SetPlayerSpawn(playerid);
	SetPlayerWeapons(playerid);
	OnDuty[playerid] = 0;
	SetPlayerToTeamColor(playerid);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 1);
	SyncPlayerTime(playerid);
	return 1;
}
Si quieres una imagen de como funciona correctamente no tengo problemas en acercartela, hay que tener un poco de fй.
Reply
#7

Quote:
Originally Posted by Ebaristo
Посмотреть сообщение
La estarбs agregando mal, como dije debes agregarlo luego de la primera llave { de OnPlayerSpawn (SIN QUITAR NADA DE ESE CALLBACK), la funciуn esa es CARSPAWN la que spawnea los coches, solo que imitamos el uso del dialogo, con un loop es lo mismo que spawnear los coches manualmente solo que lo hace.

Asi quedarнa el callback completo en OnPlayerSpawn (el GM ZC que yo tengo sin editar)
Код:
public OnPlayerSpawn(playerid)
{
for(new listitem = 0; listitem < 3; listitem++)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
	if(!gPlayerLogged{playerid})
	{
	    SendClientMessageEx(playerid, COLOR_WHITE, "ERROR: No has ingresado correctamente al servidor!");
        Kick(playerid);
        return 1;
 	}
	if(IsPlayerNPC(playerid)) return 1;
	if(!gPlayerAnimLibsPreloaded[playerid])
	{
        LoadAnimLibs(playerid);
		gPlayerAnimLibsPreloaded[playerid] = 1;
	}
	SetPlayerWantedLevel(playerid, Info[playerid][pWantedLevel]);
	gTeam[playerid] = Info[playerid][pTeam]; //Set the Team
	SetPlayerSpawn(playerid);
	SetPlayerWeapons(playerid);
	OnDuty[playerid] = 0;
	SetPlayerToTeamColor(playerid);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 1);
	SyncPlayerTime(playerid);
	return 1;
}
Si quieres una imagen de como funciona correctamente no tengo problemas en acercartela, hay que tener un poco de fй.
No consigo meterlo, me tira o 26 errores o dejу de funcionar, si puedes pasarme una imagen de como lo tienes tъ :S

Aunque primero compila para ver si te funciona :P

En onplayerspawn ya hay mбs cosas - PD: No podrнa ser en onplayerlogin o algo?
Reply
#8

Si, lo he probado en OnPlayerSpawn y como era de esperar funciona, en OnPlayerLogin dudo que sirva correctamente ya que estariamos adhiriendo un bucle y puede generar problemas. Deja tu cуdigo de OnPlayerSpawn completo y yo lo combinare para que sirva, ademas le agregare PVars para que no se repita.
Reply
#9

Quote:
Originally Posted by Ebaristo
Посмотреть сообщение
Si, lo he probado en OnPlayerSpawn y como era de esperar funciona, en OnPlayerLogin dudo que sirva correctamente ya que estariamos adhiriendo un bucle y puede generar problemas. Deja tu cуdigo de OnPlayerSpawn completo y yo lo combinare para que sirva, ademas le agregare PVars para que no se repita.
Код:
public OnPlayerSpawn(playerid)
{
	if(!gPlayerLogged{playerid})
	{
	    SendClientMessageEx(playerid, COLOR_WHITE, "ERROR: No has ingresado correctamente al servidor!");
        Kick(playerid);
        return 1;
 	}
	if(IsPlayerNPC(playerid)) return 1;
	if(!gPlayerAnimLibsPreloaded[playerid])
	{
        LoadAnimLibs(playerid);
		gPlayerAnimLibsPreloaded[playerid] = 1;
	}
	SetPlayerWantedLevel(playerid, Info[playerid][pWantedLevel]);
	gTeam[playerid] = Info[playerid][pTeam]; //Set the Team
	SetPlayerSpawn(playerid);
	SetPlayerWeapons(playerid);
	OnDuty[playerid] = 0;
	SetPlayerToTeamColor(playerid);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 1);
	SyncPlayerTime(playerid);
	return 1;
}
{
for(new listitem = 0; listitem < 3; listitem++)
{
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] == 1) return SendClientMessageEx(playerid,COLOR_WHITE,"El auto que intenta spawnear estб embargado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvModelId] != 0 && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 0)
{
if(carsforplayer[playerid] == 2) return SendClientMessageEx(playerid,COLOR_WHITE,"* Sуlo puedes tener 2 coches spawneados y 6 guardados.");
PlayerCars++;
carsforplayer[playerid]++;
new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][listitem][pvModelId], PlayerVehicleInfo[playerid][listitem][pvPosX], PlayerVehicleInfo[playerid][listitem][pvPosY], PlayerVehicleInfo[playerid][listitem][pvPosZ], PlayerVehicleInfo[playerid][listitem][pvPosAngle],PlayerVehicleInfo[playerid][listitem][pvColor1], PlayerVehicleInfo[playerid][listitem][pvColor2], -1);
PlayerVehicleInfo[playerid][listitem][pvId] = carcreated;
VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][listitem][pvFuel];
SetVehicleHealth(carcreated, PlayerVehicleInfo[playerid][listitem][pvHealth]);
SetVehicleVirtualWorld(carcreated, PlayerVehicleInfo[playerid][listitem][pvVW]);
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 1;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo spawneado correctamente, en la ъltima posiciуn que lo estacionaste. (/gps)");
if(PlayerVehicleInfo[playerid][listitem][pvLocked] == 1)
LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][listitem][pvId], PlayerVehicleInfo[playerid][listitem][pvLock]);
LoadPlayerVehicleMods(playerid, listitem);
return 1;

}
else if(PlayerVehicleInfo[playerid][listitem][pvSpawned] == 1)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
//printf(" Unloading %s's vehicles.", playername);
new Float:health;
GetVehicleHealth(PlayerVehicleInfo[playerid][listitem][pvId], health);
if(health < 500) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб muy daсado para ser guardado.");
if(IsVehicleBusy(PlayerVehicleInfo[playerid][listitem][pvId])) return SendClientMessageEx(playerid, COLOR_GREY, " El vehiculo estб ocupado por otra persona y no puede ser guardado.");
if(PlayerVehicleInfo[playerid][listitem][pvImpounded] >= 2) PlayerVehicleInfo[playerid][listitem][pvImpounded] = 0;
if(PlayerVehicleInfo[playerid][listitem][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][listitem][pvImpounded] == 0 && PlayerVehicleInfo[playerid][listitem][pvSpawned]== 1)
{
PlayerCars--;
carsforplayer[playerid]--;
if(LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][listitem][pvId]] = 0;
UpdatePlayerVehicleMods(playerid, listitem);
DestroyVehicle(PlayerVehicleInfo[playerid][listitem][pvId]);
VehicleFuel[PlayerVehicleInfo[playerid][listitem][pvId]] = 1000;
PlayerVehicleInfo[playerid][listitem][pvId] = INVALID_PLAYER_VEHICLE_ID;
PlayerVehicleInfo[playerid][listitem][pvSpawned] = 0;
SendClientMessageEx(playerid,COLOR_WHITE,"Vehiculo fue guardado correctamente.");
if(PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
Info[PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][listitem][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
	if(!gPlayerLogged{playerid})
	{
	    SendClientMessageEx(playerid, COLOR_WHITE, "ERROR: No has ingresado correctamente al servidor!");
        Kick(playerid);
        return 1;
 	}
	if(IsPlayerNPC(playerid)) return 1;
	if(!gPlayerAnimLibsPreloaded[playerid])
	{
        LoadAnimLibs(playerid);
		gPlayerAnimLibsPreloaded[playerid] = 1;
	}
	SetPlayerWantedLevel(playerid, Info[playerid][pWantedLevel]);
	gTeam[playerid] = Info[playerid][pTeam]; //Set the Team
	SetPlayerSpawn(playerid);
	SetPlayerWeapons(playerid);
	OnDuty[playerid] = 0;
	SetPlayerToTeamColor(playerid);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1);
	SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 1);
	SyncPlayerTime(playerid);
	return 1;
}
Gracias de antemano.
Reply
#10

Por favor utilizen la etiqueta [pawn] para sus codigos y pastebin (u otro si dicha pagina web no les funciona) para codigos largos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)