22/01/2025 14:28
(Esta mensagem foi modificada pela última vez a: 22/01/2025 15:23 por xbruno1000x.)
Código:
stock ShowModosDialog(playerid, fuga, pvp, drift, livres)
{
new string[300];
strcat(string, "{FFFFFF}Mundos\t{FFFFFF}Players");
format(string, sizeof(string), "%s\n{F08080}Mundo {FFFFFF}Policia x Bandido\t{4169E1}%d", string, fuga);
format(string, sizeof(string), "%s\n{F08080}Mundo {FFFFFF}Mata-Mata\t{4169E1}%d", string, pvp);
format(string, sizeof(string), "%s\n{F08080}Mundo {FFFFFF}Drift\t{4169E1}%d", string, drift);
format(string, sizeof(string), "%s\n{F08080}Mundo {FFFFFF}Fuga - Com Mundos\t{4169E1}%d", string, livres);
return ShowPlayerDialog(playerid, DIALOG_MODOS, DIALOG_STYLE_TABLIST_HEADERS, "{DCDCDC}ZonePerfect {FFFFFF}- Mundos", string, "Selecionar", "-");
}
if (dialogid == DIALOG_MODOS)
{
if (!response)
{
return ShowModosDialog(playerid, fuga, pvp, drift, livres);
}
if (response)
{
switch (listitem)
{
case 0:
{
ShowPlayerDialog(playerid, DIALOG_PMVSLADRAO, DIALOG_STYLE_LIST, "{FFF000}ESCOLHA A OPÇÃO DESEJADA:", "Quero ser: {1E90FF}Policial\n{FFFFFF}Quero ser: {FF0000}Bandido\n", "Selecionar", "Voltar");
}
case 1:
{
Opt(playerid);
}
case 2:
{
TogglePlayerSpectating(playerid, 0);
OptDrift(playerid);
}
case 3:
{
if (PlayerInfo[playerid][modo] == 4)
return SendClientMessage(playerid, Vermelho, "[ ERRO ] Voce ja esta participando desse mundo!");
onPlayerSpawnEx(playerid);
switch (PlayerInfo[playerid][modo])
{
case 1: fuga -= 1; break;
case 2: pvp -= 1; break;
case 3: drift -= 1; break;
case 4: livres -= 1; break;
}
livres += 1;
PlayerInfo[playerid][modo] = 4;
PlayerInfo[playerid][cargo] = 5;
SendClientMessageToAll(0x9ACD32FF, "| MUNDOS | %s[%d] entrou no Mundo Fuga! {FFFFFF}- ( /Mundos )", pName[playerid], playerid);
TextDrawHideForPlayer(playerid, InfoDeath);
new rrandom = random(sizeof(VehicleColoursTableRGBA));
SetPlayerColor(playerid, VehicleColoursTableRGBA[rrandom]);
SetPlayerPos(playerid, 2500.8027, -1666.5984, 13.3546);
SetPlayerFacingAngle(playerid, 88.5091);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 1004);
SetPVarInt(playerid, "FloodModos", gettime() + 15);
RemovePlayerMapIcon(playerid, 55);
for (new gt = 0; gt < 4; gt++)
TextDrawHideForPlayer(playerid, TextPVP[gt]);
PlayerTextDrawHide(playerid, PTextPVP[playerid][0]);
PlayerTextDrawHide(playerid, PTextPVP[playerid][1]);
ResetPlayerWeapons(playerid);
TogglePlayerSpectating(playerid, 0);
}
}
}
return 1;
}
Encapsulei o método de retornar a dialog dos modos, dessa forma não é necessário ficar formatando e fiz algumas melhorias no código. Acho que deve funcionar.
Basicamente, para o voltar abrir a dialog é necessário programar dentro do if(!response). Você precisa ir na dialog DIALOG_PMVSLADRAO e adicionar
Código:
if (!response)
return ShowModosDialog(playerid, fuga, pvp, drift, livres);
E precisa repetir o processo para todos os "Voltar" funcionarem.
obs: se as variaveis fuga, pvp, drift e livres forem globais, daria até para removê-las dos parâmetros da função.
Discente de Sistemas de Informação no Centro Federal de Ensino Tecnológico(CEFET/RJ)
Programador SA-MP desde 2012
Programador SA-MP desde 2012
Não envie dúvidas por inbox, crie um tópico. Sua dúvida pode ser a dúvida de outro alguém, e seu tópico ajudará outras pessoas no futuro.