Código:
new bool:gAceitar[2];
new gAceitarCount = 0;
public Start_Guerra(playerid, fid) {
gAceitar[0] = false;
gAceitar[1] = false;
new f1 = PlayerInfo[playerid][pFrente];
for (new i = 0; i < MAX_PLAYERS; i++) {
if (PlayerInfo[i][pFrente] != f1 || PlayerInfo[i][pFavela] != fid) continue;
new String[128];
GuerraInfo[fid][gTipo] = 1;
GuerraInfo[fid][gAtaque] = PlayerInfo[playerid][pFavela];
GuerraInfo[fid][gDefende] = fid;
GuerraInfo[fid][gTempo] = 0;
GuerraInfo[fid][gDominada] = false;
GuerraInfo[fid][gTempoCifrao] = 0;
GuerraInfo[fid][gCifraoLiberado] = false;
GuerraInfo[fid][gPegouCifrao] = false;
SetPVarInt(playerid, "namewar", i);
format(String, sizeof(String), "[Guerra] %s fez uma proposta de guerra para comunidade '%s'!", Nome(playerid), FaccaoInfo[fid][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");
}
return true;
}
case DIALOG_ACTGUERRA: {
new i = GetPVarInt(playerid, "namewar");
new fid = PlayerInfo[i][pFavela];
if (response) {
if (!gAceitar[0]) {
gAceitar[0] = true;
gAceitarCount++;
SendFormattedMessageToAll(COLOR_WHITE, "[Guerra] '%s' aceitou a proposta de guerra (1/2).", Nome(playerid));
} else if (!gAceitar[1]) {
gAceitar[1] = true;
gAceitarCount++;
SendFormattedMessageToAll(COLOR_WHITE, "[Guerra] '%s' aceitou a proposta de guerra (2/2).", Nome(playerid));
GuerraInfo[fid][gAcontecendo] = true;
SendFormattedMessageToAll(COLOR_WHITE, "[Guerra] '%s' iniciou uma guerra contra a comunidade '%s'!",
FaccaoInfo[GuerraInfo[fid][gAtaque]][fNome],
FaccaoInfo[GuerraInfo[fid][gDefende]][fNome]);
}
} else {
SendClientMessage(i, COLOR_ORANGE, "[PROPOSTA] Você recusou a guerra.");
}
if (gAceitarCount == 2) {
// Guerra aceita por ambas as partes, já tratado anteriormente
} else if (gAceitar[0] || gAceitar[1]) {
SendClientMessageToAll(COLOR_RED, "[Guerra] Proposta de guerra não aceita por ambas as partes.");
}
}
Interprete o código, foi melhorado.
Além de adaptar por suas necessidades, troque seus loops de MAX_PLAYERS por um foreach. Não há necessidade de rodar algo 1000 vezes, ao invés de iterar sobre os jogadores conectados.