30/10/2023 09:19
(30/10/2023 08:45)pushline Escreveu: O que seria os 500 erros do compilador? Você pode adicionar vários items no DIALOG_STYLE_LIST como você quiser.
E sobre os listitems, seria bom debugar com printf(s) os valores das variáveis., tente isso aqui e veja o que retorna nos printf(s) que eu adicionei:
Código PHP:if(listitem == 0)
{
if(Trabalhando[playerid] == true) // Se estiver com cartão batido
{
Trabalhando[playerid] = false; // Vai acontecer isto.
SendClientMessage(playerid, -1, "{CFCFCF}||{00FF00}K{CFCFCF}|| Você não está mais trabalhando.");
}
else
{
Trabalhando[playerid] = true; // Else = Ou se if(Trabalhando[playerid] == true) na linha 1 for false, o comando abaixo sera executado.
SendClientMessage(playerid, -1, "{CFCFCF}||{00FF00}K{CFCFCF}|| Cartão batido. Agora você está trabalhado.");
}
}
if(listitem == 1) // Entregar o caminhão do trabalho transportador.
{
if(Player[playerid][pEmprego] != 1)
return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você não é um funcionário transportador.");
if(Trabalhando[playerid] == false)
return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você não bateu ponto (Cartão), portanto não poderá iniciar nenhuma rota, nem solicitar a saída de nenyum veículo.");
if(CaminhaoTransportador[playerid] == 0)
return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você ainda não solicitou nenhum veículo.");
printf("[DEBUG] listitem 1 - emprego %d, trabalhando %d", Player[playerid][pEmprego], _:Trabalhando[playerid]);
DestroyVehicle(CaminhaoTransportador[playerid]);
CaminhaoTransportador[playerid] = 0;
SendClientMessage(playerid, -1, "{CFCFCF}||{00FF00}K{CFCFCF}|| O veículo foi recolhido.");
DisablePlayerCheckpoint(playerid);
}
if(listitem == 2) // Solicitar caminhão do trabalho transportador.
{
if(Player[playerid][pEmprego] != 1)
return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você não é um funcionário transportador.");
if(Trabalhando[playerid] == false)
return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você não bateu ponto (Cartão), portanto não poderá iniciar nenhuma rota, nem solicitar a saída de nenyum veículo.");
if(CaminhaoTransportador[playerid] != 0)
return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você já solicitou um veículo. Entregue-o antes de solicitar outro.");
printf("[DEBUG] listitem 2 - emprego %d, trabalhando %d", Player[playerid][pEmprego], _:Trabalhando[playerid]);
CaminhaoTransportador[playerid] = CreateVehicle(609, 2160.8147, -2281.0254, 13.4511, 224.9436, 0, 0, -1);
SetPlayerCheckpoint(playerid, 2160.8147, -2281.0254, 13.4511, 3.0);
SendClientMessage(playerid, -1, "{CFCFCF}||{00FF00}K{CFCFCF}|| O veículo solicitado foi estacionado.");
}
if(listitem == 3)
{
new MEGASTRING[2500];
strcat(MEGASTRING, "{00FF00}Medicamentos: {CFCFCF}Hospital central de LS > Hospital central de SF | {00FF00}R$1.250 \n");
strcat(MEGASTRING, "{00FF00}Medicamentos: {CFCFCF}Hospital central de SF > Hospital central de LV | {00FF00}R$1.250 \n");
strcat(MEGASTRING, "{00FF00}Medicamentos: {CFCFCF}Hospital central de LV > Hospital central de LS | {00FF00}R$1.250 \n");
strcat(MEGASTRING, "{00FF00}Medicamentos: {CFCFCF}Hospital central de LS > Hospital central de LV | {00FF00}R$1.250 \n");
strcat(MEGASTRING, "{00FF00}Medicamentos: {CFCFCF}Hospital central de LV > Hospital central de SF | {00FF00}R$1.250");
ShowPlayerDialog(playerid, Dialog_RotasT, DIALOG_STYLE_LIST, "Escolha sua rota de trabalho", MEGASTRING, "Selecionar", "Cancelar");
}
Sobre as 500 colunas, eu estava falando disso aqui:
https://ibb.co/XsBGDZ9
https://ibb.co/jRKx2B4
Mas a sua dica com MEGASTRING facilitou muito minha vida !!
Sobre as verificações. Eu não consegui entender.
Código PHP:
if(listitem == 1) // Entregar o caminhão do trabalho transportador.
{
if(Player[playerid][pEmprego] != 1) return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você não é um funcionário transportador.");
if(Trabalhando[playerid] == false) return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você não bateu ponto (Cartão), portanto não poderá iniciar nenhuma rota, nem solicitar a saída de nenyum veículo.");
if(CaminhaoTransportador[playerid] == 0) return SendClientMessage(playerid, -1, "{CFCFCF}||{FF0000}ERRO{CFCFCF}|| Você ainda não solicitou nenhum veículo.");
DestroyVehicle(CaminhaoTransportador[playerid]);
CaminhaoTransportador[playerid] = 0;
SendClientMessage(playerid, -1, "{CFCFCF}||{00FF00}K{CFCFCF}|| O veículo foi recolhido.");
DisablePlayerCheckpoint(playerid);
}
A função deste código é destruir determinado veículo, mas para isso é preciso passar porverificações. Só que as mensagens que deveriam retornar não são entregues, pois é preciso que if(Trabalhando[playerid] == false) sejá if(Trabalhando[playerid] == true)
Eu não entendo isso, pois ela é a segunda verificação e não a primeira.
Estou pensando no seguinte: Talvez isso esteja acontecendo porque a listitem 0 é exatamente sobre if(Trabalhando[playerid] == X)
Código PHP:
if(listitem == 0)
{
if(Trabalhando[playerid] == true) // Se estiver com cartão batido
{
Trabalhando[playerid] = false; // Vai acontecer isto.
SendClientMessage(playerid, -1, "{CFCFCF}||{00FF00}K{CFCFCF}|| Você não está mais trabalhando.");
}
else
{
Trabalhando[playerid] = true; // Else = Ou se if(Trabalhando[playerid] == true) na linha 1 for false, o comando abaixo sera executado.
SendClientMessage(playerid, -1, "{CFCFCF}||{00FF00}K{CFCFCF}|| Cartão batido. Agora você está trabalhado.");
}
}