Move ConVar API into its own include.
This commit is contained in:
		
							parent
							
								
									801b7ec9e2
								
							
						
					
					
						commit
						affff9eeb7
					
				| @ -37,15 +37,6 @@ | |||||||
| 
 | 
 | ||||||
| #define INVALID_FCVAR_FLAGS		(-1)
 | #define INVALID_FCVAR_FLAGS		(-1)
 | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Console variable bound values used with Get/SetConVarBounds() |  | ||||||
|  */ |  | ||||||
| enum ConVarBounds |  | ||||||
| { |  | ||||||
| 	ConVarBound_Upper = 0, |  | ||||||
| 	ConVarBound_Lower |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * Console variable query helper values. |  * Console variable query helper values. | ||||||
|  */ |  */ | ||||||
| @ -63,17 +54,6 @@ enum ReplySource | |||||||
| 	SM_REPLY_TO_CHAT = 1, | 	SM_REPLY_TO_CHAT = 1, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Console variable query result values. |  | ||||||
|  */ |  | ||||||
| enum ConVarQueryResult |  | ||||||
| { |  | ||||||
| 	ConVarQuery_Okay = 0,				/**< Retrieval of client convar value was successful. */ |  | ||||||
| 	ConVarQuery_NotFound,				/**< Client convar was not found. */ |  | ||||||
| 	ConVarQuery_NotValid,				/**< A console command with the same name was found, but there is no convar. */ |  | ||||||
| 	ConVarQuery_Protected				/**< Client convar was found, but it is protected. The server cannot retrieve its value. */ |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * @section Flags for console commands and console variables.  The descriptions  |  * @section Flags for console commands and console variables.  The descriptions  | ||||||
|  * for each constant come directly from the Source SDK. |  * for each constant come directly from the Source SDK. | ||||||
| @ -424,293 +404,6 @@ native GetCmdArg(argnum, String:buffer[], maxlength); | |||||||
|  */ |  */ | ||||||
| native GetCmdArgString(String:buffer[], maxlength); | native GetCmdArgString(String:buffer[], maxlength); | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Creates a new console variable. |  | ||||||
|  * |  | ||||||
|  * @param name			Name of new convar. |  | ||||||
|  * @param defaultValue	String containing the default value of new convar. |  | ||||||
|  * @param description	Optional description of the convar. |  | ||||||
|  * @param flags			Optional bitstring of flags determining how the convar should be handled. See FCVAR_* constants for more details. |  | ||||||
|  * @param hasMin		Optional boolean that determines if the convar has a minimum value. |  | ||||||
|  * @param min			Minimum floating point value that the convar can have if hasMin is true. |  | ||||||
|  * @param hasMax		Optional boolean that determines if the convar has a maximum value. |  | ||||||
|  * @param max			Maximum floating point value that the convar can have if hasMax is true. |  | ||||||
|  * @return				A handle to the newly created convar. If the convar already exists, a handle to it will still be returned. |  | ||||||
|  * @error				Convar name is blank or is the same as an existing console command. |  | ||||||
|  */ |  | ||||||
| native ConVar:CreateConVar(const String:name[], const String:defaultValue[], const String:description[]="", flags=0, bool:hasMin=false, Float:min=0.0, bool:hasMax=false, Float:max=0.0); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Searches for a console variable. |  | ||||||
|  * |  | ||||||
|  * @param name			Name of convar to find. |  | ||||||
|  * @return				A handle to the convar if it is found. INVALID_HANDLE otherwise. |  | ||||||
|  */ |  | ||||||
| native ConVar:FindConVar(const String:name[]); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Called when a console variable's value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar that was changed. |  | ||||||
|  * @param oldValue		String containing the value of the convar before it was changed. |  | ||||||
|  * @param newValue		String containing the new value of the convar. |  | ||||||
|  * @noreturn |  | ||||||
|  */ |  | ||||||
| typedef ConVarChanged = function void (ConVar convar, const char[] oldValue, const char[] newValue); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Creates a hook for when a console variable's value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param callback		An OnConVarChanged function pointer. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle or invalid callback function. |  | ||||||
|  */ |  | ||||||
| native HookConVarChange(Handle:convar, ConVarChanged:callback); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Removes a hook for when a console variable's value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param callback		An OnConVarChanged function pointer. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle, invalid callback function, or no active hook on convar. |  | ||||||
|  */ |  | ||||||
| native UnhookConVarChange(Handle:convar, ConVarChanged:callback); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Returns the boolean value of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @return				The boolean value of the convar. |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native bool:GetConVarBool(Handle:convar); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Sets the boolean value of a console variable. |  | ||||||
|  * |  | ||||||
|  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and |  | ||||||
|  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param value			New boolean value. |  | ||||||
|  * @param replicate		If set to true, the new convar value will be set on all clients. |  | ||||||
|  *						This will only work if the convar has the FCVAR_REPLICATED flag |  | ||||||
|  *						and actually exists on clients. |  | ||||||
|  * @param notify		If set to true, clients will be notified that the convar has changed. |  | ||||||
|  *						This will only work if the convar has the FCVAR_NOTIFY flag. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native SetConVarBool(Handle:convar, bool:value, bool:replicate=false, bool:notify=false); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Returns the integer value of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @return				The integer value of the convar. |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native GetConVarInt(Handle:convar); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Sets the integer value of a console variable. |  | ||||||
|  * |  | ||||||
|  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and |  | ||||||
|  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param value			New integer value. |  | ||||||
|  * @param replicate		If set to true, the new convar value will be set on all clients. |  | ||||||
|  *						This will only work if the convar has the FCVAR_REPLICATED flag |  | ||||||
|  *						and actually exists on clients. |  | ||||||
|  * @param notify		If set to true, clients will be notified that the convar has changed. |  | ||||||
|  *						This will only work if the convar has the FCVAR_NOTIFY flag. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native SetConVarInt(Handle:convar, value, bool:replicate=false, bool:notify=false); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Returns the floating point value of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @return				The floating point value of the convar. |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native Float:GetConVarFloat(Handle:convar); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Sets the floating point value of a console variable. |  | ||||||
|  * |  | ||||||
|  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and |  | ||||||
|  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param value			New floating point value. |  | ||||||
|  * @param replicate		If set to true, the new convar value will be set on all clients. |  | ||||||
|  *						This will only work if the convar has the FCVAR_REPLICATED flag |  | ||||||
|  *						and actually exists on clients. |  | ||||||
|  * @param notify		If set to true, clients will be notified that the convar has changed. |  | ||||||
|  *						This will only work if the convar has the FCVAR_NOTIFY flag. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native SetConVarFloat(Handle:convar, Float:value, bool:replicate=false, bool:notify=false); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Retrieves the string value of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param value			Buffer to store the value of the convar. |  | ||||||
|  * @param maxlength		Maximum length of string buffer. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle.      |  | ||||||
|  */ |  | ||||||
| native GetConVarString(Handle:convar, String:value[], maxlength); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Sets the string value of a console variable. |  | ||||||
|  * |  | ||||||
|  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and |  | ||||||
|  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param value			New string value. |  | ||||||
|  * @param replicate		If set to true, the new convar value will be set on all clients. |  | ||||||
|  *						This will only work if the convar has the FCVAR_REPLICATED flag |  | ||||||
|  *						and actually exists on clients. |  | ||||||
|  * @param notify		If set to true, clients will be notified that the convar has changed. |  | ||||||
|  *						This will only work if the convar has the FCVAR_NOTIFY flag. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native SetConVarString(Handle:convar, const String:value[], bool:replicate=false, bool:notify=false); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Resets the console variable to its default value. |  | ||||||
|  * |  | ||||||
|  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and |  | ||||||
|  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param replicate		If set to true, the new convar value will be set on all clients. |  | ||||||
|  *						This will only work if the convar has the FCVAR_REPLICATED flag |  | ||||||
|  *						and actually exists on clients. |  | ||||||
|  * @param notify		If set to true, clients will be notified that the convar has changed. |  | ||||||
|  *						This will only work if the convar has the FCVAR_NOTIFY flag. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native ResetConVar(Handle:convar, bool:replicate=false, bool:notify=false); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Retrieves the default string value of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param value			Buffer to store the default value of the convar. |  | ||||||
|  * @param maxlength		Maximum length of string buffer. |  | ||||||
|  * @return				Number of bytes written to the buffer (UTF-8 safe). |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native GetConVarDefault(Handle:convar, String:value[], maxlength); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Returns the bitstring of flags on a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @return				A bitstring containing the FCVAR_* flags that are enabled. |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native GetConVarFlags(Handle:convar); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Sets the bitstring of flags on a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param flags			A bitstring containing the FCVAR_* flags to enable. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native SetConVarFlags(Handle:convar, flags); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Retrieves the specified bound of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param type			Type of bound to retrieve, ConVarBound_Lower or ConVarBound_Upper. |  | ||||||
|  * @param value			By-reference cell to store the specified floating point bound value. |  | ||||||
|  * @return				True if the convar has the specified bound set, false otherwise. |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native bool:GetConVarBounds(Handle:convar, ConVarBounds:type, &Float:value); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Sets the specified bound of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param type			Type of bound to set, ConVarBound_Lower or ConVarBound_Upper |  | ||||||
|  * @param set			If set to true, convar will use specified bound. If false, bound will be removed. |  | ||||||
|  * @param value			Floating point value to use as the specified bound. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle. |  | ||||||
|  */ |  | ||||||
| native SetConVarBounds(Handle:convar, ConVarBounds:type, bool:set, Float:value=0.0); |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Retrieves the name of a console variable. |  | ||||||
|  * |  | ||||||
|  * @param convar		Handle to the convar. |  | ||||||
|  * @param name			Buffer to store the name of the convar. |  | ||||||
|  * @param maxlength		Maximum length of string buffer. |  | ||||||
|  * @noreturn |  | ||||||
|  * @error				Invalid or corrupt Handle.      |  | ||||||
|  */ |  | ||||||
| native GetConVarName(Handle:convar, String:name[], maxlength); |  | ||||||
| 
 |  | ||||||
| union ConVarQueryFinished |  | ||||||
| {	 |  | ||||||
| 	/** |  | ||||||
| 	 * Called when a query to retrieve a client's console variable has finished. |  | ||||||
| 	 * |  | ||||||
| 	 * @param cookie		Unique identifier of query. |  | ||||||
| 	 * @param client		Player index. |  | ||||||
| 	 * @param result		Result of query that tells one whether or not query was successful. |  | ||||||
| 	 *						See ConVarQueryResult enum for more details. |  | ||||||
| 	 * @param convarName	Name of client convar that was queried. |  | ||||||
| 	 * @param convarValue	Value of client convar that was queried if successful. This will be "" if it was not. |  | ||||||
| 	 * @param value			Value that was passed when query was started. |  | ||||||
| 	 * @noreturn |  | ||||||
| 	 */ |  | ||||||
| 	function void (QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvarName, const char[] cvarValue, any value); |  | ||||||
| 	 |  | ||||||
| 	/** |  | ||||||
| 	 * Called when a query to retrieve a client's console variable has finished. |  | ||||||
| 	 * |  | ||||||
| 	 * @param cookie		Unique identifier of query. |  | ||||||
| 	 * @param client		Player index. |  | ||||||
| 	 * @param result		Result of query that tells one whether or not query was successful. |  | ||||||
| 	 *						See ConVarQueryResult enum for more details. |  | ||||||
| 	 * @param convarName	Name of client convar that was queried. |  | ||||||
| 	 * @param convarValue	Value of client convar that was queried if successful. This will be "" if it was not. |  | ||||||
| 	 * @noreturn |  | ||||||
| 	 */ |  | ||||||
| 	function void (QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvarName, const char[] cvarValue); |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Starts a query to retrieve the value of a client's console variable. |  | ||||||
|  * |  | ||||||
|  * @param client		Player index. |  | ||||||
|  * @param cvarName			Name of client convar to query. |  | ||||||
|  * @param callback		A function to use as a callback when the query has finished. |  | ||||||
|  * @param value			Optional value to pass to the callback function. |  | ||||||
|  * @return				A cookie that uniquely identifies the query.  |  | ||||||
|  *						Returns QUERYCOOKIE_FAILED on failure, such as when used on a bot. |  | ||||||
|  */ |  | ||||||
| native QueryCookie:QueryClientConVar(client, const String:cvarName[], ConVarQueryFinished:callback, any:value=0); |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * Gets a command iterator.  Must be freed with CloseHandle(). |  * Gets a command iterator.  Must be freed with CloseHandle(). | ||||||
|  * |  * | ||||||
| @ -781,17 +474,6 @@ native bool:CheckAccess(AdminId:id, | |||||||
| 							   flags, | 							   flags, | ||||||
| 							   bool:override_only=false); | 							   bool:override_only=false); | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Returns true if the supplied character is valid in a ConVar name. |  | ||||||
|  * |  | ||||||
|  * @param c			Character to validate. |  | ||||||
|  * @return			True is valid for ConVars, false otherwise |  | ||||||
|  */ |  | ||||||
| stock bool:IsValidConVarChar(c) |  | ||||||
| { |  | ||||||
| 	return (c == '_' || IsCharAlpha(c) || IsCharNumeric(c)); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * Returns the bitstring of flags of a command. |  * Returns the bitstring of flags of a command. | ||||||
|  * |  * | ||||||
| @ -850,17 +532,6 @@ native Handle:FindFirstConCommand(String:buffer[], max_size, &bool:isCommand, &f | |||||||
|  */ |  */ | ||||||
| native bool:FindNextConCommand(Handle:search, String:buffer[], max_size, &bool:isCommand, &flags=0, String:description[]="", descrmax_size=0); | native bool:FindNextConCommand(Handle:search, String:buffer[], max_size, &bool:isCommand, &flags=0, String:description[]="", descrmax_size=0); | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Replicates a convar value to a specific client. This does not change the actual convar value. |  | ||||||
|  * |  | ||||||
|  * @param client		Client index |  | ||||||
|  * @param convar		ConVar handle |  | ||||||
|  * @param value			String value to send |  | ||||||
|  * @return				True on success, false on failure |  | ||||||
|  * @error 				Invalid client index, client not in game, or client is fake |  | ||||||
|  */ |  | ||||||
| native bool:SendConVarValue(client, Handle:convar, const String:value[]); |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * Adds an informational string to the server's public "tags". |  * Adds an informational string to the server's public "tags". | ||||||
|  * This string should be a short, unique identifier. |  * This string should be a short, unique identifier. | ||||||
| @ -969,26 +640,3 @@ forward Action:OnClientSayCommand(client, const String:command[], const String:s | |||||||
|  *  |  *  | ||||||
|  */ |  */ | ||||||
| forward void OnClientSayCommand_Post(int client, const char[] command, const char[] sArgs); | forward void OnClientSayCommand_Post(int client, const char[] command, const char[] sArgs); | ||||||
| 
 |  | ||||||
| // Most of these aren't properties because they're more complex
 |  | ||||||
| methodmap ConVar < Handle |  | ||||||
| { |  | ||||||
| 	public ConVar() = CreateConVar; |  | ||||||
| 	public GetBool() = GetConVarBool; |  | ||||||
| 	public SetBool() = SetConVarBool; |  | ||||||
| 	public GetInt() = GetConVarInt; |  | ||||||
| 	public SetInt() = SetConVarInt; |  | ||||||
| 	public GetFloat() = GetConVarFloat; |  | ||||||
| 	public SetFloat() = SetConVarFloat; |  | ||||||
| 	public GetString() = GetConVarString; |  | ||||||
| 	public SetString() = SetConVarString; |  | ||||||
| 	public RestoreDefaultValue() = ResetConVar; |  | ||||||
| 	public GetFlags() = GetConVarFlags; |  | ||||||
| 	public SetFlags() = SetConVarFlags; |  | ||||||
| 	public GetBounds() = GetConVarBounds; |  | ||||||
| 	public SetBounds() = SetConVarBounds; |  | ||||||
| 	public GetDefaultValue() = GetConVarDefault; |  | ||||||
| 	public GetName() = GetConVarName; |  | ||||||
| 	public AddChangeHook() = HookConVarChange; |  | ||||||
| 	public RemoveChangeHook() = UnhookConVarChange; |  | ||||||
| } |  | ||||||
							
								
								
									
										366
									
								
								plugins/include/convars.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										366
									
								
								plugins/include/convars.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,366 @@ | |||||||
|  | /** | ||||||
|  |  * vim: set ts=4 sw=4 tw=99 noet : | ||||||
|  |  * ============================================================================= | ||||||
|  |  * SourceMod (C)2004-2014 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$ | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Console variable bound values used with Get/SetConVarBounds() | ||||||
|  |  */ | ||||||
|  | enum ConVarBounds | ||||||
|  | { | ||||||
|  | 	ConVarBound_Upper = 0, | ||||||
|  | 	ConVarBound_Lower | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Console variable query result values. | ||||||
|  |  */ | ||||||
|  | enum ConVarQueryResult | ||||||
|  | { | ||||||
|  | 	ConVarQuery_Okay = 0,				/**< Retrieval of client convar value was successful. */ | ||||||
|  | 	ConVarQuery_NotFound,				/**< Client convar was not found. */ | ||||||
|  | 	ConVarQuery_NotValid,				/**< A console command with the same name was found, but there is no convar. */ | ||||||
|  | 	ConVarQuery_Protected				/**< Client convar was found, but it is protected. The server cannot retrieve its value. */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Creates a new console variable. | ||||||
|  |  * | ||||||
|  |  * @param name			Name of new convar. | ||||||
|  |  * @param defaultValue	String containing the default value of new convar. | ||||||
|  |  * @param description	Optional description of the convar. | ||||||
|  |  * @param flags			Optional bitstring of flags determining how the convar should be handled. See FCVAR_* constants for more details. | ||||||
|  |  * @param hasMin		Optional boolean that determines if the convar has a minimum value. | ||||||
|  |  * @param min			Minimum floating point value that the convar can have if hasMin is true. | ||||||
|  |  * @param hasMax		Optional boolean that determines if the convar has a maximum value. | ||||||
|  |  * @param max			Maximum floating point value that the convar can have if hasMax is true. | ||||||
|  |  * @return				A handle to the newly created convar. If the convar already exists, a handle to it will still be returned. | ||||||
|  |  * @error				Convar name is blank or is the same as an existing console command. | ||||||
|  |  */ | ||||||
|  | native ConVar:CreateConVar(const String:name[], const String:defaultValue[], const String:description[]="", flags=0, bool:hasMin=false, Float:min=0.0, bool:hasMax=false, Float:max=0.0); | ||||||
|  | 
 | ||||||
|  | // Most of these aren't properties because they're more complex
 | ||||||
|  | methodmap ConVar < Handle | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Searches for a console variable. | ||||||
|  |  * | ||||||
|  |  * @param name			Name of convar to find. | ||||||
|  |  * @return				A handle to the convar if it is found. INVALID_HANDLE otherwise. | ||||||
|  |  */ | ||||||
|  | native ConVar:FindConVar(const String:name[]); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Called when a console variable's value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar that was changed. | ||||||
|  |  * @param oldValue		String containing the value of the convar before it was changed. | ||||||
|  |  * @param newValue		String containing the new value of the convar. | ||||||
|  |  * @noreturn | ||||||
|  |  */ | ||||||
|  | typedef ConVarChanged = function void (ConVar convar, const char[] oldValue, const char[] newValue); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Creates a hook for when a console variable's value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param callback		An OnConVarChanged function pointer. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle or invalid callback function. | ||||||
|  |  */ | ||||||
|  | native HookConVarChange(Handle:convar, ConVarChanged:callback); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Removes a hook for when a console variable's value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param callback		An OnConVarChanged function pointer. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle, invalid callback function, or no active hook on convar. | ||||||
|  |  */ | ||||||
|  | native UnhookConVarChange(Handle:convar, ConVarChanged:callback); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Returns the boolean value of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @return				The boolean value of the convar. | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native bool:GetConVarBool(Handle:convar); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Sets the boolean value of a console variable. | ||||||
|  |  * | ||||||
|  |  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and | ||||||
|  |  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param value			New boolean value. | ||||||
|  |  * @param replicate		If set to true, the new convar value will be set on all clients. | ||||||
|  |  *						This will only work if the convar has the FCVAR_REPLICATED flag | ||||||
|  |  *						and actually exists on clients. | ||||||
|  |  * @param notify		If set to true, clients will be notified that the convar has changed. | ||||||
|  |  *						This will only work if the convar has the FCVAR_NOTIFY flag. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native SetConVarBool(Handle:convar, bool:value, bool:replicate=false, bool:notify=false); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Returns the integer value of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @return				The integer value of the convar. | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native GetConVarInt(Handle:convar); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Sets the integer value of a console variable. | ||||||
|  |  * | ||||||
|  |  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and | ||||||
|  |  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param value			New integer value. | ||||||
|  |  * @param replicate		If set to true, the new convar value will be set on all clients. | ||||||
|  |  *						This will only work if the convar has the FCVAR_REPLICATED flag | ||||||
|  |  *						and actually exists on clients. | ||||||
|  |  * @param notify		If set to true, clients will be notified that the convar has changed. | ||||||
|  |  *						This will only work if the convar has the FCVAR_NOTIFY flag. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native SetConVarInt(Handle:convar, value, bool:replicate=false, bool:notify=false); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Returns the floating point value of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @return				The floating point value of the convar. | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native Float:GetConVarFloat(Handle:convar); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Sets the floating point value of a console variable. | ||||||
|  |  * | ||||||
|  |  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and | ||||||
|  |  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param value			New floating point value. | ||||||
|  |  * @param replicate		If set to true, the new convar value will be set on all clients. | ||||||
|  |  *						This will only work if the convar has the FCVAR_REPLICATED flag | ||||||
|  |  *						and actually exists on clients. | ||||||
|  |  * @param notify		If set to true, clients will be notified that the convar has changed. | ||||||
|  |  *						This will only work if the convar has the FCVAR_NOTIFY flag. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native SetConVarFloat(Handle:convar, Float:value, bool:replicate=false, bool:notify=false); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Retrieves the string value of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param value			Buffer to store the value of the convar. | ||||||
|  |  * @param maxlength		Maximum length of string buffer. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle.      | ||||||
|  |  */ | ||||||
|  | native GetConVarString(Handle:convar, String:value[], maxlength); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Sets the string value of a console variable. | ||||||
|  |  * | ||||||
|  |  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and | ||||||
|  |  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param value			New string value. | ||||||
|  |  * @param replicate		If set to true, the new convar value will be set on all clients. | ||||||
|  |  *						This will only work if the convar has the FCVAR_REPLICATED flag | ||||||
|  |  *						and actually exists on clients. | ||||||
|  |  * @param notify		If set to true, clients will be notified that the convar has changed. | ||||||
|  |  *						This will only work if the convar has the FCVAR_NOTIFY flag. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native SetConVarString(Handle:convar, const String:value[], bool:replicate=false, bool:notify=false); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Resets the console variable to its default value. | ||||||
|  |  * | ||||||
|  |  * Note: The replicate and notify params are only relevant for the original, Dark Messiah, and | ||||||
|  |  * Episode 1 engines. Newer engines automatically do these things when the convar value is changed. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param replicate		If set to true, the new convar value will be set on all clients. | ||||||
|  |  *						This will only work if the convar has the FCVAR_REPLICATED flag | ||||||
|  |  *						and actually exists on clients. | ||||||
|  |  * @param notify		If set to true, clients will be notified that the convar has changed. | ||||||
|  |  *						This will only work if the convar has the FCVAR_NOTIFY flag. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native ResetConVar(Handle:convar, bool:replicate=false, bool:notify=false); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Retrieves the default string value of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param value			Buffer to store the default value of the convar. | ||||||
|  |  * @param maxlength		Maximum length of string buffer. | ||||||
|  |  * @return				Number of bytes written to the buffer (UTF-8 safe). | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native GetConVarDefault(Handle:convar, String:value[], maxlength); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Returns the bitstring of flags on a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @return				A bitstring containing the FCVAR_* flags that are enabled. | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native GetConVarFlags(Handle:convar); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Sets the bitstring of flags on a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param flags			A bitstring containing the FCVAR_* flags to enable. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native SetConVarFlags(Handle:convar, flags); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Retrieves the specified bound of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param type			Type of bound to retrieve, ConVarBound_Lower or ConVarBound_Upper. | ||||||
|  |  * @param value			By-reference cell to store the specified floating point bound value. | ||||||
|  |  * @return				True if the convar has the specified bound set, false otherwise. | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native bool:GetConVarBounds(Handle:convar, ConVarBounds:type, &Float:value); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Sets the specified bound of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param type			Type of bound to set, ConVarBound_Lower or ConVarBound_Upper | ||||||
|  |  * @param set			If set to true, convar will use specified bound. If false, bound will be removed. | ||||||
|  |  * @param value			Floating point value to use as the specified bound. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle. | ||||||
|  |  */ | ||||||
|  | native SetConVarBounds(Handle:convar, ConVarBounds:type, bool:set, Float:value=0.0); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Retrieves the name of a console variable. | ||||||
|  |  * | ||||||
|  |  * @param convar		Handle to the convar. | ||||||
|  |  * @param name			Buffer to store the name of the convar. | ||||||
|  |  * @param maxlength		Maximum length of string buffer. | ||||||
|  |  * @noreturn | ||||||
|  |  * @error				Invalid or corrupt Handle.      | ||||||
|  |  */ | ||||||
|  | native GetConVarName(Handle:convar, String:name[], maxlength); | ||||||
|  | 
 | ||||||
|  | union ConVarQueryFinished | ||||||
|  | {	 | ||||||
|  | 	/** | ||||||
|  | 	 * Called when a query to retrieve a client's console variable has finished. | ||||||
|  | 	 * | ||||||
|  | 	 * @param cookie		Unique identifier of query. | ||||||
|  | 	 * @param client		Player index. | ||||||
|  | 	 * @param result		Result of query that tells one whether or not query was successful. | ||||||
|  | 	 *						See ConVarQueryResult enum for more details. | ||||||
|  | 	 * @param convarName	Name of client convar that was queried. | ||||||
|  | 	 * @param convarValue	Value of client convar that was queried if successful. This will be "" if it was not. | ||||||
|  | 	 * @param value			Value that was passed when query was started. | ||||||
|  | 	 * @noreturn | ||||||
|  | 	 */ | ||||||
|  | 	function void (QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvarName, const char[] cvarValue, any value); | ||||||
|  | 	 | ||||||
|  | 	/** | ||||||
|  | 	 * Called when a query to retrieve a client's console variable has finished. | ||||||
|  | 	 * | ||||||
|  | 	 * @param cookie		Unique identifier of query. | ||||||
|  | 	 * @param client		Player index. | ||||||
|  | 	 * @param result		Result of query that tells one whether or not query was successful. | ||||||
|  | 	 *						See ConVarQueryResult enum for more details. | ||||||
|  | 	 * @param convarName	Name of client convar that was queried. | ||||||
|  | 	 * @param convarValue	Value of client convar that was queried if successful. This will be "" if it was not. | ||||||
|  | 	 * @noreturn | ||||||
|  | 	 */ | ||||||
|  | 	function void (QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvarName, const char[] cvarValue); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Starts a query to retrieve the value of a client's console variable. | ||||||
|  |  * | ||||||
|  |  * @param client		Player index. | ||||||
|  |  * @param cvarName			Name of client convar to query. | ||||||
|  |  * @param callback		A function to use as a callback when the query has finished. | ||||||
|  |  * @param value			Optional value to pass to the callback function. | ||||||
|  |  * @return				A cookie that uniquely identifies the query.  | ||||||
|  |  *						Returns QUERYCOOKIE_FAILED on failure, such as when used on a bot. | ||||||
|  |  */ | ||||||
|  | native QueryCookie:QueryClientConVar(client, const String:cvarName[], ConVarQueryFinished:callback, any:value=0); | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Returns true if the supplied character is valid in a ConVar name. | ||||||
|  |  * | ||||||
|  |  * @param c			Character to validate. | ||||||
|  |  * @return			True is valid for ConVars, false otherwise | ||||||
|  |  */ | ||||||
|  | stock bool:IsValidConVarChar(c) | ||||||
|  | { | ||||||
|  | 	return (c == '_' || IsCharAlpha(c) || IsCharNumeric(c)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Replicates a convar value to a specific client. This does not change the actual convar value. | ||||||
|  |  * | ||||||
|  |  * @param client		Client index | ||||||
|  |  * @param convar		ConVar handle | ||||||
|  |  * @param value			String value to send | ||||||
|  |  * @return				True on success, false on failure | ||||||
|  |  * @error 				Invalid client index, client not in game, or client is fake | ||||||
|  |  */ | ||||||
|  | native bool:SendConVarValue(client, Handle:convar, const String:value[]); | ||||||
|  | 
 | ||||||
| @ -64,6 +64,7 @@ struct Plugin | |||||||
| #include <textparse>
 | #include <textparse>
 | ||||||
| #include <clients>
 | #include <clients>
 | ||||||
| #include <console>
 | #include <console>
 | ||||||
|  | #include <convars>
 | ||||||
| #include <events>
 | #include <events>
 | ||||||
| #include <bitbuffer>
 | #include <bitbuffer>
 | ||||||
| #include <protobuf>
 | #include <protobuf>
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user