Raised This Month: $ Target: $400
 0% 

Ham_Item_GetItemInfo broken (Linux)


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
PartialCloning
Senior Member
Join Date: Dec 2015
Old 07-24-2017 , 15:24   Ham_Item_GetItemInfo broken (Linux)
Reply With Quote #1

Ham_Item_GetItemInfo "breaks" any weapon it's hooked for on linux.

Steps to reproduce:
1. Start up the server.
2. Change the map.
3. Try to use any weapon.

PHP Code:
//    Copyright © 2016 Vaqtincha
/*************************************************
 *    Credits:
 *
 *    - ConnorMcLeod (plugin "Bp Ammo Features" - Ham_GiveAmmo code)
 *
 *************************************************/

/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/

enum
{
    
MAX_AMMO_338MAGNUM        30,     // (CSW_AWP)
    
MAX_AMMO_762NATO        90,     // (CSW_SCOUT, CSW_G3SG1, CSW_AK47)
    
MAX_AMMO_556NATOBOX        200,    // (CSW_M249)
    
MAX_AMMO_556NATO        90,     // (CSW_AUG, CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_M4A1, CSW_SG552)
    
MAX_AMMO_BUCKSHOT        32,    // (CSW_XM1014, CSW_M3)
    
MAX_AMMO_45ACP            100,    // (CSW_MAC10, CSW_UMP45, CSW_USP)
    
MAX_AMMO_57MM            100,    // (CSW_P90, CSW_FIVESEVEN)
    
MAX_AMMO_50AE            35,     // (CSW_DEAGLE)
    
MAX_AMMO_357SIG            52,     // (CSW_P228)
    
MAX_AMMO_9MM            120,    // (CSW_MP5NAVY, CSW_TMP, CSW_ELITE, CSW_GLOCK18)

    
MAX_AMMO_FLASHBANG        3,      // (CSW_FLASHBANG)
    
MAX_AMMO_HEGRENADE        2,      // (CSW_HEGRENADE)
    
MAX_AMMO_SMOKEGRENADE    1       // (CSW_SMOKEGRENADE)
}

enum
{
    
AMOUNT_AMMO_338MAGNUM    10,     // (CSW_AWP)
    
AMOUNT_AMMO_762NATO        30,     // (CSW_SCOUT, CSW_G3SG1, CSW_AK47)
    
AMOUNT_AMMO_556NATOBOX    30,    // (CSW_M249) 
    
AMOUNT_AMMO_556NATO        10,    // (CSW_AUG, CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_M4A1, CSW_SG552)
    
AMOUNT_AMMO_BUCKSHOT    8,     // (CSW_XM1014, CSW_M3)
    
AMOUNT_AMMO_45ACP        12,    // (CSW_MAC10, CSW_UMP45, CSW_USP)
    
AMOUNT_AMMO_57MM        50,    // (CSW_P90, CSW_FIVESEVEN)
    
AMOUNT_AMMO_50AE        7,     // (CSW_DEAGLE)
    
AMOUNT_AMMO_357SIG        13,     // (CSW_P228)
    
AMOUNT_AMMO_9MM            30,    // (CSW_MP5NAVY, CSW_TMP, CSW_ELITE, CSW_GLOCK18)

    
AMOUNT_AMMO_FLASHBANG    1,      // (CSW_FLASHBANG)
    
AMOUNT_AMMO_HEGRENADE    1,      // (CSW_HEGRENADE)
    
AMOUNT_AMMO_SMOKEGRENADE 1    // (CSW_SMOKEGRENADE)
}

/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/

enum _:AmmoDatas AmountMax }

enum _:AmmoIds
{
    
ammo_none
    
ammo_338magnum 1
    
ammo_762nato
    
ammo_556natobox
    
ammo_556nato
    
ammo_buckshot,
    
ammo_45acp
    
ammo_57mm
    
ammo_50ae
    
ammo_357sig
    
ammo_9mm
    
ammo_flashbang
    
ammo_hegrenade,
    
ammo_smokegrenade
    
//, ammo_c4
}

new const 
g_szAmmoTypes[AmmoIds][] = {
    
""
    
"338Magnum"
    
"762Nato"
    
"556NatoBox"
    
"556Nato"
    
"buckshot"
    
"45acp"
    
"57mm"
    
"50AE"
    
"357SIG",
    
"9mm",
    
"Flashbang"
    
"HEGrenade",
    
"SmokeGrenade"
    
//, "C4"
}

new const 
g_eAmmoDatas[AmmoIds][AmmoDatas] = {
    {-
1,  -1},
    {
AMOUNT_AMMO_338MAGNUMMAX_AMMO_338MAGNUM},
    {
AMOUNT_AMMO_762NATOMAX_AMMO_762NATO},
    {
AMOUNT_AMMO_556NATOBOXMAX_AMMO_556NATOBOX},
    {
AMOUNT_AMMO_556NATOMAX_AMMO_556NATO},
    {
AMOUNT_AMMO_BUCKSHOTMAX_AMMO_BUCKSHOT},
    {
AMOUNT_AMMO_45ACPMAX_AMMO_45ACP},
    {
AMOUNT_AMMO_57MMMAX_AMMO_57MM},
    {
AMOUNT_AMMO_50AEMAX_AMMO_50AE},
    {
AMOUNT_AMMO_357SIGMAX_AMMO_357SIG},
    {
AMOUNT_AMMO_9MMMAX_AMMO_9MM},
    {
AMOUNT_AMMO_FLASHBANGMAX_AMMO_FLASHBANG}, 
    {
AMOUNT_AMMO_HEGRENADEMAX_AMMO_HEGRENADE}, 
    {
AMOUNT_AMMO_SMOKEGRENADEMAX_AMMO_SMOKEGRENADE}
}


#include <amxmodx>
#include <hamsandwich>

const EXP_WPN_BS = ((1<<CSW_KNIFE)|(1<<CSW_C4))

new 
HamHook:g_hGetItemInfo[CSW_P90+1]
new 
Trie:g_tAmmoIndex


public plugin_end()
{
    
TrieDestroy(g_tAmmoIndex)
}

public 
plugin_precache() 
{
    new 
szWeaponName[20], i
    g_tAmmoIndex 
TrieCreate()

    for(
1sizeof(g_szAmmoTypes); i++)
    {
        
TrieSetCell(g_tAmmoIndexg_szAmmoTypes[i], i)
    }

    for(
CSW_P228<= CSW_P90i++)
    {
        if(!(
EXP_WPN_BS & (1<<i)) && get_weaponname(iszWeaponNamecharsmax(szWeaponName))) 
        {
            
g_hGetItemInfo[i] = RegisterHam(Ham_Item_GetItemInfoszWeaponName"CBasePlayerItem_GetItemInfo", .Post true)
        }
    }
}

public 
plugin_init()
{
    
register_plugin("BpAmmo Control""0.0.1""Vaqtincha")

    
RegisterHam(Ham_GiveAmmo"player""CBasePlayer_GiveAmmo", .Post false)
    
DisableForwards()
}

public 
CBasePlayerItem_GetItemInfo(pItemiItemInfo
{
    new 
szAmmoType[13], iAmmoIndex
    GetHamItemInfo
(iItemInfoHam_ItemInfo_pszAmmo1szAmmoTypecharsmax(szAmmoType))

    if(!
TrieGetCell(g_tAmmoIndexszAmmoTypeiAmmoIndex))
    {
        return 
HAM_IGNORED
    
}

    
SetHamItemInfo(iItemInfoHam_ItemInfo_iMaxAmmo1g_eAmmoDatas[iAmmoIndex][Max])
    
    return 
HAM_IGNORED
}

public 
CBasePlayer_GiveAmmo(const pPlayeriAmountszAmmoType[], iMax)
{
    new 
iAmmoIndexiRet HAM_IGNORED

    
if(!TrieGetCell(g_tAmmoIndexszAmmoTypeiAmmoIndex))
    {
        return 
HAM_IGNORED
    
}

    new 
iAmountCust g_eAmmoDatas[iAmmoIndex][Amount]
    if(
iAmount && iAmountCust != iAmount)
    {
        
SetHamParamInteger(2iAmountCust)
        
iRet HAM_HANDLED
    
}

    new 
iCustMax g_eAmmoDatas[iAmmoIndex][Max]
    if(
iMax != iCustMax)
    {
        
SetHamParamInteger(4iCustMax)
        
iRet HAM_HANDLED
    
}

    return 
iRet
}

DisableForwards()
{
    new 
szWeaponName[20], i
    
for(CSW_P228<= CSW_P90i++)
    {
        if(!(
EXP_WPN_BS & (1<<i)) && get_weaponname(iszWeaponNamecharsmax(szWeaponName))) 
        {
            if(
g_hGetItemInfo[i])
                
DisableHamForward(g_hGetItemInfo[i])
        }
    }

PartialCloning is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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