// vim: set ts=4 sw=4 tw=99 noet: // // AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO"). // Copyright (C) The AMX Mod X Development Team. // // This software is licensed under the GNU General Public License, version 3 or higher. // Additional exceptions apply. For full license details, see LICENSE.txt or visit: // https://alliedmods.net/amxmodx-license // // Counter-Strike Module // #ifndef CSTRIKE_DATA_H #define CSTRIKE_DATA_H #include "amxxmodule.h" #if defined(__linux__) || defined (__APPLE__) #define EXTRAOFFSET 5 // offsets 5 higher in Linux builds #define EXTRAOFFSET_WEAPONS 4 // weapon offsets are obviously only 4 steps higher on Linux! #define ACTUAL_EXTRA_OFFSET 20 // actual, byte-addressable offset #else #define EXTRAOFFSET 0 // no change in Windows builds #define EXTRAOFFSET_WEAPONS 0 #define ACTUAL_EXTRA_OFFSET 0 #endif /* Offset history: 041029: Confirmed (pretty much) ALL offsets for 32 bit Windows, 32 bit Linux and amd64 (yes that's all of them). Found out that weapon offsets are only +4 higher on Linux. Also backpack ammo offsets were all obviously 5 steps too high since unknown time... */ // "player" entities #if !defined __amd64__ // 32 bit offsets here #define OFFSET_ARMORTYPE 112 + EXTRAOFFSET #define OFFSET_TEAM 114 + EXTRAOFFSET #define OFFSET_CSMONEY 115 + EXTRAOFFSET #define OFFSET_PRIMARYWEAPON 116 + EXTRAOFFSET #define OFFSET_LASTACTIVITY 124 + EXTRAOFFSET #define OFFSET_INTERNALMODEL 126 + EXTRAOFFSET #define OFFSET_NVGOGGLES 129 + EXTRAOFFSET #define OFFSET_DEFUSE_PLANT 193 + EXTRAOFFSET #define OFFSET_MENU 205 + EXTRAOFFSET #define OFFSET_VIP 209 + EXTRAOFFSET #define OFFSET_TK 216 + EXTRAOFFSET // 040926 #define OFFSET_HOSTAGEKILLS 217 + EXTRAOFFSET #define OFFSET_MAPZONE 235 + EXTRAOFFSET #define OFFSET_ISDRIVING 350 + EXTRAOFFSET // 040926 #define OFFSET_STATIONARY 362 + EXTRAOFFSET // 040927 (363 works also!) #define OFFSET_ZOOMTYPE 363 + EXTRAOFFSET #define OFFSET_AWM_AMMO 377 + EXTRAOFFSET // 041029: All of these *_AMMO:s were changed -5 #define OFFSET_SCOUT_AMMO 378 + EXTRAOFFSET #define OFFSET_PARA_AMMO 379 + EXTRAOFFSET #define OFFSET_FAMAS_AMMO 380 + EXTRAOFFSET #define OFFSET_M3_AMMO 381 + EXTRAOFFSET #define OFFSET_USP_AMMO 382 + EXTRAOFFSET #define OFFSET_FIVESEVEN_AMMO 383 + EXTRAOFFSET #define OFFSET_DEAGLE_AMMO 384 + EXTRAOFFSET #define OFFSET_P228_AMMO 385 + EXTRAOFFSET #define OFFSET_GLOCK_AMMO 386 + EXTRAOFFSET #define OFFSET_FLASH_AMMO 387 + EXTRAOFFSET #define OFFSET_HE_AMMO 388 + EXTRAOFFSET #define OFFSET_SMOKE_AMMO 389 + EXTRAOFFSET #define OFFSET_C4_AMMO 390 + EXTRAOFFSET #define OFFSET_CSDEATHS 444 + EXTRAOFFSET // 040926 #define OFFSET_SHIELD 510 + EXTRAOFFSET // "weapon_*" entities #define OFFSET_WEAPONTYPE 43 + EXTRAOFFSET_WEAPONS #define OFFSET_CLIPAMMO 51 + EXTRAOFFSET_WEAPONS #define OFFSET_SILENCER_FIREMODE 74 + EXTRAOFFSET_WEAPONS // "hostage_entity" entities #define OFFSET_HOSTAGEFOLLOW 86 + EXTRAOFFSET #define OFFSET_HOSTAGE_NEXTUSE 100 + EXTRAOFFSET #define OFFSET_HOSTAGE_LASTUSE 483 + EXTRAOFFSET #define OFFSET_HOSTAGEID 487 + EXTRAOFFSET // "armoury_entity" #define OFFSET_ARMOURY_TYPE 34 + EXTRAOFFSET_WEAPONS // C4 offsets #define OFFSET_C4_EXPLODE_TIME 100 + EXTRAOFFSET #define OFFSET_C4_DEFUSING 0x181 + ACTUAL_EXTRA_OFFSET #else // Amd64 offsets here #define OFFSET_ARMORTYPE 137 + EXTRAOFFSET #define OFFSET_TEAM 139 + EXTRAOFFSET // +25 #define OFFSET_CSMONEY 140 + EXTRAOFFSET // +25 #define OFFSET_PRIMARYWEAPON 141 + EXTRAOFFSET // +25 #define OFFSET_INTERNALMODEL 152 + EXTRAOFFSET // +26 #define OFFSET_NVGOGGLES 155 + EXTRAOFFSET // +26 #define OFFSET_DEFUSE_PLANT 219 + EXTRAOFFSET // +26 #define OFFSET_VIP 242 + EXTRAOFFSET // +27 #define OFFSET_TK 249 + EXTRAOFFSET // +33 040927 #define OFFSET_MAPZONE 268 + EXTRAOFFSET // +27 #define OFFSET_ISDRIVING 386 + EXTRAOFFSET // 040927 #define OFFSET_STATIONARY 400 + EXTRAOFFSET // 040927 (401 works also) #define OFFSET_ZOOMTYPE 402 + EXTRAOFFSET #define OFFSET_AWM_AMMO 426 + EXTRAOFFSET // +44 #define OFFSET_SCOUT_AMMO 427 + EXTRAOFFSET // +44 #define OFFSET_PARA_AMMO 428 + EXTRAOFFSET // +44 #define OFFSET_FAMAS_AMMO 429 + EXTRAOFFSET // +44 #define OFFSET_M3_AMMO 430 + EXTRAOFFSET // +44 #define OFFSET_USP_AMMO 431 + EXTRAOFFSET // +44 #define OFFSET_FIVESEVEN_AMMO 432 + EXTRAOFFSET // +44 #define OFFSET_DEAGLE_AMMO 433 + EXTRAOFFSET // +44 #define OFFSET_P228_AMMO 434 + EXTRAOFFSET // +44 #define OFFSET_GLOCK_AMMO 435 + EXTRAOFFSET // +44 #define OFFSET_FLASH_AMMO 436 + EXTRAOFFSET // +44 #define OFFSET_HE_AMMO 437 + EXTRAOFFSET // +44 #define OFFSET_SMOKE_AMMO 438 + EXTRAOFFSET // +44 #define OFFSET_C4_AMMO 439 + EXTRAOFFSET // +44 #define OFFSET_CSDEATHS 493 + EXTRAOFFSET // +49 #define OFFSET_SHIELD 559 + EXTRAOFFSET // "weapon_*" entities #define OFFSET_WEAPONTYPE 57 + EXTRAOFFSET // +14 #define OFFSET_CLIPAMMO 65 + EXTRAOFFSET // +14 #define OFFSET_SILENCER_FIREMODE 88 + EXTRAOFFSET // +14 // "hostage_entity" entities #define OFFSET_HOSTAGEFOLLOW 51 + EXTRAOFFSET // +21, long=51, int=107! (must use the long* offset because pointers on amd64 are stored the size of longs, 8 bytes, instead of the usual int 4 bytes.) #define OFFSET_HOSTAGEID 516 + EXTRAOFFSET // +29 #endif #if defined(__linux__) #define CS_IDENT_USEBOTARGS "UseBotArgs" #define CS_IDENT_BOTARGS "BotArgs" #define CS_IDENT_HIDDEN_STATE false #elif defined(__APPLE__) #define CS_IDENT_USEBOTARGS "UseBotArgs" #define CS_IDENT_BOTARGS "BotArgs" #define CS_IDENT_HIDDEN_STATE true #else #define CS_CLICMD_OFFS_USEBOTARGS 2 #define CS_CLICMD_OFFS_BOTARGS 22 #endif /** * CS_OnBuy forward */ #if defined(__linux__) #define CS_IDENT_GIVENSHIELD "_ZN11CBasePlayer10GiveShieldEb" #define CS_IDENT_GIVENAMEDITEM "_ZN11CBasePlayer13GiveNamedItemEPKc" #define CS_IDENT_ADDACCOUNT "_ZN11CBasePlayer10AddAccountEib" #define CS_IDENT_HIDDEN_STATE false #elif defined(__APPLE__) #define CS_IDENT_GIVENSHIELD "_ZN11CBasePlayer10GiveShieldEb" #define CS_IDENT_GIVENAMEDITEM "_ZN11CBasePlayer13GiveNamedItemEPKc" #define CS_IDENT_ADDACCOUNT "_ZN11CBasePlayer10AddAccountEib" #define CS_IDENT_HIDDEN_STATE true #elif defined(WIN32) #define CS_IDENT_GIVENSHIELD "\\x56\\x8B\\x2A\\x57\\x33\\x2A\\x8B\\x2A\\x2A\\x2A\\x2A\\x2A\\xB0" #define CS_IDENT_GIVENAMEDITEM "\\x8B\\x2A\\x2A\\x2A\\x56\\x57\\x8B\\x2A\\x8B\\x2A\\x2A\\x2A\\x2A\\x2A\\x2B" #define CS_IDENT_ADDACCOUNT "\\x8B\\x2A\\x2A\\x2A\\x56\\x8B\\x2A\\x8B\\x2A\\x2A\\x2A\\x2A\\x2A\\x03" #define CS_IDENT_HIDDEN_STATE false #endif #define CSI_P228 CSW_P228 #define CSI_SCOUT CSW_SCOUT #define CSI_HEGRENADE CSW_HEGRENADE #define CSI_XM1014 CSW_XM1014 #define CSI_C4 CSW_C4 #define CSI_MAC10 CSW_MAC10 #define CSI_AUG CSW_AUG #define CSI_SMOKEGRENADE CSW_SMOKEGRENADE #define CSI_ELITE CSW_ELITE #define CSI_FIVESEVEN CSW_FIVESEVEN #define CSI_UMP45 CSW_UMP45 #define CSI_SG550 CSW_SG550 #define CSI_GALI CSW_GALI #define CSI_FAMAS CSW_FAMAS #define CSI_USP CSW_USP #define CSI_GLOCK18 CSW_GLOCK18 #define CSI_AWP CSW_AWP #define CSI_MP5NAVY CSW_MP5NAVY #define CSI_M249 CSW_M249 #define CSI_M3 CSW_M3 #define CSI_M4A1 CSW_M4A1 #define CSI_TMP CSW_TMP #define CSI_G3SG1 CSW_G3SG1 #define CSI_FLASHBANG CSW_FLASHBANG #define CSI_DEAGLE CSW_DEAGLE #define CSI_SG552 CSW_SG552 #define CSI_AK47 CSW_AK47 #define CSI_KNIFE CSW_KNIFE #define CSI_P90 CSW_P90 #define CSI_SHIELDGUN CSW_SHIELDGUN #define CSI_VEST CSW_VEST // Custom #define CSI_VESTHELM CSW_VESTHELM // Custom #define CSI_DEFUSER 33 // Custom #define CSI_NVGS 34 // Custom #define CSI_PRIMAMMO 36 // Custom #define CSI_SECAMMO 37 // Custom #define BITS_PISTOLS (1<