[Ajuda] GetPlayerWeaponData
#1

Olб guys tф fazendo um sistema de armas em mysql, so que tф tendo um probleminha,
nгo estou conseguindo diminuir a muniзгo, alguйm pode me dar uma forcinha ?

pawn Код:
forward VerificarBalas();
public VerificarBalas()
{
    new weapon, ammo;
    foreach(new playerid : Player)
    {
        for(new i; i < MAX_ARMAS; i++)
        {
            if(Armas[i][DonoArma] == PlayerInfo[playerid][UserID])
            {
                GetPlayerWeaponData(playerid, GetSlot(Armas[i][Modelo]), weapon, ammo);
                if(ammo >= Armas[i][Municao]) {
                    Armas[i][Municao] = ammo;
                }
                else Armas[i][Municao] = 0;
                new on = DonoOnline(Armas[i][DonoArma]);
                if(Armas[i][Municao] == 0)
                {
                    if(on > -1)
                    {    
                        new string[128];
                        format(string,128,"ARMAS: A muniзгo de sua arma %s acabou.", NomeArmas[Armas[i][Modelo]]);
                        SendClientMessage(i, -1, string);
                    }
                }
            }
        }
    }
    return 1;
}
Reply
#2

Que erro acontece?
Reply
#3

quando o jogador voltava no servidor, as muniзхes duplicava. Consegui, fiz desse jeito.

pawn Код:
forward VerificarBalas();
public VerificarBalas()
{
    new plyWeapons[13];
    new plyAmmo[13];
    new weapon, ammo;
    foreach(new playerid : Player)
    {
        for(new i; i < MAX_ARMAS; i++)
        {
            if(Arma[i][Dono] == PlayerInfo[playerid][UserID])
            {
                for(new slot = 0; slot < 13; slot++) GetPlayerWeaponData(playerid, GetSlot(Arma[i][Modelo]), plyWeapons[slot], plyAmmo[slot]);
                new has = Arma[i][ArmaAmmo];
                if(plyWeapons[GetSlot(Arma[i][Modelo])] == Arma[i][Modelo])
                {
                    if(has > plyAmmo[GetSlot(Arma[i][Modelo])])
                    {
                        if( (has > 5000 && plyAmmo[GetSlot(Arma[i][Modelo])] == 0) || (plyAmmo[GetSlot(Arma[i][Modelo])] < (has-5000*2)))
                        {
                        }
                        else
                        {
                            Arma[i][ArmaAmmo] = plyAmmo[GetSlot(Arma[i][Modelo])];
                        }
                    }
                    new on = DonoOnline(Arma[i][Dono]);
                    if(Arma[i][ArmaAmmo] == 0)
                    {
                        if(on > -1)
                        {    
                            new string[128];
                            format(string,128,"ARMAS: A muniзгo de sua arma %s acabou.", NomeArmas[Arma[i][Modelo]]);
                            SendClientMessage(i, -1, string);
                        }
                    }
                }
            }
        }
    }
    return 1;
}

eu fiz essas cb mas acho que poderia ficar melhor melhor, tem alguma ideia de como identar ela ?

й pra identificar se tem a arma jб no slot para o player nгo poder comprar outra

pawn Код:
stock TemArmaSlot(playerid, idarma)
{
    new temarmaslot = 0;
    for(new i; i < MAX_ARMAS; i++)
    {
        if(Arma[i][Dono] == PlayerInfo[playerid][UserID])
        {
            if(idarma == 2 || idarma == 3 || idarma == 4 || idarma == 5 || idarma == 6 || idarma == 7 || idarma == 8 || idarma == 9){
                if(Arma[i][Modelo] == 2 ||Arma[i][Modelo] == 3 ||Arma[i][Modelo] == 4 ||Arma[i][Modelo] == 5 ||Arma[i][Modelo] == 6 ||Arma[i][Modelo] == 7 ||Arma[i][Modelo] == 8 ||Arma[i][Modelo] == 9)
                {
                    temarmaslot = 1;
                }
            }
            if(idarma == 10 || idarma == 11 || idarma == 12 || idarma == 13 || idarma == 14 || idarma == 15){
                if(Arma[i][Modelo] == 10 ||Arma[i][Modelo] == 11 ||Arma[i][Modelo] == 12 ||Arma[i][Modelo] == 13 ||Arma[i][Modelo] == 14 ||Arma[i][Modelo] == 15)
                {
                    temarmaslot = 1;
                }
            }
            if(idarma == 16 || idarma == 17 || idarma == 18){
                if(Arma[i][Modelo] == 16 ||Arma[i][Modelo] == 17 ||Arma[i][Modelo] == 18)
                {
                    temarmaslot = 1;
                }
            }
            if(idarma == 22 || idarma == 23 || idarma == 24 ){
                if(Arma[i][Modelo] == 22 ||Arma[i][Modelo] == 23 ||Arma[i][Modelo] == 24)
                {
                    temarmaslot = 1;
                }
            }
            if(idarma == 25 || idarma == 26 || idarma == 27 ){
                if(Arma[i][Modelo] == 25 ||Arma[i][Modelo] == 26 ||Arma[i][Modelo] == 27)
                {
                    temarmaslot = 1;
                }
            }
            if(idarma == 28 || idarma == 29 || idarma == 32){
                if(Arma[i][Modelo] == 28 ||Arma[i][Modelo] == 29 ||Arma[i][Modelo] == 32)
                {
                    temarmaslot = 1;
                }
            }
            if(idarma == 30 || idarma == 31){
                if(Arma[i][Modelo] == 30 ||Arma[i][Modelo] == 31)
                {
                    temarmaslot = 1;
                }
            }
            if(idarma == 33 || idarma == 34){
                if(Arma[i][Modelo] == 33 ||Arma[i][Modelo] == 34)
                {
                    temarmaslot = 1;
                }
            }
        }
    }
    return temarmaslot;
}

stock CarregarArma(playerid)
{
    new idarma;
    for(new i; i < MAX_ARMAS; i++)
    {
        if(Arma[i][Dono] == PlayerInfo[playerid][UserID])
        {
            idarma = Arma[i][Modelo];
            if(idarma == 2 || idarma == 3 || idarma == 4 || idarma == 5 || idarma == 6 || idarma == 7 || idarma == 8 || idarma == 9){
                if(Arma[i][Modelo] == 2 ||Arma[i][Modelo] == 3 ||Arma[i][Modelo] == 4 ||Arma[i][Modelo] == 5 ||Arma[i][Modelo] == 6 ||Arma[i][Modelo] == 7 ||Arma[i][Modelo] == 8 ||Arma[i][Modelo] == 9)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
            if(idarma == 10 || idarma == 11 || idarma == 12 || idarma == 13 || idarma == 14 || idarma == 15){
                if(Arma[i][Modelo] == 10 ||Arma[i][Modelo] == 11 ||Arma[i][Modelo] == 12 ||Arma[i][Modelo] == 13 ||Arma[i][Modelo] == 14 ||Arma[i][Modelo] == 15)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
            if(idarma == 16 || idarma == 17 || idarma == 18){
                if(Arma[i][Modelo] == 16 ||Arma[i][Modelo] == 17 ||Arma[i][Modelo] == 18)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
            if(idarma == 22 || idarma == 23 || idarma == 24 ){
                if(Arma[i][Modelo] == 22 ||Arma[i][Modelo] == 23 ||Arma[i][Modelo] == 24)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
            if(idarma == 25 || idarma == 26 || idarma == 27 ){
                if(Arma[i][Modelo] == 25 ||Arma[i][Modelo] == 26 ||Arma[i][Modelo] == 27)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
            if(idarma == 28 || idarma == 29 || idarma == 32){
                if(Arma[i][Modelo] == 28 ||Arma[i][Modelo] == 29 ||Arma[i][Modelo] == 32)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
            if(idarma == 30 || idarma == 31){
                if(Arma[i][Modelo] == 30 ||Arma[i][Modelo] == 31)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
            if(idarma == 33 || idarma == 34){
                if(Arma[i][Modelo] == 33 ||Arma[i][Modelo] == 34)
                {
                    GivePlayerWeapon(playerid, idarma);
                }
            }
        }
    }
    return temarmaslot;
}
Reply
#4

PHP код:
static TemArmaSlot(playerididarma){
    for(new 
0MAX_ARMASi++){
        if(
Arma[i][Dono] == PlayerInfo[playerid][UserID]){
            if(
Arma[i][Modelo] == idarma){
                return 
true;
            }
        }
    }
    return 
false;

PHP код:
if(TeamArmaSlot(playerididarma)) return SendClientMessage(playerid, -1"[!] Vocк jб possui essa arma no slot."); 
Reply
#5

Isso nгo funciona, porque por exemplo, Se eu estiver com a arma 25, e comprar a 26 nгo vai bloquear, somente se eu comprar a 25.
Reply
#6

Testa ai

PHP код:
static SlotsArmas(armaid){
    new 
slot;
    switch(
armaid){
        case 
0..1:      slot 0;     // FIST
        
case 2..9:      slot 1;     // ARMA BRANCA
        
case 10..15slot 10// ARMAS SLAOQ
        
case 16..18slot 8;     // EXPLOSIVOS
        
case 22..24slot 2;     // PISTOLAS
        
case 25..27slot 3;     // DOZES
        
case 28..29slot 4;    // SUBS
        
case 30..31slot 5;    // FUZIS
        
case 32:      slot 4;    // SUBS
        
case 33..34slot 6;     // SNIPERS
        
case 35..38slot 7;     // BAZUCAS
        
case 39:      slot 8;     // EXPLOSIVO
        
case 40:      slot 12// DETONADOR
        
case 41..43slot 9;    // SLAS
        
case 44..46slot 11// VISГO
    
}
    return 
slot;
}
static 
SlotVazios(playerididarma){
    new 
Weapons[13][2];
    for(new 
013i++){
        
GetPlayerWeaponData(playeridiWeapons[i][0], Weapons[i][1]);
           if(
SlotsArmas(idarma) == && (Weapons[i][0] != 0))
            return 
true;
    }
    return 
false;

PHP код:
if(SlotVazios(playerididarma)) return SendClientMessage(playerid, -1"[!] Vocк jб possui arma nesse slot!"); 
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)