Código PHP:
public Start_Guerra(playerid, id_favela) {
for(new f = 1; f < MAX_FACCOES; f++) { // Troque por foreach, e crie uma lista de facs com a include y_iterate
for(new i = 0; i < MAX_PLAYERS; i++) { //Troque por foreach para otimizar isso.
if(PlayerInfo[i][pFrente] == f && 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(String, sizeof(String), "[Guerra] %s fez uma proposta de guerra para comunidade '%s'!", Nome(playerid), FaccaoInfo[id_favela][fNome]);
SendClientMessageToAllEx(COLOR_WHITE, String);
format(String, sizeof(String), "%s fez uma proposta de guerra contra a sua comunidade\n", Nome(playerid));
ShowPlayerDialog(i, DIALOG_ACTGUERRA, DIALOG_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 ?)