* Add ReHLDS API files and its dependencies Note: This has been stolen from ReAPI AMXX module and modified/adjusted to match AMXX existing includes and to provide as less dependencies as possible as well * Add the necessary files to get ReHLDS interface * Split SV_DropClient into pre/post code * Init ReHLDS API and add SV_DropClient hook * Add Cvar_DirectSet hook and adjust code with helpers Note: we don't need to split code here. This is pretty much the naive and straight way, but fairly enough for our case. If it happens we got a lot more hooks, we may consider to use some class to manage better the things. * Move platform and interface stuff in their own files in public directory * Make sure to init cvar stuff after ReHLDS * Add ReGameDLL API files and its dependencies in cstrike module * Init ReHLDS in cstrike module and adjust code Note: About cs_uset_set_model(). ReHLDS API doesn't offer a way to know directly the precached models, so instead of looping through all the ressources, the models list is saved one time at map change into a hashmap. * Init ReGameDLL and adjust code * Fix linux compilation * Init ReGameDLL in fakemeta module and adjust code * Rename /reapi directory to /resdk to avoid confusion * Retrieve gamerules pointer through InstallGameRules in fakemeta module * Retrieve gamerules pointer through InstallGameRules in cstrike module Note: actually gamerules is not used if regamedll is enabled, but it could be used in future natives. * Fix a typo when ReGameDLL is not enabled * Fix missing interface check for ReHLDS. I'm pretty sure I was checking at the very first since I worked first on vanilla version of engine, looks like change has been lost.
403 lines
9.9 KiB
C
403 lines
9.9 KiB
C
// 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
|
|
|
|
/**
|
|
* Weapon Ids for use with CS_OnBuyAttempt(), CS_OnBuy().
|
|
*/
|
|
#define CSI_NONE CSW_NONE
|
|
#define CSI_P228 CSW_P228
|
|
#define CSI_GLOCK CSW_GLOCK // Unused by game
|
|
#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_GALIL CSW_GALIL
|
|
#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_P90 CSW_P90
|
|
#define CSI_SHIELDGUN CSW_SHIELDGUN // The real CS value, use CSI_SHIELD instead.
|
|
#define CSI_VEST CSW_VEST // Custom
|
|
#define CSI_VESTHELM CSW_VESTHELM // Custom
|
|
#define CSI_DEFUSER 33 // Custom
|
|
#define CSI_NVGS 34 // Custom
|
|
#define CSI_SHIELD 35 // Custom - The value passed by the forward, more convenient for plugins.
|
|
#define CSI_PRIAMMO 36 // Custom
|
|
#define CSI_SECAMMO 37 // Custom
|
|
#define CSI_MAX_COUNT 38
|
|
#define CSI_LAST_WEAPON CSW_LAST_WEAPON
|
|
|
|
#define CSI_ALL_WEAPONS CSW_ALL_WEAPONS
|
|
#define CSI_ALL_PISTOLS CSW_ALL_PISTOLS
|
|
#define CSI_ALL_SHOTGUNS CSW_ALL_SHOTGUNS
|
|
#define CSI_ALL_SMGS CSW_ALL_SMGS
|
|
#define CSI_ALL_RIFLES CSW_ALL_RIFLES
|
|
#define CSI_ALL_SNIPERRIFLES CSW_ALL_SNIPERRIFLES
|
|
#define CSI_ALL_MACHINEGUNS CSW_ALL_MACHINEGUNS
|
|
#define CSI_ALL_GRENADES CSW_ALL_GRENADES
|
|
#define CSI_ALL_ARMORS CSW_ALL_ARMORS
|
|
#define CSI_ALL_GUNS CSW_ALL_GUNS
|
|
|
|
/**
|
|
* Weapons Ids.
|
|
*/
|
|
#define CSW_NONE 0
|
|
#define CSW_P228 1
|
|
#define CSW_GLOCK 2 // Unused by game
|
|
#define CSW_SCOUT 3
|
|
#define CSW_HEGRENADE 4
|
|
#define CSW_XM1014 5
|
|
#define CSW_C4 6
|
|
#define CSW_MAC10 7
|
|
#define CSW_AUG 8
|
|
#define CSW_SMOKEGRENADE 9
|
|
#define CSW_ELITE 10
|
|
#define CSW_FIVESEVEN 11
|
|
#define CSW_UMP45 12
|
|
#define CSW_SG550 13
|
|
#define CSW_GALIL 14
|
|
#define CSW_FAMAS 15
|
|
#define CSW_USP 16
|
|
#define CSW_GLOCK18 17
|
|
#define CSW_AWP 18
|
|
#define CSW_MP5NAVY 19
|
|
#define CSW_M249 20
|
|
#define CSW_M3 21
|
|
#define CSW_M4A1 22
|
|
#define CSW_TMP 23
|
|
#define CSW_G3SG1 24
|
|
#define CSW_FLASHBANG 25
|
|
#define CSW_DEAGLE 26
|
|
#define CSW_SG552 27
|
|
#define CSW_AK47 28
|
|
#define CSW_KNIFE 29
|
|
#define CSW_P90 30
|
|
#define CSW_VEST 31 // Brand new invention!
|
|
#define CSW_VESTHELM 32 // Brand new invention!
|
|
#define CSW_SHIELDGUN 99
|
|
#define CSW_LAST_WEAPON CSW_P90
|
|
|
|
#define CSW_ALL_WEAPONS (~(1 << CSW_VEST))
|
|
#define CSW_ALL_PISTOLS (1 << CSW_P228 | 1 << CSW_ELITE | 1 << CSW_FIVESEVEN | 1 << CSW_USP | 1 << CSW_GLOCK18 | 1 << CSW_DEAGLE)
|
|
#define CSW_ALL_SHOTGUNS (1 << CSW_M3 | 1 << CSW_XM1014)
|
|
#define CSW_ALL_SMGS (1 << CSW_MAC10 | 1 << CSW_UMP45 | 1 << CSW_MP5NAVY | 1 << CSW_TMP | 1 << CSW_P90)
|
|
#define CSW_ALL_RIFLES (1 << CSW_AUG | 1 << CSW_GALIL | 1 << CSW_FAMAS | 1 << CSW_M4A1 | 1 << CSW_AK47 | 1 << CSW_SG552)
|
|
#define CSW_ALL_SNIPERRIFLES (1 << CSW_SCOUT | 1 << CSW_AWP | 1 << CSW_G3SG1 | 1 << CSW_SG550)
|
|
#define CSW_ALL_MACHINEGUNS (1 << CSW_M249)
|
|
#define CSW_ALL_GRENADES (1 << CSW_HEGRENADE | 1 << CSW_SMOKEGRENADE | 1 << CSW_FLASHBANG)
|
|
#define CSW_ALL_ARMORS (1 << CSW_VEST | 1 << CSW_VESTHELM)
|
|
#define CSW_ALL_GUNS (CSW_ALL_PISTOLS | CSW_ALL_SHOTGUNS | CSW_ALL_SMGS | CSW_ALL_RIFLES | CSW_ALL_SNIPERRIFLES | CSW_ALL_MACHINEGUNS)
|
|
|
|
/**
|
|
* Armoury entity ids for use with cs_get/set_armoury_type().
|
|
*/
|
|
#define CSA_MP5NAVY 0
|
|
#define CSA_TMP 1
|
|
#define CSA_P90 2
|
|
#define CSA_MAC10 3
|
|
#define CSA_AK47 4
|
|
#define CSA_SG552 5
|
|
#define CSA_M4A1 6
|
|
#define CSA_AUG 7
|
|
#define CSA_SCOUT 8
|
|
#define CSA_G3SG1 9
|
|
#define CSA_AWP 10
|
|
#define CSA_M3 11
|
|
#define CSA_XM1014 12
|
|
#define CSA_M249 13
|
|
#define CSA_FLASHBANG 14
|
|
#define CSA_HEGRENADE 15
|
|
#define CSA_VEST 16
|
|
#define CSA_VESTHELM 17
|
|
#define CSA_SMOKEGRENADE 18
|
|
|
|
/**
|
|
* Weapon states of the following weapons: usp, elite, glock18, famas and m4a1.
|
|
*/
|
|
enum WeaponState
|
|
{
|
|
WPNSTATE_USP_SILENCED = (1 << 0),
|
|
WPNSTATE_GLOCK18_BURST_MODE = (1 << 1),
|
|
WPNSTATE_M4A1_SILENCED = (1 << 2),
|
|
WPNSTATE_ELITE_LEFT = (1 << 3),
|
|
WPNSTATE_FAMAS_BURST_MODE = (1 << 4),
|
|
WPNSTATE_SHIELD_DRAWN = (1 << 5),
|
|
};
|
|
|
|
/**
|
|
* M4A1 animations
|
|
*/
|
|
enum m4a1_e
|
|
{
|
|
M4A1_IDLE,
|
|
M4A1_SHOOT1,
|
|
M4A1_SHOOT2,
|
|
M4A1_SHOOT3,
|
|
M4A1_RELOAD,
|
|
M4A1_DRAW,
|
|
M4A1_ATTACH_SILENCER,
|
|
M4A1_UNSIL_IDLE,
|
|
M4A1_UNSIL_SHOOT1,
|
|
M4A1_UNSIL_SHOOT2,
|
|
M4A1_UNSIL_SHOOT3,
|
|
M4A1_UNSIL_RELOAD,
|
|
M4A1_UNSIL_DRAW,
|
|
M4A1_DETACH_SILENCER
|
|
};
|
|
|
|
/**
|
|
* USP animations
|
|
*/
|
|
enum usp_e
|
|
{
|
|
USP_IDLE,
|
|
USP_SHOOT1,
|
|
USP_SHOOT2,
|
|
USP_SHOOT3,
|
|
USP_SHOOT_EMPTY,
|
|
USP_RELOAD,
|
|
USP_DRAW,
|
|
USP_ATTACH_SILENCER,
|
|
USP_UNSIL_IDLE,
|
|
USP_UNSIL_SHOOT1,
|
|
USP_UNSIL_SHOOT2,
|
|
USP_UNSIL_SHOOT3,
|
|
USP_UNSIL_SHOOT_EMPTY,
|
|
USP_UNSIL_RELOAD,
|
|
USP_UNSIL_DRAW,
|
|
USP_DETACH_SILENCER
|
|
};
|
|
|
|
/**
|
|
* States of gameplay zones.
|
|
*/
|
|
enum SignalState
|
|
{
|
|
SIGNAL_BUY = (1 << 0),
|
|
SIGNAL_BOMB = (1 << 1),
|
|
SIGNAL_RESCUE = (1 << 2),
|
|
SIGNAL_ESCAPE = (1 << 3),
|
|
SIGNAL_VIPSAFETY = (1 << 4),
|
|
};
|
|
|
|
/**
|
|
* Default team indexes.
|
|
*/
|
|
#define TEAM_UNASSIGNED 0
|
|
#define TEAM_T 1
|
|
#define TEAM_CT 2
|
|
#define TEAM_SPECTATOR 3
|
|
|
|
/**
|
|
* Default color of defuser HUD icon.
|
|
*/
|
|
#define DEFUSER_COLOUR_R 0
|
|
#define DEFUSER_COLOUR_G 160
|
|
#define DEFUSER_COLOUR_B 0
|
|
|
|
/**
|
|
* Values for use with ScoreAttrib message.
|
|
*/
|
|
#define SCOREATTRIB_NOTHING 0
|
|
#define SCOREATTRIB_DEAD 1
|
|
#define SCOREATTRIB_BOMB 2 // t only
|
|
#define SCOREATTRIB_VIP 4 // ct only
|
|
|
|
/**
|
|
* Armor types for use with cs_get/Set_user_armor().
|
|
*/
|
|
#define CS_ARMOR_NONE 0
|
|
#define CS_ARMOR_KEVLAR 1
|
|
#define CS_ARMOR_ASSAULTSUIT 2
|
|
|
|
/**
|
|
* Default FOV values.
|
|
*/
|
|
#define CS_FIRST_ZOOM 40
|
|
#define CS_SECOND_AWP_ZOOM 10
|
|
#define CS_SECOND_NONAWP_ZOOM 15
|
|
#define CS_AUGSG552_ZOOM 55
|
|
#define CS_NO_ZOOM 90
|
|
|
|
/**
|
|
* Zoom value for use with cs_get/set_user_zoom().
|
|
*/
|
|
enum
|
|
{
|
|
CS_RESET_ZOOM = 0,
|
|
CS_SET_NO_ZOOM,
|
|
CS_SET_FIRST_ZOOM,
|
|
CS_SET_SECOND_ZOOM,
|
|
CS_SET_AUGSG552_ZOOM,
|
|
|
|
};
|
|
|
|
/**
|
|
* Player's model types.
|
|
*/
|
|
enum CS_Internal_Models
|
|
{
|
|
CS_DONTCHANGE = 0,
|
|
CS_CT_URBAN = 1,
|
|
CS_T_TERROR = 2,
|
|
CS_T_LEET = 3,
|
|
CS_T_ARCTIC = 4,
|
|
CS_CT_GSG9 = 5,
|
|
CS_CT_GIGN = 6,
|
|
CS_CT_SAS = 7,
|
|
CS_T_GUERILLA = 8,
|
|
CS_CT_VIP = 9,
|
|
CZ_T_MILITIA = 10,
|
|
CZ_CT_SPETSNAZ = 11
|
|
};
|
|
|
|
/**
|
|
* Menu states.
|
|
*/
|
|
typedef enum
|
|
{
|
|
Menu_OFF,
|
|
Menu_ChooseTeam,
|
|
Menu_IGChooseTeam,
|
|
Menu_ChooseAppearance,
|
|
Menu_Buy,
|
|
Menu_BuyPistol,
|
|
Menu_BuyRifle,
|
|
Menu_BuyMachineGun,
|
|
Menu_BuyShotgun,
|
|
Menu_BuySubMachineGun,
|
|
Menu_BuyItem,
|
|
Menu_Radio1,
|
|
Menu_Radio2,
|
|
Menu_Radio3,
|
|
Menu_ClientBuy
|
|
|
|
} Menu;
|
|
|
|
|
|
/**
|
|
* Weapon class types.
|
|
*/
|
|
enum CsWeaponClassType
|
|
{
|
|
CS_WEAPONCLASS_NONE = 0,
|
|
CS_WEAPONCLASS_KNIFE = 1,
|
|
CS_WEAPONCLASS_PISTOL = 2,
|
|
CS_WEAPONCLASS_GRENADE = 3,
|
|
CS_WEAPONCLASS_SUBMACHINEGUN = 4,
|
|
CS_WEAPONCLASS_SHOTGUN = 5,
|
|
CS_WEAPONCLASS_MACHINEGUN = 6,
|
|
CS_WEAPONCLASS_RIFLE = 7,
|
|
CS_WEAPONCLASS_SNIPERRIFLE = 8,
|
|
CS_WEAPONCLASS_MAX_COUNT = 9,
|
|
};
|
|
|
|
/**
|
|
* Weapon infos.
|
|
*/
|
|
struct WeaponInfoStruct
|
|
{
|
|
int id;
|
|
int cost;
|
|
int clipCost;
|
|
int buyClipSize;
|
|
int gunClipSize;
|
|
int maxRounds;
|
|
int ammoType;
|
|
char *entityName;
|
|
const char *ammoName;
|
|
};
|
|
|
|
/**
|
|
* Weapon infos for use with cs_get_weapon_info().
|
|
*/
|
|
enum CsWeaponInfo
|
|
{
|
|
CS_WEAPONINFO_COST = 0,
|
|
CS_WEAPONINFO_CLIP_COST = 1,
|
|
CS_WEAPONINFO_BUY_CLIP_SIZE = 2,
|
|
CS_WEAPONINFO_GUN_CLIP_SIZE = 3,
|
|
CS_WEAPONINFO_MAX_ROUNDS = 4,
|
|
CS_WEAPONINFO_AMMO_TYPE = 5,
|
|
};
|
|
|
|
/**
|
|
* Weapon default cost.
|
|
*/
|
|
enum WeaponCostType
|
|
{
|
|
AK47_PRICE = 2500,
|
|
AWP_PRICE = 4750,
|
|
DEAGLE_PRICE = 650,
|
|
G3SG1_PRICE = 5000,
|
|
SG550_PRICE = 4200,
|
|
GLOCK18_PRICE = 400,
|
|
M249_PRICE = 5750,
|
|
M3_PRICE = 1700,
|
|
M4A1_PRICE = 3100,
|
|
AUG_PRICE = 3500,
|
|
MP5NAVY_PRICE = 1500,
|
|
P228_PRICE = 600,
|
|
P90_PRICE = 2350,
|
|
UMP45_PRICE = 1700,
|
|
MAC10_PRICE = 1400,
|
|
SCOUT_PRICE = 2750,
|
|
SG552_PRICE = 3500,
|
|
TMP_PRICE = 1250,
|
|
USP_PRICE = 500,
|
|
ELITE_PRICE = 800,
|
|
FIVESEVEN_PRICE = 750,
|
|
XM1014_PRICE = 3000,
|
|
GALIL_PRICE = 2000,
|
|
FAMAS_PRICE = 2250,
|
|
SHIELDGUN_PRICE = 2200
|
|
};
|
|
|
|
/**
|
|
* Equipment default cost.
|
|
*/
|
|
enum ItemCostType
|
|
{
|
|
ASSAULTSUIT_PRICE = 1000,
|
|
FLASHBANG_PRICE = 200,
|
|
HEGRENADE_PRICE = 300,
|
|
SMOKEGRENADE_PRICE = 300,
|
|
KEVLAR_PRICE = 650,
|
|
HELMET_PRICE = 350,
|
|
NVG_PRICE = 1250,
|
|
DEFUSEKIT_PRICE = 200
|
|
};
|
|
|
|
#endif // CSTRIKE_DATA_H
|