23/07/2021 20:01
(23/07/2021 19:51)fear Escreveu:Muito estranho esse problema.(23/07/2021 19:31)Lightz/Conta nova Escreveu:(23/07/2021 19:23)fear Escreveu:(23/07/2021 19:20)Lightz/Conta nova Escreveu:(23/07/2021 18:22)fear Escreveu: Boa noite. to sofrendo um bug que quando os players estão dentro do carro ele some do nada..Opa kk, o carro demora quanto tempo para sumir? Eu tenho um comando idêntico a esse mais não acontece isso.
função de criar carros:
Código PHP:stock CriarVeiculo(playerid, modelid, Float:posX, Float:posY, Float:posZ, Float:angle, Colour1, Colour2, respawn_delay)
{
new world = GetPlayerVirtualWorld(playerid);
new interior = GetPlayerInterior(playerid);
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(sCar[playerid]) DestroyVehicle(sCar[playerid]);
GetPlayerPos(playerid, posX, posY, posZ);
GetPlayerFacingAngle(playerid, angle);
sCar[playerid] = CreateVehicle(modelid, posX, posY, posZ, angle, Colour1, Colour2, respawn_delay);
LinkVehicleToInterior(sCar[playerid], interior);
SetVehicleVirtualWorld(sCar[playerid], world);
SetVehicleZAngle(sCar[playerid], angle);
PutPlayerInVehicle(playerid, sCar[playerid], 0);
SetPlayerInterior(playerid, interior);
}
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
if(sCar[playerid]) DestroyVehicle(sCar[playerid]);
GetPlayerPos(playerid, posX, posY, posZ);
GetPlayerFacingAngle(playerid, angle);
sCar[playerid] = CreateVehicle(modelid, posX, posY, posZ, angle, Colour1, Colour2, respawn_delay);
LinkVehicleToInterior(sCar[playerid], interior);
SetVehicleVirtualWorld(sCar[playerid], world);
SetVehicleZAngle(sCar[playerid], angle);
PutPlayerInVehicle(playerid, sCar[playerid], 0);
SetPlayerInterior(playerid, interior);
}
pMensagem(playerid, AzulC, "[INFO] veiculo spawnado.");
return 1;
}
comando /car
Código PHP:CMD:car(playerid, params[])
{
if(pAusente[playerid] == true) return pMensagem(playerid, Vermelho, "-ERRO- Você está ausente.");
if(pPreso[playerid] == true) return pMensagem(playerid, Vermelho, "-ERRO- Você está preso.");
if(EmArenaDM[playerid] == true) return pMensagem(playerid, Vermelho, "-ERRO- Você Não pode usar este comando em uma arena.");
if(pEvento[playerid] == true) return pMensagem(playerid, Vermelho, "-ERRO- Você está no evento.");
new Veiculo[25], Cor[2];
if(sscanf(params, "s[25]I(1)I(1)",Veiculo, Cor[0], Cor[1])) return pMensagem(playerid, Laranja, "[INFO] Use: /Car [Nome] [Cor 1] [Cor 2]");
new bool:existe, VeiculoID;
if(!IsNumeric(Veiculo))
{
for(new r = 0;r < 212; r++)
{
if(!strcmp(Veiculo, sCars[r],true))
{
existe = true;
}
if(!strcmp(Veiculo, sCars[r],true)) VeiculoID = (r+400);
}
}
if(IsNumeric(Veiculo))
{
VeiculoID = strval(Veiculo);
existe = true;
if(400 < (VeiculoID) > 611) existe = false;
}
if(!existe)
{
new String[256];
format(String, sizeof(String), "-ERRO- veiculo Não existe.", Veiculo);
pMensagem(playerid, Vermelho, String);
return 1;
}
if(pPvPLiberado[playerid] == false && sCAdmin[playerid] < 5)
{
if(VeiculoID == 520 || VeiculoID == 432 || VeiculoID == 592 || VeiculoID == 425 ||
VeiculoID == 464 || VeiculoID == 406 || VeiculoID == 476 || VeiculoID == 447) return pMensagem(playerid, -1, "[INFO] Este veiculo Não é permitido neste Modo.");
}
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, Angle);
CriarVeiculo(playerid, VeiculoID, X, Y, Z+1, Angle, Cor[0], Cor[1], -1);
return 1;
}
quando começa a lotar o servidor e tem varios spawn de carros começa a sumir pra varios players.. e não tem função de deletar veiculos.
unica que tem e esse mas e quando o player disconecta.
Código PHP:if(sCar[playerid]) DestroyVehicle(sCar[playerid]);
if(eventoCar[playerid]) DestroyVehicle(eventoCar[playerid]);
Descobri, o problema é o respawn_delay apague todos eles e veja se o problema persiste.
Pelas informações no SA-MP Wiki (CreateVehicle) respawn_delay é o atraso até que o carro seja restaurado sem motorista em segundos.
Se quiser também pode deixar no local de respawn delay deixe: -1.
PegarCarro[playerid] = CreateVehicle(VeiculoID, X,Y,Z+1, Angle, Cor, Cor2, 0);
da um monte de erro tanto removendo quanto colocando -1 mas eu uso respawn_delay no outro gamemode que tenho que e acontece isso não.
Irei mandar meu código para pegar carro e você testa em uma GameMode nova e na sua original.
Código PHP:
new PegarCarro[MAX_PLAYERS];
new PlayerInfo[MAX_PLAYERS];
new Float: X, Float: Y, Float: Z;
new VehicleNames[212][] =
{
"Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
"Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
"Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
"Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
"Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
"Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
"Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
"Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
"Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
"Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
"Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
"Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
"Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
"Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
"Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
"Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
"Stair Trailer","Boxville","Farm Plow","Utility Trailer"
};
CMD:car(playerid, params[])
{
new GetVehicle[15], Cor, Cor2, string[400];
new Float:Angle,int1; GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid,Angle); int1 = GetPlayerInterior(playerid);
if(sscanf(params, "s[15]ii", GetVehicle, Cor, Cor2)) return SendClientMessage(playerid, Vermelho, "{00FF00}[TheLastZone]: {FFFFFF}Use /Car [Nome do Veículo] [Cor1] [Cor2].");
new bool:existe, VeiculoID;
for(new r = 0;r < 212; r++)
{
if(!strcmp(GetVehicle, VehicleNames[r],true))
{
existe = true;
}
if(!strcmp(GetVehicle, VehicleNames[r],true)) VeiculoID = (r+400);
}
if(!existe) return SendClientMessage(playerid, Vermelho, "{FF0000}[ERRO]: {FFFFFF}Esse veículo não existe.");
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
DestroyVehicle(GetPlayerVehicleID(playerid));
PegarCarro[playerid] = CreateVehicle(VeiculoID, X,Y,Z+1, Angle, Cor, Cor2, 0);
LinkVehicleToInterior(PegarCarro[playerid],int1);
SetVehicleVirtualWorld(PegarCarro[playerid] ,GetPlayerVirtualWorld(playerid));
PutPlayerInVehicle(playerid,PegarCarro[playerid], 0);
format(string, sizeof(string), "{00FF00}[TheLastZone]: {FFFFFF}Veículo criado com sucesso! (Nome: {FF0000}%s{FFFFFF} Cores: {FF0000}%d / %d{FFFFFF}).", VehicleNames[VeiculoID-400],Cor,Cor2);
SendClientMessage(playerid, Vermelho, string);
}
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
if(VeiculoOcupado(PegarCarro[playerid])) {} else DestroyVehicle(GetPlayerVehicleID(playerid));
PegarCarro[playerid] = CreateVehicle(VeiculoID, X,Y,Z+1, Angle, Cor, Cor2, 0);
LinkVehicleToInterior(PegarCarro[playerid],int1);
PlayerInfo[playerid] = PegarCarro[playerid];
SetVehicleVirtualWorld(PegarCarro[playerid],GetPlayerVirtualWorld(playerid));
PutPlayerInVehicle(playerid,PegarCarro[playerid], 0);
format(string, sizeof(string), "{00FF00}[TheLastZone]: {FFFFFF}Veículo criado com sucesso! (Nome: {FF0000}%s{FFFFFF} Cores: {FF0000}%d / %d{FFFFFF}).", VehicleNames[VeiculoID-400],Cor,Cor2);
SendClientMessage(playerid, Vermelho, string);
}
return 1;
}
stock VeiculoOcupado(vehicleid)
{
for(new r = 0; r < MAX_PLAYERS; r++)
{
if(GetPlayerState(r) == PLAYER_STATE_DRIVER || GetPlayerState(r) == PLAYER_STATE_PASSENGER)
{
if(GetPlayerVehicleID(r) == vehicleid)
{
return 1;
}
}
}
return 0;
}