amxmodx/plugins/include/amxconst.inc

595 lines
16 KiB
SourcePawn
Raw Normal View History

// 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
2004-01-31 20:56:22 +00:00
#if defined _amxconst_included
2015-02-24 21:51:36 +00:00
#endinput
#endif
#define _amxconst_included
#include <amxmodx_version>
/**
* Internal AMXX buffer size for string retrieval.
*
* @note This is the buffer size AMX Mod X uses internally to retrieve strings
* from plugins. Most natives that take strings as arguments will
* implicitly truncate them to this maximum length. This has been raised
* to the current value with AMXX 1.8.3. Previously the limit was 3072.
* @note This is here mainly for documentation purposes. By default plugins
* don't have enough memory available to allocate an array of this size.
* You probably should not use this to actually declare a buffer unless
* you *absolutely* have to. Look at #pragma dynamic to increase a plugins
* available memory.
*/
#define MAX_STRING_LENGTH 16384
/**
* The maximum buffer size required to store a map's name.
*/
#define MAX_MAPNAME_LENGTH 64
/**
* Defines and constants related to the maximum number of clients.
*
* @note MAX_PLAYERS is not the same as MaxClients. MAX_PLAYERS is a hardcoded
* value as an upper limit, used mainly to declare arrays big enough for
* all possible server situations. MaxClients changes based on the
* server the plugin is deployed on..
*/
2015-02-01 17:40:20 +00:00
#define MAX_PLAYERS 32 /* Maximum number of players AMX Mod X supports */
/**
* Maximum number of players the server supports
*/
public stock const MaxClients;
/**
* Current map name
*/
public stock const MapName[MAX_MAPNAME_LENGTH];
/**
* Pass this into certain functions to act as a C++ NULL
*/
public stock const NULL_STRING[1];
2015-05-06 09:28:54 +00:00
/**
* Pass this into certain functions to act as a C++ NULL
*/
public stock const Float:NULL_VECTOR[3];
/**
* The maximum buffer size required to store a client's name.
*/
#define MAX_NAME_LENGTH 32
/**
* The maximum buffer size required to store a client's IP address without a port.
*/
#define MAX_IP_LENGTH 16
/**
* The maximum buffer size required to store a client's IP address with a port.
*/
#define MAX_IP_WITH_PORT_LENGTH 22
/**
* The maximum buffer size required to store a client's AuthID.
*/
#define MAX_AUTHID_LENGTH 64
/**
* The maximum buffer size required to store a resource path.
*/
#define MAX_RESOURCE_PATH_LENGTH 64
/**
* The maximum buffer size that can be displayed in a MOTD.
*/
#define MAX_MOTD_LENGTH 1536
/**
* The maximum size accepted by the user info buffer.
*/
#define MAX_USER_INFO_LENGTH 256
/**
* The maximum buffer size that can be displayed in a menu.
*/
#define MAX_MENU_LENGTH 512
/**
* π
*/
#define M_PI 3.1415926535
2006-05-11 13:10:29 +00:00
2014-08-05 16:59:08 +00:00
/**
* @section Admin privilege and authentication constants
*/
2014-08-02 16:12:32 +00:00
/**
* Admin level constants
*/
2014-08-03 22:35:52 +00:00
#define ADMIN_ALL 0 /* everyone */
#define ADMIN_IMMUNITY (1<<0) /* flag "a" */
#define ADMIN_RESERVATION (1<<1) /* flag "b" */
#define ADMIN_KICK (1<<2) /* flag "c" */
#define ADMIN_BAN (1<<3) /* flag "d" */
#define ADMIN_SLAY (1<<4) /* flag "e" */
#define ADMIN_MAP (1<<5) /* flag "f" */
#define ADMIN_CVAR (1<<6) /* flag "g" */
#define ADMIN_CFG (1<<7) /* flag "h" */
#define ADMIN_CHAT (1<<8) /* flag "i" */
#define ADMIN_VOTE (1<<9) /* flag "j" */
#define ADMIN_PASSWORD (1<<10) /* flag "k" */
#define ADMIN_RCON (1<<11) /* flag "l" */
#define ADMIN_LEVEL_A (1<<12) /* flag "m" */
#define ADMIN_LEVEL_B (1<<13) /* flag "n" */
#define ADMIN_LEVEL_C (1<<14) /* flag "o" */
#define ADMIN_LEVEL_D (1<<15) /* flag "p" */
#define ADMIN_LEVEL_E (1<<16) /* flag "q" */
#define ADMIN_LEVEL_F (1<<17) /* flag "r" */
#define ADMIN_LEVEL_G (1<<18) /* flag "s" */
#define ADMIN_LEVEL_H (1<<19) /* flag "t" */
#define ADMIN_MENU (1<<20) /* flag "u" */
#define ADMIN_BAN_TEMP (1<<21) /* flag "v" */
#define ADMIN_ADMIN (1<<24) /* flag "y" */
#define ADMIN_USER (1<<25) /* flag "z" */
2014-08-05 16:59:08 +00:00
/**
* Admin authentication behavior flags
*/
2014-08-03 22:35:52 +00:00
#define FLAG_KICK (1<<0) /* flag "a" */
#define FLAG_TAG (1<<1) /* flag "b" */
#define FLAG_AUTHID (1<<2) /* flag "c" */
#define FLAG_IP (1<<3) /* flag "d" */
#define FLAG_NOPASS (1<<4) /* flag "e" */
#define FLAG_CASE_SENSITIVE (1<<10) /* flag "k" */
2004-02-08 11:31:54 +00:00
2014-08-05 16:59:08 +00:00
/**
* @endsection
*/
2014-08-02 16:12:32 +00:00
/**
* Return codes
*/
2014-08-03 22:35:52 +00:00
#define PLUGIN_CONTINUE 0 /* Results returned by public functions */
#define PLUGIN_HANDLED 1 /* stop other plugins */
#define PLUGIN_HANDLED_MAIN 2 /* to use in client_command(), continue all plugins but stop the command */
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
* HI weapon constants
*/
2014-08-03 22:35:52 +00:00
#define HIW_BERETTA 1
#define HIW_SPAS12 2
#define HIW_M4A1 3
#define HIW_MP5A4 4
#define HIW_MP5SD5 5
#define HIW_AK47 6
#define HIW_AKS74U 7
#define HIW_GLOCK 8
#define HIW_M11 9
#define HIW_M11SD 10
#define HIW_PSG1 11
#define HIW_ZASTAVA 12
#define HIW_M16A2 13
#define HIW_REMINGTON 14
#define HIW_NATOGREN 15
#define HIW_TANGOGREN 16
#define HIW_FLASHBANG 17
2004-08-15 00:15:51 +00:00
2014-08-02 16:12:32 +00:00
/**
* Parts of body for hits
*/
2014-08-03 22:35:52 +00:00
#define HIT_GENERIC 0 /* none */
#define HIT_HEAD 1
#define HIT_CHEST 2
#define HIT_STOMACH 3
#define HIT_LEFTARM 4
#define HIT_RIGHTARM 5
#define HIT_LEFTLEG 6
#define HIT_RIGHTLEG 7
#define HIT_SHIELD 8 // CS only
#define MAX_BODYHITS 8
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
2014-08-05 16:59:08 +00:00
* @section emit_sound() constants
2014-08-02 16:12:32 +00:00
*/
/**
* Channels
*/
2014-08-03 22:35:52 +00:00
#define CHAN_AUTO 0
#define CHAN_WEAPON 1
#define CHAN_VOICE 2
#define CHAN_ITEM 3
#define CHAN_BODY 4
#define CHAN_STREAM 5 /* allocate stream channel from the static or dynamic area */
#define CHAN_STATIC 6 /* allocate channel from the static area */
#define CHAN_NETWORKVOICE_BASE 7 /* voice data coming across the network */
#define CHAN_NETWORKVOICE_END 500 /* network voice data reserves slots (CHAN_NETWORKVOICE_BASE through CHAN_NETWORKVOICE_END). */
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
*Attenuation values
*/
2014-08-03 22:35:52 +00:00
#define ATTN_NONE 0.00
#define ATTN_NORM 0.80
#define ATTN_IDLE 2.00
#define ATTN_STATIC 1.25
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
* Pitch values
*/
2014-08-03 22:35:52 +00:00
#define PITCH_NORM 100 /* non-pitch shifted */
#define PITCH_LOW 95 /* other values are possible - 0-255, where 255 is very high */
#define PITCH_HIGH 120
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
* Volume values
*/
2014-08-03 22:35:52 +00:00
#define VOL_NORM 1.0
2004-07-26 15:43:51 +00:00
/**
* Sound behavior constants
*/
#define SND_SPAWNING (1<<8) // we're spawing, used in some cases for ambients
#define SND_STOP (1<<5) // stop sound
#define SND_CHANGE_VOL (1<<6) // change sound vol
#define SND_CHANGE_PITCH (1<<7) // change sound pitch
2014-08-02 16:12:32 +00:00
/**
* @endsection
*/
/**
* Menu keys
*/
2014-08-03 22:35:52 +00:00
#define MENU_KEY_1 (1<<0)
#define MENU_KEY_2 (1<<1)
#define MENU_KEY_3 (1<<2)
#define MENU_KEY_4 (1<<3)
#define MENU_KEY_5 (1<<4)
#define MENU_KEY_6 (1<<5)
#define MENU_KEY_7 (1<<6)
#define MENU_KEY_8 (1<<7)
#define MENU_KEY_9 (1<<8)
#define MENU_KEY_0 (1<<9)
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
* Language constants
*/
2014-08-03 22:35:52 +00:00
#define LANG_SERVER 0
#define LANG_PLAYER -1
2004-08-01 16:50:12 +00:00
2014-08-05 16:59:08 +00:00
/**
* @section Client print native constants
*/
2014-08-02 16:12:32 +00:00
/**
* Destination types for client_print()
*/
enum
{
2014-08-04 00:32:12 +00:00
print_notify = 1,
print_console,
print_chat,
print_center,
print_radio /* Counter-Strike only */
};
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
* Color types for client_print_color()
*/
enum
2014-08-02 16:12:32 +00:00
{
2014-08-04 00:32:12 +00:00
print_team_default = 0,
print_team_grey = -1,
print_team_red = -2,
print_team_blue = -3,
};
2014-08-02 16:12:32 +00:00
/**
* Destination types for engclient_print()
*/
enum
{
2014-08-04 00:32:12 +00:00
engprint_console = 0,
engprint_center,
engprint_chat,
};
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
2014-08-05 16:59:08 +00:00
* @endsection
*/
/**
* @section Entity rendering constants
*/
/**
* Rendering modes (i.e. for set_user_rendering())
2014-08-02 16:12:32 +00:00
*/
enum
{
2014-08-04 00:32:12 +00:00
kRenderNormal = 0, /* src */
kRenderTransColor, /* c*a+dest*(1-a) */
kRenderTransTexture, /* src*a+dest*(1-a) */
kRenderGlow, /* src*a+dest -- No Z buffer checks */
kRenderTransAlpha, /* src*srca+dest*(1-srca) */
kRenderTransAdd, /* src*a+dest */
};
2004-01-31 20:56:22 +00:00
2014-08-02 16:12:32 +00:00
/**
2014-08-05 16:59:08 +00:00
* Rendering fx (i.e. for set_user_rendering())
2014-08-02 16:12:32 +00:00
*/
enum
{
2014-08-04 00:32:12 +00:00
kRenderFxNone = 0,
kRenderFxPulseSlow,
kRenderFxPulseFast,
kRenderFxPulseSlowWide,
kRenderFxPulseFastWide,
kRenderFxFadeSlow,
kRenderFxFadeFast,
kRenderFxSolidSlow,
kRenderFxSolidFast,
kRenderFxStrobeSlow,
kRenderFxStrobeFast,
kRenderFxStrobeFaster,
kRenderFxFlickerSlow,
kRenderFxFlickerFast,
kRenderFxNoDissipation,
kRenderFxDistort, /* Distort/scale/translate flicker */
kRenderFxHologram, /* kRenderFxDistort + distance fade */
kRenderFxDeadPlayer, /* kRenderAmt is the player index */
kRenderFxExplode, /* Scale up really big! */
kRenderFxGlowShell, /* Glowing Shell */
kRenderFxClampMinScale, /* Keep this sprite from getting very small (SPRITES only!) */
kRenderFxLightMultiplier, /* CTM !!!CZERO added to tell the studiorender that the value in iuser2 is a lightmultiplier */
};
2004-01-31 20:56:22 +00:00
2014-08-05 16:59:08 +00:00
/**
* @endsection
*/
2014-08-02 16:12:32 +00:00
/**
* Type for force_unmodified()
*/
enum
{
2014-08-04 00:32:12 +00:00
force_exactfile = 0, /* File on client must exactly match server's file */
force_model_samebounds, /* For model files only, the geometry must fit in the same bbox */
force_model_specifybounds, /* For model files only, the geometry must fit in the specified bbox */
};
2004-03-08 17:26:38 +00:00
2014-08-02 16:12:32 +00:00
/**
* Status for get_module()
*/
enum
{
2014-08-04 00:32:12 +00:00
module_none = 0,
module_query,
module_badload,
module_loaded,
module_noinfo,
module_noquery,
module_noattach,
module_old,
2004-09-08 18:27:39 +00:00
};
2014-08-02 16:12:32 +00:00
/**
* AMX flag constants
*/
2014-08-03 22:35:52 +00:00
#define AMX_FLAG_DEBUG 0x02 /* symbolic info. available */
#define AMX_FLAG_COMPACT 0x04 /* compact encoding */
#define AMX_FLAG_BYTEOPC 0x08 /* opcode is a byte (not a cell) */
#define AMX_FLAG_NOCHECKS 0x10 /* no array bounds checking; no STMT opcode */
#define AMX_FLAG_NTVREG 0x1000 /* all native functions are registered */
#define AMX_FLAG_JITC 0x2000 /* abstract machine is JIT compiled */
#define AMX_FLAG_BROWSE 0x4000 /* busy browsing */
#define AMX_FLAG_RELOC 0x8000 /* jump/call addresses relocated */
2005-07-08 01:15:54 +00:00
/**
* Invalid plugin id
*/
2014-08-03 22:35:52 +00:00
#define INVALID_PLUGIN_ID -1
2005-07-22 21:15:48 +00:00
/**
* Menu and menu item status codes
*/
2014-08-03 22:35:52 +00:00
#define MENU_TIMEOUT -4
#define MENU_EXIT -3
#define MENU_BACK -2
#define MENU_MORE -1
#define ITEM_IGNORE 0
#define ITEM_ENABLED 1
#define ITEM_DISABLED 2
2005-07-22 21:15:48 +00:00
/**
* AMX error codes
*/
2014-08-03 22:35:52 +00:00
#define AMX_ERR_NATIVE 10
#define AMX_ERR_MEMACCESS 5
#define AMX_ERR_NONE 0
#define AMX_ERR_BOUNDS 4
#define AMX_ERR_STACKERR 3
#define AMX_ERR_STACKLOW 7
#define AMX_ERR_HEAPLOW 8
#define AMX_ERR_DIVIDE 11
#define AMX_ERR_NOTFOUND 19
#define AMX_ERR_PARAMS 25
#define AMX_ERR_GENERAL 27
2005-08-01 20:22:01 +00:00
/**
* Generic invalid handle value
*/
2014-08-03 22:35:52 +00:00
#define INVALID_HANDLE -1
2014-08-05 16:59:08 +00:00
/**
* @section Plugin forward related constants
*/
/**
* Stop types for plugin forwards
*/
2014-08-03 22:35:52 +00:00
#define ET_IGNORE 0 //ignore return val
#define ET_STOP 1 //stop on PLUGIN_HANDLED
#define ET_STOP2 2 //same, except return biggest
#define ET_CONTINUE 3 //no stop, return biggest
/**
* Parameter types for plugin forwards
*/
2014-08-03 22:35:52 +00:00
#define FP_CELL 0
#define FP_FLOAT 1
#define FP_STRING 2
#define FP_ARRAY 4
2016-04-05 16:51:18 +00:00
#define FP_VAL_BYREF 5 //cell & float are handled in the same way
2006-02-03 02:55:27 +00:00
2014-08-05 16:59:08 +00:00
/**
* @endsection
*/
2014-08-02 16:12:32 +00:00
/**
* LibType constants
*/
2006-05-11 10:22:18 +00:00
enum LibType
{
2014-08-04 00:32:12 +00:00
LibType_Library,
LibType_Class
2006-05-11 10:22:18 +00:00
};
2014-08-02 16:12:32 +00:00
/**
* AdminProp constants
*/
enum AdminProp
{
2014-08-04 00:32:12 +00:00
AdminProp_Auth = 0,
AdminProp_Password,
AdminProp_Access,
AdminProp_Flags
};
/**
* HashType constants
* To be used on hash_file() and hash_string()
*/
enum HashType
{
Hash_Crc32 = 0, // Provides CRC32 hashing
Hash_Md5, // Provides MD5 hashing
Hash_Sha1, // Provides SHA1 hashing
Hash_Sha256, // Provides SHA256 hashing
Hash_Sha3_224, // Provides SHA3 224 bit hashing
Hash_Sha3_256, // Provides SHA3 256 bit hashing
Hash_Sha3_384, // Provides SHA3 384 bit hashing
Hash_Sha3_512, // Provides SHA3 512 bit hashing
Hash_Keccak_224, // Provides Keccak 224 bit hashing
Hash_Keccak_256, // Provides Keccak 256 bit hashing
Hash_Keccak_384, // Provides Keccak 384 bit hashing
Hash_Keccak_512 // Provides Keccak 512 bit hashing
};
/**
* SetTaskFlags constants for set_task_ex()
*/
enum SetTaskFlags (<<= 1)
{
SetTask_Once = 0, // None; execute callback after the specified amount of time (Default)
SetTask_RepeatTimes = 1, // Repeat timer a set amount of times
SetTask_Repeat, // Loop indefinitely until timer is stopped
SetTask_AfterMapStart, // Time interval is treated as absolute time after map start
SetTask_BeforeMapChange // Time interval is treated as absolute time before map change
};
/**
* RegisterEventFlags constants for register_event_ex()
*/
enum RegisterEventFlags (<<= 1)
{
RegisterEvent_None = 0, // None
RegisterEvent_Global = 1, // Global event (sent to every client)
RegisterEvent_Single, // Event sent to single client
RegisterEvent_OnceForMultiple, // Call only once when repeated to multiple clients
RegisterEvent_OnlyDead, // Call only if sent to dead client
RegisterEvent_OnlyAlive, // Call only if sent to alive client
RegisterEvent_OnlyHuman, // Call only if sent to human client (RegisterEvent_Single required)
RegisterEvent_OnlyBots // Call only if sent to bot (RegisterEvent_Single required)
};
/**
* GetPlayerFlags constants for get_players_ex()
*/
enum GetPlayersFlags (<<= 1)
{
GetPlayers_None = 0, // No filter (Default)
GetPlayers_ExcludeDead = 1, // Do not include dead clients
GetPlayers_ExcludeAlive, // Do not include alive clients
GetPlayers_ExcludeBots, // Do not include bots
GetPlayers_ExcludeHuman, // Do not include human clients
GetPlayers_MatchTeam, // Match with team
GetPlayers_MatchNameSubstring, // Match with part of name
GetPlayers_CaseInsensitive, // Match case insensitive
GetPlayers_ExcludeHLTV, // Do not include HLTV proxies
GetPlayers_IncludeConnecting // Include connecting clients
};
/**
* FindPlayerFlags constants for find_player_ex()
*/
enum FindPlayerFlags (<<= 1)
{
FindPlayer_None = 0, // None
FindPlayer_MatchName = 1, // Match with name
FindPlayer_MatchNameSubstring, // Match with name substring
FindPlayer_MatchAuthId, // Match with authid
FindPlayer_MatchIP, // Match with ip
FindPlayer_MatchTeam, // Match with team name
FindPlayer_ExcludeDead, // Do not include dead clients
FindPlayer_ExcludeAlive, // Do not include alive clients
FindPlayer_ExcludeBots, // Do not include bots
FindPlayer_ExcludeHuman, // Do not include human clients
FindPlayer_LastMatched, // Return last matched client instead of the first
FindPlayer_MatchUserId, // Match with userid
FindPlayer_CaseInsensitive, // Match case insensitively
FindPlayer_IncludeConnecting // Include connecting clients
}
/**
* Constants for client statistics
*/
enum
{
STATSX_KILLS = 0,
STATSX_DEATHS,
STATSX_HEADSHOTS,
STATSX_TEAMKILLS,
STATSX_SHOTS,
STATSX_HITS,
STATSX_DAMAGE,
STATSX_RANK,
STATSX_MAX_STATS
}
/**
* Constants for get_user_origin()
*/
enum
{
Origin_Client = 0, // Client's Origin
Origin_Eyes, // Eyes (and Weapon) Origin
Origin_AimEndClient, // Aim End Origin from Client's Position
Origin_AimEndEyes, // Aim End Origin from Eyes Position
Origin_CS_LastBullet // Last Bullet's Origin (Counter-Strike)
}
2016-04-05 16:51:18 +00:00
#include <cstrike_const> // To keep backward compatibility