Código PHP:
case ROUPA:
{
if(response) {
if(!IsNumeric(inputtext) || isnull(inputtext))
return ShowPlayerDialog(playerid, ROUPA, DIALOG_STYLE_INPUT, "{99ccff}>>{FFFFFF} Inserir ID da Roupa", "{FFFFFF}ID:", "Seguinte", "Sair");
new str[126], interior = GetPlayerVirtualWorld(playerid), skinid;
skinid = strval(inputtext);
new bool:ound = false;
for(new i = 0; i < MAX_CASAS; i++) {
if(SkinsComunsM[i] == skinid) {
InteriorRoupa[playerid] = 23;
SetPlayerVirtualWorld(playerid, random(999));
SelectTextDraw(playerid, COLOR_SUCESSO);
SetPlayerSkin(playerid, skinid);
SetPlayerPos(playerid, 216.3893, -99.7677, 1005.2578);
SetPlayerFacingAngle(playerid, 91.4113);
InterpolateCameraPos(playerid, 207.591293, -102.540962, 1006.733825, 213.445861, -99.694190, 1006.323852, 1500);
InterpolateCameraLookAt(playerid, 207.529800, -97.566955, 1006.228393, 218.213165, -99.816513, 1004.821228, 1000);
found = true;
break;
}
}
if(!found) {
for(new i = 0; i < MAX_CASAS; i++) {
if(SkinsExclusivasM[i] == skinid) {
InteriorRoupa[playerid] = 23;
SetPlayerVirtualWorld(playerid, random(999));
SetPlayerSkin(playerid, skinid);
SetPlayerPos(playerid, 179.7483, -88.5120, 1002.0234);
SetPlayerFacingAngle(playerid, 88.3848);
InterpolateCameraPos(playerid, 161.324523, -83.541923, 1002.646850, 176.656112, -88.567787, 1002.898437, 1500);
InterpolateCameraLookAt(playerid, 161.468490, -78.577819, 1002.066406, 181.510711, -88.504165, 1001.703125, 1500);
found = true;
break;
}
}
}
if(!found) {
SendClientMessage(playerid, COLOR_LARANJA, "O ID é inválido ou a roupa não está disponível.");
}
}
return true;
}
A única coisa que eu acho que está fora de contexto é o loop ser rodados 'MAX_CASAS' vezes.
Mas...
Mudanças do código original para esse:
1- O uso de break garante que a mensagem de erro não seja enviada múltiplas vezes.
2- Separando as verificações em dois loops distintos, você evita conflitos entre as condições.
3- As ações são mais claras e o 'fluxo lógico do código é mais fácil de seguir'.