alliedmodders / amxmodx

AMX Mod X - Half-Life 1 Scripting and Administration
http://www.amxmodx.org/
478 stars 198 forks source link

cs_set_user_team crashes the server #1095

Open micadam opened 4 months ago

micadam commented 4 months ago

Help us help you

Environment

Description

The HLDS crashes whenever cs_set_user_team is called. No error is produced in the console, and I couldn't find any logs with useful error messages. This behaviour is on the latest snapshot, Meanwhile on the latest stable release, the server crashes upon a player joining the game, which was also reported in https://github.com/alliedmodders/amxmodx/issues/1086#issuecomment-1849046675.

Problematic Code (or Steps to Reproduce)

    cs_set_user_team(0, CS_TEAM_T, 0, 0)

Logs

L 03/02/2024 - 11:18:44: -------- Mapchange to de_dust2 --------
L 03/02/2024 - 11:18:44: [CSTRIKE] BuyGunAmmo is not available
L 03/02/2024 - 11:18:44: [CSTRIKE] GiveNamedItem is not available
L 03/02/2024 - 11:18:44: [CSTRIKE] AddAccount is not available
L 03/02/2024 - 11:18:44: [CSTRIKE] CanPlayerBuy is not available
L 03/02/2024 - 11:18:44: [CSTRIKE] CanBuyThis is not available
L 03/02/2024 - 11:18:44: [CSTRIKE] Some functions are not available - forwards CS_OnBuy[Attempt] have been disabled
L 03/02/2024 - 11:18:44: [CSTRIKE] GiveDefaultItems is not available - native cs_set_no_knives has been disabled
L 03/02/2024 - 11:18:44: [CSTRIKE] CREATE_NAMED_ENITTY is not available - native cs_create_entity() has been disabled
L 03/02/2024 - 11:18:44: [CSTRIKE] UTIL_FindEntByString is not available - native cs_find_ent_by_class() has been disabled
L 03/02/2024 - 11:18:44: [CSTRIKE] AddEntityHashValue or RemoveEntityHashValue is not available - native cs_set_ent_class() has been disabled
L 03/02/2024 - 11:18:44: [CSTRIKE] GetWeaponInfo is not available - native cs_get_weapon_info() and forward CS_OnBuy have been disabled
L 03/02/2024 - 11:18:44: [CSTRIKE] sv global variable is not available
L 03/02/2024 - 11:18:44: [CSTRIKE] g_pGameRules is not available - Forward CS_OnBuy has been disabled
ClaudiuHKS commented 4 months ago

I've tried finding all the missing signatures & offsets. If still something is wrong, say.

  1. /steamapps/common/Half-Life/cstrike/addons/amxmodx/data/gamedata/modules.games/game.cstrike.txt
    
    /**
    * Do not edit this file.  Any changes will be overwritten by the gamedata
    * updater or by upgrading your AMX Mod X install.
    *
    * To override data in this file, create a subdirectory named "custom" and
    * place your own gamedata file(s) inside of it.  Such files will be parsed
    * after AMXX's own.
    *
    * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(AMX_Mod_X)
    */

"Games" { "#default" { "Signatures" { "CanPlayerBuy" /// bool CBasePlayer::CanPlayerBuy(bool display) [__thiscall] { "library" "server" /// "windows" "\x51\x53\x55\x56\x57\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF" /// HLDS 2020 "windows" "\x55\x8B\x2A\x51\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF\x2A\x2A\x85\x2A\x75\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x56\xE8\x2A\x2A\x2A\x2A\x5E\x8B\x2A\x5D\xC2" /// HLDS 2023 "linux" "@_ZN11CBasePlayer12CanPlayerBuyEb" "mac" "@_ZN11CBasePlayer12CanPlayerBuyEb" }

        "CanBuyThis"            /// bool CanBuyThis(CBasePlayer *pPlayer, int iWeapon)
        {
            "library"           "server"
            /// "windows"       "\x53\x8B\x2A\x2A\x2A\x2A\x2A\x56\x8B\x2A\x2A\x2A\x57\x8B" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x53\x8B\x2A\x2A\x2A\x2A\x2A\x56\x8B\x2A\x2A\x8B\x2A\x57\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x84\x2A\x74\x2A\x83\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x74\x2A\x83\x2A\x2A\x0F" /// HLDS 2023
            "linux"             "@_Z10CanBuyThisP11CBasePlayeri"
            "mac"               "@_Z10CanBuyThisP11CBasePlayeri"
        }

        "AddAccount"            /// void CBasePlayer::AddAccount(int amount, bool bTrackChange) [__thiscall]
        {
            "library"           "server"
            /// "windows"       "\x8B\x2A\x2A\x2A\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x03" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x8B\x2A\x2A\x56\x8B\x2A\x01\x2A\x2A\x2A\x2A\x2A\x79\x2A\xC7\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xEB\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\x3B\x2A\x0F\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x6A\x2A\xFF" /// HLDS 2023
            "linux"             "@_ZN11CBasePlayer10AddAccountEib"
            "mac"               "@_ZN11CBasePlayer10AddAccountEib"
        }

        "GiveNamedItem"         /// void CBasePlayer::GiveNamedItem(const char *pszName) [__thiscall]
        {
            "library"           "server"
            /// "windows"       "\x8B\x2A\x2A\x2A\x56\x57\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x2B" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\xA1\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x56\x57\x2B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x52\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x83\x2A\x2A\x85\x2A\x74\x2A\x56\xFF\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x85\x2A\x74\x2A\x8B\x2A\x2A\x56\xF3\x2A\x2A\x2A\x2A\x66\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x89" /// HLDS 2023
            "linux"             "@_ZN11CBasePlayer13GiveNamedItemEPKc"
            "mac"               "@_ZN11CBasePlayer13GiveNamedItemEPKc"
        }

        "GiveDefaultItems"      /// void CBasePlayer::GiveDefaultItems() [__thiscall]
        {
            "library"           "server"
            /// "windows"       "\x56\x57\x6A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xC6" /// HLDS 2020
            "windows"           "\x56\x6A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x75\x2A\x68\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x80\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x6A\x2A\x68" /// HLDS 2023
            "linux"             "@_ZN11CBasePlayer16GiveDefaultItemsEv"
            "mac"               "@_ZN11CBasePlayer16GiveDefaultItemsEv"
        }

        "GiveShield"            /// void CBasePlayer::GiveShield(bool bDeploy) [__thiscall]
        {
            "library"           "server"
            /// "windows"       "\x56\x8B\x2A\x57\x33\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xB0" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\x85\x2A\x74\x2A\x80\x2A\x2A\x2A\x75\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x7E\x2A\x8B\x2A\x6A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF" /// HLDS 2023
            "linux"             "@_ZN11CBasePlayer10GiveShieldEb"
            "mac"               "@_ZN11CBasePlayer10GiveShieldEb"
        }

        "CreateNamedEntity"     /// edict_t* CREATE_NAMED_ENTITY(int iClass)
        {
            "library"           "server"
            /// "windows"       "\x56\x57\x8B\x2A\x2A\x2A\x57\xFF\x2A\x2A\x2A\x2A\x2A\x8B" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x56\xFF\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x83\x2A\x2A\x85\x2A\x74\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x6A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x03\x2A\x2A\x51\x8D\x2A\x2A\x2A\x2A\x2A\x51\xE8\x2A\x2A\x2A\x2A\x83\x2A\x2A\x8B\x2A\x5E\x5D\xC3" /// HLDS 2023
            "linux"             "@_Z19CREATE_NAMED_ENTITYj"
            "mac"               "@_Z19CREATE_NAMED_ENTITYj"
        }

        "FindEntityByString"    /// CBaseEntity *UTIL_FindEntityByString(CBaseEntity *pStartEntity, const char *szKeyword, const char *szValue)
        {
            "library"           "server"
            /// "windows"       "\x51\x8B\x2A\x2A\x2A\x53\x55\x56\x85\x2A\x57" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x51\x8B\x2A\x2A\x53\x56\x57\x85\x2A\x74\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xEB\x2A\x33\x2A\x56\xFF\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x83\x2A\x2A\x89\x2A\x2A\x80\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\xFF\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x8B" /// HLDS 2023
            "linux"             "@_Z23UTIL_FindEntityByStringP11CBaseEntityPKcS2_"
            "mac"               "@_Z23UTIL_FindEntityByStringP11CBaseEntityPKcS2_"
        }

        "AddEntityHashValue"    /// void AddEntityHashValue(entvars_t *pev, const char *value, hash_types_e fieldType)
        {
            "library"           "server"
            /// "windows"       "\x8B\x2A\x2A\x2A\x83\x2A\x2A\x85\x2A\x53\x55\x56\x57\x0F" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x51\x83\x2A\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x53\x8B\x2A\x2A\x83\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x56\x57\x50\xFF\x2A\x2A\x89\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x89\x2A\x2A\xB9\x2A\x2A\x2A\x2A\x56\xE8" /// HLDS 2023
            "linux"             "@_Z18AddEntityHashValueP9entvars_sPKc12hash_types_e"
            "mac"               "@_Z18AddEntityHashValueP9entvars_sPKc12hash_types_e"
        }

        "RemoveEntityHashValue" /// void RemoveEntityHashValue(entvars_t *pev, hash_item_t *value, hash_types_e fieldType)
        {
            "library"           "server"
            /// "windows"       "\x8B\x2A\x2A\x2A\x53\x8B\x2A\x55\x8A\x2A\x33" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x8B\x2A\x2A\x33\x2A\x56\x57\x8A\x2A\x84\x2A\x74\x2A\x0F\x2A\x2A\x03\x2A\x2C\x2A\x3C\x2A\x77\x2A\x83\x2A\x2A\x8A\x2A\x2A\x41\x03\x2A\x84\x2A\x75\x2A\x8B\x2A\x33\x2A\xF7\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x8B\x2A\xFF" /// HLDS 2023
            "linux"             "@_Z21RemoveEntityHashValueP9entvars_sPKc12hash_types_e"
            "mac"               "@_Z21RemoveEntityHashValueP9entvars_sPKc12hash_types_e"
        }

        "GetWeaponInfo"         /// const WeaponInfoStruct *GetWeaponInfo(int weaponID)
        {
            "library"           "server"
            /// "windows"       "\x8B\x2A\x2A\x2A\x2A\x2A\x33\x2A\x85\x2A\x56\x74\x2A\x8B" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\xA1\x2A\x2A\x2A\x2A\x33\x2A\x85\x2A\x74\x2A\x8B\x2A\x2A\x3B\x2A\x74\x2A\x41\x8B\x2A\xC1\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x85\x2A\x75\x2A\x33\x2A\x5D\xC3\xC1\x2A\x2A\x81\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x5D\xC3" /// HLDS 2023
            "linux"             "@_Z13GetWeaponInfoi"
            "mac"               "@_Z13GetWeaponInfoi"
        }

        "GetAmmoIndex"          /// int CBasePlayer::GetAmmoIndex(const char *psz) [__thiscall]
        {
            "library"           "server"
            /// "windows"       "\x56\x57\x8B\x2A\x2A\x2A\x85\x2A\x74\x2A\xBE" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x53\x56\x57\x8B\x2A\x2A\x85\x2A\x74\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xBE\x2A\x2A\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x2A\x85\x2A\x74\x2A\x50\x57\xFF\x2A\x83\x2A\x2A\x85\x2A\x74" /// HLDS 2023
            "linux"             "@_ZN11CBasePlayer12GetAmmoIndexEPKc"
            "mac"               "@_ZN11CBasePlayer12GetAmmoIndexEPKc"
        }

        "BuyGunAmmo"            /// bool BuyGunAmmo(CBasePlayer *const player, CBasePlayerItem *const weapon, bool bBlinkMoney)
        {
            "library"           "server"
            /// "windows"       "\x56\x57\x8B\x2A\x2A\x2A\x6A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x0F" /// HLDS 2020
            "windows"           "\x55\x8B\x2A\x56\x57\x8B\x2A\x2A\x8B\x2A\x6A\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x8B\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x2A\x6B\x2A\x2A\x3B\x2A\x2A\x2A\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8D\x2A\x2A\x83\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\xFF" /// HLDS 2023
            "linux"             "@_Z10BuyGunAmmoR11CBasePlayerR15CBasePlayerItemb"
            "mac"               "@_Z10BuyGunAmmoR11CBasePlayerR15CBasePlayerItemb"
        }
    }
}

"#default"
{
    "Signatures"
    {
        "UseBotArgs"        /// bool UseBotArgs
        {
            "library"       "server"
            /// "windows"   "\x8B\x2A\x2A\x2A\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x03" /// HLDS 2020
            "windows"       "\x55\x8B\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\x5D\xC2" /// HLDS 2023
            "linux"         "@UseBotArgs"
            "mac"           "@UseBotArgs"
        }                   /// void CBot::ClientCommand(const char *cmd, const char *arg1, const char *arg2, const char *arg3) [__thiscall]

        "BotArgs"           /// const char *BotArgs[4]
        {
            "library"       "server"
            /// "windows"   "\x8B\x2A\x2A\x2A\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x03" /// HLDS 2020
            "windows"       "\x55\x8B\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xA3\x2A\x2A\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\x5D\xC2" /// HLDS 2023
            "linux"         "@BotArgs"
            "mac"           "@BotArgs"
        }                   /// void CBot::ClientCommand(const char *cmd, const char *arg1, const char *arg2, const char *arg3) [__thiscall]
    }

    "Offsets"
    {
        "UseBotArgs"        /// bool UseBotArgs
        {
            /// "windows"   "2" /// HLDS 2020
            "windows"       "37" /// HLDS 2023
        }

        "BotArgs"           /// const char *BotArgs[4]
        {
            /// "windows"   "22" /// HLDS 2020
            "windows"       "7" /// HLDS 2023
        }
    }
}

"#default"
{
    "ItemInfos"
    {
        "BuyAliases"
        {
            ///
            /// Weapon
            ///

            "p228"
            {
                "itemid"    "1" /// CSW/I_P228
                "classid"   "2" /// CS_WEAPONCLASS_PISTOL
                "altname"   "228compact"
            }
            "scout"
            {
                "itemid"    "3" /// CSW/I_SCOUT
                "classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
            }
            "xm1014"
            {
                "itemid"    "5" /// CSW/I_XM1014
                "classid"   "5" /// CS_WEAPONCLASS_SHOTGUN
                "altname"   "autoshotgun"
            }
            "mac10"
            {
                "itemid"    "7" /// CSW/I_MAC10
                "classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
            }
            "aug"
            {
                "itemid"    "8" /// CSW/I_AUG
                "classid"   "7" /// CS_WEAPONCLASS_RIFLE
                "altname"   "bullpup"
            }
            "elites"
            {
                "itemid"    "10" /// CSW/I_ELITE
                "classid"   "2" /// CS_WEAPONCLASS_PISTOL
            }
            "fn57"
            {
                "itemid"    "11" /// CSW/I_FIVESEVEN
                "classid"   "2" /// CS_WEAPONCLASS_PISTOL
                "altname"   "fiveseven"
            }
            "ump45"
            {
                "itemid"    "12" /// CSW/I_UMP45
                "classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
            }
            "sg550"
            {
                "itemid"    "13" /// CSW/I_SG550
                "classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
                "altname"   "krieg550"
            }
            "galil"
            {
                "itemid"    "14" /// CSW/I_GALIL
                "classid"   "7" /// CS_WEAPONCLASS_RIFLE
                "altname"   "defender"
            }
            "famas"
            {
                "itemid"    "15" /// CSW/I_FAMAS
                "classid"   "7" /// CS_WEAPONCLASS_RIFLE
                "altname"   "clarion"
            }
            "usp"
            {
                "itemid"    "16" /// CSW/I_USP
                "classid"   "2" /// CS_WEAPONCLASS_PISTOL
                "altname"   "km45"
            }
            "glock"
            {
                "itemid"    "17" /// CSW/I_GLOCK18
                "classid"   "2" /// CS_WEAPONCLASS_PISTOL
                "altname"   "9x19mm"
            }
            "awp"
            {
                "itemid"    "18" /// CSW/I_AWP
                "classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
                "altname"   "magnum"
            }
            "mp5"
            {
                "itemid"    "19" /// CSW/I_MP5NAVY
                "classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                "altname"   "smg"
            }
            "m249"
            {
                "itemid"    "20" /// CSW/I_M249
                "classid"   "6" /// CS_WEAPONCLASS_MACHINEGUN
            }
            "m3"
            {
                "itemid"    "21" /// CSW/I_M3
                "classid"   "5" /// CS_WEAPONCLASS_SHOTGUN
                "altname"   "12gauge"
            }
            "m4a1"
            {
                "itemid"    "22" /// CSW/I_M4A1
                "classid"   "7" /// CS_WEAPONCLASS_RIFLE
            }
            "tmp"
            {
                "itemid"    "23" /// CSW/I_TMP
                "classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                "altname"   "mp"
            }
            "g3sg1"
            {
                "itemid"    "24" /// CSW/I_G3SG1
                "classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
                "altname"   "d3au1"
            }
            "deagle"
            {
                "itemid"    "26" /// CSW/I_DEAGLE
                "classid"   "2" /// CS_WEAPONCLASS_PISTOL
                "altname"   "nighthawk"
            }
            "sg552"
            {
                "itemid"    "27" /// CSW/I_SG552
                "classid"   "7" /// CS_WEAPONCLASS_RIFLE
                "altname"   "krieg552"
            }
            "ak47"
            {
                "itemid"    "28" /// CSW/I_AK47
                "classid"   "7" /// CS_WEAPONCLASS_RIFLE
                "altname"   "cv47"
            }
            "p90"
            {
                "itemid"    "30" /// CSW/I_P90
                "classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                "altname"   "c90"
            }

            ///
            /// Equipment
            ///

            "hegren"
            {
                "itemid"    "4" /// CSW/I_HEGRENADE
                "classid"   "3" /// CS_WEAPONCLASS_GRENADE
                "price"     "300"
            }
            "sgren"
            {
                "itemid"    "9" /// CSW/I_SMOKEGRENADE
                "classid"   "3" /// CS_WEAPONCLASS_GRENADE
                "price"     "300"
            }
            "flash"
            {
                "itemid"    "25" /// CSW/I_FLASHBANG
                "classid"   "3" /// CS_WEAPONCLASS_GRENADE
                "price"     "200"
            }
            "vest"
            {
                "itemid"    "31" /// CSW/I_VEST
                "classname" "item_kevlar"
                "price"     "650"
            }
            "vesthelm"
            {
                "itemid"    "32" /// CSW/I_VESTHELM
                "classname" "item_assaultsuit"
                "price"     "1000"
            }
            "defuser"
            {
                "itemid"    "33" /// CSI_DEFUSER
                "classname" "item_thighpack"
                "price"     "200"
            }
            "nvgs"
            {
                "itemid"    "34" /// CSI_NVGS
                "price"     "1250"
            }
            "shield"
            {
                "itemid"    "35" /// CSI_SHIELD
                "classid"   "2" /// CS_WEAPONCLASS_PISTOL
                "classname" "weapon_shield"
            }

            ///
            /// Ammunition
            ///

            "primammo"
            {
                "itemid"    "36" /// CSI_PRIAMMO
                "altname"   "buyammo1"
            }
            "secammo"
            {
                "itemid"    "37" /// CSI_SECAMMO
                "altname"   "buyammo2"
            }
        }
    }
}

}

2. `/steamapps/common/Half-Life/cstrike/addons/amxmodx/data/gamedata/common.games/functions.engine.txt`
```C++
/**
 * Do not edit this file.  Any changes will be overwritten by the gamedata
 * updater or by upgrading your AMX Mod X install.
 *
 * To override data in this file, create a subdirectory named "custom" and
 * place your own gamedata file(s) inside of it.  Such files will be parsed
 * after AMXX's own.
 *
 * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(AMX_Mod_X)
 */

"Games"
{
    "#default"
    {
        "Signatures"
        {
            "SV_DropClient"     /// void SV_DropClient(client_t *cl, qboolean crash, const char *fmt, ...);
            {
                ///
                "library"       "engine"
                ///
                /// "windows"   "\x55\x8B\x2A\x81\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x53\x56\x8D"                                                                                                          /// [ HLDS 2020 ] CS/ CZ, DOD, HL, ... ( OLD )
                ///
                "windows"       "\x55\x8B\x2A\x81\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\x2A\x89\x2A\x2A\x56\x57\x8B\x2A\x2A\x8D\x2A\x2A\x50\x33\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x56\xFF\x2A\x2A\x68"  /// [ HLDS 2023 ] CS/ CZ, DOD, HL, ... ( NEW ) @ sub_101D1CB0()
                ///
                "linux"         "@SV_DropClient"
                "mac"           "@SV_DropClient"
                ///
            }

            "Cvar_DirectSet"    /// void Cvar_DirectSet(struct cvar_s *var, char *value);
            {
                ///
                "library"       "engine"
                ///
                /// "windows"   "\x55\x8B\x2A\x81\x2A\x2A\x2A\x2A\x2A\x56\x8B\x2A\x2A\x57\x8B\x2A\x2A\x85"                                                                                              /// [ HLDS 2020 ] CS/ CZ, DOD, HL, ... ( OLD )
                ///
                "windows"       "\x55\x8B\x2A\x81\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\x2A\x89\x2A\x2A\x56\x8B\x2A\x2A\x57\x8B\x2A\x2A\x85\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x85\x2A\x0F"              /// [ HLDS 2023 ] CS/ CZ, DOD, HL, ... ( NEW ) @ sub_101BDCF0()
                ///
                "linux"         "@Cvar_DirectSet"
                "mac"           "@Cvar_DirectSet"
                ///
            }
        }
    }
}
  1. /steamapps/common/Half-Life/cstrike/addons/amxmodx/data/gamedata/common.games/globalvars.engine.txt
    
    /**
    * Do not edit this file.  Any changes will be overwritten by the gamedata
    * updater or by upgrading your AMX Mod X install.
    *
    * To override data in this file, create a subdirectory named "custom" and
    * place your own gamedata file(s) inside of it.  Such files will be parsed
    * after AMXX's own.
    *
    * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(AMX_Mod_X)
    */

"Games" { "#default" { "Offsets" { "svs" /// Used With pfnGetCurrentPlayer Base Address { /// /// "windows" "8" /// 2020 HLDS (CS/ CZ, DOD, HL, ...) /// "windows" "13" /// 2023 HLDS (CS/ CZ, DOD, HL, ...) /// } }

    "Addresses"
    {
        "realtime"
        {
            "windows"
            {
                "signature"     "realtime"

                "read"          "2"
            }
        }

        "sv"
        {
            "windows"
            {
                "signature"     "sv"

                "read"          "2"
            }
        }

        "g_pGameRules"
        {
            "signature"         "g_pGameRules"

            "windows"
            {
                ///
                /// "read"      "2"     /// [ HLDS 2020 ]   CS/ CZ
                ///
                "read"          "1"     /// [ HLDS 2023 ]   CS/ CZ, DOD, HL, ...
                ///
            }

            "read"              "0"
        }
    }

    "Signatures"
    {
        "svs"                   /// server_static_t     svs
        {
            "library"           "engine"
            "linux"             "@svs"
            "mac"               "@svs"
        }

        "sv"                    /// server_t            sv
        {
            ///
            "library"           "engine"
            ///
            /// "windows"       "\x8B\x2A\x2A\x2A\x2A\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x53\x33\x2A\x89"                                                                                                                      /// SVC_PlayerInfo()                [ 2020 HLDS ]   CS/ CZ, DOD, HL, ...
            ///
            "windows"           "\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x76\x2A\xA1\x2A\x2A\x2A\x2A\x85\x2A\x0F\x2A\x2A\x83\x2A\x2A\x74\x2A\x83\x2A\x2A\x2A\x2A\x2A\x2A\x74"                                  /// dword_10971F40 @ sub_101D1EF0() [ 2023 HLDS ]   CS/ CZ, DOD, HL, ...
            ///
            "linux"             "@sv"
            "mac"               "@sv"
            ///
        }

        "realtime"              /// double              realtime
        {
            ///
            "library"           "engine"
            ///
            /// "windows"       "\xDC\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x56"                                                                                                                                      /// SV_CheckTimeouts()              [ 2020 HLDS ]   CS/ CZ, DOD, HL, ...
            ///
            "windows"           "\xF2\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x66\x2A\x2A\x2A\x72\x2A\x3B\x2A\x7D\x2A\x8B\x2A\x8D\x2A\x2A\x2B\x2A\x8B\x2A\xC1\x2A\x2A\x81\x2A\x2A\x2A\x2A\x2A\xF3\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B"  /// qword_10B6A158 @ sub_10208750() [ 2023 HLDS ]   CS/ CZ, DOD, HL, ...
            ///
            "linux"             "@realtime"
            "mac"               "@realtime"
            ///
        }

        "g_pGameRules"          /// CGameRules *        g_pGameRules
        {
            ///
            "library"           "server"
            ///
            /// "windows"       "\x8B\x2A\x2A\x2A\x2A\x2A\x85\x2A\x74\x2A\x8B\x2A\xFF\x2A\x2A\xA1"                                                                                                                      /// StartFrame()                    [ 2020 HLDS ]   CS/ CZ
            ///
            "windows"           "\xA3\x2A\x2A\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x85\x2A\x75\x2A\x33\x2A\xEB"                                                                                                              /// dword_10130BA0 @ sub_100C2440() [ 2023 HLDS ]   CS/ CZ
            /// "windows"       "\xA3\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xFF\x2A\x6A\x2A\xE8\x2A\x2A\x2A\x2A\x83\x2A\x2A\xA3\x2A\x2A\x2A\x2A\xA1"                                      /// dword_1013B31C @ sub_100BB790() [ 2023 HLDS ]   DOD
            /// "windows"       "\xA3\x2A\x2A\x2A\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x85\x2A\x75\x2A\x33\x2A\xEB\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x85\x2A\x74\x2A\x8B\x2A\x2A\x85\x2A\x75"      /// dword_100D74A4 @ sub_100985B0() [ 2023 HLDS ]   HL
            ///
            "linux"             "@g_pGameRules"
            "mac"               "@g_pGameRules"
            ///
        }
    }
}

}