public OnPlayerUpdate(playerid)
{
for (new Slots = 0; Slots < 13; Slots++)
{
new Arma_ID, Balas;
GetPlayerWeaponData(playerid, Slots, Arma_ID, Balas);
if(Arma_ID == 24 || Arma_ID == 29)
{
RetirarEquipamento[playerid] = 1;
}
else
{
RetirarEquipamento[playerid] = 0;
}
}
return true;
}
Isso porque o loop vai do slot 0 ao slot 12.
O slot 12 й o slot do detonador, entгo, no final do loop, quando vocк pede pra Arma_ID receber o ID da arma no slot 12, vai receber ou o ID do detonador, ou algum outro ID que represente um erro, que o jogador nгo tem a arma no slot. Quando ele chega na Deagle e na MP5, o RetirarEquipamento[playerid] recebe 1, mas quando chega em QUALQUER outra arma, ele vai pra 0. Recomendo o uso do break; no momento em que a variбvel RetirarEquipamento[playerid] recebe o valor 1. Apesar de vocк estar fazendo isso no OnPlayerUpdate... |
Isso porque o loop vai do slot 0 ao slot 12.
O slot 12 й o slot do detonador, entгo, no final do loop, quando vocк pede pra Arma_ID receber o ID da arma no slot 12, vai receber ou o ID do detonador, ou algum outro ID que represente um erro, que o jogador nгo tem a arma no slot. Quando ele chega na Deagle e na MP5, o RetirarEquipamento[playerid] recebe 1, mas quando chega em QUALQUER outra arma, ele vai pra 0. Recomendo o uso do break; no momento em que a variбvel RetirarEquipamento[playerid] recebe o valor 1. Apesar de vocк estar fazendo isso no OnPlayerUpdate... |
for (new Slots = 0; Slots < 13; Slots++)
{
new Armas, Balas;
for(new AR = 0 ; AR < 47 ; AR++)
{
GetPlayerWeaponData(playerid, Slots, AR, Balas);
if(AR == 24 || AR == 29)
{
RetirarEquipamento[playerid] = 1;
}
else
{
RetirarEquipamento[playerid] = 0;
}
}
}
public OnPlayerUpdate(playerid)
{
new
Arma[12][2]
;
for(new i = 0; i < 13; ++i)
GetPlayerWeaponData(playerid, i, Arma[i][0], Arma[i][1]);
if(Arma[2][0] == 24 || Arma[4][0] == 29) RetirarEquipamento[playerid] = 1;
return 1;
}
Cara, й bom analisar bem antes de ficar usando loop dentro de loop, dentro do OnPlayerUpdate
Faz assim: pawn Код:
|
new Arma[2], bala ;
GetPlayerWeaponData(playerid, 2, Arma[0], bala);
GetPlayerWeaponData(playerid, 5, Arma[1], bala);
if(Arma[0] == 24)
{
RetirarEquipamento[playerid] = 1;
}
else if(Arma[1] == 31)
{
RetirarEquipamento[playerid] = 1;
}
else
{
RetirarEquipamento[playerid] = 0;
}
new Arma[2];
for (new i = 0; i < 13; i++ ) {
GetPlayerWeaponData(playerid, i, Arma[0], Arma[1]);
if(Arma[0] == 24 || Arma[0] == 29) {
RetirarEquipamento[playerid] = 1;
break;
}
}
for (new i = 2; i < 5; i++ )