[Ajuda] Funзгo nгo vai de acordo com o comando!
#1

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;
}
Reply
#2

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...
Reply
#3

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
Reply
#4

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;
            }
        }
    }
Reply
#5

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;
}
Reply
#6

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;
    }
Reply
#7

Use o break
pawn Код:
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;
    }
}
E tambйm se vocк quer apenas remover a deagle ou MP5, poderia ter iniciado o loop no slot 2 atй o 4.
Assim:
pawn Код:
for (new i = 2; i < 5; i++ )
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)