AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Shop error (https://forums.alliedmods.net/showthread.php?t=189005)

JenProchazim 07-02-2012 16:09

Shop error
 
Hello,
i have problem with shop plugin. If player buy weapon, there's a bug and after buy new primary weapon, player have two primary, so there is bug with replace the old one. Any help how fix this please? I have idiea about plugin which controlls how many primary weapons player has.

Alekkkk 07-02-2012 18:22

Re: Shop error
 
strip current weapon before giving new one

JenProchazim 07-02-2012 18:44

Re: Shop error
 
How please do that?

PHP Code:

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>

#include "furien.inc"
#include "furien_shop.inc"

#define VERSION "0.2.1"

#define MAX_WEAPONS    CSW_P90

enum _:mDatas {
    
mFurienCost,
    
mFurienBpAmmo,
    
mFurienBpAmmoMax,
    
mAntiCost,
    
mAntiBpAmmo,
    
mAntiBpAmmoMax
}

enum _:mAutoDatas {
    
miId,
    
miBpAmmo,
    
miBpAmmoMax
}

new 
g_iWeaponsBuyDatas[MAX_WEAPONS+1][mDatas]

new Array:
g_aFurienAutoWeapons, Array:g_aAntiAutoWeapons

public plugin_init()
{
    
register_plugin("Furien Weapons"VERSION"ConnorMcLeod")

    
g_aFurienAutoWeapons ArrayCreate(mAutoDatas)
    
g_aAntiAutoWeapons ArrayCreate(mAutoDatas)

    new 
szConfigFile[128]
    
get_localinfo("amxx_configsdir"szConfigFilecharsmax(szConfigFile))
    
format(szConfigFilecharsmax(szConfigFile), "%s/furien/items/weapons.ini"szConfigFile);

    new 
fp fopen(szConfigFile"rt")
    if( !
fp )
    {
        return
    }

    new 
szDatas[256], szWeaponName[20], szMode[2], szFurienBpAmmo[4], szAntiBpAmmo[4], szFurienBpAmmoMax[4], szAntiBpAmmoMax[4], 
        
szFurienName[32], szAntiName[32], szFurienCost[6], szAntiCost[6]

    while( !
feof(fp) )
    {
        
fgets(fpszDatascharsmax(szDatas))
        
trim(szDatas)
        if(!
szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#' || (szDatas[0] == '/' && szDatas[1] == '/'))
        {
            continue
        }

//        server_print("Weapons Entry")
//        server_print(szDatas)

        
parse
        
(
            
szDatas
            
szWeaponNamecharsmax(szWeaponName),
            
szModecharsmax(szMode),
            
szFurienBpAmmocharsmax(szFurienBpAmmo),
            
szAntiBpAmmocharsmax(szAntiBpAmmo),
            
szFurienBpAmmoMaxcharsmax(szFurienBpAmmoMax),
            
szAntiBpAmmoMaxcharsmax(szAntiBpAmmoMax),
            
szFurienNamecharsmax(szFurienName),
            
szAntiNamecharsmax(szAntiName),
            
szFurienCostcharsmax(szFurienCost),
            
szAntiCostcharsmax(szAntiCost)
        )
/*
        server_print("%s %s | BpAmmo %s %s | Max %s %s | %s %s %s %s",
            szWeaponName, szMode, szFurienBpAmmo, szAntiBpAmmo, szFurienBpAmmoMax, szAntiBpAmmoMax,
            szFurienName, szAntiName, szFurienCost, szAntiCost)
*/
        
new iId get_weaponidszWeaponName )
        if( 
iId <= )
        {
            continue
        }

        switch( 
szMode[0] )
        {
            case 
'0':
            {
                if( (
g_iWeaponsBuyDatas[iId][mFurienCost] = str_to_num(szFurienCost)) )
                {
                    
g_iWeaponsBuyDatas[iId][mFurienBpAmmo] = str_to_num(szFurienBpAmmo)
                    
g_iWeaponsBuyDatas[iId][mFurienBpAmmoMax] = maxstr_to_num(szFurienBpAmmoMax) , g_iWeaponsBuyDatas[iId][mFurienBpAmmo] )
                }

                if( (
g_iWeaponsBuyDatas[iId][mAntiCost] = str_to_num(szAntiCost)) )
                {    
                    
g_iWeaponsBuyDatas[iId][mAntiBpAmmo] = str_to_num(szAntiBpAmmo)
                    
g_iWeaponsBuyDatas[iId][mAntiBpAmmoMax] = maxstr_to_num(szAntiBpAmmoMax) , g_iWeaponsBuyDatas[iId][mAntiBpAmmo] )
                }

                
furien_register_item
                
(
                    
szFurienName,
                    
g_iWeaponsBuyDatas[iId][mFurienCost],
                    
szAntiName,
                    
g_iWeaponsBuyDatas[iId][mAntiCost],
                    
"furien_buy_weapon",
                    
iId
                
)    
            }
            case 
'1':
            {
                new 
Datas[mAutoDatas]

                
Datas[miId] = iId
                Datas
[miBpAmmo] = str_to_num(szFurienBpAmmo)
                
Datas[miBpAmmoMax] = maxstr_to_num(szFurienBpAmmoMax), Datas[miBpAmmo] )

                
ArrayPushArray(g_aFurienAutoWeaponsDatas)
            }
            case 
'2':
            {
                new 
Datas[mAutoDatas]

                
Datas[miId] = iId
                Datas
[miBpAmmo] = str_to_num(szAntiBpAmmo)
                
Datas[miBpAmmoMax] = maxstr_to_num(szAntiBpAmmoMax), Datas[miBpAmmo] )

                
ArrayPushArray(g_aAntiAutoWeaponsDatas)
            }
            case 
'3':
            {
                new 
Datas[mAutoDatas]

                
Datas[miId] = iId
                Datas
[miBpAmmo] = str_to_num(szAntiBpAmmo)
                
Datas[miBpAmmoMax] = maxstr_to_num(szAntiBpAmmoMax), Datas[miBpAmmo] )

                
ArrayPushArray(g_aFurienAutoWeaponsDatas)
                
ArrayPushArray(g_aAntiAutoWeaponsDatas)
            }
        }
    }
    
fclose(fp)

    if( 
ArraySize(g_aFurienAutoWeapons) || ArraySize(g_aAntiAutoWeapons) )
    {
        
RegisterHam(Ham_Spawn"player""Ham_CBasePlayer_Spawn_Post"1)
    }
}

public 
plugin_end()
{
    
ArrayDestroyg_aFurienAutoWeapons )
    
ArrayDestroyg_aAntiAutoWeapons )
}

public 
Ham_CBasePlayer_Spawn_Postid )
{
    if( 
is_user_alive(id) )
    {
        switch( 
furien_get_user_team(id) )
        {
            case 
Furien :
            {
                
GiveAutoWeapons(idg_aFurienAutoWeapons)
            }
            case 
AntiFurien :
            {
                
GiveAutoWeapons(idg_aAntiAutoWeapons)
            }
        }
    }
}

public 
furien_buy_weaponidiId )
{
    new 
iTeam furien_get_user_team(id)
    if( 
iTeam == -)
    {
        return 
ShopCloseMenu
    
}

    new 
iItemCost g_iWeaponsBuyDatas[iId][ iTeam == Furien mFurienCost mAntiCost ]

    if( 
iItemCost <= )
    {
        return 
ShopTeamNotAvail
    
}

    if( 
user_has_weapon(idiId) )
    {
        return 
ShopAlreadyHaveOne
    
}

    if( 
furien_try_buy(idiItemCost) )
    {
        new 
szWeaponName[20]
        
get_weaponname(iIdszWeaponNamecharsmax(szWeaponName))
        
give_item(idszWeaponName)
        new 
iBpAmmo g_iWeaponsBuyDatas[iId][ iTeam == Furien mFurienBpAmmo mAntiBpAmmo ]
        if( 
iBpAmmo )
        {
            new 
iBpAmmoMax g_iWeaponsBuyDatas[iId][ iTeam == Furien mFurienBpAmmoMax mAntiBpAmmoMax ]
            new 
iCurrentBpAmmo cs_get_user_bpammo(idiId)
            if( 
iCurrentBpAmmo iBpAmmoMax )
            {
                
cs_set_user_bpammo(idiIdmin(iCurrentBpAmmo iBpAmmoiBpAmmoMax))
            }
        }
        return 
ShopBought
    
}
    return 
ShopNotEnoughMoney
}

GiveAutoWeapons(id, Array:aWeapons)
{
    new 
iItemsNum ArraySize(aWeapons)

    new 
Datas[mAutoDatas], iIdszWeaponName[20], iBpAmmoiBpAmmoMaxiCurrentBpAmmo

    
for(new ii<iItemsNumi++)
    {
        
ArrayGetArray(aWeaponsiDatas)
        
iId Datas[miId]
        if( !
user_has_weapon(idiId) )
        {
            
get_weaponname(iIdszWeaponNamecharsmax(szWeaponName))
            
give_item(idszWeaponName)
        }

        
iBpAmmo Datas[miBpAmmo]
        if( 
iBpAmmo && iId != CSW_KNIFE )
        {
            
iBpAmmoMax Datas[miBpAmmoMax]
            
iCurrentBpAmmo cs_get_user_bpammo(idiId)
            if( 
iCurrentBpAmmo iBpAmmoMax )
            {
                
cs_set_user_bpammo(idiIdmin(iCurrentBpAmmo iBpAmmoiBpAmmoMax))
            }
        }
    }



Backstabnoob 07-02-2012 20:37

Re: Shop error
 
http://forums.alliedmods.net/showpos...38&postcount=9

JenProchazim 07-02-2012 20:49

Re: Shop error
 
Thanks, but i don't understand that, i don't know how to use that with this plugin.


All times are GMT -4. The time now is 15:15.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.