Merge pull request #208 from Nextra/inc-doc2
Update include documentation #2
This commit is contained in:
		@@ -8,7 +8,7 @@
 | 
			
		||||
//     https://alliedmods.net/amxmodx-license
 | 
			
		||||
 | 
			
		||||
#if defined _amxconst_included
 | 
			
		||||
  #endinput
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _amxconst_included
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
//     https://alliedmods.net/amxmodx-license
 | 
			
		||||
 | 
			
		||||
#if defined _amxmisc_included
 | 
			
		||||
  #endinput
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _amxmisc_included
 | 
			
		||||
 | 
			
		||||
@@ -16,12 +16,35 @@
 | 
			
		||||
	#include <amxmodx>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the client has any admin flags set
 | 
			
		||||
 *
 | 
			
		||||
 * @param id    Client index
 | 
			
		||||
 *
 | 
			
		||||
 * @return      1 if client has any admin flags, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock is_user_admin(id)
 | 
			
		||||
{
 | 
			
		||||
	new __flags = get_user_flags(id);
 | 
			
		||||
	return (__flags > 0 && !(__flags & ADMIN_USER));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the user can execute the current command by checking the necessary
 | 
			
		||||
 * admin flags and parameter count. Displays a denied access message to the user
 | 
			
		||||
 * if missing privileges or a usage example if too few parameters are provided.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This should be used inside of a command forward as it uses read_argc()
 | 
			
		||||
 *       to check the parameter count.
 | 
			
		||||
 *
 | 
			
		||||
 * @param id            Client index
 | 
			
		||||
 * @param level         Required admin flags
 | 
			
		||||
 * @param cid           Command id
 | 
			
		||||
 * @param num           Required number of parameters
 | 
			
		||||
 * @param acesssilent   If true no denied access message will be printed
 | 
			
		||||
 *
 | 
			
		||||
 * @return              1 if access granted and parameters provided, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock cmd_access(id, level, cid, num, bool:accesssilent = false)
 | 
			
		||||
{
 | 
			
		||||
	new has_access = 0;
 | 
			
		||||
@@ -64,6 +87,14 @@ stock cmd_access(id, level, cid, num, bool:accesssilent = false)
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the client has the specified admin flags.
 | 
			
		||||
 *
 | 
			
		||||
 * @param id        Client index
 | 
			
		||||
 * @param level     Required admin flags
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 if client has the admin flags, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock access(id, level)
 | 
			
		||||
{
 | 
			
		||||
	if (level == ADMIN_ADMIN)
 | 
			
		||||
@@ -78,18 +109,36 @@ stock access(id, level)
 | 
			
		||||
	return (get_user_flags(id) & level);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 
 | 
			
		||||
 * Flags related to cmd_target:
 | 
			
		||||
 * 1 - obey immunity
 | 
			
		||||
 * 2 - allow yourself
 | 
			
		||||
 * 4 - must be alive
 | 
			
		||||
 * 8 - can't be bot
 | 
			
		||||
/**
 | 
			
		||||
 * cmd_target flags
 | 
			
		||||
 */
 | 
			
		||||
#define CMDTARGET_OBEY_IMMUNITY (1<<0)
 | 
			
		||||
#define CMDTARGET_ALLOW_SELF    (1<<1)
 | 
			
		||||
#define CMDTARGET_ONLY_ALIVE    (1<<2)
 | 
			
		||||
#define CMDTARGET_NO_BOTS       (1<<3)
 | 
			
		||||
#define CMDTARGET_OBEY_IMMUNITY (1<<0) // Obey immunity
 | 
			
		||||
#define CMDTARGET_ALLOW_SELF    (1<<1) // Allow self targeting
 | 
			
		||||
#define CMDTARGET_ONLY_ALIVE    (1<<2) // Target must be alive
 | 
			
		||||
#define CMDTARGET_NO_BOTS       (1<<3) // Target can't be a bot
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Processes a generic target pattern and tries to match it to a client based
 | 
			
		||||
 * on filtering flags. If no unique target is found an appropriate message is
 | 
			
		||||
 * displayed to the admin.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The pattern is first matched case insensitively against client names.
 | 
			
		||||
 *       If no match is found it is matched against client authids. If still no
 | 
			
		||||
 *       match is found and the pattern starts with '#' it is finally matched
 | 
			
		||||
 *       against client userids.
 | 
			
		||||
 * @note Since client names are matched by substring the pattern can potentially
 | 
			
		||||
 *       match multiple targets. In that case the function will return 0 and ask
 | 
			
		||||
 *       the admin to provide a unique pattern.
 | 
			
		||||
 * @note The filtering flags are applied after the pattern matching has
 | 
			
		||||
 *       finished. That means the pattern has to be unique against all clients
 | 
			
		||||
 *       on the server even if some of them are not eligible.
 | 
			
		||||
 *
 | 
			
		||||
 * @param id        Client index of admin performing an action
 | 
			
		||||
 * @param arg       Target pattern
 | 
			
		||||
 * @param flags     Filtering flags, see CMDTARGET_* constants above
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Client index, or 0 if no or multiple clients matched
 | 
			
		||||
 */
 | 
			
		||||
stock cmd_target(id, const arg[], flags = CMDTARGET_OBEY_IMMUNITY)
 | 
			
		||||
{
 | 
			
		||||
	new player = find_player("bl", arg);
 | 
			
		||||
@@ -145,12 +194,13 @@ stock cmd_target(id, const arg[], flags = CMDTARGET_OBEY_IMMUNITY)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Standard method to show activity to clients connected to the server.
 | 
			
		||||
 * This depends on the amx_show_activity cvar.  See documentation for more details.
 | 
			
		||||
 * Standard method to show admin activity to clients connected to the server.
 | 
			
		||||
 * This depends on the amx_show_activity cvar. See documentation for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * @param id     The user id of the person doing the action.
 | 
			
		||||
 * @param name   The name of the person doing the action.
 | 
			
		||||
 * @param fmt    The format string to display.  Do not put the "ADMIN:" prefix in this.
 | 
			
		||||
 * @param id     Client index performing the action
 | 
			
		||||
 * @param name   Name of client performing the action
 | 
			
		||||
 * @param fmt    Formatting rules
 | 
			
		||||
 * @param ...    Variable number of formatting parameters
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
@@ -237,14 +287,14 @@ stock show_activity(id, const name[], const fmt[], any:...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Standard method to show activity to one single client.
 | 
			
		||||
 * This is useful for messages that get pieced together by many language keys.
 | 
			
		||||
 * This depends on the amx_show_activity cvar.  See documentation for more details.
 | 
			
		||||
 * Standard method to show admin activity to a single client.
 | 
			
		||||
 * This depends on the amx_show_activity cvar. See documentation for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * @param idtarget   The user id of the person to display to.  0 is invalid.
 | 
			
		||||
 * @param idadmin    The user id of the person doing the action.
 | 
			
		||||
 * @param name       The name of the person doing the action.
 | 
			
		||||
 * @param fmt        The format string to display.  Do not put the "ADMIN:" prefix in this.
 | 
			
		||||
 * @param idtarget  Client index to display message to
 | 
			
		||||
 * @param id        Client index performing the action
 | 
			
		||||
 * @param name      Name of client performing the action
 | 
			
		||||
 * @param fmt       Formatting rules
 | 
			
		||||
 * @param ...       Variable number of formatting parameters
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
@@ -254,7 +304,7 @@ stock show_activity_id(idtarget, idadmin, const name[], const fmt[], any:...)
 | 
			
		||||
	{
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	static __amx_show_activity;
 | 
			
		||||
	if (__amx_show_activity == 0)
 | 
			
		||||
	{
 | 
			
		||||
@@ -437,6 +487,18 @@ stock show_activity_key(const KeyWithoutName[], const KeyWithName[], const ___Ad
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the mod running on the server supports colored menus.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The full list of mods supporting colored menus:
 | 
			
		||||
 *       Counter-Strike, Counter-Strike: Condition Zero, Deathmatch Classic,
 | 
			
		||||
 *       Day of Defeat, Team Fortress Classic and Half-Life: Deathmatch.
 | 
			
		||||
 * @note Since this is a stock and compiled into the plugin, the list of
 | 
			
		||||
 *       supported mods will not update and require recompilation of the plugin
 | 
			
		||||
 *       if the list ever changed.
 | 
			
		||||
 *
 | 
			
		||||
 * @return  1 if colored menus are supported, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock colored_menus()
 | 
			
		||||
{
 | 
			
		||||
	static ColoredMenus = -1;
 | 
			
		||||
@@ -465,6 +527,11 @@ stock colored_menus()
 | 
			
		||||
	return ColoredMenus;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the mod running on the server is a version of Counter-Strike.
 | 
			
		||||
 *
 | 
			
		||||
 * @return  1 if mod is Counter-Strike, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock cstrike_running()
 | 
			
		||||
{
 | 
			
		||||
	new mod_name[32];
 | 
			
		||||
@@ -473,6 +540,13 @@ stock cstrike_running()
 | 
			
		||||
	return (equal(mod_name, "cstrike") || equal(mod_name, "czero") || equal(mod_name, "csv15") || equal(mod_name, "cs13"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the server is running a specific mod.
 | 
			
		||||
 *
 | 
			
		||||
 * @param mod   Mod name to check for
 | 
			
		||||
 *
 | 
			
		||||
 * @return      1 if mod name matches, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock is_running(const mod[])
 | 
			
		||||
{
 | 
			
		||||
	new mod_name[32];
 | 
			
		||||
@@ -481,42 +555,92 @@ stock is_running(const mod[])
 | 
			
		||||
	return equal(mod_name, mod);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the path to the AMXX base directory.
 | 
			
		||||
 *
 | 
			
		||||
 * @param name  Buffer to copy path to
 | 
			
		||||
 * @param len   Maximum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Number of cells written to buffer
 | 
			
		||||
 */
 | 
			
		||||
stock get_basedir(name[], len)
 | 
			
		||||
{
 | 
			
		||||
	return get_localinfo("amxx_basedir", name, len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the path to the AMXX configs directory.
 | 
			
		||||
 *
 | 
			
		||||
 * @param name  Buffer to copy path to
 | 
			
		||||
 * @param len   Maximum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Number of cells written to buffer
 | 
			
		||||
 */
 | 
			
		||||
stock get_configsdir(name[], len)
 | 
			
		||||
{
 | 
			
		||||
	return get_localinfo("amxx_configsdir", name, len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the path to the AMXX data directory.
 | 
			
		||||
 *
 | 
			
		||||
 * @param name  Buffer to copy path to
 | 
			
		||||
 * @param len   Maximum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Number of cells written to buffer
 | 
			
		||||
 */
 | 
			
		||||
stock get_datadir(name[], len)
 | 
			
		||||
{
 | 
			
		||||
	return get_localinfo("amxx_datadir", name, len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Provides a shorthand to register a working menu.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Combines the necessary calls to register_menuid() and
 | 
			
		||||
 *       register_menucmd() into a single function.
 | 
			
		||||
 *
 | 
			
		||||
 * @param title     Menu name
 | 
			
		||||
 * @param keys      Key flags
 | 
			
		||||
 * @param function  Callback function
 | 
			
		||||
 * @param outside   Catch menus outside the calling plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid callback function is specified, an error will
 | 
			
		||||
 *                  be thrown.
 | 
			
		||||
 */
 | 
			
		||||
stock register_menu(const title[], keys, const function[], outside = 0)
 | 
			
		||||
{
 | 
			
		||||
	register_menucmd(register_menuid(title, outside), keys, function);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Backwards Compatibility
 | 
			
		||||
 * don't use it!
 | 
			
		||||
 * Alias to get_configsdir provided for backwards compatibility. Originally
 | 
			
		||||
 * intended to retrieve the AMXX custom directory.
 | 
			
		||||
 *
 | 
			
		||||
 * @deprecated Should not be used as the concept of a custom directory does no
 | 
			
		||||
 *             longer exists in AMXX.
 | 
			
		||||
 *
 | 
			
		||||
 * @param name  Buffer to copy path to
 | 
			
		||||
 * @param len   Maximum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Number of cells written to buffer
 | 
			
		||||
 */
 | 
			
		||||
#pragma deprecated The concept of a custom directory no longer exists in AMXX. Do not use.
 | 
			
		||||
stock get_customdir(name[], len)
 | 
			
		||||
{
 | 
			
		||||
	return get_localinfo("amxx_configsdir", name, len);
 | 
			
		||||
	return get_configsdir(name, len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add a menu item to Menus Front-End plugin ("amxmodmenu").
 | 
			
		||||
 * Adds a menu item/command to the admin menu (amxmodmenu) handled by the
 | 
			
		||||
 * "Menus Front-End" plugin, if it is loaded.
 | 
			
		||||
 *
 | 
			
		||||
 * @param MENU_TEXT     Text that will be shown for this item in menu.
 | 
			
		||||
 * @param MENU_CMD      Command that should be executed to start menu.
 | 
			
		||||
 * @param MENU_ACCESS   Access required for menu.
 | 
			
		||||
 * @param MENU_PLUGIN   The exact case-insensitive name of plugin holding the menu command.
 | 
			
		||||
 * @param MENU_TEXT     Item text that will be displayed in the menu
 | 
			
		||||
 * @param MENU_CMD      Command that will be executed on the client
 | 
			
		||||
 * @param MENU_ACCESS   Admin access required for menu command
 | 
			
		||||
 * @param MENU_PLUGIN   Case-insensitive name or filename of plugin providing
 | 
			
		||||
 *                      the menu command
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
@@ -526,12 +650,15 @@ stock AddMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add a menu item to "amx_menu", that should also be accessible by non-admins.
 | 
			
		||||
 * Adds a menu item/command to the client menu (amx_menu) handled by the
 | 
			
		||||
 * "Menus Front-End" plugin, if it is loaded. Items should be accessible by
 | 
			
		||||
 * non-admins.
 | 
			
		||||
 *
 | 
			
		||||
 * @param MENU_TEXT     Text that will be shown for this item in menu.
 | 
			
		||||
 * @param MENU_CMD      Command that should be executed to start menu.
 | 
			
		||||
 * @param MENU_ACCESS   Access required for menu.
 | 
			
		||||
 * @param MENU_PLUGIN   The exact case-insensitive name of plugin holding the menu command.
 | 
			
		||||
 * @param MENU_TEXT     Item text that will be displayed in the menu
 | 
			
		||||
 * @param MENU_CMD      Command that will be executed on the client
 | 
			
		||||
 * @param MENU_ACCESS   Admin access required for menu command
 | 
			
		||||
 * @param MENU_PLUGIN   Case-insensitive name or filename of plugin providing
 | 
			
		||||
 *                      the menu command
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
@@ -541,7 +668,17 @@ stock AddClientMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Internal function used by above stocks.
 | 
			
		||||
 * Helper function used by AddMenuItem() and AddClientMenuItem()
 | 
			
		||||
 *
 | 
			
		||||
 * @param MENU_TEXT             Item text that will be displayed in the menu
 | 
			
		||||
 * @param MENU_CMD              Command that will be executed on the client
 | 
			
		||||
 * @param MENU_ACCESS           Admin access required for menu command
 | 
			
		||||
 * @param MENU_PLUGIN           Case-insensitive name or filename of plugin
 | 
			
		||||
 *                              providing the menu command
 | 
			
		||||
 * @param ADD_TO_CLIENT_MENU    If true adds command to client menu, false adds
 | 
			
		||||
 *                              to admin menu
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
stock AddMenuItem_call(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[], const bool:ADD_TO_CLIENT_MENU)
 | 
			
		||||
{
 | 
			
		||||
@@ -557,7 +694,7 @@ stock AddMenuItem_call(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, c
 | 
			
		||||
 | 
			
		||||
	new status = callfunc_begin(ADD_TO_CLIENT_MENU ? "AddClientMenu" : "AddMenu", filename);
 | 
			
		||||
	new bool:failed = true;
 | 
			
		||||
	switch (status) 
 | 
			
		||||
	switch (status)
 | 
			
		||||
	{
 | 
			
		||||
		case 1:
 | 
			
		||||
		{
 | 
			
		||||
@@ -592,11 +729,28 @@ stock AddMenuItem_call(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, c
 | 
			
		||||
	callfunc_end();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Computes an offset from a given value while constraining it between the
 | 
			
		||||
 * specified bounds, rolling over if necessary.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Example: The range is 1-5 and the base value (seed) is 3, the offset
 | 
			
		||||
 *       that the value should be moved by is also 3. Offsetting the value by 3
 | 
			
		||||
 *       would result in 6, but it is to be constrained between 1 and 5. With
 | 
			
		||||
 *       clamp() this would result in 5, but this function rolls the value over
 | 
			
		||||
 *       and returns 1 instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param low       Lower bound
 | 
			
		||||
 * @param high      Higher bound
 | 
			
		||||
 * @param seed      Base value
 | 
			
		||||
 * @param offset    Offset to move
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Computed offset value between specified bounds
 | 
			
		||||
 */
 | 
			
		||||
stock constraint_offset(low, high, seed, offset)
 | 
			
		||||
{
 | 
			
		||||
	new numElements = high - low + 1;
 | 
			
		||||
	offset += seed - low;
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
	if (offset >= 0)
 | 
			
		||||
	{
 | 
			
		||||
		return low + (offset % numElements);
 | 
			
		||||
@@ -610,25 +764,25 @@ stock constraint_offset(low, high, seed, offset)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tells if the user has ANY of the provided flags.
 | 
			
		||||
 * Returns if the client has any of the specified admin flags.
 | 
			
		||||
 *
 | 
			
		||||
 * @param id      Client index
 | 
			
		||||
 * @param flags   Flag string
 | 
			
		||||
 *
 | 
			
		||||
 * @return        1 if the user has ANY of the provided flags, 0 otherwise
 | 
			
		||||
 * @return        1 if the user has any of the specified flags, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock has_flag(id, const flags[])
 | 
			
		||||
{
 | 
			
		||||
	return (get_user_flags(id) & read_flags(flags));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 /**
 | 
			
		||||
 * Tells if the user has ALL of the provided flags.
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the client has all of the specified admin flags.
 | 
			
		||||
 *
 | 
			
		||||
 * @param id      Client index
 | 
			
		||||
 * @param flags   Flag string
 | 
			
		||||
 *
 | 
			
		||||
 * @return        1 if the user has ALL of the provided flags, 0 otherwise
 | 
			
		||||
 * @return        1 if the user has all of the specified flags, 0 otherwise
 | 
			
		||||
 */
 | 
			
		||||
stock has_all_flags(id, const flags[])
 | 
			
		||||
{
 | 
			
		||||
@@ -637,11 +791,11 @@ stock has_all_flags(id, const flags[])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Resets a client's menu.
 | 
			
		||||
 * Resets the client's menu.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This is just a wrapper around show_menu for the sake of readability.
 | 
			
		||||
 * @note This is a wrapper around show_menu() for the sake of readability.
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client to reset menu to, use 0 to reset to all clients
 | 
			
		||||
 * @param index     Client to reset menu of, 0 to reset all clients
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -8,7 +8,7 @@
 | 
			
		||||
//     https://alliedmods.net/amxmodx-license
 | 
			
		||||
 | 
			
		||||
#if defined _amxmodx_version_included
 | 
			
		||||
  #endinput
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _amxmodx_version_included
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -63,7 +63,9 @@ stock ByteCountToCells(size)
 | 
			
		||||
 *                      number of items. The items are not valid to read or set
 | 
			
		||||
 *                      until they have actually been pushed into the array.
 | 
			
		||||
 *
 | 
			
		||||
 * @return              Handle to the array.
 | 
			
		||||
 * @return              New array handle, which must be freed via ArrayDestroy()
 | 
			
		||||
 * @error               If an invalid cellsize is provided an error will be
 | 
			
		||||
 * 	                    thrown.
 | 
			
		||||
 */
 | 
			
		||||
native Array:ArrayCreate(cellsize = 1, reserved = 32);
 | 
			
		||||
 | 
			
		||||
@@ -431,7 +433,7 @@ native DoNotUse:ArrayGetStringHandle(Array:which, item);
 | 
			
		||||
 *
 | 
			
		||||
 * @param which         Array to destroy
 | 
			
		||||
 *
 | 
			
		||||
 * @return              1 if the array was destroyed, 0 if nothing had to be
 | 
			
		||||
 * @return              1 if the Array was destroyed, 0 if nothing had to be
 | 
			
		||||
 *                      destroyed (invalid handle)
 | 
			
		||||
 */
 | 
			
		||||
native ArrayDestroy(&Array:which);
 | 
			
		||||
@@ -444,10 +446,10 @@ native ArrayDestroy(&Array:which);
 | 
			
		||||
 *
 | 
			
		||||
 * public MySortFunc(Array:array, item1, item2, const data[], data_size)
 | 
			
		||||
 *
 | 
			
		||||
 *  array           - Array handle in its current un-sorted state
 | 
			
		||||
 *  item1, item2    - Current item pair being compared
 | 
			
		||||
 *  data[]          - Extra data array passed to the sort func
 | 
			
		||||
 *  data_size       - Size of extra data
 | 
			
		||||
 *   array           - Array handle in its current un-sorted state
 | 
			
		||||
 *   item1, item2    - Current item pair being compared
 | 
			
		||||
 *   data[]          - Extra data array passed to the sort func
 | 
			
		||||
 *   data_size       - Size of extra data
 | 
			
		||||
 *
 | 
			
		||||
 * @note The comparison function should return:
 | 
			
		||||
 *         -1 if item1 should go before item2
 | 
			
		||||
@@ -485,20 +487,20 @@ native ArraySort(Array:array, const comparefunc[], data[]="", data_size=0);
 | 
			
		||||
 *
 | 
			
		||||
 * public MySortFunc(Array:array, elem1, elem2, const data[], data_size)
 | 
			
		||||
 *
 | 
			
		||||
 *  array           - Array handle in its current un-sorted state
 | 
			
		||||
 *  elem1, elem2    - Current element pair being compared
 | 
			
		||||
 *  data[]          - Extra data array passed to the sort func
 | 
			
		||||
 *  data_size       - Size of extra data
 | 
			
		||||
 *   array           - Array handle in its current un-sorted state
 | 
			
		||||
 *   elem1, elem2    - Current element pair being compared
 | 
			
		||||
 *   data[]          - Extra data array passed to the sort func
 | 
			
		||||
 *   data_size       - Size of extra data
 | 
			
		||||
 *
 | 
			
		||||
 * @note For Arrays with a cellsize larger than 1 (used for storing arrays and
 | 
			
		||||
 *       strings), the function is called in the following manner:
 | 
			
		||||
 *
 | 
			
		||||
 * public MySortFunc(Array:array, elem1[], elem2[], const data[], data_size)
 | 
			
		||||
 *
 | 
			
		||||
 *  array               - Array handle in its current un-sorted state
 | 
			
		||||
 *  elem1[], elem2[]    - Current element pair being compared
 | 
			
		||||
 *  data[]              - Extra data array passed to the sort func
 | 
			
		||||
 *  data_size           - Size of extra data
 | 
			
		||||
 *   array               - Array handle in its current un-sorted state
 | 
			
		||||
 *   elem1[], elem2[]    - Current element pair being compared
 | 
			
		||||
 *   data[]              - Extra data array passed to the sort func
 | 
			
		||||
 *   data_size           - Size of extra data
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * @note The comparison function should return:
 | 
			
		||||
 
 | 
			
		||||
@@ -12,131 +12,139 @@
 | 
			
		||||
#endif
 | 
			
		||||
#define _cellstack_included
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Stack tag declaration
 | 
			
		||||
 *
 | 
			
		||||
 * @note Plugins are responsible for freeing all Stack handles they acquire.
 | 
			
		||||
 *       Failing to free handles will result in the plugin and AMXX leaking
 | 
			
		||||
 *       memory.
 | 
			
		||||
 */
 | 
			
		||||
enum Stack
 | 
			
		||||
{
 | 
			
		||||
	Invalid_Stack = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Creates a stack structure.  A stack is a LIFO (last in, first out)
 | 
			
		||||
 * vector (array) of items.  It has O(1) insertion and O(1) removal.
 | 
			
		||||
 * Creates a stack structure. A stack is a LIFO (last in, first out) vector of
 | 
			
		||||
 * of items. It has O(1) insertion and O(1) removal.
 | 
			
		||||
 *
 | 
			
		||||
 * Stacks have two operations: Push (adding an item) and Pop (removes
 | 
			
		||||
 * items in reverse-push order).
 | 
			
		||||
 * @note Stacks provide only two operations: Push (adding an item to the top)
 | 
			
		||||
 * 		 and Pop (remove an item from the top, in reverse-push order).
 | 
			
		||||
 * @note The contents of the stack are uniform; i.e. storing a string and then
 | 
			
		||||
 *       retrieving it as an integer is NOT the same as str_to_num()!
 | 
			
		||||
 * @note The "blocksize" determines how many cells each stack slot has, it can
 | 
			
		||||
 *       not be changed after creation.
 | 
			
		||||
 *
 | 
			
		||||
 * The contents of the stack are uniform; i.e. storing a string and then
 | 
			
		||||
 * retrieving it as an integer is NOT the same as StringToInt()!
 | 
			
		||||
 * @param blocksize     The number of cells each entry in the stack can hold
 | 
			
		||||
 *
 | 
			
		||||
 * The "blocksize" determines how many cells each slot has; it cannot
 | 
			
		||||
 * be changed after creation.
 | 
			
		||||
 *
 | 
			
		||||
 * @param blocksize     The number of cells each entry in the stack can
 | 
			
		||||
 *                      hold.  For example, 32 cells is equivalent to:
 | 
			
		||||
 *                      new Array[X][32]
 | 
			
		||||
 *
 | 
			
		||||
 * @return              New stack Handle.
 | 
			
		||||
 * @error               Invalid block size.
 | 
			
		||||
 * @return              New stack Handle, which must be freed via DestroyStack()
 | 
			
		||||
 * @error               If an invalid blocksize is provided an error will be
 | 
			
		||||
 *                      thrown.
 | 
			
		||||
 */
 | 
			
		||||
native Stack:CreateStack(blocksize = 1);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pushes a value onto the end of the stack, adding a new index.
 | 
			
		||||
 *
 | 
			
		||||
 * This may safely be used even if the stack has a blocksize
 | 
			
		||||
 * greater than 1.
 | 
			
		||||
 * @note This may safely be used even if the stack has a blocksize greater than
 | 
			
		||||
 *       1.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param value         Value to push.
 | 
			
		||||
 * @param handle    Stack handle
 | 
			
		||||
 * @param value     Value to push
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error               Invalid handle or out of memory.
 | 
			
		||||
 * @error           If an invalid handle is provided or the resizing
 | 
			
		||||
 *                  operation runs out of memory, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native PushStackCell(Stack:handle, any:value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pushes a string onto the end of a stack, truncating it if it is
 | 
			
		||||
 * too big.
 | 
			
		||||
 * Pushes a string onto the end of a stack, truncating it if it is too long.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param value         String to push.
 | 
			
		||||
 * @param handle    Stack handle
 | 
			
		||||
 * @param value     String to push
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error               Invalid handle or out of memory.
 | 
			
		||||
 * @error           If an invalid handle is provided or the resizing
 | 
			
		||||
 *                  operation runs out of memory, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native PushStackString(Stack:handle, const value[]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pushes an array of cells onto the end of a stack.  The cells
 | 
			
		||||
 * are pushed as a block (i.e. the entire array takes up one stack slot),
 | 
			
		||||
 * rather than pushing each cell individually.
 | 
			
		||||
 * Pushes an array of cells onto the end of a stack. The cells are pushed as a
 | 
			
		||||
 * block (i.e. the entire array takes up one stack slot), rather than pushing
 | 
			
		||||
 * each cell individually.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle    Stack handle
 | 
			
		||||
 * @param values    Block of values to copy
 | 
			
		||||
 * @param size      If not set, the number of elements copied from the array
 | 
			
		||||
 *                  will be equal to the blocksize, if set higher than the
 | 
			
		||||
 *                  blocksize, the operation will be truncated,
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param values        Block of values to copy.
 | 
			
		||||
 * @param size          If not set, the number of elements copied from the array
 | 
			
		||||
 *                      will be equal to the blocksize.  If set higher than the
 | 
			
		||||
 *                      blocksize, the operation will be truncated.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error               Invalid handle or out of memory.
 | 
			
		||||
 * @error           If an invalid handle is provided or the resizing
 | 
			
		||||
 *                  operation runs out of memory, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native PushStackArray(Stack:handle, const any:values[], size= -1);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pops a cell value from a stack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param value         Variable to store the value.
 | 
			
		||||
 * @param block         Optionally specify which block to read from
 | 
			
		||||
 *                      (useful if the blocksize > 0).
 | 
			
		||||
 * @param asChar        Optionally read as a byte instead of a cell.
 | 
			
		||||
 * @param handle    Stack handle
 | 
			
		||||
 * @param value     Variable to store the value in
 | 
			
		||||
 * @param block     Optionally specify which block to read from (useful if the
 | 
			
		||||
 *                  blocksize is > 0)
 | 
			
		||||
 * @param asChar    Optionally read as a byte instead of a cell
 | 
			
		||||
 *
 | 
			
		||||
 * @return              True on success, false if the stack is empty.
 | 
			
		||||
 * @error               Invalid handle, Invalid block or Invalid byte.
 | 
			
		||||
 * @return          True on success, false if the stack is empty.
 | 
			
		||||
 * @error           If an invalid handle, invalid block or invalid byte is
 | 
			
		||||
 *                  provided, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:PopStackCell(Stack:handle, &any:value, block = 0, bool:asChar = false);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pops a string value from a stack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param buffer        Buffer to store string.
 | 
			
		||||
 * @param maxlength     Maximum size of the buffer.
 | 
			
		||||
 * @param written       Number of characters copied.
 | 
			
		||||
 * @param handle        Stack handle
 | 
			
		||||
 * @param buffer        Buffer to copy string to
 | 
			
		||||
 * @param maxlength     Maximum size of the buffer
 | 
			
		||||
 * @param written       Variable to store number of characters copied to
 | 
			
		||||
 *
 | 
			
		||||
 * @return              True on success, false if the stack is empty.
 | 
			
		||||
 * @error               Invalid handle.
 | 
			
		||||
 * @return              True on success, false if the stack is empty
 | 
			
		||||
 * @error               If an invalid handle is provided an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:PopStackString(Stack:handle, buffer[], maxlength, &written = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pops an array of cells from a stack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param buffer        Buffer to store the array in.
 | 
			
		||||
 * @param size          If not set, assumes the buffer size is equal to the
 | 
			
		||||
 *                      blocksize.  Otherwise, the size passed is used.
 | 
			
		||||
 * @param handle    Stack handle
 | 
			
		||||
 * @param buffer    Array to copy value to
 | 
			
		||||
 * @param size      Size of buffer, if not set (-1) assumes the size is equal to
 | 
			
		||||
 *                  the stack blocksize
 | 
			
		||||
 *
 | 
			
		||||
 * @return              True on success, false if the stack is empty.
 | 
			
		||||
 * @error               Invalid handle.
 | 
			
		||||
 * @return          True on success, false if the stack is empty
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:PopStackArray(Stack:handle, any:buffer[], size = -1);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Checks if a stack is empty.
 | 
			
		||||
 * Returns if a stack is empty.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param handle    Stack handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return              True if empty, false if not empty.
 | 
			
		||||
 * @error               Invalid handle.
 | 
			
		||||
 * @return          True if empty, false if not empty
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:IsStackEmpty(Stack:handle);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pops a value off a stack, ignoring it completely.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Stack handle.
 | 
			
		||||
 * @param handle    Stack handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return              True if something was popped, false otherwise.
 | 
			
		||||
 * @error               Invalid handle.
 | 
			
		||||
 * @return          True if a value was popped, false if stack is empty
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
stock PopStack(Stack:handle)
 | 
			
		||||
{
 | 
			
		||||
@@ -145,10 +153,14 @@ stock PopStack(Stack:handle)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Destroys the stack, and resets the handle to 0 to prevent accidental usage after it is destroyed.
 | 
			
		||||
 * Destroys a stack and frees its memory.
 | 
			
		||||
 *
 | 
			
		||||
 * @param which         The stack to destroy.
 | 
			
		||||
 * @note The function automatically sets the variable passed to it to 0 to aid
 | 
			
		||||
 *       in preventing accidental usage after destroy.
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @param handle    Stack to destroy
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 if the Stack was destroyed, 0 if nothing had to be
 | 
			
		||||
 *                  destroyed (invalid handle)
 | 
			
		||||
 */
 | 
			
		||||
native DestroyStack(&Stack:handle);
 | 
			
		||||
 
 | 
			
		||||
@@ -12,176 +12,209 @@
 | 
			
		||||
#endif
 | 
			
		||||
#define _celltrie_included
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Hash map tag declaration
 | 
			
		||||
 *
 | 
			
		||||
 * @note The word "Trie" in this API is historical. As of AMX Mod X 1.8.3,
 | 
			
		||||
 *       tries have been internally replaced with hash tables, which have O(1)
 | 
			
		||||
 *       insertion time instead of O(n).
 | 
			
		||||
 * @note Plugins are responsible for freeing all Trie handles they acquire.
 | 
			
		||||
 *       Failing to free handles will result in the plugin and AMXX leaking
 | 
			
		||||
 *       memory.
 | 
			
		||||
 */
 | 
			
		||||
enum Trie
 | 
			
		||||
{
 | 
			
		||||
	Invalid_Trie = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Hash map snapshot tag declaration
 | 
			
		||||
 *
 | 
			
		||||
 * @note Plugins are responsible for freeing all Snapshot handles they acquire.
 | 
			
		||||
 *       Failing to free handles will result in the plugin and AMXX leaking
 | 
			
		||||
 *       memory.
 | 
			
		||||
 */
 | 
			
		||||
enum Snapshot
 | 
			
		||||
{
 | 
			
		||||
	Invalid_Snapshot = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Creates a hash map. A hash map is a container that can map strings (called
 | 
			
		||||
 * "keys") to arbitrary values (cells, arrays, or strings). Keys in a hash map
 | 
			
		||||
 * are unique. That is, there is at most one entry in the map for a given key.
 | 
			
		||||
 * Creates a hash map. A hash map is a container that maps strings (called keys)
 | 
			
		||||
 * to arbitrary values (cells, arrays or strings).
 | 
			
		||||
 *
 | 
			
		||||
 * Insertion, deletion, and lookup in a hash map are all considered to be fast
 | 
			
		||||
 * operations, amortized to O(1), or constant time.
 | 
			
		||||
 * @note Keys in a hash map are unique so there is no more than one entry in the
 | 
			
		||||
 *       map for any given key.
 | 
			
		||||
 * @note Insertion, deletion, and lookup in a hash map are all considered to be
 | 
			
		||||
 *       fast operations, amortized to O(1), or constant time.
 | 
			
		||||
 *
 | 
			
		||||
 * The word "Trie" in this API is historical. As of AMX Mod X 1.8.3, tries have
 | 
			
		||||
 * been internally replaced with hash tables, which have O(1) insertion time
 | 
			
		||||
 * instead of O(n).
 | 
			
		||||
 *
 | 
			
		||||
 * @return 			New Map handle, which must be freed via TrieDestroy().
 | 
			
		||||
 * @return  New Map handle, which must be freed via TrieDestroy()
 | 
			
		||||
 */
 | 
			
		||||
native Trie:TrieCreate();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Clears all entries from a Map.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 *
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
native TrieClear(Trie:handle);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Sets a value in a hash map, either inserting a new entry or replacing an old one.
 | 
			
		||||
 * Sets a cell value in a hash map, either inserting a new entry or replacing
 | 
			
		||||
 * an old one.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param key		Key string.
 | 
			
		||||
 * @param value		Value to store at this key.
 | 
			
		||||
 * @param replace	If false, operation will fail if the key is already set.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 * @param key       Key string
 | 
			
		||||
 * @param value     Value to store
 | 
			
		||||
 * @param replace   If false the operation will fail if the key is already set
 | 
			
		||||
 *
 | 
			
		||||
 * @return			True on success, false on failure.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @return          1 on success, 0 otherwise
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native TrieSetCell(Trie:handle, const key[], any:value, bool:replace = true);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Sets a string value in a Map, either inserting a new entry or replacing an old one.
 | 
			
		||||
 * Sets a string value in a hash map, either inserting a new entry or replacing
 | 
			
		||||
 * an old one.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param key		Key string.
 | 
			
		||||
 * @param value		String to store.
 | 
			
		||||
 * @param replace	If false, operation will fail if the key is already set.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 * @param key       Key string
 | 
			
		||||
 * @param value     String to store
 | 
			
		||||
 * @param replace   If false the operation will fail if the key is already set
 | 
			
		||||
 *
 | 
			
		||||
 * @return			True on success, false on failure.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @return          1 on success, 0 otherwise
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native TrieSetString(Trie:handle, const key[], const value[], bool:replace = true);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Sets an array value in a Map, either inserting a new entry or replacing an old one.
 | 
			
		||||
 * Sets an array value in a hash map, either inserting a new entry or replacing
 | 
			
		||||
 * an old one.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param key		Key string.
 | 
			
		||||
 * @param buffer	Array to store.
 | 
			
		||||
 * @param size		Number of items in the array.
 | 
			
		||||
 * @param replace	If false, operation will fail if the key is already set.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 * @param key       Key string
 | 
			
		||||
 * @param buffer    Array to store
 | 
			
		||||
 * @param size      Array size
 | 
			
		||||
 * @param replace   If false the operation will fail if the key is already set
 | 
			
		||||
 *
 | 
			
		||||
 * @return			True on success, false on failure.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 *					Invalid array size.
 | 
			
		||||
 * @return          1 on success, 0 otherwise
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown. or invalid array size
 | 
			
		||||
 */
 | 
			
		||||
native TrieSetArray(Trie:handle, const key[], const any:buffer[], size, bool:replace = true);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves a value in a Map.
 | 
			
		||||
 * Retrieves a cell value from a hash map.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param key		Key string.
 | 
			
		||||
 * @param value		Variable to store value.
 | 
			
		||||
 * @return			True on success.  False if the key is not set, or the key is set
 | 
			
		||||
 *					as an array or string (not a value).
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 * @param key       Key string
 | 
			
		||||
 * @param value     Variable to store value to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          True on success, false if either the key is not set or the
 | 
			
		||||
 *                  value type does not match (value is string or array)
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:TrieGetCell(Trie:handle, const key[], &any:value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves a string in a Map.
 | 
			
		||||
 * Retrieves a string from a hash map.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle		Map handle.
 | 
			
		||||
 * @param key			Key string.
 | 
			
		||||
 * @param output		Buffer to store value.
 | 
			
		||||
 * @param outputsize	Maximum size of string buffer.
 | 
			
		||||
 * @param size			Optional parameter to store the number of bytes written to the buffer.
 | 
			
		||||
 * @param handle        Map handle
 | 
			
		||||
 * @param key           Key string
 | 
			
		||||
 * @param output        Buffer to copy the value to
 | 
			
		||||
 * @param outputsize    Maximum size of buffer
 | 
			
		||||
 * @param size          Optional variable to store the number of cells written
 | 
			
		||||
 *                      to the buffer in
 | 
			
		||||
 *
 | 
			
		||||
 * @return				True on success.  False if the key is not set, or the key is set
 | 
			
		||||
 *						as a value or array (not a string).
 | 
			
		||||
 * @error				Invalid handle.
 | 
			
		||||
 *						Invalid buffer size.
 | 
			
		||||
 * @return              True on success, false if either the key is not set or
 | 
			
		||||
 *                      the value type does not match (value is cell or array)
 | 
			
		||||
 * @error               If an invalid handle is provided an error will be
 | 
			
		||||
 *                      thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:TrieGetString(Trie:handle, const key[], output[], outputsize, &size = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves an array in a Map.
 | 
			
		||||
 * Retrieves a string from a hash map.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle		Map handle.
 | 
			
		||||
 * @param key			Key string.
 | 
			
		||||
 * @param output		Buffer to store array.
 | 
			
		||||
 * @param outputsize	Maximum size of array buffer.
 | 
			
		||||
 * @param size			Optional parameter to store the number of elements written to the buffer.
 | 
			
		||||
 * @param handle        Map handle
 | 
			
		||||
 * @param key           Key string
 | 
			
		||||
 * @param output        Array to copy the value to
 | 
			
		||||
 * @param outputsize    Maximum size of array
 | 
			
		||||
 * @param size          Optional variable to store the number of cells written
 | 
			
		||||
 *                      to the array in
 | 
			
		||||
 *
 | 
			
		||||
 * @return				True on success.  False if the key is not set, or the key is set
 | 
			
		||||
 *						as a value or string (not an array).
 | 
			
		||||
 * @error				Invalid handle.
 | 
			
		||||
 *						Invalid array size.
 | 
			
		||||
 * @return              True on success, false if either the key is not set or
 | 
			
		||||
 *                      the value type does not match (value is cell or string)
 | 
			
		||||
 * @error               If an invalid handle or array size is provided an error
 | 
			
		||||
 *                      will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:TrieGetArray(Trie:handle, const key[], any:output[], outputsize, &size = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Removes a key entry from a Map.
 | 
			
		||||
 * Removes an entry from a hash map.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param key		Key string.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 * @param key       Key string
 | 
			
		||||
 *
 | 
			
		||||
 * @return			True on success, false if the value was never set.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @return          True on success, false if the key was never set
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:TrieDeleteKey(Trie:handle, const key[]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Checks a key entry existence from a Map.
 | 
			
		||||
 * Checks a hash map for the existence of an entry.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param key		Key string.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 * @param key       Key string
 | 
			
		||||
 *
 | 
			
		||||
 * @return			True on success, false if the value was never set.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @return          True if the key is set, false otherwise
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:TrieKeyExists(Trie:handle, const key[]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Destroys a Map.
 | 
			
		||||
 * Destroys a hash map and frees its memory.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @note The function automatically sets the variable passed to it to 0 to aid
 | 
			
		||||
 *       in preventing accidental usage after destroy.
 | 
			
		||||
 *
 | 
			
		||||
 * @return			True on success, false if the value was never set.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if an invalid handle was passed in
 | 
			
		||||
 */
 | 
			
		||||
native TrieDestroy(&Trie:handle);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the number of elements in a map.
 | 
			
		||||
 * Returns the number of entries in a hash map.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map handle.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return			Number of elements in the trie.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @return          Number of elements in the hash map
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native TrieGetSize(Trie:handle);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Creates a snapshot of all keys in the map. If the map is changed after this
 | 
			
		||||
 * call, the changes are not reflected in the snapshot. Keys are not sorted.
 | 
			
		||||
 * Creates a snapshot of all keys in a hash map. If the map is changed
 | 
			
		||||
 * afterwards,  the changes are not reflected in the snapshot.
 | 
			
		||||
 * Keys are not sorted.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle    Map handle.
 | 
			
		||||
 * @param handle    Map handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return			New map snapshot handle, which must be freed via TrieSnapshotDestroy().
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @return          New map snapshot handle, which must be freed via
 | 
			
		||||
 *                  TrieSnapshotDestroy()
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native Snapshot:TrieSnapshotCreate(Trie:handle);
 | 
			
		||||
 | 
			
		||||
@@ -190,10 +223,11 @@ native Snapshot:TrieSnapshotCreate(Trie:handle);
 | 
			
		||||
 * different from the size of the map, since the map can change after the
 | 
			
		||||
 * snapshot of its keys was taken.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map snapshot.
 | 
			
		||||
 * @param handle    Map snapshot handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return			Number of keys.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @return          Number of keys
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native TrieSnapshotLength(Snapshot:handle);
 | 
			
		||||
 | 
			
		||||
@@ -201,33 +235,37 @@ native TrieSnapshotLength(Snapshot:handle);
 | 
			
		||||
 * Returns the buffer size required to store a given key. That is, it returns
 | 
			
		||||
 * the length of the key plus one.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map snapshot.
 | 
			
		||||
 * @param index		Key index (starting from 0).
 | 
			
		||||
 * @param handle    Map snapshot handle
 | 
			
		||||
 * @param index     Key index (starting from 0)
 | 
			
		||||
 *
 | 
			
		||||
 * @return 			Buffer size required to store the key string.
 | 
			
		||||
 * @error			Invalid handle or index out of range.
 | 
			
		||||
 * @return          Buffer size required to store the key string
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown. or index out of range
 | 
			
		||||
 */
 | 
			
		||||
native TrieSnapshotKeyBufferSize(Snapshot:handle, index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the key string of a given key in a map snapshot.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map snapshot.
 | 
			
		||||
 * @param index		Key index (starting from 0).
 | 
			
		||||
 * @param buffer	String buffer.
 | 
			
		||||
 * @param maxlength	Maximum buffer length.
 | 
			
		||||
 * @param handle    Map snapshot handle
 | 
			
		||||
 * @param index     Key index (starting from 0)
 | 
			
		||||
 * @param buffer    String buffer
 | 
			
		||||
 * @param maxlength Maximum buffer length
 | 
			
		||||
 *
 | 
			
		||||
 * @return			Number of bytes written to the buffer.
 | 
			
		||||
 * @error			Invalid handle or index out of range.
 | 
			
		||||
 * @return          Number of bytes written to the buffer
 | 
			
		||||
 * @error           If an invalid handle is provided an error will be
 | 
			
		||||
 *                  thrown. or index out of range
 | 
			
		||||
 */
 | 
			
		||||
native TrieSnapshotGetKey(Snapshot:handle, index, buffer[], maxlength);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Destroys a Map snapshot
 | 
			
		||||
 * Destroys a map snapshot and frees its memory.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle	Map snapshot.
 | 
			
		||||
 * @note The function automatically sets the variable passed to it to 0 to aid
 | 
			
		||||
 *       in preventing accidental usage after destroy.
 | 
			
		||||
 *
 | 
			
		||||
 * @return			True on success, false if the value was never set.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @param handle    Map snapshot handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if an invalid handle was passed in
 | 
			
		||||
 */
 | 
			
		||||
native TrieSnapshotDestroy(&Snapshot:handle);
 | 
			
		||||
 
 | 
			
		||||
@@ -6,36 +6,196 @@
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if defined _core_included
 | 
			
		||||
  #endinput
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _core_included
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the free memory space available to the plugin.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This is a debugging function that is not intended for general plugin
 | 
			
		||||
 *       use.
 | 
			
		||||
 *
 | 
			
		||||
 * @return  Free memory space in bytes
 | 
			
		||||
 */
 | 
			
		||||
native heapspace();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the function index of a public function declared in the plugin.
 | 
			
		||||
 *
 | 
			
		||||
 * @param name  Function name
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Function index > 0 on success, -1 if function was not found
 | 
			
		||||
 * @error       If the function name is too long (longer than 63 characters)
 | 
			
		||||
 *              an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native funcidx(const name[]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the number of arguments passed into the currently executed function.
 | 
			
		||||
 *
 | 
			
		||||
 * @return  Number of arguments passed
 | 
			
		||||
 */
 | 
			
		||||
native numargs();
 | 
			
		||||
native getarg(arg, index=0);
 | 
			
		||||
native setarg(arg, index=0, value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves an argument value passed into the currently executed function.
 | 
			
		||||
 *
 | 
			
		||||
 * @param arg       Argument index
 | 
			
		||||
 * @param index     Index to retrieve from the argument (for arrays and strings)
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Argument value at given index
 | 
			
		||||
 */
 | 
			
		||||
native getarg(arg, index = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Sets the value of an argument passed into the currently executed function.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This is not equal to assigning a new value to a by-reference argument.
 | 
			
		||||
 *
 | 
			
		||||
 * @param arg       Argument index
 | 
			
		||||
 * @param index     Index to set in the argument (for arrays and strings)
 | 
			
		||||
 */
 | 
			
		||||
native setarg(arg, index = 0, value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Converts a character to lowercase.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This is not UTF8 or locale-safe.
 | 
			
		||||
 *
 | 
			
		||||
 * @param c     Character to convert
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Converted character
 | 
			
		||||
 */
 | 
			
		||||
native tolower(c);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Converts a character to uppercase.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This is not UTF8 or locale-safe.
 | 
			
		||||
 *
 | 
			
		||||
 * @param c     Character to convert
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Converted character
 | 
			
		||||
 */
 | 
			
		||||
native toupper(c);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Swaps the bytes of a value (the lowest byte becomes the highest byte).
 | 
			
		||||
 *
 | 
			
		||||
 * @param c     Value to swap
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Byte-swapped value
 | 
			
		||||
 */
 | 
			
		||||
native swapchars(c);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a random number between 0 and a specified upper bound.
 | 
			
		||||
 *
 | 
			
		||||
 * @param max   Exclusive upper bound
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Random value
 | 
			
		||||
 */
 | 
			
		||||
native random(max);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the smaller of two provided values.
 | 
			
		||||
 *
 | 
			
		||||
 * @param value1    Value one
 | 
			
		||||
 * @param value2    Value two
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Smaller of the two values
 | 
			
		||||
 */
 | 
			
		||||
native min(value1, value2);
 | 
			
		||||
native max(value1, value2);
 | 
			
		||||
native clamp(value, min=cellmin, max=cellmax);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the bigger of two provided values.
 | 
			
		||||
 *
 | 
			
		||||
 * @param value1    Value one
 | 
			
		||||
 * @param value2    Value two
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Bigger of the two values
 | 
			
		||||
 */
 | 
			
		||||
native max(value1, value2);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Limits a provided value between two specified bounds.
 | 
			
		||||
 *
 | 
			
		||||
 * @param value     Value to clamp
 | 
			
		||||
 * @param min       Lower bound
 | 
			
		||||
 * @param max       Upper bound
 | 
			
		||||
 *
 | 
			
		||||
 * @return          The value if it is between the lower and upper bound, min if
 | 
			
		||||
 *                  value is below, max if it is above the specified bounds.
 | 
			
		||||
 */
 | 
			
		||||
native clamp(value, min = cellmin, max = cellmax);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a value raised to a specified exponent.
 | 
			
		||||
 *
 | 
			
		||||
 * @param value     Value
 | 
			
		||||
 * @param exponent  Exponent to raise value to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Value to the power of exponent
 | 
			
		||||
 */
 | 
			
		||||
native power(value, exponent);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the approximated square root of a value.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This uses a simple successice approximation algorithm (continuously
 | 
			
		||||
 *       dividing the value) and only deals with integers, this makes it very
 | 
			
		||||
 *       imprecise.
 | 
			
		||||
 *
 | 
			
		||||
 * @param value     Value
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Square root of the value
 | 
			
		||||
 */
 | 
			
		||||
native sqroot(value);
 | 
			
		||||
 | 
			
		||||
native time(&hour=0,&minute=0,&second=0);
 | 
			
		||||
native date(&year=0,&month=0,&day=0);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the current time in hours, minutes and seconds.
 | 
			
		||||
 *
 | 
			
		||||
 * @param hour      Variable to store hours in
 | 
			
		||||
 * @param minute    Variable to store minutes in
 | 
			
		||||
 * @param second    Variable to store seconds in
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Unix timestamp
 | 
			
		||||
 */
 | 
			
		||||
native time(&hour = 0, &minute = 0, &second = 0);
 | 
			
		||||
 | 
			
		||||
native tickcount(&granularity=0);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the current date in year, month and day.
 | 
			
		||||
 *
 | 
			
		||||
 * @param hour      Variable to store year in
 | 
			
		||||
 * @param minute    Variable to store month in
 | 
			
		||||
 * @param second    Variable to store day in
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
native date(&year = 0, &month = 0, &day = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the elapsed CPU seconds.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This is a debugging function that is not intended for general plugin
 | 
			
		||||
 *       use.
 | 
			
		||||
 * @note This uses the C clock() function internally and comes with all its
 | 
			
		||||
 *       drawbacks attached.
 | 
			
		||||
 *
 | 
			
		||||
 * @param granularity   Unused
 | 
			
		||||
 *
 | 
			
		||||
 * @return              Number of CPU seconds elapsed
 | 
			
		||||
 */
 | 
			
		||||
native tickcount(&granularity = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the absolute value of a number.
 | 
			
		||||
 *
 | 
			
		||||
 * @param x     Integral value
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Absolute value of x (x if it is greater than 0, -x otherwise)
 | 
			
		||||
 */
 | 
			
		||||
stock abs(x)
 | 
			
		||||
{
 | 
			
		||||
	return x > 0 ? x : -x;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,62 +8,271 @@
 | 
			
		||||
//     https://alliedmods.net/amxmodx-license
 | 
			
		||||
 | 
			
		||||
#if defined _csstats_included
 | 
			
		||||
  #endinput
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _csstats_included
 | 
			
		||||
 | 
			
		||||
/* Gets stats from given weapon index. If wpnindex is 0
 | 
			
		||||
* then the stats are from all weapons. If weapon has not been used function
 | 
			
		||||
* returns 0 in other case 1. Fields in stats are:
 | 
			
		||||
* 0 - kills
 | 
			
		||||
* 1 - deaths
 | 
			
		||||
* 2 - headshots
 | 
			
		||||
* 3 - teamkilling
 | 
			
		||||
* 4 - shots
 | 
			
		||||
* 5 - hits
 | 
			
		||||
* 6 - damage
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the client's current weapon statistics.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of default CS weapon ids see the CSW_* constants in
 | 
			
		||||
 *       amxconst.inc, this function also works on custom weapons.
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - Kills
 | 
			
		||||
 *          1 - Deaths
 | 
			
		||||
 *          2 - Headshots
 | 
			
		||||
 *          3 - Teamkills
 | 
			
		||||
 *          4 - Shots
 | 
			
		||||
 *          5 - Hits
 | 
			
		||||
 *          6 - Damage
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param wpnindex  Weapon id, or 0 to retrieve total statistics across all
 | 
			
		||||
 *                  weapons
 | 
			
		||||
 * @param stats     Buffer to copy statistics to
 | 
			
		||||
 * @param bodyhits  Buffer to copy body hits to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if no statistics are available for the weapon
 | 
			
		||||
 *                  id
 | 
			
		||||
 * @error           If an invalid client index or weapon id is provided, an
 | 
			
		||||
 *                  error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_user_wstats(index, wpnindex, stats[8], bodyhits[8]);
 | 
			
		||||
 | 
			
		||||
* For body hits fields see amxconst.inc. */
 | 
			
		||||
native get_user_wstats(index,wpnindex,stats[8],bodyhits[8]);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the client's weapon statistics from the current round.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of default CS weapon ids see the CSW_* constants in
 | 
			
		||||
 *       amxconst.inc, this function also works on custom weapons.
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - Kills
 | 
			
		||||
 *          1 - Deaths
 | 
			
		||||
 *          2 - Headshots
 | 
			
		||||
 *          3 - Teamkills
 | 
			
		||||
 *          4 - Shots
 | 
			
		||||
 *          5 - Hits
 | 
			
		||||
 *          6 - Damage
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param wpnindex  Weapon id, or 0 to retrieve total statistics across all
 | 
			
		||||
 *                  weapons
 | 
			
		||||
 * @param stats     Buffer to copy statistics to
 | 
			
		||||
 * @param bodyhits  Buffer to copy body hits to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if no statistics are available for the
 | 
			
		||||
 *                  weapon id
 | 
			
		||||
 * @error           If an invalid client index or weapon id is provided, an
 | 
			
		||||
 *                  error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_user_wrstats(index, wpnindex, stats[8], bodyhits[8]);
 | 
			
		||||
 | 
			
		||||
/* Gets round stats from given weapon index.*/
 | 
			
		||||
native get_user_wrstats(index,wpnindex,stats[8],bodyhits[8]);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the client's weapon statistics from the permanent storage on the
 | 
			
		||||
 * server.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The permanent storage is updated on every respawn or client disconnect.
 | 
			
		||||
 * @note Player rank is determined by the customizable "get_score" function in
 | 
			
		||||
 *       "data/csstats.amxx". By default it uses the difference of kills to
 | 
			
		||||
 *       deaths/teamkills.
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - Kills
 | 
			
		||||
 *          1 - Deaths
 | 
			
		||||
 *          2 - Headshots
 | 
			
		||||
 *          3 - Teamkills
 | 
			
		||||
 *          4 - Shots
 | 
			
		||||
 *          5 - Hits
 | 
			
		||||
 *          6 - Damage
 | 
			
		||||
 *          7 - Rank
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param stats     Buffer to copy statistics to
 | 
			
		||||
 * @param bodyhits  Buffer to copy body hits to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Players rank > 0 on success, or 0 if player is not ranked
 | 
			
		||||
 *                  and no statistics are available
 | 
			
		||||
 * @error           If an invalid client index is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_user_stats(index, stats[8], bodyhits[8]);
 | 
			
		||||
 | 
			
		||||
/* Gets overall stats which are stored in file on server
 | 
			
		||||
* and updated on every respawn or user disconnect.
 | 
			
		||||
* Function returns the position in stats by diff. kills to deaths. */
 | 
			
		||||
native get_user_stats(index,stats[8],bodyhits[8]);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the client's statistics from the current round.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - Kills
 | 
			
		||||
 *          1 - Deaths
 | 
			
		||||
 *          2 - Headshots
 | 
			
		||||
 *          3 - Teamkills
 | 
			
		||||
 *          4 - Shots
 | 
			
		||||
 *          5 - Hits
 | 
			
		||||
 *          6 - Damage
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param stats     Buffer to copy statistics to
 | 
			
		||||
 * @param bodyhits  Buffer to copy body hits to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if no statistics are available
 | 
			
		||||
 * @error           If an invalid client index is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_user_rstats(index, stats[8], bodyhits[8]);
 | 
			
		||||
 | 
			
		||||
/* Gets round stats of player. */
 | 
			
		||||
native get_user_rstats(index,stats[8],bodyhits[8]);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the client's statistics inflicted upon another client from the
 | 
			
		||||
 * current round.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - Kills
 | 
			
		||||
 *          1 - Deaths
 | 
			
		||||
 *          2 - Headshots
 | 
			
		||||
 *          3 - Teamkills
 | 
			
		||||
 *          4 - Shots
 | 
			
		||||
 *          5 - Hits
 | 
			
		||||
 *          6 - Damage
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param victim    Victim client index, or 0 to retrieve the statistics against
 | 
			
		||||
 *                  all victims
 | 
			
		||||
 * @param stats     Buffer to copy statistics to
 | 
			
		||||
 * @param bodyhits  Buffer to copy body hits to
 | 
			
		||||
 * @param wpnname   Optional buffer to copy last used weapon name to
 | 
			
		||||
 * @param len       Maximum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if no statistics are available against the
 | 
			
		||||
 *                  specified victim
 | 
			
		||||
 * @error           If an invalid client index is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_user_vstats(index, victim, stats[8], bodyhits[8], wpnname[] = "", len = 0);
 | 
			
		||||
 | 
			
		||||
/* Gets stats with which user have killed/hurt his victim. If victim is 0
 | 
			
		||||
* then stats are from all victims. If victim has not been hurt, function
 | 
			
		||||
* returns 0 in other case 1. User stats are reset on his respawn. */
 | 
			
		||||
native get_user_vstats(index,victim,stats[8],bodyhits[8],wpnname[]="",len=0);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the client's statistics received from another client from the
 | 
			
		||||
 * current round.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - Kills
 | 
			
		||||
 *          1 - Deaths
 | 
			
		||||
 *          2 - Headshots
 | 
			
		||||
 *          3 - Teamkills
 | 
			
		||||
 *          4 - Shots
 | 
			
		||||
 *          5 - Hits
 | 
			
		||||
 *          6 - Damage
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param wpnindex  Attacker client index, or 0 to retrieve the statistics from
 | 
			
		||||
 *                  all attackers
 | 
			
		||||
 * @param stats     Buffer to copy statistics to
 | 
			
		||||
 * @param bodyhits  Buffer to copy body hits to
 | 
			
		||||
 * @param wpnname   Optional buffer to copy last used weapon name to
 | 
			
		||||
 * @param len       Maximum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if no statistics are available against the
 | 
			
		||||
 *                  specified attacker
 | 
			
		||||
 * @error           If an invalid client index is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_user_astats(index, wpnindex, stats[8], bodyhits[8], wpnname[] = "", len = 0);
 | 
			
		||||
 | 
			
		||||
/* Gets stats with which user have been killed/hurt. If killer is 0
 | 
			
		||||
* then stats are from all attacks. If killer has not hurt user, function
 | 
			
		||||
* returns 0 in other case 1. User stats are reset on his respawn. */
 | 
			
		||||
native get_user_astats(index,wpnindex,stats[8],bodyhits[8],wpnname[]="",len=0);
 | 
			
		||||
 | 
			
		||||
/* Resets life, weapon, victims and attackers user stats. */
 | 
			
		||||
/**
 | 
			
		||||
 * Resets the current round weapon, attacker and victim statistics.
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid client index is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native reset_user_wstats(index);
 | 
			
		||||
 | 
			
		||||
/* Gets overall stats which stored in stats.dat file in amx folder
 | 
			
		||||
* and updated on every mapchange or user disconnect.
 | 
			
		||||
* Function returns next index of stats entry or 0 if no more exists. */
 | 
			
		||||
native get_stats(index,stats[8],bodyhits[8],name[],len,authid[] = "",authidlen = 0);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves statistics from the permanent storage on the server via iterative,
 | 
			
		||||
 * incremental access.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The permanent storage is updated on every respawn or client disconnect.
 | 
			
		||||
 * @note Player rank is determined by the customizable "get_score" function in
 | 
			
		||||
 *       "data/csstats.amxx". By default it uses the difference of kills to
 | 
			
		||||
 *       deaths/teamkills.
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - Kills
 | 
			
		||||
 *          1 - Deaths
 | 
			
		||||
 *          2 - Headshots
 | 
			
		||||
 *          3 - Teamkills
 | 
			
		||||
 *          4 - Shots
 | 
			
		||||
 *          5 - Hits
 | 
			
		||||
 *          6 - Damage
 | 
			
		||||
 *          7 - Rank
 | 
			
		||||
 *
 | 
			
		||||
 * @param index         Rank index
 | 
			
		||||
 * @param stats         Buffer to copy statistics to
 | 
			
		||||
 * @param bodyhits      Buffer to copy body hits to
 | 
			
		||||
 * @param name          Buffer to copy client name to
 | 
			
		||||
 * @param len           Maximum name buffer size
 | 
			
		||||
 * @param authid        Buffer to copy client auth id to
 | 
			
		||||
 * @param authidlen     Maximum authid buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return              Next rank index (> 0 and > index), or 0 if no more
 | 
			
		||||
 *                      statistics exist
 | 
			
		||||
 */
 | 
			
		||||
native get_stats(index, stats[8], bodyhits[8], name[], len, authid[] = "", authidlen = 0);
 | 
			
		||||
 | 
			
		||||
/* Returns number of all entries in stats. */
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the number of all entries in the permanent statistics storage.
 | 
			
		||||
 *
 | 
			
		||||
 * @return  Number of entries in statistics storage
 | 
			
		||||
 */
 | 
			
		||||
native get_statsnum();
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* new stats:
 | 
			
		||||
* 0 - total defusions
 | 
			
		||||
* 1 - bomb defused
 | 
			
		||||
* 2 - bomb plants
 | 
			
		||||
* 3 - bomb explosions
 | 
			
		||||
*/
 | 
			
		||||
native get_user_stats2(index,stats[4]);
 | 
			
		||||
native get_stats2(index,stats[4],authid[] = "",authidlen = 0);
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the client's objective statistics from the permanent storage.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The permanent storage is updated on every respawn or client disconnect.
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - total defusions
 | 
			
		||||
 *          1 - bomb defused
 | 
			
		||||
 *          2 - bomb plants
 | 
			
		||||
 *          3 - bomb explosions
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param stats     Buffer to copy statistics to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Players rank > 0 on success, or 0 if player is not ranked
 | 
			
		||||
 *                  and no statistics are available
 | 
			
		||||
 * @error           If an invalid client index is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_user_stats2(index, stats[4]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves objective statistics from the permanent storage on the server via
 | 
			
		||||
 * iterative, incremental access.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The permanent storage is updated on every respawn or client disconnect.
 | 
			
		||||
 * @note The fields in the statistics are:
 | 
			
		||||
 *          0 - total defusions
 | 
			
		||||
 *          1 - bomb defused
 | 
			
		||||
 *          2 - bomb plants
 | 
			
		||||
 *          3 - bomb explosions
 | 
			
		||||
 *
 | 
			
		||||
 * @param index         Client index
 | 
			
		||||
 * @param stats         Buffer to copy statistics to
 | 
			
		||||
 * @param authid        Buffer to copy client auth id to
 | 
			
		||||
 * @param authidlen     Maximum authid buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return              Next rank index (> 0 and > index), or 0 if no more
 | 
			
		||||
 *                      statistics exist
 | 
			
		||||
 */
 | 
			
		||||
native get_stats2(index, stats[4], authid[] = "", authidlen = 0);
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -12,7 +12,7 @@
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#if defined _csx_included
 | 
			
		||||
  #endinput
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _csx_included
 | 
			
		||||
 | 
			
		||||
@@ -27,65 +27,237 @@
 | 
			
		||||
 #pragma library csx
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Forwards
 | 
			
		||||
/**
 | 
			
		||||
 * Map objective flags returned by get_map_objectives().
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Function is called after player to player attacks ,
 | 
			
		||||
* if players were damaged by teammate TA is set to 1 */
 | 
			
		||||
forward client_damage(attacker,victim,damage,wpnindex,hitplace,TA);
 | 
			
		||||
 | 
			
		||||
/* Function is called after player death ,
 | 
			
		||||
* if player was killed by teammate TK is set to 1 */
 | 
			
		||||
forward client_death(killer,victim,wpnindex,hitplace,TK);
 | 
			
		||||
 | 
			
		||||
forward grenade_throw( index,greindex,wId );
 | 
			
		||||
 | 
			
		||||
forward bomb_planting(planter);
 | 
			
		||||
forward bomb_planted(planter);
 | 
			
		||||
forward bomb_explode(planter,defuser);
 | 
			
		||||
forward bomb_defusing(defuser);
 | 
			
		||||
forward bomb_defused(defuser);
 | 
			
		||||
 | 
			
		||||
/************* Shared Natives Start ********************************/
 | 
			
		||||
 | 
			
		||||
/* Custom Weapon Support */
 | 
			
		||||
/* function will return index of new weapon */
 | 
			
		||||
native custom_weapon_add( const wpnname[],melee = 0,const logname[]="" ); 
 | 
			
		||||
/* Function will pass damage done by this custom weapon to stats module and other plugins */
 | 
			
		||||
native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 ); 
 | 
			
		||||
/* Function will pass info about custom weapon shot to stats module */
 | 
			
		||||
native custom_weapon_shot( weapon,index ); // weapon id , player id
 | 
			
		||||
 | 
			
		||||
/* function will return 1 if true */
 | 
			
		||||
native xmod_is_melee_wpn(wpnindex);
 | 
			
		||||
 | 
			
		||||
/* Returns weapon name. */
 | 
			
		||||
native xmod_get_wpnname(wpnindex,name[],len);
 | 
			
		||||
 | 
			
		||||
/* Returns weapon logname. */
 | 
			
		||||
native xmod_get_wpnlogname(wpnindex,name[],len);
 | 
			
		||||
 | 
			
		||||
/* Returns weapons array size */
 | 
			
		||||
native xmod_get_maxweapons();
 | 
			
		||||
 | 
			
		||||
/* Returns stats array size */
 | 
			
		||||
native xmod_get_stats_size();
 | 
			
		||||
 | 
			
		||||
/************* Shared Natives End ********************************/
 | 
			
		||||
 | 
			
		||||
enum MapObjective
 | 
			
		||||
{
 | 
			
		||||
	MapObjective_Bomb	 = (1<<0),
 | 
			
		||||
	MapObjective_Bomb    = (1<<0),
 | 
			
		||||
	MapObjective_Hostage = (1<<1),
 | 
			
		||||
	MapObjective_Vip	 = (1<<2),
 | 
			
		||||
	MapObjective_Vip     = (1<<2),
 | 
			
		||||
	MapObjective_Escape  = (1<<3),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Gets current map objectives.
 | 
			
		||||
 * Called after a client attacks another client.
 | 
			
		||||
 *
 | 
			
		||||
 * @return 		Returns a bits sum if objectives are found, otherwise 0. 
 | 
			
		||||
 * 				See MapObjective_* constants.
 | 
			
		||||
 * @note For a list of possible weapon ids see the CSW_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 *
 | 
			
		||||
 * @param attacker  Attacker client index
 | 
			
		||||
 * @param victim    Victim client index
 | 
			
		||||
 * @param damage    Damage dealt to victim
 | 
			
		||||
 * @param wpnindex  Weapon id
 | 
			
		||||
 * @param hitplace  Body hitplace
 | 
			
		||||
 * @param ta        If nonzero the attack was a team attack
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward client_damage(attacker, victim, damage, wpnindex, hitplace, TA);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Called after a client death.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of possible weapon ids see the CSW_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 *
 | 
			
		||||
 * @param attacker  Attacker client index
 | 
			
		||||
 * @param victim    Victim client index
 | 
			
		||||
 * @param wpnindex  Weapon id
 | 
			
		||||
 * @param hitplace  Body hitplace
 | 
			
		||||
 * @param tk        If nonzero the death was a teamkill
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward client_death(killer, victim, wpnindex, hitplace, TK);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Called after a grenade was thrown.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Weapon id is one of CSW_HEGRENADE, CSW_SMOKEGRENADE or CSW_FLASHBANG.
 | 
			
		||||
 *
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 * @param greindex  Grenade entity index
 | 
			
		||||
 * @param wId       Weapon id
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward grenade_throw(index, greindex, wId);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Called after a bomb plant attempt has started.
 | 
			
		||||
 *
 | 
			
		||||
 * @param planter   Planter client index
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward bomb_planting(planter);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Called after a bomb plant has finished.
 | 
			
		||||
 *
 | 
			
		||||
 * @param planter   Planter client index
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward bomb_planted(planter);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Called when the bomb exploded.
 | 
			
		||||
 *
 | 
			
		||||
 * @param planter   Planter client index
 | 
			
		||||
 * @param defuser   Defuser client index, if applicable
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward bomb_explode(planter, defuser);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Called after a bomb defuse attempt has started.
 | 
			
		||||
 *
 | 
			
		||||
 * @param defuser   Defuser client index
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward bomb_defusing(defuser);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Called after a bomb defuse has finished.
 | 
			
		||||
 *
 | 
			
		||||
 * @param defuser   Defuser client index
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 */
 | 
			
		||||
forward bomb_defused(defuser);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @section Shared natives
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Adds a custom weapon to the stats system.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The weapon name should be the full display name of the gun such as
 | 
			
		||||
 *       "Desert Eagle" while the logname should be "weapon_deagle".
 | 
			
		||||
 *
 | 
			
		||||
 * @param wpnname   Full weapon name
 | 
			
		||||
 * @param melee     If nonzero the weapon will be considered a melee weapon
 | 
			
		||||
 * @param logname   Weapon short name
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Cusom weapon id (>0) on success, 0 if no more custom weapons
 | 
			
		||||
 *                  can be added
 | 
			
		||||
 */
 | 
			
		||||
native custom_weapon_add(const wpnname[], melee = 0, const logname[] = "");
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Triggers a damage event on a custom weapon, adding it to the internal stats.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This will also call the client_damage() and client_kill() forwards if
 | 
			
		||||
 *       applicable.
 | 
			
		||||
 * @note For a list of possible body hitplaces see the HIT_* constants in
 | 
			
		||||
 *       amxconst.inc
 | 
			
		||||
 *
 | 
			
		||||
 * @param weapon    Custom weapon id
 | 
			
		||||
 * @param att       Attacker client index
 | 
			
		||||
 * @param vic       Victim client index
 | 
			
		||||
 * @param damage    Damage dealt
 | 
			
		||||
 * @param hitplace  Optional body hitplace
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If the weapon id is not a custom weapon, an invalid client
 | 
			
		||||
 *                  index, damage value or hitplace is provided, an error will
 | 
			
		||||
 *                  be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native custom_weapon_dmg(weapon, att, vic, damage, hitplace = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Adds a shot event on a custom weapon to the internal stats.
 | 
			
		||||
 *
 | 
			
		||||
 * @param weapon    Custom weapon id
 | 
			
		||||
 * @param index     Client index
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If the weapon id is not a custom weapon or an invalid client
 | 
			
		||||
 *                  index is provided, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native custom_weapon_shot(weapon, index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if the weapon is considered a melee weapon.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of default CS weapon ids see the CSW_* constants in
 | 
			
		||||
 *       amxconst.inc, this function also works on custom weapons.
 | 
			
		||||
 * @note For the default CS weapons this obviously returns true only for
 | 
			
		||||
 *       CSW_KNIFE.
 | 
			
		||||
 *
 | 
			
		||||
 * @param wpnindex  Weapon id
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 if weapon is a melee weapon, 0
 | 
			
		||||
 * @error           If an invalid weapon id is provided an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native xmod_is_melee_wpn(wpnindex);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the full weapon name of a weapon id.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of default CS weapon ids see the CSW_* constants in
 | 
			
		||||
 *       amxconst.inc, this function also works on custom weapons.
 | 
			
		||||
 * @note For the default CS weapons this obviously returns true only for
 | 
			
		||||
 *       CSW_KNIFE.
 | 
			
		||||
 *
 | 
			
		||||
 * @param wpnindex  Weapon id
 | 
			
		||||
 * @param name      Buffer to copy weapon name to
 | 
			
		||||
 * @param len       Maximmum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Number of cells written to buffer
 | 
			
		||||
 * @error           If an invalid weapon id is provided an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native xmod_get_wpnname(wpnindex, name[], len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the weapon log name of a weapon id.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of default CS weapon ids see the CSW_* constants in
 | 
			
		||||
 *       amxconst.inc, this function also works on custom weapons.
 | 
			
		||||
 * @note For the default CS weapons this obviously returns true only for
 | 
			
		||||
 *       CSW_KNIFE.
 | 
			
		||||
 *
 | 
			
		||||
 * @param wpnindex  Weapon id
 | 
			
		||||
 * @param name      Buffer to copy weapon log name to
 | 
			
		||||
 * @param len       Maximmum buffer size
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Number of cells written to buffer
 | 
			
		||||
 * @error           If an invalid weapon id is provided an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native xmod_get_wpnlogname(wpnindex, name[], len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the maximum amount of weapons that the stats system supports.
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Maximum number of weapons supported
 | 
			
		||||
 */
 | 
			
		||||
native xmod_get_maxweapons();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the number of stats tracked by the stats system.
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Number of stats tracked
 | 
			
		||||
 */
 | 
			
		||||
native xmod_get_stats_size();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @endsection Shared natives
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the current map's objectives as a bitflag value.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of possible map objective flags see the MapObjective enum.
 | 
			
		||||
 *
 | 
			
		||||
 * @return      Bitflag value of map objectives
 | 
			
		||||
 */
 | 
			
		||||
native MapObjective:get_map_objectives();
 | 
			
		||||
 
 | 
			
		||||
@@ -8,44 +8,61 @@
 | 
			
		||||
//     https://alliedmods.net/amxmodx-license
 | 
			
		||||
 | 
			
		||||
#if defined _cvars_included
 | 
			
		||||
    #endinput
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _cvars_included
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * CVAR flags for create_cvar()
 | 
			
		||||
 * CVAR flags for create_cvar() and register_cvar().
 | 
			
		||||
 */
 | 
			
		||||
#define FCVAR_NONE              0   /* No flags */
 | 
			
		||||
#define FCVAR_ARCHIVE           1   /* Set to cause it to be saved to vars.rc */
 | 
			
		||||
#define FCVAR_USERINFO          2   /* Changes the client's info string */
 | 
			
		||||
#define FCVAR_SERVER            4   /* Notifies players when changed */
 | 
			
		||||
#define FCVAR_EXTDLL            8   /* Defined by external DLL */
 | 
			
		||||
#define FCVAR_CLIENTDLL         16  /* Defined by the client dll */
 | 
			
		||||
#define FCVAR_PROTECTED         32  /* It's a server cvar, but we don't send the data since it's a password, etc.  Sends 1 if it's not bland/zero, 0 otherwise as value */
 | 
			
		||||
#define FCVAR_SPONLY            64  /* This cvar cannot be changed by clients connected to a multiplayer server. */
 | 
			
		||||
#define FCVAR_PRINTABLEONLY     128 /* This cvar's string cannot contain unprintable characters ( e.g., used for player name etc ). */
 | 
			
		||||
#define FCVAR_UNLOGGED          256 /* If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log */
 | 
			
		||||
#define FCVAR_NOEXTRAWHITEPACE  512 /* Strip trailing/leading white space from this cvar */
 | 
			
		||||
#define FCVAR_NONE              0   // No special behavior
 | 
			
		||||
#define FCVAR_ARCHIVE           1   // Cvar will be saved to vars.rc Set to cause it to be saved to vars.rc
 | 
			
		||||
#define FCVAR_USERINFO          2   // Cvar changes the client's info string
 | 
			
		||||
#define FCVAR_SERVER            4   // Clients get notified when cvar value is changed
 | 
			
		||||
#define FCVAR_EXTDLL            8   // Defined by an external DLL
 | 
			
		||||
#define FCVAR_CLIENTDLL         16  // Defined by the client DLL
 | 
			
		||||
#define FCVAR_PROTECTED         32  // Cvar value is masked from outside access, should be used for sensitive cvars like passwords
 | 
			
		||||
#define FCVAR_SPONLY            64  // Cvar can't be changed by clients connected to a multiplayer server
 | 
			
		||||
#define FCVAR_PRINTABLEONLY     128 // The cvar string value can not contain unprintable characters
 | 
			
		||||
#define FCVAR_UNLOGGED          256 // If the cvar is FCVAR_SERVER, don't log changes to a file/the console
 | 
			
		||||
#define FCVAR_NOEXTRAWHITEPACE  512 // Automatically strips trailing/leading white space from the string value
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Cvar bound constants used with [get|set]_pcvar_bounds().
 | 
			
		||||
 */
 | 
			
		||||
enum CvarBounds
 | 
			
		||||
{
 | 
			
		||||
	CvarBound_Upper = 0,
 | 
			
		||||
	CvarBound_Lower
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Creates a new cvar for the engine.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This has the same effect as register_cvar but provides more options.
 | 
			
		||||
 * @note This has the same effect as register_cvar() but provides more options.
 | 
			
		||||
 * @note For a list of possible cvar flags see FCVAR_* constants above.
 | 
			
		||||
 * @note If an already existing cvar is registered it will not be duplicated.
 | 
			
		||||
 *       The default value is only set when the cvar is registered for the very
 | 
			
		||||
 *       first time since the server was started. Cvar bounds are overwritten
 | 
			
		||||
 *       by the create_cvar() call just as if they were re-set using
 | 
			
		||||
 *       set_pcvar_bounds().
 | 
			
		||||
 * @note The returned cvar pointer should be used with the get_pcvar_* and
 | 
			
		||||
 *       set_pcvar_* set of functions.
 | 
			
		||||
 *
 | 
			
		||||
 * @param name        Cvar name
 | 
			
		||||
 * @param string      Default cvar value
 | 
			
		||||
 * @param flags       Optional bitsum of flags specifying cvar behavior
 | 
			
		||||
 * @param description Optional description of the cvar
 | 
			
		||||
 * @param has_min     Optional boolean that specifies if the cvar has a minimum value
 | 
			
		||||
 * @param min_val     Minimum floating point value
 | 
			
		||||
 * @param has_max     Optional boolean that specifies if the cvar has a maximum value
 | 
			
		||||
 * @param max_val     Maximum floating point value
 | 
			
		||||
 * @param name          Cvar name
 | 
			
		||||
 * @param string        Default cvar value
 | 
			
		||||
 * @param flags         Optional bitsum of flags specifying cvar behavior
 | 
			
		||||
 * @param description   Optional description of the cvar
 | 
			
		||||
 * @param has_min       Optional boolean that specifies if the cvar has a
 | 
			
		||||
 *                      minimum value
 | 
			
		||||
 * @param min_val       Minimum floating point value
 | 
			
		||||
 * @param has_max       Optional boolean that specifies if the cvar has a
 | 
			
		||||
 *                      maximum value
 | 
			
		||||
 * @param max_val       Maximum floating point value
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Unique cvar pointer
 | 
			
		||||
 * @return              Unique cvar pointer
 | 
			
		||||
 * @error               If invalid bounds are provided (min_val > max_val or
 | 
			
		||||
 *                      vice versa), an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native create_cvar(const name[], const string[], flags = FCVAR_NONE, const description[] = "", bool:has_min = false, Float:min_val = 0.0, bool:has_max = false, Float:max_val = 0.0);
 | 
			
		||||
 | 
			
		||||
@@ -55,6 +72,8 @@ native create_cvar(const name[], const string[], flags = FCVAR_NONE, const descr
 | 
			
		||||
 * @note Deprecated. Consider to use create_cvar for more options.
 | 
			
		||||
 * @note For a list of possible cvar flags see FCVAR_* constants in amxconst.inc
 | 
			
		||||
 * @note If an already existing cvar is registered it will not be duplicated.
 | 
			
		||||
 *       The default value is only set when the cvar is registered for the very
 | 
			
		||||
 *       first time since the server was started.
 | 
			
		||||
 * @note The returned cvar pointer should be used with the get_pcvar_* and
 | 
			
		||||
 *       set_pcvar_* set of functions.
 | 
			
		||||
 *
 | 
			
		||||
@@ -65,7 +84,7 @@ native create_cvar(const name[], const string[], flags = FCVAR_NONE, const descr
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Unique cvar pointer
 | 
			
		||||
 */
 | 
			
		||||
native register_cvar(const name[], const string[], flags = FCVAR_NONE, Float:fvalue=0.0);
 | 
			
		||||
native register_cvar(const name[], const string[], flags = FCVAR_NONE, Float:fvalue = 0.0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns if a cvar is registered on the server.
 | 
			
		||||
@@ -79,8 +98,9 @@ native cvar_exists(const cvar[]);
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the cvar pointer of the specified cvar.
 | 
			
		||||
 *
 | 
			
		||||
 * @note A pointer is also returned by register_cvar(). Plugins can (and should)
 | 
			
		||||
 *       retrieve and use pointers for already existing mod cvars.
 | 
			
		||||
 * @note A pointer is also returned by register_cvar() and create_cvar().
 | 
			
		||||
 *       Plugins can (and should) retrieve and use pointers for already existing
 | 
			
		||||
 *       mod cvars.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to find
 | 
			
		||||
 *
 | 
			
		||||
@@ -93,41 +113,45 @@ native get_cvar_pointer(const cvar[]);
 | 
			
		||||
 *
 | 
			
		||||
 * @note Changing the cvar value from within this forward can lead to infinite
 | 
			
		||||
 *       recursion and should be avoided.
 | 
			
		||||
 * @note Callback will be called in the following manner:
 | 
			
		||||
 * @note The callback will be called in the following manner:
 | 
			
		||||
 *
 | 
			
		||||
 *       public cvar_change_callback(pcvar, const old_value[], const new_value[])
 | 
			
		||||
 * public cvar_change_callback(pcvar, const old_value[], const new_value[])
 | 
			
		||||
 *
 | 
			
		||||
 *       pcvar         - Pointer to cvar that was changed
 | 
			
		||||
 *       old_value     - String containing the value of the cvar before it was changed
 | 
			
		||||
 *       new_value     - String containing the new value of the cvar
 | 
			
		||||
 *   pcvar         - Pointer to cvar that was changed
 | 
			
		||||
 *   old_value     - Buffer containing the previous value of the cvar
 | 
			
		||||
 *   new_value     - Buffer containing the new value of the cvar
 | 
			
		||||
 *
 | 
			
		||||
 *       The return value is ignored
 | 
			
		||||
 * The return value is ignored
 | 
			
		||||
 *
 | 
			
		||||
 * @param pcvar         Pointer to cvar
 | 
			
		||||
 * @param callback      Name of callback function
 | 
			
		||||
 * @param pcvar     Pointer to cvar
 | 
			
		||||
 * @param callback  Name of callback function
 | 
			
		||||
 *
 | 
			
		||||
 * @return              Callback handle that can be used with [disable|enable]_cvar_hook
 | 
			
		||||
 * @error               Invalid cvar pointer or invalid callback function
 | 
			
		||||
 * @return          Callback handle that can be used with
 | 
			
		||||
 *                  [disable|enable]_cvar_hook
 | 
			
		||||
 * @error           If an invalid cvar pointer or callback function is provided,
 | 
			
		||||
 *                  an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native cvarhook:hook_cvar_change(pcvar, const callback[]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Stops a cvar hook forward from triggering.
 | 
			
		||||
 * Disables a cvar hook, stopping it from being called.
 | 
			
		||||
 *
 | 
			
		||||
 * @note  Use the handle returned by hook_cvar_change as the parameter here.
 | 
			
		||||
 * @note Use the handle returned by hook_cvar_change as the parameter here.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Forward to stop
 | 
			
		||||
 * @error               Invalid hook handle
 | 
			
		||||
 * @param handle    Forward to disable
 | 
			
		||||
 * @error           If an invalid hook handle is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native disable_cvar_hook(cvarhook:handle);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Starts a cvar hook forward back up.
 | 
			
		||||
 * Enables a cvar hook, restoring it to being called.
 | 
			
		||||
 *
 | 
			
		||||
 * @note  Use the handle returned by hook_cvar_change as the parameter here.
 | 
			
		||||
 * @note Use the handle returned by hook_cvar_change as the parameter here.
 | 
			
		||||
 *
 | 
			
		||||
 * @param handle        Forward to back up
 | 
			
		||||
 * @error               Invalid hook handle
 | 
			
		||||
 * @param handle    Forward to enable
 | 
			
		||||
 * @error           If an invalid hook handle is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native enable_cvar_hook(cvarhook:handle);
 | 
			
		||||
 | 
			
		||||
@@ -135,14 +159,13 @@ native enable_cvar_hook(cvarhook:handle);
 | 
			
		||||
 * Returns flags of a cvar. The cvar is accessed by name.
 | 
			
		||||
 *
 | 
			
		||||
 * @note For a list of possible flags see the FCVAR_* constants in amxconst.inc
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the get_pcvar_flags function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent get_pcvar_flags() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to retrieve flags from
 | 
			
		||||
 * @param cvar  Cvar name to retrieve flags from
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if cvar does not exist or is not permitted
 | 
			
		||||
 * @return      Flag value
 | 
			
		||||
 */
 | 
			
		||||
native get_cvar_flags(const cvar[]);
 | 
			
		||||
 | 
			
		||||
@@ -154,10 +177,9 @@ native get_cvar_flags(const cvar[]);
 | 
			
		||||
 * @note For a list of possible flags see the FCVAR_* constants in amxconst.inc
 | 
			
		||||
 * @note This function just adds the flags using a bitwise-or operation. After
 | 
			
		||||
 *       it has run the flags may not exactly equal the specified bitflag sum.
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the set_pcvar_flags function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent set_pcvar_flags() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to remove flags from
 | 
			
		||||
 * @param flags     Bitflag sum of flags to set
 | 
			
		||||
@@ -173,11 +195,8 @@ native set_cvar_flags(const cvar[], flags);
 | 
			
		||||
 *       and "sv_cheats" cvars.
 | 
			
		||||
 * @note For a list of possible flags see the FCVAR_* constants in amxconst.inc
 | 
			
		||||
 * @note This function removes the flags using a bitwise-and operation.
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the set_pcvar_flags function.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the set_pcvar_flags() function should be used instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to remove flags from
 | 
			
		||||
 * @param flags     Bitflag sum of flags to remove
 | 
			
		||||
@@ -189,10 +208,9 @@ native remove_cvar_flags(const cvar[], flags=-1);
 | 
			
		||||
/**
 | 
			
		||||
 * Gets a string value from a cvar. The cvar is accessed by name.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the get_pcvar_string function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent get_pcvar_string() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to retrieve value from
 | 
			
		||||
 * @param output    Buffer to copy cvar value to
 | 
			
		||||
@@ -205,10 +223,9 @@ native get_cvar_string(const cvarname[], output[], iLen);
 | 
			
		||||
/**
 | 
			
		||||
 * Sets a cvar to a given string value. The cvar is accessed by name.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Accessing a cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the set_pcvar_string function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent set_pcvar_string() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to set value of
 | 
			
		||||
 * @param value     Value to set cvar to
 | 
			
		||||
@@ -220,10 +237,9 @@ native set_cvar_string(const cvar[], const value[]);
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a floating value from a cvar. The cvar is accessed by name.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the get_pcvar_float function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent get_pcvar_float() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvarname  Cvar name to retrieve value from
 | 
			
		||||
 *
 | 
			
		||||
@@ -234,10 +250,9 @@ native Float:get_cvar_float(const cvarname[]);
 | 
			
		||||
/**
 | 
			
		||||
 * Sets a cvar to a given float value. The cvar is accessed by name.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the set_pcvar_float function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent set_pcvar_float() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to set value of
 | 
			
		||||
 * @param value     Value to set cvar to
 | 
			
		||||
@@ -249,10 +264,9 @@ native set_cvar_float(const cvar[], Float:value);
 | 
			
		||||
/**
 | 
			
		||||
 * Returns an integer value from a cvar. The cvar is accessed by name.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the get_pcvar_num function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent get_pcvar_num() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvarname  Cvar name to retrieve value from
 | 
			
		||||
 *
 | 
			
		||||
@@ -263,10 +277,9 @@ native get_cvar_num(const cvarname[]);
 | 
			
		||||
/**
 | 
			
		||||
 * Sets a cvar to a given integer value. The cvar is accessed by name.
 | 
			
		||||
 *
 | 
			
		||||
 * @note Accessing a Cvar by name requires this function to walk through the
 | 
			
		||||
 *       engine's cvar list every time, which can result in a considerable waste
 | 
			
		||||
 *       of processing time, especially if many cvars have been registered. For
 | 
			
		||||
 *       a vastly superior alternative look at the set_pcvar_num function.
 | 
			
		||||
 * @note Accessing a Cvar by name is slower than direct pointer access, which is
 | 
			
		||||
 *       why the otherwise equivalent set_pcvar_num() function should be used
 | 
			
		||||
 *       instead.
 | 
			
		||||
 *
 | 
			
		||||
 * @param cvar      Cvar name to set value of
 | 
			
		||||
 * @param value     Value to set cvar to
 | 
			
		||||
@@ -283,7 +296,8 @@ native set_cvar_num(const cvarname[], value);
 | 
			
		||||
 * @param pcvar     Pointer to cvar to retrieve flags from
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if cvar pointer is invalid
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_pcvar_flags(pcvar);
 | 
			
		||||
 | 
			
		||||
@@ -298,7 +312,8 @@ native get_pcvar_flags(pcvar);
 | 
			
		||||
 * @param flags     Bitflag sum of flags to set
 | 
			
		||||
 *
 | 
			
		||||
 * @return          1 on success, 0 if cvar does not exist or is not permitted
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native set_pcvar_flags(pcvar, flags);
 | 
			
		||||
 | 
			
		||||
@@ -308,7 +323,8 @@ native set_pcvar_flags(pcvar, flags);
 | 
			
		||||
 * @param pcvar     Pointer to cvar to retrieve value from
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Cvar value, converted to int
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_pcvar_num(pcvar);
 | 
			
		||||
 | 
			
		||||
@@ -318,7 +334,8 @@ native get_pcvar_num(pcvar);
 | 
			
		||||
 * @param pcvar     Pointer to cvar to retrieve value from
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Cvar value, converted to bool
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:get_pcvar_bool(pcvar);
 | 
			
		||||
 | 
			
		||||
@@ -329,7 +346,8 @@ native bool:get_pcvar_bool(pcvar);
 | 
			
		||||
 * @param num       Value to set cvar to
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native set_pcvar_num(pcvar, num);
 | 
			
		||||
 | 
			
		||||
@@ -340,7 +358,8 @@ native set_pcvar_num(pcvar, num);
 | 
			
		||||
 * @param num       Value to set cvar to
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native set_pcvar_bool(pcvar, bool:num);
 | 
			
		||||
 | 
			
		||||
@@ -350,7 +369,8 @@ native set_pcvar_bool(pcvar, bool:num);
 | 
			
		||||
 * @param pcvar     Pointer to cvar to retrieve value from
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Cvar value, converted to float
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native Float:get_pcvar_float(pcvar);
 | 
			
		||||
 | 
			
		||||
@@ -361,7 +381,8 @@ native Float:get_pcvar_float(pcvar);
 | 
			
		||||
 * @param num       Value to set cvar to
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native set_pcvar_float(pcvar, Float:num);
 | 
			
		||||
 | 
			
		||||
@@ -373,7 +394,8 @@ native set_pcvar_float(pcvar, Float:num);
 | 
			
		||||
 * @param maxlen    Maximum size of the buffer
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Number of cells written to buffer.
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native get_pcvar_string(pcvar, string[], maxlen);
 | 
			
		||||
 | 
			
		||||
@@ -384,40 +406,36 @@ native get_pcvar_string(pcvar, string[], maxlen);
 | 
			
		||||
 * @param string    Value to set cvar to
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer is specified, an error is thrown.
 | 
			
		||||
 * @error           If an invalid cvar pointer is provided, an error will be
 | 
			
		||||
 *                  thrown.
 | 
			
		||||
 */
 | 
			
		||||
native set_pcvar_string(pcvar, const string[]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Cvar bound values used with get/set_pcvar_bounds()
 | 
			
		||||
 */
 | 
			
		||||
enum CvarBounds
 | 
			
		||||
{
 | 
			
		||||
    CvarBound_Upper = 0,
 | 
			
		||||
    CvarBound_Lower
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves the specified value bounds of a cvar.
 | 
			
		||||
 * Retrieves the specified value boundary of a cvar.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pcvar     Pointer to cvar
 | 
			
		||||
 * @param type      Type of bound to retrieve, CvarBound_Lower or CvarBound_Upper
 | 
			
		||||
 * @param value     Variable to store the specified bound to
 | 
			
		||||
 * @param type      Type of boundary to retrieve
 | 
			
		||||
 * @param value     Variable to store the specified boundary to
 | 
			
		||||
 *
 | 
			
		||||
 * @return          True if the cvar has the specified bound set, false otherwise.
 | 
			
		||||
 * @error           If an invalid cvar pointer or CvarBounds value, an error is thrown.
 | 
			
		||||
 * @return          True if the cvar has a boundary set, false otherwise
 | 
			
		||||
 * @error           If an invalid cvar pointer or boundary type is provided,
 | 
			
		||||
 *                  an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bool:get_pcvar_bounds(pcvar, CvarBounds:type, &Float:value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Sets the specified bounds of a cvar.
 | 
			
		||||
 * Sets the specified boundary of a cvar.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pcvar     Pointer to cvar
 | 
			
		||||
 * @param type      Type of bound to set, CvarBound_Lower or CvarBound_Upper
 | 
			
		||||
 * @param set       If set to true, cvar will use specified bound. If false, bound will be removed
 | 
			
		||||
 * @param value     Floating point value to use as the specified bound
 | 
			
		||||
 * @param type      Type of boundary to set
 | 
			
		||||
 * @param set       If true the cvar boundary will be set, otherwise it will be
 | 
			
		||||
 *                  removed (value is ignored)
 | 
			
		||||
 * @param value     Floating point value to use as the boundary
 | 
			
		||||
 *
 | 
			
		||||
 * @error           If an invalid cvar pointer or CvarBounds value, an error is thrown.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer or boundary type is provided, an
 | 
			
		||||
 *                  error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native set_pcvar_bounds(pcvar, CvarBounds:type, bool:set, Float:value = 0.0);
 | 
			
		||||
 | 
			
		||||
@@ -432,7 +450,9 @@ native set_pcvar_bounds(pcvar, CvarBounds:type, bool:set, Float:value = 0.0);
 | 
			
		||||
 * @param pcvar     Pointer to cvar
 | 
			
		||||
 * @param var       Global variable to keep updated
 | 
			
		||||
 *
 | 
			
		||||
 * @error           Invalid cvar pointer, invalid provided variable or cvar/variable already binded.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer or variable is provided, an error
 | 
			
		||||
 *                  will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bind_pcvar_num(pcvar, &any:var);
 | 
			
		||||
 | 
			
		||||
@@ -447,7 +467,9 @@ native bind_pcvar_num(pcvar, &any:var);
 | 
			
		||||
 * @param pcvar     Pointer to cvar
 | 
			
		||||
 * @param var       Global variable to keep updated
 | 
			
		||||
 *
 | 
			
		||||
 * @error           Invalid cvar pointer, invalid provided variable or cvar/variable already binded.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer or variable is provided, an error
 | 
			
		||||
 *                  will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bind_pcvar_float(pcvar, &Float:var);
 | 
			
		||||
 | 
			
		||||
@@ -463,7 +485,9 @@ native bind_pcvar_float(pcvar, &Float:var);
 | 
			
		||||
 * @param var       Global array to keep updated
 | 
			
		||||
 * @param varlen    Maximum length of string array
 | 
			
		||||
 *
 | 
			
		||||
 * @error           Invalid cvar pointer, invalid provided variable or cvar/variable already binded.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error           If an invalid cvar pointer or variable is provided, an error
 | 
			
		||||
 *                  will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native bind_pcvar_string(pcvar, any:var[], varlen);
 | 
			
		||||
 | 
			
		||||
@@ -475,13 +499,14 @@ native bind_pcvar_string(pcvar, any:var[], varlen);
 | 
			
		||||
native get_plugins_cvarsnum();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves information about a plugin-registered cvar.
 | 
			
		||||
 * Retrieves information about a plugin-registered cvar via iterative access.
 | 
			
		||||
 *
 | 
			
		||||
 * @note The returned cvar pointer should be used with the get_pcvar_* and
 | 
			
		||||
 *       set_pcvar_* set of functions.
 | 
			
		||||
 * @note The cvar index does not equal the cvar pointer. It is the internal
 | 
			
		||||
 *       AMXX id of a cvar, incremented for each registered cvar.
 | 
			
		||||
 *
 | 
			
		||||
 * @param num           Cvar index, this does not equal the cvar pointer, it is
 | 
			
		||||
 *                      the internal index, incremented for each registered cvar
 | 
			
		||||
 * @param num           Index to retrieve
 | 
			
		||||
 * @param name          Buffer to copy cvar name to
 | 
			
		||||
 * @param namelen       Maximum buffer size
 | 
			
		||||
 * @param flags         Variable to store cvar flags to
 | 
			
		||||
@@ -492,7 +517,7 @@ native get_plugins_cvarsnum();
 | 
			
		||||
 *
 | 
			
		||||
 * @return              1 on success, 0 if index is invalid
 | 
			
		||||
 */
 | 
			
		||||
native get_plugins_cvar(num, name[], namelen, &flags=0, &plugin_id=0, &pcvar_handle=0, description[]="", desc_len=0);
 | 
			
		||||
native get_plugins_cvar(num, name[], namelen, &flags = 0, &plugin_id = 0, &pcvar_handle = 0, description[] = "", desc_len = 0);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Dispatches a client cvar query, allowing the plugin to query for its value on
 | 
			
		||||
@@ -502,10 +527,10 @@ native get_plugins_cvar(num, name[], namelen, &flags=0, &plugin_id=0, &pcvar_han
 | 
			
		||||
 *
 | 
			
		||||
 * public cvar_query_callback(id, const cvar[], const value[], const param[])
 | 
			
		||||
 *
 | 
			
		||||
 *  id      - Client index
 | 
			
		||||
 *  cvar    - Cvar queried
 | 
			
		||||
 *  value   - Cvar value on the client
 | 
			
		||||
 *  param   - Extra data [optional]
 | 
			
		||||
 *   id      - Client index
 | 
			
		||||
 *   cvar    - Cvar queried
 | 
			
		||||
 *   value   - Cvar value on the client
 | 
			
		||||
 *   param   - Optional extra data
 | 
			
		||||
 *
 | 
			
		||||
 * @param id            Client index
 | 
			
		||||
 * @param cvar          Cvar to query
 | 
			
		||||
@@ -515,10 +540,8 @@ native get_plugins_cvar(num, name[], namelen, &flags=0, &plugin_id=0, &pcvar_han
 | 
			
		||||
 *
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error               If the client index is not within the range of 1 to
 | 
			
		||||
 *                      MaxClients or the client is not connected, an error
 | 
			
		||||
 *                      will be thrown.
 | 
			
		||||
 *                      If the callback function is invalid, cvar querying is
 | 
			
		||||
 *                      unavailable or the querying process runs out of memory,
 | 
			
		||||
 *                      an error will be thrown.
 | 
			
		||||
 *                      MaxClients, the client is not connected, the callback
 | 
			
		||||
 *                      function is invalid or the querying process encounters
 | 
			
		||||
 *                      a problem, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native query_client_cvar(id, const cvar[], const resultFunc[], paramlen=0, const params[]="");
 | 
			
		||||
native query_client_cvar(id, const cvar[], const resultFunc[], paramlen = 0, const params[] = "");
 | 
			
		||||
 
 | 
			
		||||
@@ -10,129 +10,142 @@
 | 
			
		||||
#if defined _datapack_included
 | 
			
		||||
	#endinput
 | 
			
		||||
#endif
 | 
			
		||||
#define _datapack_included	
 | 
			
		||||
#define _datapack_included
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * DataPacks are a way to store and move around various types of data in AMX Mod X Scripting. 
 | 
			
		||||
 * Since some things are not possible in AMX Mod X, such as a function consuming a String, 
 | 
			
		||||
 * DataPacks help us get these Strings and other items where they need to go.
 | 
			
		||||
 * Datapack tag declaration
 | 
			
		||||
 *
 | 
			
		||||
 * @note Datapacks provide a way to store and move around arbitrary amounts (and
 | 
			
		||||
 *       types) of data in AMX Mox X. Data is packed into a single cell value -
 | 
			
		||||
 *       the DataPack handle. This handle can be passed around more easily, can
 | 
			
		||||
 *       be returned by functions and can simulate advanced concepts like string
 | 
			
		||||
 *       consummation.
 | 
			
		||||
 * @note Plugins are responsible for freeing all datapack handles they acquire.
 | 
			
		||||
 *       Failing to free handles will result in the plugin and AMXX leaking
 | 
			
		||||
 *       memory.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
enum DataPack
 | 
			
		||||
{
 | 
			
		||||
	Invalid_DataPack = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Creates a new data pack.
 | 
			
		||||
 * Creates a new datapack.
 | 
			
		||||
 *
 | 
			
		||||
 * @return			A Handle to the data pack.
 | 
			
		||||
 * @return  New datapack handle, which must be freed via DestroyDataPack().
 | 
			
		||||
 */
 | 
			
		||||
native DataPack:CreateDataPack();
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Packs a normal cell into a data pack.
 | 
			
		||||
 * Packs a cell value into a datapack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 * @param cell      Cell value to pack
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @param cell		Cell to add.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @error           If an invalid handle is provided, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native WritePackCell(DataPack:pack, any:cell);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Packs a float into a data pack.
 | 
			
		||||
 * Packs a float value into a datapack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 * @param val       Float value to pack
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @param val		Float to add.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @error           If an invalid handle is provided, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native WritePackFloat(DataPack:pack, Float:val);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Packs a string into a data pack.
 | 
			
		||||
 * Packs a string into a datapack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @param str		String to add.
 | 
			
		||||
 * @return			Length of copied string.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 * @param str       String to pack
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Length of copied string
 | 
			
		||||
 * @error           If an invalid handle is provided, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native WritePackString(DataPack:pack, const str[]);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Reads a cell from a data pack.
 | 
			
		||||
 * Reads a cell from a Datapack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @return			Cell value.
 | 
			
		||||
 * @error			Invalid handle, or bounds error.
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Cell value
 | 
			
		||||
 * @error           If an invalid handle is provided, or not enough data is left
 | 
			
		||||
 *                  in the datapack, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native any:ReadPackCell(DataPack:pack);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Reads a float from a data pack.
 | 
			
		||||
 * Reads a float from a datapack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @return			Float value.
 | 
			
		||||
 * @error			Invalid handle, or bounds error.
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Float value
 | 
			
		||||
 * @error           If an invalid handle is provided, or not enough data is left
 | 
			
		||||
 *                  in the datapack, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native Float:ReadPackFloat(DataPack:pack);
 | 
			
		||||
native Float:ReadPackFloat(datapack:pack);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Reads a string from a data pack.
 | 
			
		||||
 * Reads a string from a Datapack.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @param buffer	Destination string buffer.
 | 
			
		||||
 * @param maxlen	Maximum length of output string buffer.
 | 
			
		||||
 * @return			Length of output string.
 | 
			
		||||
 * @error			Invalid handle, or bounds error.
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 * @param buffer    Buffer to copy string to
 | 
			
		||||
 * @param maxlen    Maximum size of buffer
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Number of cells written to buffer
 | 
			
		||||
 * @error           If an invalid handle is provided, or not enough data is left
 | 
			
		||||
 *                  in the datapack, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native ReadPackString(DataPack:pack, buffer[], maxlen);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Resets the position in a data pack.
 | 
			
		||||
 * Resets the datapack read/write position to the start.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 * @param clear     If true, clears the contained data
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @param clear		If true, clears the contained data.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @error           If an invalid handle is provided, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native ResetPack(DataPack:pack, bool:clear=false);
 | 
			
		||||
native ResetPack(DataPack:pack, bool:clear = false);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the read or write position in a data pack.
 | 
			
		||||
 * Returns the datapack read/write position.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @return			Numerical position in the data pack.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 *
 | 
			
		||||
 * @return          Position in the datapack
 | 
			
		||||
 * @error           If an invalid handle is provided, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native GetPackPosition(DataPack:pack);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Sets the read/write position in a data pack.
 | 
			
		||||
 * Sets the datapack read/write position.
 | 
			
		||||
 *
 | 
			
		||||
 * @note This should only ever be used with (known to be valid) positions
 | 
			
		||||
 *       returned by GetPackPosition(). It is not possible for plugins to safely
 | 
			
		||||
 *       compute datapack positions.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 * @param position  New position to set
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @param position	New position to set.
 | 
			
		||||
 * @noreturn
 | 
			
		||||
 * @error			Invalid handle, or position is beyond the pack bounds.
 | 
			
		||||
 * @error           If an invalid handle is provided, or the new position is
 | 
			
		||||
 *                  out of datapack bounds, an error will be thrown.
 | 
			
		||||
 */
 | 
			
		||||
native SetPackPosition(DataPack:pack, position);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns whether or not a specified number of bytes from the data pack
 | 
			
		||||
 *  position to the end can be read.
 | 
			
		||||
 * Destroys the datapack and frees its memory.
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @param bytes		Number of bytes to simulate reading.
 | 
			
		||||
 * @return			True if can be read, false otherwise.
 | 
			
		||||
 * @error			Invalid handle.
 | 
			
		||||
 */
 | 
			
		||||
native bool:IsPackReadable(DataPack:pack, bytes);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Disposes of a data pack.
 | 
			
		||||
 * @param pack      Datapack handle
 | 
			
		||||
 *
 | 
			
		||||
 * @param pack		Handle to the data pack.
 | 
			
		||||
 * @return			True if disposed, false otherwise.
 | 
			
		||||
 * @return          True if disposed, false otherwise
 | 
			
		||||
 */
 | 
			
		||||
native DestroyDataPack(&DataPack:pack);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user