Posts: 349
Threads: 119
Joined: Jun 2013
Olhem
Eu estou com uma eagle e uma MP5, mais a variavel "
RetirarEquipamento " nгo me retorna como verdadeira, ela continua como falsa, ou melhor continua igual a 0.
pawn Код:
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;
}
Posts: 671
Threads: 34
Joined: Jun 2010
Reputation:
0
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...
Posts: 349
Threads: 119
Joined: Jun 2013
Quote:
Originally Posted by Rodney Francalim
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...
|
Nгo entendi foi nada
Posts: 349
Threads: 119
Joined: Jun 2013
Quote:
Originally Posted by Rodney Francalim
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...
|
Complicado, mais eu fiz desta maneira, serб que resolve?
pawn Код:
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;
}
}
}
Posts: 349
Threads: 119
Joined: Jun 2013
Quote:
Originally Posted by Rodney Francalim
Cara, й bom analisar bem antes de ficar usando loop dentro de loop, dentro do OnPlayerUpdate
Faz assim:
pawn Код:
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; }
|
vou usar 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;
}