423 lines
13 KiB
SourcePawn
423 lines
13 KiB
SourcePawn
/**
|
|
* vim: set ts=4 :
|
|
* =============================================================================
|
|
* SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved.
|
|
* =============================================================================
|
|
*
|
|
* This file is part of the SourceMod/SourcePawn SDK.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License, version 3.0, as published by the
|
|
* Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* As a special exception, AlliedModders LLC gives you permission to link the
|
|
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
|
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
|
* by the Valve Corporation. You must obey the GNU General Public License in
|
|
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
|
* this exception to all derivative works. AlliedModders LLC defines further
|
|
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
|
* or <http://www.sourcemod.net/license.php>.
|
|
*
|
|
* Version: $Id$
|
|
*/
|
|
|
|
#if defined _cstrike_included
|
|
#endinput
|
|
#endif
|
|
#define _cstrike_included
|
|
|
|
#define CS_TEAM_NONE 0 /**< No team yet. */
|
|
#define CS_TEAM_SPECTATOR 1 /**< Spectators. */
|
|
#define CS_TEAM_T 2 /**< Terrorists. */
|
|
#define CS_TEAM_CT 3 /**< Counter-Terrorists. */
|
|
|
|
#define CS_SLOT_PRIMARY 0 /**< Primary weapon slot. */
|
|
#define CS_SLOT_SECONDARY 1 /**< Secondary weapon slot. */
|
|
#define CS_SLOT_KNIFE 2 /**< Knife slot. */
|
|
#define CS_SLOT_GRENADE 3 /**< Grenade slot (will only return one grenade). */
|
|
#define CS_SLOT_C4 4 /**< C4 slot. */
|
|
|
|
#define CS_DMG_HEADSHOT (1 << 30) /**< Headshot */
|
|
|
|
enum CSRoundEndReason
|
|
{
|
|
CSRoundEnd_TargetBombed = 0, /**< Target Successfully Bombed! */
|
|
CSRoundEnd_VIPEscaped, /**< The VIP has escaped! */
|
|
CSRoundEnd_VIPKilled, /**< VIP has been assassinated! */
|
|
CSRoundEnd_TerroristsEscaped, /**< The terrorists have escaped! */
|
|
CSRoundEnd_CTStoppedEscape, /**< The CTs have prevented most of the terrorists from escaping! */
|
|
CSRoundEnd_TerroristsStopped, /**< Escaping terrorists have all been neutralized! */
|
|
CSRoundEnd_BombDefused, /**< The bomb has been defused! */
|
|
CSRoundEnd_CTWin, /**< Counter-Terrorists Win! */
|
|
CSRoundEnd_TerroristWin, /**< Terrorists Win! */
|
|
CSRoundEnd_Draw, /**< Round Draw! */
|
|
CSRoundEnd_HostagesRescued, /**< All Hostages have been rescued! */
|
|
CSRoundEnd_TargetSaved, /**< Target has been saved! */
|
|
CSRoundEnd_HostagesNotRescued, /**< Hostages have not been rescued! */
|
|
CSRoundEnd_TerroristsNotEscaped, /**< Terrorists have not escaped! */
|
|
CSRoundEnd_VIPNotEscaped, /**< VIP has not escaped! */
|
|
CSRoundEnd_GameStart, /**< Game Commencing! */
|
|
|
|
// The below only exist on CS:GO
|
|
CSRoundEnd_TerroristsSurrender, /**< Terrorists Surrender */
|
|
CSRoundEnd_CTSurrender, /**< CTs Surrender */
|
|
};
|
|
|
|
enum CSWeaponID
|
|
{
|
|
CSWeapon_NONE = 0,
|
|
CSWeapon_P228,
|
|
CSWeapon_GLOCK,
|
|
CSWeapon_SCOUT,
|
|
CSWeapon_HEGRENADE,
|
|
CSWeapon_XM1014,
|
|
CSWeapon_C4,
|
|
CSWeapon_MAC10,
|
|
CSWeapon_AUG,
|
|
CSWeapon_SMOKEGRENADE,
|
|
CSWeapon_ELITE,
|
|
CSWeapon_FIVESEVEN,
|
|
CSWeapon_UMP45,
|
|
CSWeapon_SG550,
|
|
CSWeapon_GALIL,
|
|
CSWeapon_FAMAS,
|
|
CSWeapon_USP,
|
|
CSWeapon_AWP,
|
|
CSWeapon_MP5NAVY,
|
|
CSWeapon_M249,
|
|
CSWeapon_M3,
|
|
CSWeapon_M4A1,
|
|
CSWeapon_TMP,
|
|
CSWeapon_G3SG1,
|
|
CSWeapon_FLASHBANG,
|
|
CSWeapon_DEAGLE,
|
|
CSWeapon_SG552,
|
|
CSWeapon_AK47,
|
|
CSWeapon_KNIFE,
|
|
CSWeapon_P90,
|
|
CSWeapon_SHIELD,
|
|
CSWeapon_KEVLAR,
|
|
CSWeapon_ASSAULTSUIT,
|
|
CSWeapon_NIGHTVISION,
|
|
CSWeapon_GALILAR,
|
|
CSWeapon_BIZON,
|
|
CSWeapon_MAG7,
|
|
CSWeapon_NEGEV,
|
|
CSWeapon_SAWEDOFF,
|
|
CSWeapon_TEC9,
|
|
CSWeapon_TASER,
|
|
CSWeapon_HKP2000,
|
|
CSWeapon_MP7,
|
|
CSWeapon_MP9,
|
|
CSWeapon_NOVA,
|
|
CSWeapon_P250,
|
|
CSWeapon_SCAR17,
|
|
CSWeapon_SCAR20,
|
|
CSWeapon_SG556,
|
|
CSWeapon_SSG08,
|
|
CSWeapon_KNIFE_GG,
|
|
CSWeapon_MOLOTOV,
|
|
CSWeapon_DECOY,
|
|
CSWeapon_INCGRENADE,
|
|
CSWeapon_DEFUSER
|
|
};
|
|
|
|
/**
|
|
* Called when a player attempts to purchase an item.
|
|
* Return Plugin_Continue to allow the purchase or return a
|
|
* higher action to deny.
|
|
*
|
|
* @param client Client index
|
|
* @param weapon User input for weapon name
|
|
*/
|
|
forward Action:CS_OnBuyCommand(client, const String:weapon[]);
|
|
|
|
/**
|
|
* Called when CSWeaponDrop is called
|
|
* Return Plugin_Continue to allow the call or return a
|
|
* higher action to deny.
|
|
*
|
|
* @param client Client index
|
|
* @param weaponIndex Weapon index
|
|
*/
|
|
forward Action:CS_OnCSWeaponDrop(client, weaponIndex);
|
|
|
|
/**
|
|
* Called when game retrieves a weapon's price for a player.
|
|
* Return Plugin_Continue to use default value or return a higher
|
|
* action to use a newly-set price.
|
|
*
|
|
* @note This can be called multiple times per weapon purchase
|
|
*
|
|
* @param client Client index
|
|
* @param weapon Weapon classname
|
|
* @param price Buffer param for the price of the weapon
|
|
*
|
|
* @note Not all "weapons" call GetWeaponPrice. Example: c4, knife, vest, vest helmet, night vision.
|
|
*/
|
|
forward Action:CS_OnGetWeaponPrice(client, const String:weapon[], &price);
|
|
|
|
/**
|
|
* Called when TerminateRound is called.
|
|
* Return Plugin_Continue to ignore, return Plugin_Changed to continue,
|
|
* using the given delay and reason, or return Plugin_Handled or a higher
|
|
* action to block TerminateRound from firing.
|
|
*
|
|
* @param delay Time (in seconds) until new round starts
|
|
* @param reason Reason for round end
|
|
*/
|
|
forward Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason);
|
|
|
|
/**
|
|
* Respawns a player.
|
|
*
|
|
* @param client Player's index.
|
|
* @noreturn
|
|
* @error Invalid client index, client not in game.
|
|
*/
|
|
native CS_RespawnPlayer(client);
|
|
|
|
/**
|
|
* Switches the player's team.
|
|
*
|
|
* @param client Player's index.
|
|
* @param team Team index.
|
|
* @noreturn
|
|
* @error Invalid client index, client not in game.
|
|
*/
|
|
native CS_SwitchTeam(client, team);
|
|
|
|
/**
|
|
* Forces a player to drop or toss their weapon
|
|
*
|
|
* @param client Player's index.
|
|
* @param weaponIndex Index of weapon to drop.
|
|
* @param toss True to toss weapon (with velocity) or false to just drop weapon
|
|
* @param blockhook Set to true to stop the corresponding CS_OnCSWeaponDrop
|
|
*
|
|
* @noreturn
|
|
* @error Invalid client index, client not in game, or invalid weapon index.
|
|
*/
|
|
native CS_DropWeapon(client, weaponIndex, bool:toss, bool:blockhook = false);
|
|
|
|
/**
|
|
* Forces round to end with a reason
|
|
*
|
|
* @param delay Time (in seconds) to delay before new round starts
|
|
* @param reason Reason for the round ending
|
|
* @param blockhook Set to true to stop the corresponding CS_OnTerminateRound
|
|
* forward from being called.
|
|
* @noreturn
|
|
*/
|
|
native CS_TerminateRound(Float:delay, CSRoundEndReason:reason, bool:blockhook = false);
|
|
|
|
/**
|
|
* Gets a weapon name from a weapon alias
|
|
*
|
|
* @param alias Weapons alias to get weapon name for.
|
|
* @param weapon Buffer to store weapons name
|
|
* @param size Size of buffer to store the weapons name.
|
|
* @noreturn
|
|
*
|
|
* @note Will set the buffer to the original alias if it is not an alias to a weapon.
|
|
*/
|
|
native CS_GetTranslatedWeaponAlias(const String:alias[], String:weapon[], size);
|
|
|
|
/**
|
|
* Gets a weapon's price
|
|
*
|
|
* @param client Client to check weapon price for.
|
|
* @param id Weapon id for the weapon to check
|
|
* @param defaultprice Set to true to get defaultprice.
|
|
* @return Returns price of the weapon (even if modified)
|
|
*
|
|
* @error Invalid client, failing to get weapon info, or failing to get price offset.
|
|
* @note c4, knife and shield will always return 0. vest, vest helmet and night vision will always return default price.
|
|
*/
|
|
native CS_GetWeaponPrice(client, CSWeaponID:id, bool:defaultprice = false);
|
|
|
|
/**
|
|
* Gets a clients clan tag
|
|
* @param client Client index to get clan tag for.
|
|
* @param buffer Buffer to store clients clan tag in.
|
|
* @param size Size of the buffer.
|
|
* @return Number of non-null bytes written.
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_GetClientClanTag(client, String:buffer[], size);
|
|
|
|
/**
|
|
* Sets a clients clan tag
|
|
* @param client Client index to set clan tag for.
|
|
* @param tag Tag to set clients clan tag as.
|
|
* @noreturn
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_SetClientClanTag(client, const String:tag[]);
|
|
|
|
/**
|
|
* Gets a team's score
|
|
* @param team Team index to get score for.
|
|
* @return Returns the internal team score.
|
|
*
|
|
* @error Invalid team index.
|
|
*/
|
|
native CS_GetTeamScore(team);
|
|
|
|
/**
|
|
* Sets a team's score
|
|
* @param team Team index to set score for.
|
|
* @param value Value to set teams score as.
|
|
* @noreturn
|
|
*
|
|
* @error Invalid team index.
|
|
* @note This will update the scoreboard only after the scoreboard update function is called. Use SetTeamScore plus this to update the scoreboard instantly and save values correctly.
|
|
*/
|
|
native CS_SetTeamScore(team, value);
|
|
|
|
/**
|
|
* Gets a client's mvp count
|
|
* @param client Client index to get mvp count of.
|
|
* @return Returns the client's internal MVP count.
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_GetMVPCount(client);
|
|
|
|
/**
|
|
* Sets a client's mvp count
|
|
* @param client Client index to set mvp count for.
|
|
* @param value Value to set client's mvp count as.
|
|
* @noreturn
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_SetMVPCount(client, value);
|
|
|
|
/**
|
|
* Gets a client's contribution score (CS:GO only)
|
|
* @param client Client index to get score of.
|
|
* @return Returns the client's score.
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_GetClientContributionScore(client);
|
|
|
|
/**
|
|
* Sets a client's contribution score (CS:GO only)
|
|
* @param client Client index to set score for.
|
|
* @param value Value to set client's score as.
|
|
* @noreturn
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_SetClientContributionScore(client, value);
|
|
|
|
/**
|
|
* Gets a client's assists (CS:GO only)
|
|
* @param client Client index to get assists of.
|
|
* @return Returns the client's assists.
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_GetClientAssists(client);
|
|
|
|
/**
|
|
* Sets a client's assists (CS:GO only)
|
|
* @param client Client index to set assists for.
|
|
* @param value Value to set client's assists as.
|
|
* @noreturn
|
|
*
|
|
* @error Invalid client.
|
|
*/
|
|
native CS_SetClientAssists(client, value);
|
|
|
|
/**
|
|
* Gets a weaponID from a alias
|
|
* @param alias Weapon alias to attempt to get an id for.
|
|
* @return Returns a weapon id or 0 if failed to find a match.
|
|
*
|
|
* @note For best results use CS_GetTranslatedWeaponAlias on the weapon name before passing it.
|
|
*/
|
|
native CSWeaponID:CS_AliasToWeaponID(const String:alias[]);
|
|
|
|
/**
|
|
* Gets a alias from a weaponID
|
|
* @param weaponID WeaponID to get alias for.
|
|
* @param destination Destination string to hold the weapon alias.
|
|
* @param len Length of the destination array.
|
|
* @return Returns number of cells written.
|
|
*/
|
|
native CS_WeaponIDToAlias(CSWeaponID:weaponID, String:destination[], len);
|
|
|
|
/**
|
|
* Returns weather a WeaponID is valid on the current mod (css or csgo)
|
|
* @param weaponID WeaponID to check
|
|
* @return Returns true if its a valid WeaponID false otherwise.
|
|
*
|
|
* @note This will return false always for CSWeapon_NONE
|
|
*/
|
|
native bool:CS_IsValidWeaponID(CSWeaponID:id);
|
|
|
|
/**
|
|
* Sets a player's model based on their current class
|
|
*
|
|
* @param client Player's index.
|
|
* @noreturn
|
|
* @error Invalid client index, client not in game.
|
|
*/
|
|
native CS_UpdateClientModel(client);
|
|
|
|
/**
|
|
* Do not edit below this line!
|
|
*/
|
|
public Extension:__ext_cstrike =
|
|
{
|
|
name = "cstrike",
|
|
file = "games/game.cstrike.ext",
|
|
autoload = 0,
|
|
#if defined REQUIRE_EXTENSIONS
|
|
required = 1,
|
|
#else
|
|
required = 0,
|
|
#endif
|
|
};
|
|
|
|
#if !defined REQUIRE_EXTENSIONS
|
|
public __ext_cstrike_SetNTVOptional()
|
|
{
|
|
MarkNativeAsOptional("CS_RespawnPlayer");
|
|
MarkNativeAsOptional("CS_SwitchTeam");
|
|
MarkNativeAsOptional("CS_DropWeapon");
|
|
MarkNativeAsOptional("CS_TerminateRound");
|
|
MarkNativeAsOptional("CS_GetTranslatedWeaponAlias");
|
|
MarkNativeAsOptional("CS_GetWeaponPrice");
|
|
MarkNativeAsOptional("CS_GetClientClanTag");
|
|
MarkNativeAsOptional("CS_SetClientClanTag");
|
|
MarkNativeAsOptional("CS_GetTeamScore");
|
|
MarkNativeAsOptional("CS_SetTeamScore");
|
|
MarkNativeAsOptional("CS_GetMVPCount");
|
|
MarkNativeAsOptional("CS_SetMVPCount");
|
|
MarkNativeAsOptional("CS_GetClientContributionScore");
|
|
MarkNativeAsOptional("CS_SetClientContributionScore");
|
|
MarkNativeAsOptional("CS_GetClientAssists");
|
|
MarkNativeAsOptional("CS_SetClientAssists");
|
|
MarkNativeAsOptional("CS_AliasToWeaponID");
|
|
MarkNativeAsOptional("CS_WeaponIDToAlias");
|
|
MarkNativeAsOptional("CS_IsValidWeaponID");
|
|
MarkNativeAsOptional("CS_UpdateClientModel");
|
|
}
|
|
#endif
|
|
|