05/05/2024 10:47
(05/05/2024 02:09)xbruno1000x Escreveu: Seria melhor refatorar esse código, tem muitos erros de lógica de programação nele.
Código:for(new i; i < 9; i++)
{
if(SlotVeh1[playerid] == 1)
{
CarroNovo = CreateVehicle(510, 1316.8069,-1386.9684,13.5958,176.4769,1,1,360, -1, -1, 1);
PutPlayerInVehicle(playerid,CarroNovo, 0);
SlotVeh1[playerid] = 0;
SlotVeh2[playerid] = 0;
pegoumoto1[playerid] = 1;
FecharMenuSpawn(playerid);
break;
}
if(SlotVeh2[playerid] == 1)
{
CarroNovo = CreateVehicle(462,1316.8069,-1386.9684,13.5958,176.4769 ,1,1,360, -1, -1, 1);
PutPlayerInVehicle(playerid,CarroNovo, 0);
SlotVeh1[playerid] = 0;
SlotVeh2[playerid] = 0;
pegoumoto2[playerid] = 1;
FecharMenuSpawn(playerid);
break;
}
}
Esse trecho por exemplo tem um looping roda 9 vezes atoa. O i nem é usado pra nada.
Esse trecho tem um problema em função da variável ser local. Esse variável só permanece alocada em memória enquanto o código estiver sendo executado. Depois que você executar o comando, esse variável CarroNovo já não vai existir quando for executar novamente, então não vai deletar nenhum veículo. Ela teria que ser global pra deletar algo.Código:if(pegoumoto1[playerid] >= 1 || pegoumoto2[playerid] >= 1)
{
DestroyVehicle(CarroNovo);
}
A dialog está ok, nada de errado nela.
eu tentei refazer o comando e no momento está assim...
Código:
CMD:criavei(playerid, params[])
{
new string[1000];
new VehPlayer[MAX_PLAYERS][2];
if(pegoumoto1[playerid] >= 1)
{
DestroyVehicle(VehPlayer[playerid][0]);
}
if(pegoumoto1[playerid] >= 1)
{
DestroyVehicle(VehPlayer[playerid][1]);
}
if(SlotVeh1[playerid] == 1)
{
VehPlayer[playerid][0] = CreateVehicle(510, 1316.8069,-1386.9684,13.5958,176.4769,1,1,360, -1, -1, 1);
PutPlayerInVehicle(playerid, VehPlayer[playerid][0], 0);
SlotVeh1[playerid] = 0;
SlotVeh2[playerid] = 0;
pegoumoto1[playerid] = 1;
FecharMenuSpawn(playerid);
return 1;
}
if(SlotVeh2[playerid] == 1)
{
VehPlayer[playerid][1] = CreateVehicle(462,1316.8069,-1386.9684,13.5958,176.4769 ,1,1,360, -1, -1, 1);
PutPlayerInVehicle(playerid, VehPlayer[playerid][1], 0);
SlotVeh1[playerid] = 0;
SlotVeh2[playerid] = 0;
pegoumoto2[playerid] = 1;
FecharMenuSpawn(playerid);
return 1;
}
strcat(string, "{ffffff}Voce pegou um veiculo do spawn civil\n\n");
strcat(string, "{df5454}Lembre-se: ficar fora dela por mais de 6 minutos, ela\n");
strcat(string, "{df5454}sera automaticamente destruida.\n\n");
strcat(string, "{FFFFFF}ALGUMAS DICA PARA INICIANTES:\n");
strcat(string, "{FFFFFF}1.{999999} Consiga um emprego: Va ate a prefeitura.\n");
strcat(string, "{999999}Use o comando ''{ffcc99}/gps{999999}''para localizar.\n\n");
strcat(string, "{FFFFFF}2. Precisa de ajuda?Acesse o menu de ajuda com o comando ''{ffcc99}/ajuda{ffffff}'' ou ''{ffcc99}/faq{ffffff}''\n");
strcat(string, "{ffffff}para ver as perguntas frequentes.");
strcat(string, "{999999}Se ainda tiver duvidas,solicite atendimento com o comando ''{ffcc99}/atendimento{999999}''.");
ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "Veiculo Spawn Civil", string, "Fechar", "");
// Configurar o novo veículo
new vid;
luz[playerid] = 1;
EngineCarro[vid] = 1;
// Retornar para evitar que o restante do código seja executado
return 1;
}