2014-08-04 12:12:15 +00:00
|
|
|
// vim: set ts=4 sw=4 tw=99 noet:
|
|
|
|
//
|
|
|
|
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
|
|
|
|
// Copyright (C) The AMX Mod X Development Team.
|
|
|
|
//
|
|
|
|
// This software is licensed under the GNU General Public License, version 3 or higher.
|
|
|
|
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
|
|
|
|
// https://alliedmods.net/amxmodx-license
|
|
|
|
|
|
|
|
//
|
|
|
|
// CSX Functions
|
|
|
|
//
|
2004-10-04 08:09:52 +00:00
|
|
|
|
|
|
|
#if defined _csx_included
|
2015-02-24 21:51:36 +00:00
|
|
|
#endinput
|
2004-10-04 08:09:52 +00:00
|
|
|
#endif
|
|
|
|
#define _csx_included
|
|
|
|
|
|
|
|
#include <csstats>
|
|
|
|
|
2006-05-10 10:42:49 +00:00
|
|
|
#if AMXX_VERSION_NUM >= 175
|
|
|
|
#pragma reqclass xstats
|
|
|
|
#if !defined AMXMODX_NOAUTOLOAD
|
|
|
|
#pragma defclasslib xstats csx
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
#pragma library csx
|
|
|
|
#endif
|
2005-07-15 19:05:31 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* Map objective flags returned by get_map_objectives().
|
2006-05-10 10:42:49 +00:00
|
|
|
*/
|
2015-02-18 15:24:04 +00:00
|
|
|
enum MapObjective
|
|
|
|
{
|
2015-02-24 21:51:36 +00:00
|
|
|
MapObjective_Bomb = (1<<0),
|
|
|
|
MapObjective_Hostage = (1<<1),
|
|
|
|
MapObjective_Vip = (1<<2),
|
|
|
|
MapObjective_Escape = (1<<3),
|
2015-02-18 15:24:04 +00:00
|
|
|
};
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* Called after a client attacks another client.
|
|
|
|
*
|
|
|
|
* @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);
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* 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);
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* 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);
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* Called after a bomb plant attempt has started.
|
|
|
|
*
|
|
|
|
* @param planter Planter client index
|
|
|
|
*
|
|
|
|
* @noreturn
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
forward bomb_planting(planter);
|
2015-02-18 15:24:04 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Called after a bomb plant has finished.
|
|
|
|
*
|
|
|
|
* @param planter Planter client index
|
|
|
|
*
|
|
|
|
* @noreturn
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
forward bomb_planted(planter);
|
2015-02-18 15:24:04 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
forward bomb_defusing(defuser);
|
2015-02-18 15:24:04 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Called after a bomb defuse has finished.
|
|
|
|
*
|
|
|
|
* @param defuser Defuser client index
|
|
|
|
*
|
|
|
|
* @noreturn
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
forward bomb_defused(defuser);
|
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* @section Shared natives
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* 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[] = "");
|
|
|
|
|
|
|
|
/**
|
2015-02-24 21:51:36 +00:00
|
|
|
* Triggers a damage event on a custom weapon, adding it to the internal stats.
|
2015-02-18 15:24:04 +00:00
|
|
|
*
|
|
|
|
* @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);
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
2015-02-24 21:51:36 +00:00
|
|
|
* Adds a shot event on a custom weapon to the internal stats.
|
2015-02-18 15:24:04 +00:00
|
|
|
*
|
|
|
|
* @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.
|
|
|
|
*/
|
2015-02-24 21:51:36 +00:00
|
|
|
native custom_weapon_shot(weapon, index);
|
2015-02-18 15:24:04 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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.
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
native xmod_is_melee_wpn(wpnindex);
|
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* 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);
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* 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);
|
2004-10-04 08:09:52 +00:00
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* Returns the maximum amount of weapons that the stats system supports.
|
|
|
|
*
|
|
|
|
* @return Maximum number of weapons supported
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
native xmod_get_maxweapons();
|
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* Returns the number of stats tracked by the stats system.
|
|
|
|
*
|
|
|
|
* @return Number of stats tracked
|
|
|
|
*/
|
2004-10-04 08:09:52 +00:00
|
|
|
native xmod_get_stats_size();
|
|
|
|
|
2015-02-18 15:24:04 +00:00
|
|
|
/**
|
|
|
|
* @endsection Shared natives
|
|
|
|
*/
|
2013-08-08 17:11:12 +00:00
|
|
|
|
|
|
|
/**
|
2015-02-18 15:24:04 +00:00
|
|
|
* Returns the current map's objectives as a bitflag value.
|
|
|
|
*
|
|
|
|
* @note For a list of possible map objective flags see the MapObjective enum.
|
2013-08-08 17:11:12 +00:00
|
|
|
*
|
2015-02-18 15:24:04 +00:00
|
|
|
* @return Bitflag value of map objectives
|
2013-08-08 17:11:12 +00:00
|
|
|
*/
|
|
|
|
native MapObjective:get_map_objectives();
|