Need some help
#1

Hello everyone,
Today i was trying to complete a gun system but i encountered a BIG problem
The script looks like this :
pawn Код:
forward SaveGuns(playerid);
public SaveGuns(playerid)
{
    for(new slot = 0; slot <= 3; slot++)
    {
        new wep, ammo;
        GetPlayerWeaponData(playerid, slot, wep, ammo);
        if(wep != 0 && ammo != 0)
        {
            if(PlayerInfo[playerid][pAdmin] >= 6)
            {
                if(PlayerInfo[playerid][pAdminDuty] == 0)
                {
                    if(Tazer[playerid] == 1) { GivePlayerWeapon(playerid, 24, PreTazerAmmo[playerid]); }
                    if(PlayerInfo[playerid][pWeapon1] == 0) { PlayerInfo[playerid][pWeapon1] = wep; PlayerInfo[playerid][pWAmmo1] = ammo; }
                    else if(PlayerInfo[playerid][pWeapon2] == 0) { PlayerInfo[playerid][pWeapon2] = wep; PlayerInfo[playerid][pWAmmo2] = ammo; }
                    else if(PlayerInfo[playerid][pWeapon3] == 0) { PlayerInfo[playerid][pWeapon3] = wep; PlayerInfo[playerid][pWAmmo3] = ammo; }
                    if(PlayerInfo[playerid][pWeapon1] == PlayerInfo[playerid][pWeapon2])
                    {
                        new bammo = PlayerInfo[playerid][pWAmmo2];
                        PlayerInfo[playerid][pWeapon1] = PlayerInfo[playerid][pWeapon2];
                        PlayerInfo[playerid][pWeapon2] = 0;
                        PlayerInfo[playerid][pWAmmo1] += bammo;
                        bammo = 0;
                        PlayerInfo[playerid][pWAmmo2] = 0;
                    }
                    if(PlayerInfo[playerid][pWeapon1] == PlayerInfo[playerid][pWeapon3])
                    {
                        new bammo = PlayerInfo[playerid][pWAmmo3];
                        PlayerInfo[playerid][pWeapon1] = PlayerInfo[playerid][pWeapon3];
                        PlayerInfo[playerid][pWeapon3] = 0;
                        PlayerInfo[playerid][pWAmmo1] += bammo;
                        bammo = 0;
                        PlayerInfo[playerid][pWAmmo3] = 0;
                    }
                    if(PlayerInfo[playerid][pWeapon2] == PlayerInfo[playerid][pWeapon3])
                    {
                        new bammo = PlayerInfo[playerid][pWAmmo3];
                        PlayerInfo[playerid][pWeapon2] = PlayerInfo[playerid][pWeapon3];
                        PlayerInfo[playerid][pWeapon3] = 0;
                        PlayerInfo[playerid][pWAmmo2] += bammo;
                        bammo = 0;
                        PlayerInfo[playerid][pWAmmo3] = 0;
                    }
                }
            }
            else
            {
                if(Tazer[playerid] == 1) { GivePlayerWeapon(playerid, 24, PreTazerAmmo[playerid]); }
                if(PlayerInfo[playerid][pWeapon1] == 0) { PlayerInfo[playerid][pWeapon1] = wep; PlayerInfo[playerid][pWAmmo1] = ammo; }
                else if(PlayerInfo[playerid][pWeapon2] == 0) { PlayerInfo[playerid][pWeapon2] = wep; PlayerInfo[playerid][pWAmmo2] = ammo; }
                else if(PlayerInfo[playerid][pWeapon3] == 0) { PlayerInfo[playerid][pWeapon3] = wep; PlayerInfo[playerid][pWAmmo3] = ammo; }
                if(PlayerInfo[playerid][pWeapon1] == PlayerInfo[playerid][pWeapon2])
                {
                    new bammo = PlayerInfo[playerid][pWAmmo2];
                    PlayerInfo[playerid][pWeapon1] = PlayerInfo[playerid][pWeapon2];
                    PlayerInfo[playerid][pWeapon2] = 0;
                    PlayerInfo[playerid][pWAmmo1] += bammo;
                    bammo = 0;
                    PlayerInfo[playerid][pWAmmo2] = 0;
                }
                if(PlayerInfo[playerid][pWeapon1] == PlayerInfo[playerid][pWeapon3])
                {
                    new bammo = PlayerInfo[playerid][pWAmmo3];
                    PlayerInfo[playerid][pWeapon1] = PlayerInfo[playerid][pWeapon3];
                    PlayerInfo[playerid][pWeapon3] = 0;
                    PlayerInfo[playerid][pWAmmo1] += bammo;
                    bammo = 0;
                    PlayerInfo[playerid][pWAmmo3] = 0;
                }
                if(PlayerInfo[playerid][pWeapon2] == PlayerInfo[playerid][pWeapon3])
                {
                    new bammo = PlayerInfo[playerid][pWAmmo3];
                    PlayerInfo[playerid][pWeapon2] = PlayerInfo[playerid][pWeapon3];
                    PlayerInfo[playerid][pWeapon3] = 0;
                    PlayerInfo[playerid][pWAmmo2] += bammo;
                    bammo = 0;
                    PlayerInfo[playerid][pWAmmo3] = 0;
                }
            }
        }
    }
    return 1;
}
This is saving the weapons in players variable.
Ok so the problem is that:
I have setted up a timer that checks every second the weapons and show them in /stats.
But the problem is that the First Weapon Slot is raising every second and i cannot be stopped Help please
Reply
#2

For your information: There are 13 weapon slots (0 through 12).

For example: An assault rifle (AK47, M4) will ALWAYS be in slot 5. Refer to the weapon list to find out in which weapon is stored in which slot. https://sampwiki.blast.hk/wiki/Weapons
Reply
#3

So that's the only problem?
Reply
#4

Why don't you rather try around? ;

Vince stated :

Quote:
Originally Posted by Vince
For your information: There are 13 weapon slots (0 through 12).

For example: An assault rifle (AK47, M4) will ALWAYS be in slot 5. Refer to the weapon list to find out in which weapon is stored in which slot. https://sampwiki.blast.hk/wiki/Weapons
By that you now know your loop is completely wrong.

pawn Код:
for(new slot; slot < 13; slot++) // loops until 0 reaches 12.
Also, instead of doing :

pawn Код:
PlayerInfo[playerid][pWeapon1],2 ,3 etc.
Use the power of array's and do :

pawn Код:
enum pInfo
{
     pWeapon[12],
}

It would then look like :

PlayerInfo[playerid][pWeapon][0], PlayerInfo[playerid][pWeapon][1]
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)