Carro some - fear - 21/08/2022
Bom dia.
estou com um problema no sistema de carros... o player pega seu veiculo usando /car porém se algum player spawna um carro o carro do player anterior some como se fosse deletado.. se o player sai do servidor tb acontece isso.
CODIGO:
Código PHP: 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","gobob","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 (LSPD)","Police (SFPD)", "Police (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" };
Código PHP: CMD:car(playerid, params[]) { new GetVehicle[15],interior; if(PlayerInfo[playerid][modo] != 4)return SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!"); GetPlayerPos(playerid,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]); GetPlayerFacingAngle(playerid,PlayerInfo[playerid][pPos][3]); interior = GetPlayerInterior(playerid);
if(sscanf(params,"s[15]",GetVehicle)) return SendClientMessage(playerid,Vermelho,"[ ERRO ] Digite:/Car [Nome do Veiculo]"); if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, Vermelho, "[ ERRO ] Voce nao pode criar um Veiculo dentro de outro!"); 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,"[ ERRO ] Esse Veiculo nao existe!"); DestroyVehicle(PegarCarro[playerid]); PegarCarro[playerid] = CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3],-1,-1, 0); LinkVehicleToInterior(PegarCarro[playerid],interior); SetVehicleVirtualWorld(PegarCarro[playerid] ,GetPlayerVirtualWorld(playerid)); PutPlayerInVehicle(playerid,PegarCarro[playerid], 0);
SendClientMessage(playerid,0x799dc9FF,"[ ZP ] {FFFFFF}Veiculo criado com sucesso! ( Nome: {799dc9}%s{FFFFFF} )", VehicleNames[VeiculoID-400]); return 1; }
Código PHP: public OnPlayerDisconnect(playerid, reason) { if ( reason == 0 ) return 1; DestroyVehicle(PegarCarro[playerid]);
DestroyVehicle(PegarCarro[playerid]);
Código PHP: getVehicleName(vehicleid) { new nameVeh[75],vehmodel = GetVehicleModel(vehicleid); if (vehmodel < 400 || vehmodel > 611) { strcat(nameVeh, "Nenhum"); return nameVeh; } strcat(nameVeh, VehicleNames[vehmodel - 400]); return nameVeh; }
RE: Carro some - White_Blue - 21/08/2022
A função nativa CreateVehicle tem um parâmetro, e esse parâmetro é o tempo em que o veículo deve ser respawnado. Deixando esse parâmetro como -1 o veículo não irá respawnar.
Faça como no código abaixo e veja se funciona:
Código PHP: CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3],-1,-1, -1);
RE: Carro some - fear - 21/08/2022
(21/08/2022 11:22)White_Blue Escreveu: A função nativa CreateVehicle tem um parâmetro, e esse parâmetro é o tempo em que o veículo deve ser respawnado. Deixando esse parâmetro como -1 o veículo não irá respawnar.
Faça como no código abaixo e veja se funciona:
Código PHP: CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3],-1,-1, -1);
Ele não respawna e sim ele some.. como se eu tivesse deletado ele.
RE: Carro some - White_Blue - 21/08/2022
Reparando aqui no seu código, tem uma função sendo chamada assim que ele é criado. Por isso ele está sendo destruído
Código PHP: DestroyVehicle(PegarCarro[playerid]);
RE: Carro some - fear - 21/08/2022
(21/08/2022 11:42)White_Blue Escreveu: Reparando aqui no seu código, tem uma função sendo chamada assim que ele é criado. Por isso ele está sendo destruído
Código PHP: DestroyVehicle(PegarCarro[playerid]);
Essa função deleta o carro anterior do mesmo players para não acumular. não deveria deletar um carro de outro player.
RE: Carro some - White_Blue - 21/08/2022
(21/08/2022 11:47)fear Escreveu: (21/08/2022 11:42)White_Blue Escreveu: Reparando aqui no seu código, tem uma função sendo chamada assim que ele é criado. Por isso ele está sendo destruído
Código PHP: DestroyVehicle(PegarCarro[playerid]);
Essa função deleta o carro anterior do mesmo players para não acumular. não deveria deletar um carro de outro player. Você está fazendo isso de maneira errônea, pois você está destruindo o carro ao player executar o comando.
RE: Carro some - MarcosBrazz - 21/08/2022
Tem que fazer uma verificação se a variavel PegarCarro[playerid] existe como veiculo válido, caso exista destruir, se não existir um veiculo e mesmo assim chamar pra destruir vai destruir um veiculo com ID mais proximo
RE: Carro some - RosaScripter - 21/08/2022
(21/08/2022 11:47)fear Escreveu: (21/08/2022 11:42)White_Blue Escreveu: Reparando aqui no seu código, tem uma função sendo chamada assim que ele é criado. Por isso ele está sendo destruído
Código PHP: DestroyVehicle(PegarCarro[playerid]);
Essa função deleta o carro anterior do mesmo players para não acumular. não deveria deletar um carro de outro player.
Use o DestroyVehicle na public OnPlayerExitVehcle, para quando o jogador sair do veiculo o carro sumir.
RE: Carro some - Magrinho93 - 21/08/2022
Código PHP: public OnPlayerDisconnect(playerid, reason) { if ( !IsValidVehicle(PegarCarro[playerid]) )return 1; DestroyVehicle(PegarCarro[playerid]); PegarCarro[playerid] = INVALID_VEHICLE_ID; return 1; }
CMD:car(playerid, params[]) { new GetVehicle[15],interior; if(PlayerInfo[playerid][modo] != 4)return SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!"); GetPlayerPos(playerid,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]); GetPlayerFacingAngle(playerid,PlayerInfo[playerid][pPos][3]); interior = GetPlayerInterior(playerid);
if(sscanf(params,"s[15]",GetVehicle)) return SendClientMessage(playerid,Vermelho,"[ ERRO ] Digite:/Car [Nome do Veiculo]"); if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, Vermelho, "[ ERRO ] Voce nao pode criar um Veiculo dentro de outro!"); 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,"[ ERRO ] Esse Veiculo nao existe!"); // verifica se o jogador já tem um veiculo criado. if ( IsValidVehicle(PegarCarro[playerid]) ) { DestroyVehicle(PegarCarro[playerid]); }
PegarCarro[playerid] = CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3],-1,-1, 0); LinkVehicleToInterior(PegarCarro[playerid],interior); SetVehicleVirtualWorld(PegarCarro[playerid] ,GetPlayerVirtualWorld(playerid)); PutPlayerInVehicle(playerid,PegarCarro[playerid], 0);
SendClientMessage(playerid,0x799dc9FF,"[ ZP ] {FFFFFF}Veiculo criado com sucesso! ( Nome: {799dc9}%s{FFFFFF} )", VehicleNames[VeiculoID-400]); return 1; }
RE: Carro some - DM110 - 23/08/2022
Código PHP: public OnPlayerDisconnect(playerid, reason) { if( PegarCarro[playerid] > -1 ){ DestroyVehicle(PegarCarro[playerid]); PegarCarro[playerid] = -1; } return 1; } CMD:car(playerid, params[]) { new GetVehicle[15],interior; if(PlayerInfo[playerid][modo] != 4)return SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!"); GetPlayerPos(playerid,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]); GetPlayerFacingAngle(playerid,PlayerInfo[playerid][pPos][3]); interior = GetPlayerInterior(playerid);
if(sscanf(params,"s[15]",GetVehicle)) return SendClientMessage(playerid,Vermelho,"[ ERRO ] Digite:/Car [Nome do Veiculo]"); if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, Vermelho, "[ ERRO ] Voce nao pode criar um Veiculo dentro de outro!"); 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,"[ ERRO ] Esse Veiculo nao existe!");
if( PegarCarro[playerid] > -1 ){ DestroyVehicle(PegarCarro[playerid]); PegarCarro[playerid] = -1; } PegarCarro[playerid] = CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3],-1,-1, 0); LinkVehicleToInterior(PegarCarro[playerid],interior); SetVehicleVirtualWorld(PegarCarro[playerid] ,GetPlayerVirtualWorld(playerid)); PutPlayerInVehicle(playerid,PegarCarro[playerid], 0);
SendClientMessage(playerid,0x799dc9FF,"[ ZP ] {FFFFFF}Veiculo criado com sucesso! ( Nome: {799dc9}%s{FFFFFF} )", VehicleNames[VeiculoID-400]); return 1; }
|