Portal SAMP
[Ajuda] dialog - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] dialog (/showthread.php?tid=4823)



dialog - reset157 - 02/07/2024

Código:
[public Start_Guerra(playerid, id_favela)
{
    for(new f = 1; f < MAX_FACCOES; f++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
new id;
GuerraInfo[f][gTipo] = 1;
GuerraInfo[f][gAtaque] = PlayerInfo[playerid][pFavela];
GuerraInfo[f][gDefende] = f;
GuerraInfo[f][gTempo] = 0;
GuerraInfo[f][gDominada] = false;
GuerraInfo[f][gTempoCifrao] = 0;
GuerraInfo[f][gCifraoLiberado] = false;
GuerraInfo[f][gPegouCifrao] = false;
SetPVarInt(i, "namewar", i);

if(PlayerInfo[id][pFrente] == f)
{
new String[128];
SendClientMessageToAllEx(COLOR_WHITE, "[Guerra] %s fez uma proposta de guerra para comunidade '%s'!", Nome(playerid), FaccaoInfo[id_favela][fNome]);
format(String, sizeof String, "%s fez uma proposta de guerra conta a sua comunidade\n", Nome(playerid));
ShowPlayerDialog(i, DIALOG_ACTGUERRA, DIALOG_STYLE_MSGBOX, "{FFFFFF}Convite Guerra", String ,"Aceitar", "Recusar");
}
}
}
return 1;
}


Erro: olá boa noite, preciso de uma ajuda com esse codigo, quando eu escolho umaa favela pra chamar ela para uma guerra a dialog era pra aparecer apenas para os frentes da favela selecionada,porém a dialog esta aparecendo para frentes de outras favela até mesmo para mim,nao era pra aparecer pra mim e sim apenas para os frentes da favela selecionada...

preciso de ajuda para arrumar isso,quem puder ajudar fico muito grato!


RE: dialog - BitSain - 03/07/2024

Código PHP:
public Start_Guerra(playeridid_favela) {
    for(new 1MAX_FACCOESf++) { // Troque por foreach, e crie uma lista de facs com a include y_iterate
        for(new 0MAX_PLAYERSi++) { //Troque por foreach para otimizar isso.
            if(PlayerInfo[i][pFrente] == && PlayerInfo[i][pFavela] == id_favela) { //&& i != playerid) {
                new String[128];
                GuerraInfo[f][gTipo] = 1;
                GuerraInfo[f][gAtaque] = PlayerInfo[playerid][pFavela];
                GuerraInfo[f][gDefende] = f;
                GuerraInfo[f][gTempo] = 0;
                GuerraInfo[f][gDominada] = false;
                GuerraInfo[f][gTempoCifrao] = 0;
                GuerraInfo[f][gCifraoLiberado] = false;
                GuerraInfo[f][gPegouCifrao] = false;
                SetPVarInt(i"namewar"i);

                format(Stringsizeof(String), "[Guerra] %s fez uma proposta de guerra para comunidade '%s'!"Nome(playerid), FaccaoInfo[id_favela][fNome]);
                SendClientMessageToAllEx(COLOR_WHITEString);

                format(Stringsizeof(String), "%s fez uma proposta de guerra contra a sua comunidade\n"Nome(playerid));
                ShowPlayerDialog(iDIALOG_ACTGUERRADIALOG_STYLE_MSGBOX"{FFFFFF}Convite Guerra"String"Aceitar""Recusar");
                
//break; //Caso só tenha um pj "frente" na fac, habilite a função break para quebrar o loop.
            }
        }
    }
    return true;


Agora, a Dialog deve aparecer apenas para os frentes da favela selecionada, e excluindo o jogador que iniciou a guerra.

Identifiquei alguns problemas:
1. Você declarou a variável id `new id`, mas nunca usou essa variável em nenhuma parte do código fornecido.
2. As configurações da variável `GuerraInfo` estão sendo feitas para todas as facções, sem verificar a lógica interna..
3. A dialog deveria aparecer apenas para os "frentes" da facção e da favela selecionada, e não para o jogador que iniciou a guerra. (É só habilitar o que eu comentei e tá resolvido, mas o querer de resolver isso é seu ?)