From 76ffbe7e13b6bc23e635aa49b6f6539dee97f5c6 Mon Sep 17 00:00:00 2001 From: BotoX Date: Fri, 27 Sep 2019 13:14:44 +0200 Subject: [PATCH] Update spcomp and includes to latest 1.10-fork disable warning 241: Array-based enum structs will be removed in 1.11 --- Makefile | 2 +- compile.bat | 2 +- env/darwin/bin/spcomp | Bin 285612 -> 731340 bytes env/include/admin.inc | 450 +++++++------- env/include/adminmenu.inc | 44 +- env/include/adt_array.inc | 222 ++++--- env/include/adt_stack.inc | 94 +-- env/include/adt_trie.inc | 142 ++--- env/include/banning.inc | 110 ++-- env/include/basecomm.inc | 32 +- env/include/bitbuffer.inc | 192 +++--- env/include/clientprefs.inc | 321 ++++++---- env/include/clients.inc | 471 +++++++------- env/include/commandfilters.inc | 85 +-- env/include/commandline.inc | 42 +- env/include/console.inc | 430 +++++++------ env/include/convars.inc | 276 +++++---- env/include/core.inc | 83 ++- env/include/cstrike.inc | 255 +++++--- env/include/datapack.inc | 118 ++-- env/include/dbi.inc | 548 ++++++++-------- env/include/entity.inc | 548 ++++++++-------- env/include/entity_prop_stocks.inc | 498 +++++++-------- env/include/events.inc | 157 ++--- env/include/files.inc | 392 ++++++------ env/include/float.inc | 172 ++--- env/include/functions.inc | 533 ++++++++++------ env/include/geoip.inc | 22 +- env/include/halflife.inc | 528 ++++++++-------- env/include/handles.inc | 53 +- env/include/helpers.inc | 214 +++---- env/include/keyvalues.inc | 406 ++++++------ env/include/lang.inc | 62 +- env/include/logging.inc | 80 +-- env/include/mapchooser.inc | 55 +- env/include/menus.inc | 757 ++++++++++++----------- env/include/nextmap.inc | 38 +- env/include/profiler.inc | 50 +- env/include/protobuf.inc | 340 +++++----- env/include/regex.inc | 207 +++++-- env/include/sdkhooks.inc | 281 +++++---- env/include/sdktools.inc | 129 ++-- env/include/sdktools_client.inc | 6 +- env/include/sdktools_engine.inc | 24 +- env/include/sdktools_entinput.inc | 79 +-- env/include/sdktools_entoutput.inc | 75 ++- env/include/sdktools_functions.inc | 239 ++++--- env/include/sdktools_gamerules.inc | 152 ++--- env/include/sdktools_hooks.inc | 68 +- env/include/sdktools_sound.inc | 510 ++++++++------- env/include/sdktools_stocks.inc | 10 +- env/include/sdktools_stringtables.inc | 112 ++-- env/include/sdktools_tempents.inc | 112 ++-- env/include/sdktools_tempents_stocks.inc | 254 ++++---- env/include/sdktools_trace.inc | 685 ++++++++++++++------ env/include/sdktools_variant_t.inc | 93 +++ env/include/sdktools_voice.inc | 68 +- env/include/sorting.inc | 110 ++-- env/include/sourcemod.inc | 466 ++++++++------ env/include/string.inc | 323 +++++----- env/include/testing.inc | 21 +- env/include/textparse.inc | 176 +++--- env/include/tf2.inc | 397 ++++++------ env/include/tf2_stocks.inc | 101 +-- env/include/timers.inc | 152 ++--- env/include/topmenus.inc | 240 +++---- env/include/usermessages.inc | 169 ++--- env/include/vector.inc | 86 +-- env/include/version.inc | 18 +- env/include/version_auto.inc | 8 +- env/linux/bin/spcomp | Bin 271484 -> 331440 bytes env/win32/bin/spcomp.exe | Bin 345600 -> 428032 bytes 72 files changed, 7755 insertions(+), 6440 deletions(-) create mode 100644 env/include/sdktools_variant_t.inc diff --git a/Makefile b/Makefile index 7c66211..2f0cc1a 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,7 @@ prepare_builddir: %.smx: %.sp $(VERSIONDUMP) - $(SPCOMP) -i$(SOURCEDIR) -i$(SMINCLUDES) -i$(ZRINCLUDES) -o$(BUILDDIR)/$@ $< + $(SPCOMP) -w241 -i$(SOURCEDIR) -i$(SMINCLUDES) -i$(ZRINCLUDES) -o$(BUILDDIR)/$@ $< clean: @rm -fr $(BUILDDIR) diff --git a/compile.bat b/compile.bat index 362cdaa..4a67b57 100644 --- a/compile.bat +++ b/compile.bat @@ -17,7 +17,7 @@ if not exist "%BUILDDIR%" ( :: Compile. echo Starting compiler: -%SPCOMP% -i%SOURCEDIR% -i%SOURCEDIR%/include -i%SMINCLUDES% -o%BUILDDIR%/zombiereloaded.smx %SOURCEDIR%\zombiereloaded.sp +%SPCOMP% -w241 -i%SOURCEDIR% -i%SOURCEDIR%/include -i%SMINCLUDES% -o%BUILDDIR%/zombiereloaded.smx %SOURCEDIR%\zombiereloaded.sp echo Compiling done. This script is looped, close if you're done. pause diff --git a/env/darwin/bin/spcomp b/env/darwin/bin/spcomp index a1abd19f4d6aa8f9a6a197665ac9d98584e13271..e6e5cb39462a298dfedda358328b4a99188284be 100755 GIT binary patch literal 731340 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

Ermjdz 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 bhV9tJt`K4_O` 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�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%0AP$2x2GF`dejWw}&{-^?{n;Qk=u8&SSv(*% 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 0). - * @param asChar Optionally read as a byte instead of a cell. - * @return Value read. - * @error Invalid Handle, invalid index, or invalid block. + * @param array Array Handle. + * @param index Index in the array. + * @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. + * @return Value read. + * @error Invalid Handle, invalid index, or invalid block. */ native any GetArrayCell(Handle array, int index, int block=0, bool asChar=false); /** * Retrieves a string value from an array. * - * @param array Array Handle. - * @param index Index in the array. - * @param buffer Buffer to copy to. - * @param maxlength Maximum size of the buffer. - * @return Number of characters copied. - * @error Invalid Handle or invalid index. + * @param array Array Handle. + * @param index Index in the array. + * @param buffer Buffer to copy to. + * @param maxlength Maximum size of the buffer. + * @return Number of characters copied. + * @error Invalid Handle or invalid index. */ native int GetArrayString(Handle array, int index, char[] buffer, int maxlength); /** * Retrieves an array of cells from an array. * - * @param array Array Handle. - * @param index Index in the array. - * @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. - * @return Number of cells copied. - * @error Invalid Handle or invalid index. + * @param array Array Handle. + * @param index Index in the array. + * @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. + * @return Number of cells copied. + * @error Invalid Handle or invalid index. */ native int GetArrayArray(Handle array, int index, any[] buffer, int size=-1); /** * Sets a cell value in an array. * - * @param array Array Handle. - * @param index Index in the array. - * @param value Cell value to set. - * @param block Optionally specify which block to write to - * (useful if the blocksize > 0). - * @param asChar Optionally set as a byte instead of a cell. - * @error Invalid Handle, invalid index, or invalid block. + * @param array Array Handle. + * @param index Index in the array. + * @param value Cell value to set. + * @param block Optionally specify which block to write to + * (useful if the blocksize > 0). + * @param asChar Optionally set as a byte instead of a cell. + * @error Invalid Handle, invalid index, or invalid block. */ native void SetArrayCell(Handle array, int index, any value, int block=0, bool asChar=false); /** * Sets a string value in an array. * - * @param array Array Handle. - * @param index Index in the array. - * @param value String value to set. - * @return Number of characters copied. - * @error Invalid Handle or invalid index. + * @param array Array Handle. + * @param index Index in the array. + * @param value String value to set. + * @return Number of characters copied. + * @error Invalid Handle or invalid index. */ native int SetArrayString(Handle array, int index, const char[] value); /** * Sets an array of cells in an array. * - * @param array Array Handle. - * @param index Index in the array. - * @param values Array to copy. - * @param size If not set, assumes the buffer size is equal to the - * blocksize. Otherwise, the size passed is used. - * @return Number of cells copied. - * @error Invalid Handle or invalid index. + * @param array Array Handle. + * @param index Index in the array. + * @param values Array to copy. + * @param size If not set, assumes the buffer size is equal to the + * blocksize. Otherwise, the size passed is used. + * @return Number of cells copied. + * @error Invalid Handle or invalid index. */ native int SetArrayArray(Handle array, int index, const any[] values, int size=-1); @@ -388,9 +409,9 @@ native int SetArrayArray(Handle array, int index, const any[] values, int size=- * index are shifted up by one, and the given index is then "free." * After shifting, the contents of the given index is undefined. * - * @param array Array Handle. - * @param index Index in the array to shift up from. - * @error Invalid Handle or invalid index. + * @param array Array Handle. + * @param index Index in the array to shift up from. + * @error Invalid Handle or invalid index. */ native void ShiftArrayUp(Handle array, int index); @@ -399,19 +420,19 @@ native void ShiftArrayUp(Handle array, int index); * on. For example, if item 8 of 10 is removed, the last 3 items will then be * (6,7,8) instead of (7,8,9), and all indexes before 8 will remain unchanged. * - * @param array Array Handle. - * @param index Index in the array to remove at. - * @error Invalid Handle or invalid index. + * @param array Array Handle. + * @param index Index in the array to remove at. + * @error Invalid Handle or invalid index. */ native void RemoveFromArray(Handle array, int index); /** * Swaps two items in the array. * - * @param array Array Handle. - * @param index1 First index. - * @param index2 Second index. - * @error Invalid Handle or invalid index. + * @param array Array Handle. + * @param index1 First index. + * @param index2 Second index. + * @error Invalid Handle or invalid index. */ native void SwapArrayItems(Handle array, int index1, int index2); @@ -419,10 +440,10 @@ native void SwapArrayItems(Handle array, int index1, int index2); * Returns the index for the first occurrence of the provided string. If the string * cannot be located, -1 will be returned. * - * @param array Array Handle. - * @param item String to search for - * @return Array index, or -1 on failure - * @error Invalid Handle + * @param array Array Handle. + * @param item String to search for + * @return Array index, or -1 on failure + * @error Invalid Handle */ native int FindStringInArray(Handle array, const char[] item); @@ -430,10 +451,19 @@ native int FindStringInArray(Handle array, const char[] item); * Returns the index for the first occurrence of the provided value. If the value * cannot be located, -1 will be returned. * - * @param array Array Handle. - * @param item Value to search for - * @param block Optionally which block to search in - * @return Array index, or -1 on failure - * @error Invalid Handle or invalid block + * @param array Array Handle. + * @param item Value to search for + * @param block Optionally which block to search in + * @return Array index, or -1 on failure + * @error Invalid Handle or invalid block */ native int FindValueInArray(Handle array, any item, int block=0); + +/** + * Returns the blocksize the array was created with. + * + * @param array Array Handle. + * @return The blocksize of the array. + * @error Invalid Handle + */ +native int GetArrayBlockSize(Handle array); diff --git a/env/include/adt_stack.inc b/env/include/adt_stack.inc index 05c3d3f..9be8857 100644 --- a/env/include/adt_stack.inc +++ b/env/include/adt_stack.inc @@ -109,6 +109,11 @@ methodmap ArrayStack < Handle property bool Empty { public native get(); } + + // Retrieve the blocksize the stack was created with. + property int BlockSize { + public native get(); + } }; /** @@ -124,10 +129,10 @@ methodmap ArrayStack < Handle * 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. + * @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. */ native ArrayStack CreateStack(int blocksize=1); @@ -137,9 +142,9 @@ native ArrayStack CreateStack(int blocksize=1); * This may safely be used even if the stack has a blocksize * greater than 1. * - * @param stack Stack Handle. - * @param value Value to push. - * @error Invalid Handle or out of memory. + * @param stack Stack Handle. + * @param value Value to push. + * @error Invalid Handle or out of memory. */ native void PushStackCell(Handle stack, any value); @@ -147,9 +152,9 @@ native void PushStackCell(Handle stack, any value); * Pushes a copy of a string onto the end of a stack, truncating it if it is * too big. * - * @param stack Stack Handle. - * @param value String to push. - * @error Invalid Handle or out of memory. + * @param stack Stack Handle. + * @param value String to push. + * @error Invalid Handle or out of memory. */ native void PushStackString(Handle stack, const char[] value); @@ -158,69 +163,78 @@ native void PushStackString(Handle stack, const char[] value); * are pushed as a block (i.e. the entire array takes up one stack slot), * rather than pushing each cell individually. * - * @param stack 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. - * @error Invalid Handle or out of memory. + * @param stack 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. + * @error Invalid Handle or out of memory. */ native void PushStackArray(Handle stack, const any[] values, int size=-1); /** * Pops a cell value from a stack. * - * @param stack 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. - * @return True on success, false if the stack is empty. - * @error Invalid Handle. + * @param stack 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. + * @return True on success, false if the stack is empty. + * @error Invalid Handle. */ native bool PopStackCell(Handle stack, any &value, int block=0, bool asChar=false); /** * Pops a string value from a stack. * - * @param stack Stack Handle. - * @param buffer Buffer to store string. - * @param maxlength Maximum size of the buffer. - * @return True on success, false if the stack is empty. - * @error Invalid Handle. + * @param stack Stack Handle. + * @param buffer Buffer to store string. + * @param maxlength Maximum size of the buffer. + * @return True on success, false if the stack is empty. + * @error Invalid Handle. */ native bool PopStackString(Handle stack, char[] buffer, int maxlength, int &written=0); /** * Pops an array of cells from a stack. * - * @param stack 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. - * @return True on success, false if the stack is empty. - * @error Invalid Handle. + * @param stack 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. + * @return True on success, false if the stack is empty. + * @error Invalid Handle. */ native bool PopStackArray(Handle stack, any[] buffer, int size=-1); /** * Checks if a stack is empty. * - * @param stack Stack Handle. - * @return True if empty, false if not empty. - * @error Invalid Handle. + * @param stack Stack Handle. + * @return True if empty, false if not empty. + * @error Invalid Handle. */ native bool IsStackEmpty(Handle stack); /** * Pops a value off a stack, ignoring it completely. * - * @param stack Stack Handle. - * @return True if something was popped, false otherwise. - * @error Invalid Handle. + * @param stack Stack Handle. + * @return True if something was popped, false otherwise. + * @error Invalid Handle. */ stock bool PopStack(Handle stack) { int value; return PopStackCell(stack, value); } + +/** + * Returns the blocksize the stack was created with. + * + * @param stack Stack Handle. + * @return The blocksize of the stack. + * @error Invalid Handle + */ +native int GetStackBlockSize(Handle stack); diff --git a/env/include/adt_trie.inc b/env/include/adt_trie.inc index 337fe1f..2d262c4 100644 --- a/env/include/adt_trie.inc +++ b/env/include/adt_trie.inc @@ -124,9 +124,11 @@ methodmap StringMap < Handle } }; -// A StringMapSnapshot is created via StringMap.Snapshot(). It captures the -// keys on a map so they can be read. Snapshots must be freed with delete or -// CloseHandle(). +/** + * A StringMapSnapshot is created via StringMap.Snapshot(). It captures the + * keys on a map so they can be read. Snapshots must be freed with delete or + * CloseHandle(). + */ methodmap StringMapSnapshot < Handle { // Returns the number of keys in the map snapshot. @@ -164,111 +166,111 @@ methodmap StringMapSnapshot < Handle * 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 CloseHandle(). + * @return New Map Handle, which must be freed via CloseHandle(). */ native StringMap CreateTrie(); /** * Sets a value in a hash map, either inserting a new entry or replacing an old one. * - * @param map 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. - * @return True on success, false on failure. - * @error Invalid Handle. + * @param map 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. + * @return True on success, false on failure. + * @error Invalid Handle. */ native bool SetTrieValue(Handle map, const char[] key, any value, bool replace=true); /** * Sets an array value in a Map, either inserting a new entry or replacing an old one. * - * @param map Map Handle. - * @param key Key string. - * @param array Array to store. - * @param num_items Number of items in the array. - * @param replace If false, operation will fail if the key is already set. - * @return True on success, false on failure. - * @error Invalid Handle. + * @param map Map Handle. + * @param key Key string. + * @param array Array to store. + * @param num_items Number of items in the array. + * @param replace If false, operation will fail if the key is already set. + * @return True on success, false on failure. + * @error Invalid Handle. */ native bool SetTrieArray(Handle map, const char[] key, const any[] array, int num_items, bool replace=true); /** * Sets a string value in a Map, either inserting a new entry or replacing an old one. * - * @param map Map Handle. - * @param key Key string. - * @param value String to store. - * @param replace If false, operation will fail if the key is already set. - * @return True on success, false on failure. - * @error Invalid Handle. + * @param map Map Handle. + * @param key Key string. + * @param value String to store. + * @param replace If false, operation will fail if the key is already set. + * @return True on success, false on failure. + * @error Invalid Handle. */ native bool SetTrieString(Handle map, const char[] key, const char[] value, bool replace=true); /** * Retrieves a value in a Map. * - * @param map 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 map 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. */ native bool GetTrieValue(Handle map, const char[] key, any &value); /** * Retrieves an array in a Map. * - * @param map Map Handle. - * @param key Key string. - * @param array Buffer to store array. - * @param max_size Maximum size of array buffer. - * @param size Optional parameter to store the number of elements written to the buffer. - * @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. + * @param map Map Handle. + * @param key Key string. + * @param array Buffer to store array. + * @param max_size Maximum size of array buffer. + * @param size Optional parameter to store the number of elements written to the buffer. + * @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. */ native bool GetTrieArray(Handle map, const char[] key, any[] array, int max_size, int &size=0); /** * Retrieves a string in a Map. * - * @param map Map Handle. - * @param key Key string. - * @param value Buffer to store value. - * @param max_size Maximum size of string buffer. - * @param size Optional parameter to store the number of bytes written to the buffer. - * @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. + * @param map Map Handle. + * @param key Key string. + * @param value Buffer to store value. + * @param max_size Maximum size of string buffer. + * @param size Optional parameter to store the number of bytes written to the buffer. + * @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. */ native bool GetTrieString(Handle map, const char[] key, char[] value, int max_size, int &size=0); /** * Removes a key entry from a Map. * - * @param map Map Handle. - * @param key Key string. - * @return True on success, false if the value was never set. - * @error Invalid Handle. + * @param map Map Handle. + * @param key Key string. + * @return True on success, false if the value was never set. + * @error Invalid Handle. */ native bool RemoveFromTrie(Handle map, const char[] key); /** * Clears all entries from a Map. * - * @param map Map Handle. - * @error Invalid Handle. + * @param map Map Handle. + * @error Invalid Handle. */ native void ClearTrie(Handle map); /** * Retrieves the number of elements in a map. * - * @param map Map Handle. - * @return Number of elements in the trie. - * @error Invalid Handle. + * @param map Map Handle. + * @return Number of elements in the trie. + * @error Invalid Handle. */ native int GetTrieSize(Handle map); @@ -276,9 +278,9 @@ native int GetTrieSize(Handle map); * 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. * - * @param map Map Handle. - * @return New Map Snapshot Handle, which must be closed via CloseHandle(). - * @error Invalid Handle. + * @param map Map Handle. + * @return New Map Snapshot Handle, which must be closed via CloseHandle(). + * @error Invalid Handle. */ native Handle CreateTrieSnapshot(Handle map); @@ -287,9 +289,9 @@ native Handle CreateTrieSnapshot(Handle map); * different from the size of the map, since the map can change after the * snapshot of its keys was taken. * - * @param snapshot Map snapshot. - * @return Number of keys. - * @error Invalid Handle. + * @param snapshot Map snapshot. + * @return Number of keys. + * @error Invalid Handle. */ native int TrieSnapshotLength(Handle snapshot); @@ -297,21 +299,21 @@ native int TrieSnapshotLength(Handle snapshot); * Returns the buffer size required to store a given key. That is, it returns * the length of the key plus one. * - * @param snapshot Map snapshot. - * @param index Key index (starting from 0). - * @return Buffer size required to store the key string. - * @error Invalid Handle or index out of range. + * @param snapshot Map snapshot. + * @param index Key index (starting from 0). + * @return Buffer size required to store the key string. + * @error Invalid Handle or index out of range. */ native int TrieSnapshotKeyBufferSize(Handle snapshot, int index); /** * Retrieves the key string of a given key in a map snapshot. * - * @param snapshot Map snapshot. - * @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. + * @param snapshot Map snapshot. + * @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. */ native int GetTrieSnapshotKey(Handle snapshot, int index, char[] buffer, int maxlength); diff --git a/env/include/banning.inc b/env/include/banning.inc index 51a8022..e22f641 100644 --- a/env/include/banning.inc +++ b/env/include/banning.inc @@ -35,24 +35,24 @@ #endif #define _banning_included -#define BANFLAG_AUTO (1<<0) /**< Auto-detects whether to ban by steamid or IP */ -#define BANFLAG_IP (1<<1) /**< Always ban by IP address */ -#define BANFLAG_AUTHID (1<<2) /**< Always ban by authstring (for BanIdentity) if possible */ -#define BANFLAG_NOKICK (1<<3) /**< Does not kick the client */ +#define BANFLAG_AUTO (1<<0) /**< Auto-detects whether to ban by steamid or IP */ +#define BANFLAG_IP (1<<1) /**< Always ban by IP address */ +#define BANFLAG_AUTHID (1<<2) /**< Always ban by authstring (for BanIdentity) if possible */ +#define BANFLAG_NOKICK (1<<3) /**< Does not kick the client */ /** * Called for calls to BanClient() with a non-empty command. * - * @param client Client being banned. - * @param time Time the client is being banned for (0 = permanent). - * @param flags One if AUTHID or IP will be enabled. If AUTO is also - * enabled, it means Core autodetected which to use. - * @param reason Reason passed via BanClient(). - * @param kick_message Kick message passed via BanClient(). - * @param command Command string to identify the ban source. - * @param source Source value passed via BanClient(). - * @return Plugin_Handled to block the actual server banning. - * Kicking will still occur. + * @param client Client being banned. + * @param time Time the client is being banned for (0 = permanent). + * @param flags One if AUTHID or IP will be enabled. If AUTO is also + * enabled, it means Core autodetected which to use. + * @param reason Reason passed via BanClient(). + * @param kick_message Kick message passed via BanClient(). + * @param command Command string to identify the ban source. + * @param source Source value passed via BanClient(). + * @return Plugin_Handled to block the actual server banning. + * Kicking will still occur. */ forward Action OnBanClient(int client, int time, @@ -65,13 +65,13 @@ forward Action OnBanClient(int client, /** * Called for calls to BanIdentity() with a non-empty command. * - * @param identity Identity string being banned (authstring or ip). - * @param time Time the client is being banned for (0 = permanent). - * @param flags Ban flags (only IP or AUTHID are valid here). - * @param reason Reason passed via BanIdentity(). - * @param command Command string to identify the ban source. - * @param source Source value passed via BanIdentity(). - * @return Plugin_Handled to block the actual server banning. + * @param identity Identity string being banned (authstring or ip). + * @param time Time the client is being banned for (0 = permanent). + * @param flags Ban flags (only IP or AUTHID are valid here). + * @param reason Reason passed via BanIdentity(). + * @param command Command string to identify the ban source. + * @param source Source value passed via BanIdentity(). + * @return Plugin_Handled to block the actual server banning. */ forward Action OnBanIdentity(const char[] identity, int time, @@ -83,11 +83,11 @@ forward Action OnBanIdentity(const char[] identity, /** * Called for calls to RemoveBan() with a non-empty command. * - * @param identity Identity string being banned (authstring or ip). - * @param flags Ban flags (only IP or AUTHID are valid here). - * @param command Command string to identify the ban source. - * @param source Source value passed via BanIdentity(). - * @return Plugin_Handled to block the actual server banning. + * @param identity Identity string being banned (authstring or ip). + * @param flags Ban flags (only IP or AUTHID are valid here). + * @param command Command string to identify the ban source. + * @param source Source value passed via BanIdentity(). + * @return Plugin_Handled to block the actual unbanning. */ forward Action OnRemoveBan(const char[] identity, int flags, @@ -97,19 +97,19 @@ forward Action OnRemoveBan(const char[] identity, /** * Bans a client. * - * @param client Client being banned. - * @param time Time (in minutes) to ban (0 = permanent). - * @param flags Flags for controlling the ban mechanism. If AUTHID - * is set and no AUTHID is available, the ban will fail - * unless AUTO is also flagged. - * @param reason Reason to ban the client for. - * @param kick_message Message to display to the user when kicking. - * @param command Command string to identify the source. If this is left - * empty, then the OnBanClient forward will not be called. - * @param source A source value that could be interpreted as a player - * index of any sort (not actually checked by Core). - * @return True on success, false on failure. - * @error Invalid client index or client not in game. + * @param client Client being banned. + * @param time Time (in minutes) to ban (0 = permanent). + * @param flags Flags for controlling the ban mechanism. If AUTHID + * is set and no AUTHID is available, the ban will fail + * unless AUTO is also flagged. + * @param reason Reason to ban the client for. + * @param kick_message Message to display to the user when kicking. + * @param command Command string to identify the source. If this is left + * empty, then the OnBanClient forward will not be called. + * @param source A source value that could be interpreted as a player + * index of any sort (not actually checked by Core). + * @return True on success, false on failure. + * @error Invalid client index or client not in game. */ native bool BanClient(int client, int time, @@ -122,15 +122,15 @@ native bool BanClient(int client, /** * Bans an identity (either an IP address or auth string). * - * @param identity String to ban (ip or authstring). - * @param time Time to ban for (0 = permanent). - * @param flags Flags (only IP and AUTHID are valid flags here). - * @param reason Ban reason string. - * @param command Command string to identify the source. If this is left - * empty, then the OnBanIdentity forward will not be called. - * @param source A source value that could be interpreted as a player - * index of any sort (not actually checked by Core). - * @return True on success, false on failure. + * @param identity String to ban (ip or authstring). + * @param time Time to ban for (0 = permanent). + * @param flags Flags (only IP and AUTHID are valid flags here). + * @param reason Ban reason string. + * @param command Command string to identify the source. If this is left + * empty, then the OnBanIdentity forward will not be called. + * @param source A source value that could be interpreted as a player + * index of any sort (not actually checked by Core). + * @return True on success, false on failure. */ native bool BanIdentity(const char[] identity, int time, @@ -142,13 +142,13 @@ native bool BanIdentity(const char[] identity, /** * Removes a ban that was written to the server (either in memory or on disk). * - * @param identity String to unban (ip or authstring). - * @param flags Flags (only IP and AUTHID are valid flags here). - * @param command Command string to identify the source. If this is left - * empty, then OnRemoveBan will not be called. - * @param source A source value that could be interpreted as a player - * index of any sort (not actually checked by Core). - * @return True on success, false on failure. + * @param identity String to unban (ip or authstring). + * @param flags Flags (only IP and AUTHID are valid flags here). + * @param command Command string to identify the source. If this is left + * empty, then OnRemoveBan will not be called. + * @param source A source value that could be interpreted as a player + * index of any sort (not actually checked by Core). + * @return True on success, false on failure. */ native bool RemoveBan(const char[] identity, int flags, diff --git a/env/include/basecomm.inc b/env/include/basecomm.inc index 7e5ee2c..7b7a4c7 100644 --- a/env/include/basecomm.inc +++ b/env/include/basecomm.inc @@ -38,50 +38,50 @@ /** * Called when a client is muted or unmuted * - * @param client Client index - * @param muteState True if client was muted, false otherwise + * @param client Client index + * @param muteState True if client was muted, false otherwise */ - forward void BaseComm_OnClientMute(int client, bool muteState); +forward void BaseComm_OnClientMute(int client, bool muteState); /** * Called when a client is gagged or ungagged * - * @param client Client index - * @param gagState True if client was gaged, false otherwise + * @param client Client index + * @param gagState True if client was gaged, false otherwise */ - forward void BaseComm_OnClientGag(int client, bool gagState); +forward void BaseComm_OnClientGag(int client, bool gagState); /** * Returns whether or not a client is gagged * - * @param client Client index. - * @return True if client is gagged, false otherwise. + * @param client Client index. + * @return True if client is gagged, false otherwise. */ native bool BaseComm_IsClientGagged(int client); /** * Returns whether or not a client is muted * - * @param client Client index. - * @return True if client is muted, false otherwise. + * @param client Client index. + * @return True if client is muted, false otherwise. */ native bool BaseComm_IsClientMuted(int client); /** * Sets a client's gag state * - * @param client Client index. - * @param gagState True to gag client, false to ungag. - * @return True if this caused a change in gag state, false otherwise. + * @param client Client index. + * @param gagState True to gag client, false to ungag. + * @return True if this caused a change in gag state, false otherwise. */ native bool BaseComm_SetClientGag(int client, bool gagState); /** * Sets a client's mute state * - * @param client Client index. - * @param muteState True to mute client, false to unmute. - * @return True if this caused a change in mute state, false otherwise. + * @param client Client index. + * @param muteState True to mute client, false to unmute. + * @return True if this caused a change in mute state, false otherwise. */ native bool BaseComm_SetClientMute(int client, bool muteState); diff --git a/env/include/bitbuffer.inc b/env/include/bitbuffer.inc index 60a3fe9..635958b 100644 --- a/env/include/bitbuffer.inc +++ b/env/include/bitbuffer.inc @@ -200,72 +200,72 @@ methodmap BfRead < Handle /** * Writes a single bit to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param bit Bit to write (true for 1, false for 0). - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param bit Bit to write (true for 1, false for 0). + * @error Invalid or incorrect Handle. */ native void BfWriteBool(Handle bf, bool bit); /** * Writes a byte to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param byte Byte to write (value will be written as 8bit). - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param byte Byte to write (value will be written as 8bit). + * @error Invalid or incorrect Handle. */ native void BfWriteByte(Handle bf, int byte); /** * Writes a byte to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param chr Character to write. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param chr Character to write. + * @error Invalid or incorrect Handle. */ native void BfWriteChar(Handle bf, int chr); /** * Writes a 16bit integer to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param num Integer to write (value will be written as 16bit). - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param num Integer to write (value will be written as 16bit). + * @error Invalid or incorrect Handle. */ native void BfWriteShort(Handle bf, int num); /** * Writes a 16bit unsigned integer to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param num Integer to write (value will be written as 16bit). - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param num Integer to write (value will be written as 16bit). + * @error Invalid or incorrect Handle. */ native void BfWriteWord(Handle bf, int num); /** * Writes a normal integer to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param num Integer to write (value will be written as 32bit). - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param num Integer to write (value will be written as 32bit). + * @error Invalid or incorrect Handle. */ native void BfWriteNum(Handle bf, int num); /** * Writes a floating point number to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param num Number to write. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param num Number to write. + * @error Invalid or incorrect Handle. */ native void BfWriteFloat(Handle bf, float num); /** * Writes a string to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param string Text string to write. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param string Text string to write. + * @error Invalid or incorrect Handle. */ native void BfWriteString(Handle bf, const char[] string); @@ -273,134 +273,134 @@ native void BfWriteString(Handle bf, const char[] string); * Writes an entity to a writable bitbuffer (bf_write). * @note This is a wrapper around BfWriteShort(). * - * @param bf bf_write handle to write to. - * @param ent Entity index to write. - * @error Invalid or incorrect Handle, or invalid entity. + * @param bf bf_write handle to write to. + * @param ent Entity index to write. + * @error Invalid or incorrect Handle, or invalid entity. */ native void BfWriteEntity(Handle bf, int ent); /** * Writes a bit angle to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param angle Angle to write. - * @param numBits Optional number of bits to use. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param angle Angle to write. + * @param numBits Optional number of bits to use. + * @error Invalid or incorrect Handle. */ native void BfWriteAngle(Handle bf, float angle, int numBits=8); /** * Writes a coordinate to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param coord Coordinate to write. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param coord Coordinate to write. + * @error Invalid or incorrect Handle. */ native void BfWriteCoord(Handle bf, float coord); /** * Writes a 3D vector of coordinates to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param coord Coordinate array to write. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param coord Coordinate array to write. + * @error Invalid or incorrect Handle. */ native void BfWriteVecCoord(Handle bf, float coord[3]); /** * Writes a 3D normal vector to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param vec Vector to write. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param vec Vector to write. + * @error Invalid or incorrect Handle. */ native void BfWriteVecNormal(Handle bf, float vec[3]); /** * Writes a 3D angle vector to a writable bitbuffer (bf_write). * - * @param bf bf_write handle to write to. - * @param angles Angle vector to write. - * @error Invalid or incorrect Handle. + * @param bf bf_write handle to write to. + * @param angles Angle vector to write. + * @error Invalid or incorrect Handle. */ native void BfWriteAngles(Handle bf, float angles[3]); /** * Reads a single bit from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Bit value read. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Bit value read. + * @error Invalid or incorrect Handle. */ native bool BfReadBool(Handle bf); /** * Reads a byte from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Byte value read (read as 8bit). - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Byte value read (read as 8bit). + * @error Invalid or incorrect Handle. */ native int BfReadByte(Handle bf); /** * Reads a character from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Character value read. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Character value read. + * @error Invalid or incorrect Handle. */ native int BfReadChar(Handle bf); /** * Reads a 16bit integer from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Integer value read (read as 16bit). - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Integer value read (read as 16bit). + * @error Invalid or incorrect Handle. */ native int BfReadShort(Handle bf); /** * Reads a 16bit unsigned integer from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Integer value read (read as 16bit). - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Integer value read (read as 16bit). + * @error Invalid or incorrect Handle. */ native int BfReadWord(Handle bf); /** * Reads a normal integer to a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Integer value read (read as 32bit). - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Integer value read (read as 32bit). + * @error Invalid or incorrect Handle. */ native int BfReadNum(Handle bf); /** * Reads a floating point number from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Floating point value read. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Floating point value read. + * @error Invalid or incorrect Handle. */ native float BfReadFloat(Handle bf); /** * Reads a string from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. - * @param line If true the buffer will be copied until it reaches a '\n' or a null terminator. - * @return Number of bytes written to the buffer. If the bitbuffer stream overflowed, - * that is, had no terminator before the end of the stream, then a negative - * number will be returned equal to the number of characters written to the - * buffer minus 1. The buffer will be null terminated regardless of the - * return value. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @param buffer Destination string buffer. + * @param maxlength Maximum length of output string buffer. + * @param line If true the buffer will be copied until it reaches a '\n' or a null terminator. + * @return Number of bytes written to the buffer. If the bitbuffer stream overflowed, + * that is, had no terminator before the end of the stream, then a negative + * number will be returned equal to the number of characters written to the + * buffer minus 1. The buffer will be null terminated regardless of the + * return value. + * @error Invalid or incorrect Handle. */ native int BfReadString(Handle bf, char[] buffer, int maxlength, bool line=false); @@ -408,63 +408,63 @@ native int BfReadString(Handle bf, char[] buffer, int maxlength, bool line=false * Reads an entity from a readable bitbuffer (bf_read). * @note This is a wrapper around BfReadShort(). * - * @param bf bf_read handle to read from. - * @return Entity index read. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Entity index read. + * @error Invalid or incorrect Handle. */ native int BfReadEntity(Handle bf); /** * Reads a bit angle from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @param numBits Optional number of bits to use. - * @return Angle read. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @param numBits Optional number of bits to use. + * @return Angle read. + * @error Invalid or incorrect Handle. */ native float BfReadAngle(Handle bf, int numBits=8); /** * Reads a coordinate from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Coordinate read. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Coordinate read. + * @error Invalid or incorrect Handle. */ native float BfReadCoord(Handle bf); /** * Reads a 3D vector of coordinates from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @param coord Destination coordinate array. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @param coord Destination coordinate array. + * @error Invalid or incorrect Handle. */ native void BfReadVecCoord(Handle bf, float coord[3]); /** * Reads a 3D normal vector from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @param vec Destination vector array. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @param vec Destination vector array. + * @error Invalid or incorrect Handle. */ native void BfReadVecNormal(Handle bf, float vec[3]); /** * Reads a 3D angle vector from a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @param angles Destination angle vector. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @param angles Destination angle vector. + * @error Invalid or incorrect Handle. */ native void BfReadAngles(Handle bf, float angles[3]); /** * Returns the number of bytes left in a readable bitbuffer (bf_read). * - * @param bf bf_read handle to read from. - * @return Number of bytes left unread. - * @error Invalid or incorrect Handle. + * @param bf bf_read handle to read from. + * @return Number of bytes left unread. + * @error Invalid or incorrect Handle. */ native int BfGetNumBytesLeft(Handle bf); diff --git a/env/include/clientprefs.inc b/env/include/clientprefs.inc index a5de7b0..218d033 100644 --- a/env/include/clientprefs.inc +++ b/env/include/clientprefs.inc @@ -40,9 +40,9 @@ */ enum CookieAccess { - CookieAccess_Public, /**< Visible and Changeable by users */ - CookieAccess_Protected, /**< Read only to users */ - CookieAccess_Private, /**< Completely hidden cookie */ + CookieAccess_Public, /**< Visible and Changeable by users */ + CookieAccess_Protected, /**< Read only to users */ + CookieAccess_Private /**< Completely hidden cookie */ }; /** @@ -50,10 +50,10 @@ enum CookieAccess */ enum CookieMenu { - CookieMenu_YesNo, /**< Yes/No menu with "yes"/"no" results saved into the cookie */ - CookieMenu_YesNo_Int, /**< Yes/No menu with 1/0 saved into the cookie */ - CookieMenu_OnOff, /**< On/Off menu with "on"/"off" results saved into the cookie */ - CookieMenu_OnOff_Int, /**< On/Off menu with 1/0 saved into the cookie */ + CookieMenu_YesNo, /**< Yes/No menu with "yes"/"no" results saved into the cookie */ + CookieMenu_YesNo_Int, /**< Yes/No menu with 1/0 saved into the cookie */ + CookieMenu_OnOff, /**< On/Off menu with "on"/"off" results saved into the cookie */ + CookieMenu_OnOff_Int /**< On/Off menu with 1/0 saved into the cookie */ }; enum CookieMenuAction @@ -71,98 +71,17 @@ enum CookieMenuAction * * INPUT : Client index and any data if available. */ - CookieMenuAction_SelectOption = 1, + CookieMenuAction_SelectOption = 1 }; -/** - * Note: - * - * A successful return value/result on any client prefs native only guarantees that the local cache has been updated. - * Database connection problems can still prevent the data from being permanently saved. Connection problems will be logged as - * errors by the clientprefs extension. - */ - -/** - * Creates a new Client preference cookie. - * - * Handles returned by RegClientCookie can be closed via CloseHandle() when - * no longer needed. - * - * @param name Name of the new preference cookie. - * @param description Optional description of the preference cookie. - * @param access What CookieAccess level to assign to this cookie. - * @return A handle to the newly created cookie. If the cookie already - * exists, a handle to it will still be returned. - * @error Cookie name is blank. - */ -native Handle RegClientCookie(const char[] name, const char[] description, CookieAccess access); - -/** - * Searches for a Client preference cookie. - * - * Handles returned by FindClientCookie can be closed via CloseHandle() when - * no longer needed. - * - * @param name Name of cookie to find. - * @return A handle to the cookie if it is found. INVALID_HANDLE otherwise. - */ -native Handle FindClientCookie(const char[] name); - -/** - * Set the value of a Client preference cookie. - * - * @param client Client index. - * @param cookie Client preference cookie handle. - * @param value String value to set. - * @error Invalid cookie handle or invalid client index. - */ -native void SetClientCookie(int client, Handle cookie, const char[] value); - -/** - * Retrieve the value of a Client preference cookie. - * - * @param client Client index. - * @param cookie Client preference cookie handle. - * @param buffer Copyback buffer for value. - * @param maxlen Maximum length of the buffer. - * @error Invalid cookie handle or invalid client index. - */ -native void GetClientCookie(int client, Handle cookie, char[] buffer, int maxlen); - -/** - * Sets the value of a Client preference cookie based on an authID string. - * - * @param authID String Auth/STEAM ID of player to set. - * @param cookie Client preference cookie handle. - * @param value String value to set. - * @error Invalid cookie handle. - */ -native void SetAuthIdCookie(const char[] authID, Handle cookie, const char[] value); - -/** - * Checks if a clients cookies have been loaded from the database. - * - * @param client Client index. - * @return True if loaded, false otherwise. - * @error Invalid client index. - */ -native bool AreClientCookiesCached(int client); - -/** - * Called once a client's saved cookies have been loaded from the database. - * - * @param client Client index. - */ -forward void OnClientCookiesCached(int client); - /** * Cookie Menu Callback prototype * - * @param client Client index. - * @param action CookieMenuAction being performed. - * @param info Info data passed. - * @param buffer Outbut buffer. - * @param maxlen Max length of the output buffer. + * @param client Client index. + * @param action CookieMenuAction being performed. + * @param info Info data passed. + * @param buffer Outbut buffer. + * @param maxlen Max length of the output buffer. */ typedef CookieMenuHandler = function void ( int client, @@ -172,17 +91,169 @@ typedef CookieMenuHandler = function void ( int maxlen ); +/** + * Note: + * + * A successful return value/result on any client prefs native only guarantees that the local cache has been updated. + * Database connection problems can still prevent the data from being permanently saved. Connection problems will be logged as + * errors by the clientprefs extension. + */ + +methodmap Cookie < Handle { + // Creates a new Client preference cookie. + // + // Handles returned can be closed via CloseHandle() when + // no longer needed. + // + // @param name Name of the new preference cookie. + // @param description Optional description of the preference cookie. + // @param access What CookieAccess level to assign to this cookie. + // @return A handle to the newly created cookie. If the cookie already + // exists, a handle to it will still be returned. + // @error Cookie name is blank. + public native Cookie(const char[] name, const char[] description, CookieAccess access); + + // Searches for a Client preference cookie. + // + // Handles returned by Cookie.Find can be closed via CloseHandle() when + // no longer needed. + // + // @param name Name of cookie to find. + // @return A handle to the cookie if it is found. INVALID_HANDLE otherwise. + public static native Cookie Find(const char[] name); + + // Set the value of a Client preference cookie. + // + // @param client Client index. + // @param value String value to set. + // @error Invalid cookie handle or invalid client index. + public native void Set(int client, const char[] value); + + // Retrieve the value of a Client preference cookie. + // + // @param client Client index. + // @param buffer Copyback buffer for value. + // @param maxlen Maximum length of the buffer. + // @error Invalid cookie handle or invalid client index. + public native void Get(int client, char[] buffer, int maxlen); + + // Sets the value of a Client preference cookie based on an authID string. + // + // @param authID String Auth/STEAM ID of player to set. + // @param value String value to set. + // @error Invalid cookie handle. + public native void SetByAuthId(const char[] authID, const char[] value); + + // Add a new prefab item to the client cookie settings menu. + // + // Note: This handles everything automatically and does not require a callback + // + // @param type A CookieMenu prefab menu type. + // @param display Text to show on the menu. + // @param handler Optional handler callback for translations and output on selection + // @param info Info data to pass to the callback. + // @error Invalid cookie handle. + public native void SetPrefabMenu(CookieMenu type, const char[] display, CookieMenuHandler handler=INVALID_FUNCTION, any info=0); + + // Returns the last updated timestamp for a client cookie + // + // @param client Client index. + // @return Last updated timestamp. + public native int GetClientTime(int client); + + // Returns the access level of a cookie + // + // @return CookieAccess access level. + // @error Invalid cookie handle. + property CookieAccess AccessLevel { + public native get(); + } +}; + +/** + * Creates a new Client preference cookie. + * + * Handles returned by RegClientCookie can be closed via CloseHandle() when + * no longer needed. + * + * @param name Name of the new preference cookie. + * @param description Optional description of the preference cookie. + * @param access What CookieAccess level to assign to this cookie. + * @return A handle to the newly created cookie. If the cookie already + * exists, a handle to it will still be returned. + * @error Cookie name is blank. + */ +native Handle RegClientCookie(const char[] name, const char[] description, CookieAccess access); + +/** + * Searches for a Client preference cookie. + * + * Handles returned by FindClientCookie can be closed via CloseHandle() when + * no longer needed. + * + * @param name Name of cookie to find. + * @return A handle to the cookie if it is found. INVALID_HANDLE otherwise. + */ +native Handle FindClientCookie(const char[] name); + +/** + * Set the value of a Client preference cookie. + * + * @param client Client index. + * @param cookie Client preference cookie handle. + * @param value String value to set. + * @error Invalid cookie handle or invalid client index. + */ +native void SetClientCookie(int client, Handle cookie, const char[] value); + +/** + * Retrieve the value of a Client preference cookie. + * + * @param client Client index. + * @param cookie Client preference cookie handle. + * @param buffer Copyback buffer for value. + * @param maxlen Maximum length of the buffer. + * @error Invalid cookie handle or invalid client index. + */ +native void GetClientCookie(int client, Handle cookie, char[] buffer, int maxlen); + +/** + * Sets the value of a Client preference cookie based on an authID string. + * + * @param authID String Auth/STEAM ID of player to set. + * @param cookie Client preference cookie handle. + * @param value String value to set. + * @error Invalid cookie handle. + */ +native void SetAuthIdCookie(const char[] authID, Handle cookie, const char[] value); + +/** + * Checks if a clients cookies have been loaded from the database. + * + * @param client Client index. + * @return True if loaded, false otherwise. + * @error Invalid client index. + */ +native bool AreClientCookiesCached(int client); + +/** + * Called once a client's saved cookies have been loaded from the database. + * + * @param client Client index. + */ +forward void OnClientCookiesCached(int client); + /** * Add a new prefab item to the client cookie settings menu. * * Note: This handles everything automatically and does not require a callback * - * @param cookie Client preference cookie handle. - * @param type A CookieMenu prefab menu type. - * @param display Text to show on the menu. - * @param handler Optional handler callback for translations and output on selection - * @param info Info data to pass to the callback. - * @error Invalid cookie handle. + * @param cookie Client preference cookie handle. + * @param type A CookieMenu prefab menu type. + * @param display Text to show on the menu. + * @param handler Optional handler callback for translations and output on selection + * @param info Info data to pass to the callback. + * @error Invalid cookie handle. */ native void SetCookiePrefabMenu(Handle cookie, CookieMenu type, const char[] display, CookieMenuHandler handler=INVALID_FUNCTION, any info=0); @@ -191,37 +262,37 @@ native void SetCookiePrefabMenu(Handle cookie, CookieMenu type, const char[] dis * * Note: This only adds the top level menu item. You need to handle any submenus from the callback. * - * @param handler A MenuHandler callback function. - * @param info Data to pass to the callback. - * @param display Text to show on the menu. - * @error Invalid cookie handle. + * @param handler A MenuHandler callback function. + * @param info Data to pass to the callback. + * @param display Text to show on the menu. + * @error Invalid cookie handle. */ native void SetCookieMenuItem(CookieMenuHandler handler, any info, const char[] display); /** * Displays the settings menu to a client. * - * @param client Client index. + * @param client Client index. */ native void ShowCookieMenu(int client); /** * Gets a cookie iterator. Must be freed with CloseHandle(). * - * @return A new cookie iterator. + * @return A new cookie iterator. */ native Handle GetCookieIterator(); /** * Reads a cookie iterator, then advances to the next cookie if any. * - * @param iter Cookie iterator Handle. - * @param name Name buffer. - * @param nameLen Name buffer size. - * @param access Access level of the cookie. - * @param desc Cookie description buffer. - * @param descLen Cookie description buffer size. - * @return True on success, false if there are no more commands. + * @param iter Cookie iterator Handle. + * @param name Name buffer. + * @param nameLen Name buffer size. + * @param access Access level of the cookie. + * @param desc Cookie description buffer. + * @param descLen Cookie description buffer size. + * @return True on success, false if there are no more commands. */ native bool ReadCookieIterator(Handle iter, char[] name, @@ -229,22 +300,22 @@ native bool ReadCookieIterator(Handle iter, CookieAccess &access, char[] desc="", int descLen=0); - + /** * Returns the access level of a cookie * - * @param cookie Client preference cookie handle. - * @return CookieAccess access level. - * @error Invalid cookie handle. + * @param cookie Client preference cookie handle. + * @return CookieAccess access level. + * @error Invalid cookie handle. */ native CookieAccess GetCookieAccess(Handle cookie); /** * Returns the last updated timestamp for a client cookie * - * @param client Client index. - * @param cookie Cookie handle. - * @return Last updated timestamp. + * @param client Client index. + * @param cookie Cookie handle. + * @return Last updated timestamp. */ native int GetClientCookieTime(int client, Handle cookie); @@ -270,6 +341,7 @@ public void __ext_cprefs_SetNTVOptional() MarkNativeAsOptional("FindClientCookie"); MarkNativeAsOptional("SetClientCookie"); MarkNativeAsOptional("GetClientCookie"); + MarkNativeAsOptional("SetAuthIdCookie"); MarkNativeAsOptional("AreClientCookiesCached"); MarkNativeAsOptional("SetCookiePrefabMenu"); MarkNativeAsOptional("SetCookieMenuItem"); @@ -278,5 +350,14 @@ public void __ext_cprefs_SetNTVOptional() MarkNativeAsOptional("ReadCookieIterator"); MarkNativeAsOptional("GetCookieAccess"); MarkNativeAsOptional("GetClientCookieTime"); + + MarkNativeAsOptional("Cookie.Cookie"); + MarkNativeAsOptional("Cookie.Find"); + MarkNativeAsOptional("Cookie.Set"); + MarkNativeAsOptional("Cookie.Get"); + MarkNativeAsOptional("Cookie.SetByAuthId"); + MarkNativeAsOptional("Cookie.SetPrefabMenu"); + MarkNativeAsOptional("Cookie.GetClientTime"); + MarkNativeAsOptional("Cookie.AccessLevel.get"); } #endif diff --git a/env/include/clients.inc b/env/include/clients.inc index a237906..895c5aa 100644 --- a/env/include/clients.inc +++ b/env/include/clients.inc @@ -40,9 +40,9 @@ */ enum NetFlow { - NetFlow_Outgoing = 0, /**< Outgoing traffic */ - NetFlow_Incoming, /**< Incoming traffic */ - NetFlow_Both, /**< Both values added together */ + NetFlow_Outgoing = 0, /**< Outgoing traffic */ + NetFlow_Incoming, /**< Incoming traffic */ + NetFlow_Both /**< Both values added together */ }; /** @@ -61,7 +61,7 @@ enum AuthIdType // The following are only available on games that support Steam authentication. AuthId_Steam2, /**< Steam2 rendered format, ex "STEAM_1:1:4153990" */ AuthId_Steam3, /**< Steam3 rendered format, ex "[U:1:8307981]" */ - AuthId_SteamID64, /**< A SteamID64 (uint64) as a String, ex "76561197968573709" */ + AuthId_SteamID64 /**< A SteamID64 (uint64) as a String, ex "76561197968573709" */ }; /** @@ -69,10 +69,10 @@ enum AuthIdType * MAXPLAYERS is a hardcoded value as an upper limit. MaxClients changes based on the server. */ -#define MAXPLAYERS 65 /**< Maximum number of players SourceMod supports */ -#define MAX_NAME_LENGTH 32 /**< Maximum buffer required to store a client name */ +#define MAXPLAYERS 65 /**< Maximum number of players SourceMod supports */ +#define MAX_NAME_LENGTH 128 /**< Maximum buffer required to store a client name */ -public const int MaxClients; /**< Maximum number of players the server supports (dynamic) */ +public const int MaxClients; /**< Maximum number of players the server supports (dynamic) */ /** * Called on client connection. If you return true, the client will be allowed in the server. @@ -83,17 +83,17 @@ public const int MaxClients; /**< Maximum number of players the server supports * to the string buffer, it is not defined which plugin's string will be shown to the client, * but it is guaranteed one of them will. * - * @param client Client index. - * @param rejectmsg Buffer to store the rejection message when the connection is refused. - * @param maxlen Maximum number of characters for rejection buffer. - * @return True to validate client's connection, false to refuse it. + * @param client Client index. + * @param rejectmsg Buffer to store the rejection message when the connection is refused. + * @param maxlen Maximum number of characters for rejection buffer. + * @return True to validate client's connection, false to refuse it. */ forward bool OnClientConnect(int client, char[] rejectmsg, int maxlen); /** * Called once a client successfully connects. This callback is paired with OnClientDisconnect. * - * @param client Client index. + * @param client Client index. */ forward void OnClientConnected(int client); @@ -108,21 +108,21 @@ forward void OnClientConnected(int client); * GetClientCount() will include clients as they are passed through this * function, as clients are already in game at this point. * - * @param client Client index. + * @param client Client index. */ forward void OnClientPutInServer(int client); /** * Called when a client is disconnecting from the server. * - * @param client Client index. + * @param client Client index. */ forward void OnClientDisconnect(int client); /** * Called when a client is disconnected from the server. * - * @param client Client index. + * @param client Client index. */ forward void OnClientDisconnect_Post(int client); @@ -132,39 +132,39 @@ forward void OnClientDisconnect_Post(int client); * As of SourceMod 1.3, the client is guaranteed to be in-game. * Use command listeners (console.inc) for more advanced hooks. * - * @param client Client index. - * @param args Number of arguments. - * @return Plugin_Handled blocks the command from being sent, - * and Plugin_Continue resumes normal functionality. + * @param client Client index. + * @param args Number of arguments. + * @return Plugin_Handled blocks the command from being sent, + * and Plugin_Continue resumes normal functionality. */ forward Action OnClientCommand(int client, int args); /** * Called when a client is sending a KeyValues command. * - * @param client Client index. - * @param kv Editable KeyValues data to be sent as the command. - * (This handle should not be stored and will be closed - * after this forward completes.) - * @return Plugin_Handled blocks the command from being sent, - * and Plugin_Continue resumes normal functionality. + * @param client Client index. + * @param kv Editable KeyValues data to be sent as the command. + * (This handle should not be stored and will be closed + * after this forward completes.) + * @return Plugin_Handled blocks the command from being sent, + * and Plugin_Continue resumes normal functionality. */ forward Action OnClientCommandKeyValues(int client, KeyValues kv); /** * Called after a client has sent a KeyValues command. * - * @param client Client index. - * @param kv KeyValues data sent as the command. - * (This handle should not be stored and will be closed - * after this forward completes.) + * @param client Client index. + * @param kv KeyValues data sent as the command. + * (This handle should not be stored and will be closed + * after this forward completes.) */ forward void OnClientCommandKeyValues_Post(int client, KeyValues kv); /** * Called whenever the client's settings are changed. * - * @param client Client index. + * @param client Client index. */ forward void OnClientSettingsChanged(int client); @@ -175,8 +175,8 @@ forward void OnClientSettingsChanged(int client); * * This is called by bots, but the ID will be "BOT". * - * @param client Client index. - * @param auth Client Steam2 id, if available, else engine auth id. + * @param client Client index. + * @param auth Client Steam2 id, if available, else engine auth id. */ forward void OnClientAuthorized(int client, const char[] auth); @@ -193,8 +193,8 @@ forward void OnClientAuthorized(int client, const char[] auth); * This callback is guaranteed to occur on all clients, and always * after each OnClientPutInServer() call. * - * @param client Client index. - * @return Plugin_Handled to block admin checks. + * @param client Client index. + * @return Plugin_Handled to block admin checks. */ forward Action OnClientPreAdminCheck(int client); @@ -210,7 +210,7 @@ forward Action OnClientPreAdminCheck(int client); * * See OnClientPostAdminCheck() for more information. * - * @param client Client index. + * @param client Client index. */ forward void OnClientPostAdminFilter(int client); @@ -221,12 +221,12 @@ forward void OnClientPostAdminFilter(int client); * This callback is guaranteed to occur on all clients, and always * after each OnClientPutInServer() call. * - * @param client Client index. + * @param client Client index. */ forward void OnClientPostAdminCheck(int client); /** - * This function will be deprecated in a future release. Use the MaxClients variable instead. + * This function is deprecated. Use the MaxClients variable instead. * * Returns the maximum number of clients allowed on the server. This may * return 0 if called before OnMapStart(), and thus should not be called @@ -236,8 +236,10 @@ forward void OnClientPostAdminCheck(int client); * SourceTV or TF2's arena mode. Use the "MaxClients" dynamic variable documented at the * top of this file. * - * @return Maximum number of clients allowed. + * @return Maximum number of clients allowed. + * @deprecated Use MaxClients variable instead. */ +#pragma deprecated Use MaxClients variable instead. native int GetMaxClients(); /** @@ -251,52 +253,53 @@ native int GetMaxClients(); * You should not globally cache the value to GetMaxHumanPlayers() because it can change across * game modes. You may still cache it locally. * - * @return Maximum number of humans allowed. + * @return Maximum number of humans allowed. */ native int GetMaxHumanPlayers(); /** * Returns the client count put in the server. * - * @param inGameOnly If false connecting players are also counted. - * @return Client count in the server. + * @param inGameOnly If false connecting players are also counted. + * @return Client count in the server. */ native int GetClientCount(bool inGameOnly=true); /** * Returns the client's name. * - * @param client Player index. - * @param name Buffer to store the client's name. - * @param maxlen Maximum length of string buffer (includes NULL terminator). - * @return True on success, false otherwise. - * @error If the client is not connected an error will be thrown. + * @param client Player index. + * @param name Buffer to store the client's name. + * @param maxlen Maximum length of string buffer (includes NULL terminator). + * @return True on success, false otherwise. + * @error If the client is not connected an error will be thrown. */ native bool GetClientName(int client, char[] name, int maxlen); /** * Retrieves a client's IP address. * - * @param client Player index. - * @param ip Buffer to store the client's ip address. - * @param maxlen Maximum length of string buffer (includes NULL terminator). - * @param remport Remove client's port from the ip string (true by default). - * @return True on success, false otherwise. - * @error If the client is not connected or the index is invalid. + * @param client Player index. + * @param ip Buffer to store the client's ip address. + * @param maxlen Maximum length of string buffer (includes NULL terminator). + * @param remport Remove client's port from the ip string (true by default). + * @return True on success, false otherwise. + * @error If the client is not connected or the index is invalid. */ native bool GetClientIP(int client, char[] ip, int maxlen, bool remport=true); /** * Retrieves a client's authentication string (SteamID). * - * @param client Player index. - * @param auth Buffer to store the client's auth string. - * @param maxlen Maximum length of string buffer (includes NULL terminator). - * @param validate Check backend validation status. - * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, - * You WILL KNOW if you need to use this, MOST WILL NOT. - * @return True on success, false otherwise. - * @error If the client is not connected or the index is invalid. + * @param client Player index. + * @param auth Buffer to store the client's auth string. + * @param maxlen Maximum length of string buffer (includes NULL terminator). + * @param validate Check backend validation status. + * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, + * You WILL KNOW if you need to use this, MOST WILL NOT. + * @return True on success, false otherwise. + * @error If the client is not connected or the index is invalid. + * @deprecated Use GetClientAuthId */ #pragma deprecated Use GetClientAuthId native bool GetClientAuthString(int client, char[] auth, int maxlen, bool validate=true); @@ -304,27 +307,28 @@ native bool GetClientAuthString(int client, char[] auth, int maxlen, bool valida /** * Retrieves a client's authentication string (SteamID). * - * @param client Player index. - * @param authType Auth id type and format to use. - * @param auth Buffer to store the client's auth id. - * @param maxlen Maximum length of string buffer (includes NULL terminator). - * @param validate Check backend validation status. - * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, - * You WILL KNOW if you need to use this, MOST WILL NOT. - * @return True on success, false otherwise. - * @error If the client is not connected or the index is invalid. + * @param client Player index. + * @param authType Auth id type and format to use. + * @param auth Buffer to store the client's auth id. + * @param maxlen Maximum length of string buffer (includes NULL terminator). + * @param validate Check backend validation status. + * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, + * You WILL KNOW if you need to use this, MOST WILL NOT. + * @return True on success, false otherwise. + * @error If the client is not connected or the index is invalid. */ native bool GetClientAuthId(int client, AuthIdType authType, char[] auth, int maxlen, bool validate=true); /** - * Returns the client's Steam account ID. + * Returns the client's Steam account ID, a number uniquely identifying a given Steam account. + * This number is the basis for the various display SteamID forms, see the AuthIdType enum for examples. * - * @param client Client Index. - * @param validate Check backend validation status. - * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, - * You WILL KNOW if you need to use this, MOST WILL NOT. - * @return Steam account ID or 0 if not available. - * @error If the client is not connected or the index is invalid. + * @param client Client Index. + * @param validate Check backend validation status. + * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, + * You WILL KNOW if you need to use this, MOST WILL NOT. + * @return Steam account ID or 0 if not available. + * @error If the client is not connected or the index is invalid. */ native int GetSteamAccountID(int client, bool validate=true); @@ -332,26 +336,26 @@ native int GetSteamAccountID(int client, bool validate=true); * Retrieves a client's user id, which is an index incremented for every client * that joins the server. * - * @param client Player index. - * @return User id of the client. - * @error If the client is not connected or the index is invalid. + * @param client Player index. + * @return User id of the client. + * @error If the client is not connected or the index is invalid. */ native int GetClientUserId(int client); /** * Returns if a certain player is connected. * - * @param client Player index. - * @return True if player is connected to the server, false otherwise. + * @param client Player index. + * @return True if player is connected to the server, false otherwise. */ native bool IsClientConnected(int client); /** * Returns if a certain player has entered the game. * - * @param client Player index (index does not have to be connected). - * @return True if player has entered the game, false otherwise. - * @error Invalid client index. + * @param client Player index (index does not have to be connected). + * @return True if player has entered the game, false otherwise. + * @error Invalid client index. */ native bool IsClientInGame(int client); @@ -359,15 +363,15 @@ native bool IsClientInGame(int client); * Returns if a client is in the "kick queue" (i.e. the client will be kicked * shortly and thus they should not appear as valid). * - * @param client Player index (must be connected). - * @return True if in the kick queue, false otherwise. - * @error Invalid client index. + * @param client Player index (must be connected). + * @return True if in the kick queue, false otherwise. + * @error Invalid client index. */ native bool IsClientInKickQueue(int client); /** * Backwards compatibility stock - use IsClientInGame - * @deprecated Renamed to IsClientInGame + * @deprecated Renamed to IsClientInGame */ #pragma deprecated Use IsClientInGame() instead stock bool IsPlayerInGame(int client) @@ -378,40 +382,40 @@ stock bool IsPlayerInGame(int client) /** * Returns if a certain player has been authenticated. * - * @param client Player index. - * @return True if player has been authenticated, false otherwise. + * @param client Player index. + * @return True if player has been authenticated, false otherwise. */ native bool IsClientAuthorized(int client); /** * Returns if a certain player is a fake client. * - * @param client Player index. - * @return True if player is a fake client, false otherwise. + * @param client Player index. + * @return True if player is a fake client, false otherwise. */ native bool IsFakeClient(int client); /** * Returns if a certain player is the SourceTV bot. * - * @param client Player index. - * @return True if player is the SourceTV bot, false otherwise. + * @param client Player index. + * @return True if player is the SourceTV bot, false otherwise. */ native bool IsClientSourceTV(int client); /** * Returns if a certain player is the Replay bot. * - * @param client Player index. - * @return True if player is the Replay bot, false otherwise. + * @param client Player index. + * @return True if player is the Replay bot, false otherwise. */ native bool IsClientReplay(int client); /** * Returns if a certain player is an observer/spectator. * - * @param client Player index. - * @return True if player is an observer, false otherwise. + * @param client Player index. + * @return True if player is an observer, false otherwise. */ native bool IsClientObserver(int client); @@ -420,49 +424,49 @@ native bool IsClientObserver(int client); * * Note: This function was originally in SDKTools and was moved to core. * - * @param client Player's index. - * @return True if the client is alive, false otherwise. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @return True if the client is alive, false otherwise. + * @error Invalid client index, client not in game, or no mod support. */ native bool IsPlayerAlive(int client); /** * Retrieves values from client replicated keys. * - * @param client Player's index. - * @param key Key string. - * @param value Buffer to store value. - * @param maxlen Maximum length of valve (UTF-8 safe). - * @return True on success, false otherwise. - * @error Invalid client index, or client not connected. + * @param client Player's index. + * @param key Key string. + * @param value Buffer to store value. + * @param maxlen Maximum length of valve (UTF-8 safe). + * @return True on success, false otherwise. + * @error Invalid client index, or client not connected. */ native bool GetClientInfo(int client, const char[] key, char[] value, int maxlen); /** * Retrieves a client's team index. * - * @param client Player's index. - * @return Team index the client is on (mod specific). - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @return Team index the client is on (mod specific). + * @error Invalid client index, client not in game, or no mod support. */ native int GetClientTeam(int client); /** * Sets a client's AdminId. * - * @param client Player's index. - * @param id AdminId to set. INVALID_ADMIN_ID removes admin permissions. - * @param temp True if the id should be freed on disconnect. - * @error Invalid client index, client not connected, or bogus AdminId. + * @param client Player's index. + * @param id AdminId to set. INVALID_ADMIN_ID removes admin permissions. + * @param temp True if the id should be freed on disconnect. + * @error Invalid client index, client not connected, or bogus AdminId. */ native void SetUserAdmin(int client, AdminId id, bool temp=false); /** * Retrieves a client's AdminId. * - * @param client Player's index. - * @return AdminId of the client, or INVALID_ADMIN_ID if none. - * @error Invalid client index, or client not connected. + * @param client Player's index. + * @return AdminId of the client, or INVALID_ADMIN_ID if none. + * @error Invalid client index, or client not connected. */ native AdminId GetUserAdmin(int client); @@ -470,9 +474,9 @@ native AdminId GetUserAdmin(int client); * Sets access flags on a client. If the client is not an admin, * a temporary, anonymous AdminId is given. * - * @param client Player's index. - * @param ... Flags to set on the client. - * @error Invalid client index, or client not connected. + * @param client Player's index. + * @param ... Flags to set on the client. + * @error Invalid client index, or client not connected. */ native void AddUserFlags(int client, AdminFlag ...); @@ -480,9 +484,9 @@ native void AddUserFlags(int client, AdminFlag ...); * Removes flags from a client. If the client is not an admin, * this has no effect. * - * @param client Player's index. - * @param ... Flags to remove from the client. - * @error Invalid client index, or client not connected. + * @param client Player's index. + * @param ... Flags to remove from the client. + * @error Invalid client index, or client not connected. */ native void RemoveUserFlags(int client, AdminFlag ...); @@ -490,8 +494,8 @@ native void RemoveUserFlags(int client, AdminFlag ...); * Sets access flags on a client using bits instead of flags. If the * client is not an admin, and flags not 0, a temporary, anonymous AdminId is given. * - * @param client Player's index. - * @param flags Bitstring of flags to set on client. + * @param client Player's index. + * @param flags Bitstring of flags to set on client. */ native void SetUserFlagBits(int client, int flags); @@ -499,9 +503,9 @@ native void SetUserFlagBits(int client, int flags); * Returns client access flags. If the client is not an admin, * the result is always 0. * - * @param client Player's index. - * @return Flags - * @error Invalid client index, or client not connected. + * @param client Player's index. + * @return Flags + * @error Invalid client index, or client not connected. */ native int GetUserFlagBits(int client); @@ -509,10 +513,10 @@ native int GetUserFlagBits(int client); * Returns whether a user can target another user. * This is a helper function for CanAdminTarget. * - * @param client Player's index. - * @param target Target player's index. - * @return True if target is targettable by the player, false otherwise. - * @error Invalid or unconnected player indexers. + * @param client Player's index. + * @param target Target player's index. + * @return True if target is targettable by the player, false otherwise. + * @error Invalid or unconnected player indexers. */ native bool CanUserTarget(int client, int target); @@ -522,9 +526,9 @@ native bool CanUserTarget(int client, int target); * * Note: This function is based on the internal cache only. * - * @param client Client index. - * @return True if access was changed, false if it did not. - * @error Invalid client index or client not in-game AND authorized. + * @param client Client index. + * @return True if access was changed, false if it did not. + * @error Invalid client index or client not in-game AND authorized. */ native bool RunAdminCacheChecks(int client); @@ -534,215 +538,224 @@ native bool RunAdminCacheChecks(int client); * * Note: This must be sent even if no admin id was assigned. * - * @param client Client index. - * @error Invalid client index or client not in-game AND authorized. + * @param client Client index. + * @error Invalid client index or client not in-game AND authorized. */ native void NotifyPostAdminCheck(int client); /** * Creates a fake client. * - * @param name Name to use. - * @return Client index on success, 0 otherwise. + * @param name Name to use. + * @return Client index on success, 0 otherwise. */ native int CreateFakeClient(const char[] name); /** * Sets a convar value on a fake client. * - * @param client Client index. - * @param cvar ConVar name. - * @param value ConVar value. - * @error Invalid client index, client not connected, - * or client not a fake client. + * @param client Client index. + * @param cvar ConVar name. + * @param value ConVar value. + * @error Invalid client index, client not connected, + * or client not a fake client. */ native void SetFakeClientConVar(int client, const char[] cvar, const char[] value); /** * Returns the client's health. * - * @param client Player's index. - * @return Health value. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @return Health value. + * @error Invalid client index, client not in game, or no mod support. */ native int GetClientHealth(int client); /** * Returns the client's model name. * - * @param client Player's index. - * @param model Buffer to store the client's model name. - * @param maxlen Maximum length of string buffer (includes NULL terminator). - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param model Buffer to store the client's model name. + * @param maxlen Maximum length of string buffer (includes NULL terminator). + * @error Invalid client index, client not in game, or no mod support. */ native void GetClientModel(int client, char[] model, int maxlen); /** * Returns the client's weapon name. * - * @param client Player's index. - * @param weapon Buffer to store the client's weapon name. - * @param maxlen Maximum length of string buffer (includes NULL terminator). - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param weapon Buffer to store the client's weapon name. + * @param maxlen Maximum length of string buffer (includes NULL terminator). + * @error Invalid client index, client not in game, or no mod support. */ native void GetClientWeapon(int client, char[] weapon, int maxlen); /** * Returns the client's max size vector. * - * @param client Player's index. - * @param vec Destination vector to store the client's max size. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param vec Destination vector to store the client's max size. + * @error Invalid client index, client not in game, or no mod support. */ native void GetClientMaxs(int client, float vec[3]); /** * Returns the client's min size vector. * - * @param client Player's index. - * @param vec Destination vector to store the client's min size. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param vec Destination vector to store the client's min size. + * @error Invalid client index, client not in game, or no mod support. */ native void GetClientMins(int client, float vec[3]); /** * Returns the client's position angle. * - * @param client Player's index. - * @param ang Destination vector to store the client's position angle. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param ang Destination vector to store the client's position angle. + * @error Invalid client index, client not in game, or no mod support. */ native void GetClientAbsAngles(int client, float ang[3]); /** * Returns the client's origin vector. * - * @param client Player's index. - * @param vec Destination vector to store the client's origin vector. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param vec Destination vector to store the client's origin vector. + * @error Invalid client index, client not in game, or no mod support. */ native void GetClientAbsOrigin(int client, float vec[3]); /** * Returns the client's armor. * - * @param client Player's index. - * @return Armor value. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @return Armor value. + * @error Invalid client index, client not in game, or no mod support. */ native int GetClientArmor(int client); /** * Returns the client's death count. * - * @param client Player's index. - * @return Death count. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @return Death count. + * @error Invalid client index, client not in game, or no mod support. */ native int GetClientDeaths(int client); /** * Returns the client's frag count. * - * @param client Player's index. - * @return Frag count. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @return Frag count. + * @error Invalid client index, client not in game, or no mod support. */ native int GetClientFrags(int client); /** * Returns the client's send data rate in bytes/sec. * - * @param client Player's index. - * @return Data rate. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @return Data rate. + * @error Invalid client index, client not connected, or fake client. */ native int GetClientDataRate(int client); /** * Returns if a client is timing out * - * @param client Player's index. - * @return True if client is timing out, false otherwise. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @return True if client is timing out, false otherwise. + * @error Invalid client index, client not connected, or fake client. */ native bool IsClientTimingOut(int client); /** * Returns the client's connection time in seconds. * - * @param client Player's index. - * @return Connection time. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @return Connection time. + * @error Invalid client index, client not connected, or fake client. */ native float GetClientTime(int client); /** * Returns the client's current latency (RTT), more accurate than GetAvgLatency but jittering. * - * @param client Player's index. - * @param flow Traffic flowing direction. - * @return Latency, or -1 if network info is not available. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @param flow Traffic flowing direction. + * @return Latency, or -1 if network info is not available. + * @error Invalid client index, client not connected, or fake client. */ native float GetClientLatency(int client, NetFlow flow); /** * Returns the client's average packet latency in seconds. * - * @param client Player's index. - * @param flow Traffic flowing direction. - * @return Latency, or -1 if network info is not available. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @param flow Traffic flowing direction. + * @return Latency, or -1 if network info is not available. + * @error Invalid client index, client not connected, or fake client. */ native float GetClientAvgLatency(int client, NetFlow flow); /** * Returns the client's average packet loss, values go from 0 to 1 (for percentages). * - * @param client Player's index. - * @param flow Traffic flowing direction. - * @return Average packet loss, or -1 if network info is not available. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @param flow Traffic flowing direction. + * @return Average packet loss, or -1 if network info is not available. + * @error Invalid client index, client not connected, or fake client. */ native float GetClientAvgLoss(int client, NetFlow flow); /** * Returns the client's average packet choke, values go from 0 to 1 (for percentages). * - * @param client Player's index. - * @param flow Traffic flowing direction. - * @return Average packet loss, or -1 if network info is not available. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @param flow Traffic flowing direction. + * @return Average packet loss, or -1 if network info is not available. + * @error Invalid client index, client not connected, or fake client. */ native float GetClientAvgChoke(int client, NetFlow flow); /** * Returns the client's data flow in bytes/sec. * - * @param client Player's index. - * @param flow Traffic flowing direction. - * @return Data flow. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @param flow Traffic flowing direction. + * @return Data flow. + * @error Invalid client index, client not connected, or fake client. */ native float GetClientAvgData(int client, NetFlow flow); /** * Returns the client's average packet frequency in packets/sec. * - * @param client Player's index. - * @param flow Traffic flowing direction. - * @return Packet frequency. - * @error Invalid client index, client not connected, or fake client. + * @param client Player's index. + * @param flow Traffic flowing direction. + * @return Packet frequency. + * @error Invalid client index, client not connected, or fake client. */ native float GetClientAvgPackets(int client, NetFlow flow); +/** + * Returns the client's baseserver IClient pointer. + * + * @param client Player's index. + * @return IClient address. + * @error Invalid client index, client not connected, or fake client. + */ +native Address GetClientIClient(int client); + /** * Translates an userid index to the real player index. * - * @param userid Userid value. - * @return Client value. - * @error Returns 0 if invalid userid. + * @param userid Userid value. + * @return Client value. + * @error Returns 0 if invalid userid. */ native int GetClientOfUserId(int userid); @@ -758,11 +771,11 @@ native int GetClientOfUserId(int userid); * * Note: IsClientInKickQueue() will return true before the kick occurs. * - * @param client Client index. - * @param format Optional formatting rules for disconnect reason. + * @param client Client index. + * @param format Optional formatting rules for disconnect reason. * Note that a period is automatically appended to the string by the engine. - * @param ... Variable number of format parameters. - * @error Invalid client index, or client not connected. + * @param ... Variable number of format parameters. + * @error Invalid client index, or client not connected. */ native void KickClient(int client, const char[] format="", any ...); @@ -773,11 +786,11 @@ native void KickClient(int client, const char[] format="", any ...); * doubt, create a short (0.1 second) timer to kick the client in the next * available frame. * - * @param client Client index. - * @param format Optional formatting rules for disconnect reason. + * @param client Client index. + * @param format Optional formatting rules for disconnect reason. * Note that a period is automatically appended to the string by the engine. - * @param ... Variable number of format parameters. - * @error Invalid client index, or client not connected. + * @param ... Variable number of format parameters. + * @error Invalid client index, or client not connected. */ native void KickClientEx(int client, const char[] format="", any ...); @@ -785,26 +798,26 @@ native void KickClientEx(int client, const char[] format="", any ...); * Changes a client's team through the mod's generic team changing function. * On CS:S, this will kill the player. * - * @param client Client index. - * @param team Mod-specific team index. - * @error Invalid client index, client not connected, or lack of - * mod support. + * @param client Client index. + * @param team Mod-specific team index. + * @error Invalid client index, client not connected, or lack of + * mod support. */ native void ChangeClientTeam(int client, int team); /** * Returns the clients unique serial identifier. * - * @param client Client index. - * @return Serial number. - * @error Invalid client index, or client not connected. + * @param client Client index. + * @return Serial number. + * @error Invalid client index, or client not connected. */ native int GetClientSerial(int client); /** * Returns the client index by its serial number. * - * @param serial Serial number. - * @return Client index, or 0 for invalid serial. + * @param serial Serial number. + * @return Client index, or 0 for invalid serial. */ native int GetClientFromSerial(int serial); diff --git a/env/include/commandfilters.inc b/env/include/commandfilters.inc index 1047885..9ba8d34 100644 --- a/env/include/commandfilters.inc +++ b/env/include/commandfilters.inc @@ -35,23 +35,23 @@ #endif #define _commandfilters_included -#define MAX_TARGET_LENGTH 64 +#define MAX_TARGET_LENGTH 64 -#define COMMAND_FILTER_ALIVE (1<<0) /**< Only allow alive players */ -#define COMMAND_FILTER_DEAD (1<<1) /**< Only filter dead players */ -#define COMMAND_FILTER_CONNECTED (1<<2) /**< Allow players not fully in-game */ -#define COMMAND_FILTER_NO_IMMUNITY (1<<3) /**< Ignore immunity rules */ -#define COMMAND_FILTER_NO_MULTI (1<<4) /**< Do not allow multiple target patterns */ -#define COMMAND_FILTER_NO_BOTS (1<<5) /**< Do not allow bots to be targetted */ +#define COMMAND_FILTER_ALIVE (1<<0) /**< Only allow alive players */ +#define COMMAND_FILTER_DEAD (1<<1) /**< Only filter dead players */ +#define COMMAND_FILTER_CONNECTED (1<<2) /**< Allow players not fully in-game */ +#define COMMAND_FILTER_NO_IMMUNITY (1<<3) /**< Ignore immunity rules */ +#define COMMAND_FILTER_NO_MULTI (1<<4) /**< Do not allow multiple target patterns */ +#define COMMAND_FILTER_NO_BOTS (1<<5) /**< Do not allow bots to be targetted */ -#define COMMAND_TARGET_NONE 0 /**< No target was found */ -#define COMMAND_TARGET_NOT_ALIVE -1 /**< Single client is not alive */ -#define COMMAND_TARGET_NOT_DEAD -2 /**< Single client is not dead */ -#define COMMAND_TARGET_NOT_IN_GAME -3 /**< Single client is not in game */ -#define COMMAND_TARGET_IMMUNE -4 /**< Single client is immune */ -#define COMMAND_TARGET_EMPTY_FILTER -5 /**< A multi-filter (such as @all) had no targets */ -#define COMMAND_TARGET_NOT_HUMAN -6 /**< Target was not human */ -#define COMMAND_TARGET_AMBIGUOUS -7 /**< Partial name had too many targets */ +#define COMMAND_TARGET_NONE 0 /**< No target was found */ +#define COMMAND_TARGET_NOT_ALIVE -1 /**< Single client is not alive */ +#define COMMAND_TARGET_NOT_DEAD -2 /**< Single client is not dead */ +#define COMMAND_TARGET_NOT_IN_GAME -3 /**< Single client is not in game */ +#define COMMAND_TARGET_IMMUNE -4 /**< Single client is immune */ +#define COMMAND_TARGET_EMPTY_FILTER -5 /**< A multi-filter (such as @all) had no targets */ +#define COMMAND_TARGET_NOT_HUMAN -6 /**< Target was not human */ +#define COMMAND_TARGET_AMBIGUOUS -7 /**< Partial name had too many targets */ /** * Processes a generic command target string, and resolves it to a list @@ -61,28 +61,28 @@ * as that file is guaranteed to contain all of the translatable phrases that * ProcessTargetString() will return. * - * @param pattern Pattern to find clients against. - * @param admin Admin performing the action, or 0 if the server. - * @param targets Array to hold targets. - * @param max_targets Maximum size of the targets array. - * @param filter_flags Filter flags. - * @param target_name Buffer to store the target name. - * @param tn_maxlength Maximum length of the target name buffer. - * @param tn_is_ml OUTPUT: Will be true if the target name buffer is an ML phrase, - * false if it is a normal string. - * @return If a multi-target pattern was used, the number of clients found - * is returned. If a single-target pattern was used, 1 is returned - * if one valid client is found. Otherwise, a COMMAND_TARGET reason - * for failure is returned. + * @param pattern Pattern to find clients against. + * @param admin Admin performing the action, or 0 if the server. + * @param targets Array to hold targets. + * @param max_targets Maximum size of the targets array. + * @param filter_flags Filter flags. + * @param target_name Buffer to store the target name. + * @param tn_maxlength Maximum length of the target name buffer. + * @param tn_is_ml OUTPUT: Will be true if the target name buffer is an ML phrase, + * false if it is a normal string. + * @return If a multi-target pattern was used, the number of clients found + * is returned. If a single-target pattern was used, 1 is returned + * if one valid client is found. Otherwise, a COMMAND_TARGET reason + * for failure is returned. */ native int ProcessTargetString(const char[] pattern, - int admin, - int[] targets, - int max_targets, - int filter_flags, - char[] target_name, - int tn_maxlength, - bool &tn_is_ml); + int admin, + int[] targets, + int max_targets, + int filter_flags, + char[] target_name, + int tn_maxlength, + bool &tn_is_ml); /** @@ -109,8 +109,8 @@ native void GetLastProcessTargetString(char[] pattern, * * Note: The translation phrases are found in common.phrases.txt. * - * @param client Client index, or 0 for server. - * @param reason COMMAND_TARGET reason. + * @param client Client index, or 0 for server. + * @param reason COMMAND_TARGET reason. */ stock void ReplyToTargetError(int client, int reason, bool dynamic=true) { @@ -179,6 +179,8 @@ stock void ReplyToTargetError(int client, int reason, bool dynamic=true) } } +#define FEATURECAP_MULTITARGETFILTER_CLIENTPARAM "SourceMod MultiTargetFilter ClientParam" + /** * Adds clients to a multi-target filter. * @@ -186,8 +188,15 @@ stock void ReplyToTargetError(int client, int reason, bool dynamic=true) * @param clients Array to fill with unique, valid client indexes. * @param client Client that triggered this filter. * @return True if pattern was recognized, false otherwise. + * + * @note To see if the client param is available, use FeatureType_Capability and FEATURECAP_MULTITARGETFILTER_CLIENTPARAM. */ -typedef MultiTargetFilter = function bool (const char[] pattern, Handle clients, int client); +typeset MultiTargetFilter { + function bool (const char[] pattern, Handle clients); + function bool (const char[] pattern, ArrayList clients); + function bool (const char[] pattern, Handle clients, int client); + function bool (const char[] pattern, ArrayList clients, int client); +} /** * Adds a multi-target filter function for ProcessTargetString(). diff --git a/env/include/commandline.inc b/env/include/commandline.inc index 5ff7d22..33e4a13 100644 --- a/env/include/commandline.inc +++ b/env/include/commandline.inc @@ -31,56 +31,56 @@ */ #if defined _commandline_included_ - #endinput + #endinput #endif #define _commandline_included_ /** * Gets the full command line the server was launched with. * - * @param commandLine Buffer to store the command line in. - * @param maxlen Maximum length of the command line buffer. - * @return True if the command line is valid; otherwise, false. - * @error No command line available, or no mod support. + * @param commandLine Buffer to store the command line in. + * @param maxlen Maximum length of the command line buffer. + * @return True if the command line is valid; otherwise, false. + * @error No command line available, or no mod support. */ native bool GetCommandLine(char[] commandLine, int maxlen); /** * Gets the value of a command line parameter the server was launched with. * - * @param param The command line parameter to get the value of. - * @param value Buffer to store the parameter value in. - * @param maxlen Maximum length of the value buffer. - * @param defValue The default value to return if the parameter wasn't specified. - * @error No command line available, or no mod support. + * @param param The command line parameter to get the value of. + * @param value Buffer to store the parameter value in. + * @param maxlen Maximum length of the value buffer. + * @param defValue The default value to return if the parameter wasn't specified. + * @error No command line available, or no mod support. */ native void GetCommandLineParam(const char[] param, char[] value, int maxlen, const char[] defValue=""); /** * Gets the value of a command line parameter the server was launched with. * - * @param param The command line parameter to get the value of. - * @param defValue The default value to return if the parameter wasn't specified. - * @return The integer value of the command line parameter value. - * @error No command line available, or no mod support. + * @param param The command line parameter to get the value of. + * @param defValue The default value to return if the parameter wasn't specified. + * @return The integer value of the command line parameter value. + * @error No command line available, or no mod support. */ native int GetCommandLineParamInt(const char[] param, int defValue=0); /** * Gets the value of a command line parameter the server was launched with. * - * @param param The command line parameter to get the value of. - * @param defValue The default value to return if the parameter wasn't specified. - * @return The floating point value of the command line parameter value. - * @error No command line available, or no mod support. + * @param param The command line parameter to get the value of. + * @param defValue The default value to return if the parameter wasn't specified. + * @return The floating point value of the command line parameter value. + * @error No command line available, or no mod support. */ native float GetCommandLineParamFloat(const char[] param, float defValue=0.0); /** * Determines if a specific command line parameter is present. * - * @param param The command line parameter to test. - * @return True if the command line parameter is specified; otherwise, false. - * @error No command line available, or no mod support. + * @param param The command line parameter to test. + * @return True if the command line parameter is specified; otherwise, false. + * @error No command line available, or no mod support. */ native bool FindCommandLineParam(const char[] param); diff --git a/env/include/console.inc b/env/include/console.inc index 63f5897..88aba3e 100644 --- a/env/include/console.inc +++ b/env/include/console.inc @@ -35,14 +35,14 @@ #endif #define _console_included -#define INVALID_FCVAR_FLAGS (-1) +#define INVALID_FCVAR_FLAGS (-1) /** * Console variable query helper values. */ enum QueryCookie { - QUERYCOOKIE_FAILED = 0, + QUERYCOOKIE_FAILED = 0 }; /** @@ -51,7 +51,7 @@ enum QueryCookie enum ReplySource { SM_REPLY_TO_CONSOLE = 0, - SM_REPLY_TO_CHAT = 1, + SM_REPLY_TO_CHAT = 1 }; /** @@ -65,25 +65,25 @@ enum ReplySource #define FCVAR_LAUNCHER (1<<1) // Same value as FCVAR_DEVELOPMENTONLY, which is what most usages of this were intending to use. -#define FCVAR_NONE 0 // The default, no flags at all -#define FCVAR_UNREGISTERED (1<<0) // If this is set, don't add to linked list, etc. -#define FCVAR_DEVELOPMENTONLY (1<<1) // Hidden in released products. Flag is removed automatically if ALLOW_DEVELOPMENT_CVARS is defined. (OB+) -#define FCVAR_GAMEDLL (1<<2) // Defined by the game DLL. -#define FCVAR_CLIENTDLL (1<<3) // Defined by the client DLL. -#define FCVAR_MATERIAL_SYSTEM (1<<4) // Defined by the material system. (EP1-only) -#define FCVAR_HIDDEN (1<<4) // Hidden. Doesn't appear in find or autocomplete. Like DEVELOPMENTONLY, but can't be compiled out.1 (OB+) -#define FCVAR_PROTECTED (1<<5) // It's a server cvar, but we don't send the data since it's a password, etc. +#define FCVAR_NONE 0 // The default, no flags at all +#define FCVAR_UNREGISTERED (1<<0) // If this is set, don't add to linked list, etc. +#define FCVAR_DEVELOPMENTONLY (1<<1) // Hidden in released products. Flag is removed automatically if ALLOW_DEVELOPMENT_CVARS is defined. (OB+) +#define FCVAR_GAMEDLL (1<<2) // Defined by the game DLL. +#define FCVAR_CLIENTDLL (1<<3) // Defined by the client DLL. +#define FCVAR_MATERIAL_SYSTEM (1<<4) // Defined by the material system. (EP1-only) +#define FCVAR_HIDDEN (1<<4) // Hidden. Doesn't appear in find or autocomplete. Like DEVELOPMENTONLY, but can't be compiled out.1 (OB+) +#define FCVAR_PROTECTED (1<<5) // 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 (1<<6) // This cvar cannot be changed by clients connected to a multiplayer server. -#define FCVAR_ARCHIVE (1<<7) // Set to cause it to be saved to vars.rc -#define FCVAR_NOTIFY (1<<8) // Notifies players when changed. -#define FCVAR_USERINFO (1<<9) // Changes the client's info string. -#define FCVAR_PRINTABLEONLY (1<<10) // This cvar's string cannot contain unprintable characters (e.g., used for player name, etc.) -#define FCVAR_UNLOGGED (1<<11) // If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log -#define FCVAR_NEVER_AS_STRING (1<<12) // Never try to print that cvar. -#define FCVAR_REPLICATED (1<<13) // Server setting enforced on clients. -#define FCVAR_CHEAT (1<<14) // Only useable in singleplayer / debug / multiplayer & sv_cheats -#define FCVAR_SS (1<<15) // causes varnameN where N 2 through max splitscreen slots for mod to be autogenerated (L4D+) +#define FCVAR_SPONLY (1<<6) // This cvar cannot be changed by clients connected to a multiplayer server. +#define FCVAR_ARCHIVE (1<<7) // Set to cause it to be saved to vars.rc +#define FCVAR_NOTIFY (1<<8) // Notifies players when changed. +#define FCVAR_USERINFO (1<<9) // Changes the client's info string. +#define FCVAR_PRINTABLEONLY (1<<10) // This cvar's string cannot contain unprintable characters (e.g., used for player name, etc.) +#define FCVAR_UNLOGGED (1<<11) // If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log +#define FCVAR_NEVER_AS_STRING (1<<12) // Never try to print that cvar. +#define FCVAR_REPLICATED (1<<13) // Server setting enforced on clients. +#define FCVAR_CHEAT (1<<14) // Only useable in singleplayer / debug / multiplayer & sv_cheats +#define FCVAR_SS (1<<15) // causes varnameN where N 2 through max splitscreen slots for mod to be autogenerated (L4D+) #define FCVAR_DEMO (1<<16) // Record this cvar when starting a demo file. #define FCVAR_DONTRECORD (1<<17) // Don't record these command in demo files. #define FCVAR_SS_ADDED (1<<18) // This is one of the "added" FCVAR_SS variables for the splitscreen players (L4D+) @@ -109,8 +109,8 @@ enum ReplySource /** * Executes a server command as if it were on the server console (or RCON) * - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param format Formatting rules. + * @param ... Variable number of format parameters. */ native void ServerCommand(const char[] format, any ...); @@ -123,18 +123,18 @@ native void ServerCommand(const char[] format, any ...); * the response. * Also, on L4D2 this will not print the command output to the server console. * - * @param buffer String to store command result into. - * @param maxlen Length of buffer. - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param buffer String to store command result into. + * @param maxlen Length of buffer. + * @param format Formatting rules. + * @param ... Variable number of format parameters. */ native void ServerCommandEx(char[] buffer, int maxlen, const char[] format, any ...); /** * Inserts a server command at the beginning of the server command buffer. * - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param format Formatting rules. + * @param ... Variable number of format parameters. */ native void InsertServerCommand(const char[] format, any ...); @@ -147,10 +147,10 @@ native void ServerExecute(); * Executes a client command. Note that this will not work on clients unless * they have cl_restrict_server_commands set to 0. * - * @param client Index of the client. - * @param fmt Format of the client command. - * @param ... Format parameters - * @error Invalid client index, or client not connected. + * @param client Index of the client. + * @param fmt Format of the client command. + * @param ... Format parameters + * @error Invalid client index, or client not connected. */ native void ClientCommand(int client, const char[] fmt, any ...); @@ -163,10 +163,10 @@ native void ClientCommand(int client, const char[] fmt, any ...); * a hook where this matters (for example, a "say" hook), you should use * FakeClientCommandEx() instead. * - * @param client Index of the client. - * @param fmt Format of the client command. - * @param ... Format parameters - * @error Invalid client index, or client not connected. + * @param client Index of the client. + * @param fmt Format of the client command. + * @param ... Format parameters + * @error Invalid client index, or client not connected. */ native void FakeClientCommand(int client, const char[] fmt, any ...); @@ -175,59 +175,81 @@ native void FakeClientCommand(int client, const char[] fmt, any ...); * execution of the client command is delayed by one frame to prevent any * re-entrancy issues that might surface with FakeClientCommand(). * - * @param client Index of the client. - * @param fmt Format of the client command. - * @param ... Format parameters - * @error Invalid client index, or client not connected. + * @param client Index of the client. + * @param fmt Format of the client command. + * @param ... Format parameters + * @error Invalid client index, or client not connected. */ native void FakeClientCommandEx(int client, const char[] fmt, any ...); /** * Executes a KeyValues client command on the server without being networked. * - * @param client Index of the client. - * @param kv KeyValues data to be sent. - * @error Invalid client index, client not connected, - * or unsupported on current game. + * @param client Index of the client. + * @param kv KeyValues data to be sent. + * @error Invalid client index, client not connected, + * or unsupported on current game. */ native void FakeClientCommandKeyValues(int client, KeyValues kv); /** * Sends a message to the server console. * - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param format Formatting rules. + * @param ... Variable number of format parameters. */ native void PrintToServer(const char[] format, any ...); /** * Sends a message to a client's console. * - * @param client Client index. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @error If the client is not connected an error will be thrown. + * @param client Client index. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @error If the client is not connected an error will be thrown. */ native void PrintToConsole(int client, const char[] format, any ...); + /** - * Reples to a message in a command. + * Sends a message to every client's console. + * + * @param format Formatting rules. + * @param ... Variable number of format parameters. + */ +stock void PrintToConsoleAll(const char[] format, any ...) +{ + char buffer[254]; + + for (int i = 1; i <= MaxClients; i++) + { + if (IsClientInGame(i)) + { + SetGlobalTransTarget(i); + VFormat(buffer, sizeof(buffer), format, 2); + PrintToConsole(i, "%s", buffer); + } + } +} + +/** + * Replies to a message in a command. * * A client index of 0 will use PrintToServer(). * If the command was from the console, PrintToConsole() is used. * If the command was from chat, PrintToChat() is used. * - * @param client Client index, or 0 for server. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @error If the client is not connected or invalid. + * @param client Client index, or 0 for server. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @error If the client is not connected or invalid. */ native void ReplyToCommand(int client, const char[] format, any ...); /** * Returns the current reply source of a command. * - * @return ReplySource value. + * @return ReplySource value. */ native ReplySource GetCmdReplySource(); @@ -237,8 +259,8 @@ native ReplySource GetCmdReplySource(); * Only use this if you know what you are doing. You should save the old value * and restore it once you are done. * - * @param source New ReplySource value. - * @return Old ReplySource value. + * @param source New ReplySource value. + * @return Old ReplySource value. */ native ReplySource SetCmdReplySource(ReplySource source); @@ -247,7 +269,7 @@ native ReplySource SetCmdReplySource(ReplySource source); * * This function is only meaningful inside say or say_team hooks. * - * @return True if a chat trigger, false otherwise. + * @return True if a chat trigger, false otherwise. */ native bool IsChatTrigger(); @@ -257,10 +279,10 @@ native bool IsChatTrigger(); * in their chat text, except for the originating client, who receives * the message based on the current ReplySource. * - * @param client Client index doing the action, or 0 for server. - * @param tag Tag to prepend to the message. - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param client Client index doing the action, or 0 for server. + * @param tag Tag to prepend to the message. + * @param format Formatting rules. + * @param ... Variable number of format parameters. * @error */ native void ShowActivity2(int client, const char[] tag, const char[] format, any ...); @@ -274,9 +296,9 @@ native void ShowActivity2(int client, const char[] tag, const char[] format, any * for these cases, then this function will suffice. Otherwise, * ShowActivity2() is slightly more useful. * - * @param client Client index doing the action, or 0 for server. - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param client Client index doing the action, or 0 for server. + * @param format Formatting rules. + * @param ... Variable number of format parameters. * @error */ native void ShowActivity(int client, const char[] format, any ...); @@ -285,10 +307,10 @@ native void ShowActivity(int client, const char[] format, any ...); * Same as ShowActivity(), except the tag parameter is used instead of * "[SM] " (note that you must supply any spacing). * - * @param client Client index doing the action, or 0 for server. - * @param tag Tag to display with. - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param client Client index doing the action, or 0 for server. + * @param tag Tag to display with. + * @param format Formatting rules. + * @param ... Variable number of format parameters. * @error */ native void ShowActivityEx(int client, const char[] tag, const char[] format, any ...); @@ -314,9 +336,9 @@ native bool FormatActivitySource(int client, int target, const char[] namebuf, i /** * Called when a server-only command is invoked. * - * @param args Number of arguments that were in the argument string. - * @return An Action value. Not handling the command - * means that Source will report it as "not found." + * @param args Number of arguments that were in the argument string. + * @return An Action value. Not handling the command + * means that Source will report it as "not found." */ typedef SrvCmd = function Action (int args); @@ -325,21 +347,21 @@ typedef SrvCmd = function Action (int args); * * Server commands are case sensitive. * - * @param cmd Name of the command to hook or create. - * @param callback A function to use as a callback for when the command is invoked. - * @param description Optional description to use for command creation. - * @param flags Optional flags to use for command creation. - * @error Command name is the same as an existing convar. + * @param cmd Name of the command to hook or create. + * @param callback A function to use as a callback for when the command is invoked. + * @param description Optional description to use for command creation. + * @param flags Optional flags to use for command creation. + * @error Command name is the same as an existing convar. */ native void RegServerCmd(const char[] cmd, SrvCmd callback, const char[] description="", int flags=0); /** * Called when a generic console command is invoked. * - * @param client Index of the client, or 0 from the server. - * @param args Number of arguments that were in the argument string. - * @return An Action value. Not handling the command - * means that Source will report it as "not found." + * @param client Index of the client, or 0 from the server. + * @param args Number of arguments that were in the argument string. + * @return An Action value. Not handling the command + * means that Source will report it as "not found." */ typedef ConCmd = function Action (int client, int args); @@ -350,11 +372,11 @@ typedef ConCmd = function Action (int client, int args); * a client may enter the command in any case. SourceMod corrects for this automatically, * and you should only hook the "real" version of the command. * - * @param cmd Name of the command to hook or create. - * @param callback A function to use as a callback for when the command is invoked. - * @param description Optional description to use for command creation. - * @param flags Optional flags to use for command creation. - * @error Command name is the same as an existing convar. + * @param cmd Name of the command to hook or create. + * @param callback A function to use as a callback for when the command is invoked. + * @param description Optional description to use for command creation. + * @param flags Optional flags to use for command creation. + * @error Command name is the same as an existing convar. */ native void RegConsoleCmd(const char[] cmd, ConCmd callback, const char[] description="", int flags=0); @@ -365,14 +387,14 @@ native void RegConsoleCmd(const char[] cmd, ConCmd callback, const char[] descri * * Admin commands are case sensitive from both the client and server. * - * @param cmd String containing command to register. - * @param callback A function to use as a callback for when the command is invoked. - * @param adminflags Administrative flags (bitstring) to use for permissions. - * @param description Optional description to use for help. - * @param group String containing the command group to use. If empty, - * the plugin's filename will be used instead. - * @param flags Optional console flags. - * @error Command name is the same as an existing convar. + * @param cmd String containing command to register. + * @param callback A function to use as a callback for when the command is invoked. + * @param adminflags Administrative flags (bitstring) to use for permissions. + * @param description Optional description to use for help. + * @param group String containing the command group to use. If empty, + * the plugin's filename will be used instead. + * @param flags Optional console flags. + * @error Command name is the same as an existing convar. */ native void RegAdminCmd(const char[] cmd, ConCmd callback, @@ -392,7 +414,7 @@ native bool IsCommandCallback(); * Returns the number of arguments from the current console or server command. * @note Unlike the HL2 engine call, this does not include the command itself. * - * @return Number of arguments to the current command. + * @return Number of arguments to the current command. */ native int GetCmdArgs(); @@ -401,10 +423,10 @@ native int GetCmdArgs(); * server command. * @note Argument indexes start at 1; 0 retrieves the command name. * - * @param argnum Argument number to retrieve. - * @param buffer Buffer to use for storing the string. - * @param maxlength Maximum length of the buffer. - * @return Length of string written to buffer. + * @param argnum Argument number to retrieve. + * @param buffer Buffer to use for storing the string. + * @param maxlength Maximum length of the buffer. + * @return Length of string written to buffer. */ native int GetCmdArg(int argnum, char[] buffer, int maxlength); @@ -412,16 +434,62 @@ native int GetCmdArg(int argnum, char[] buffer, int maxlength); * Retrieves the entire command argument string in one lump from the current * console or server command. * - * @param buffer Buffer to use for storing the string. - * @param maxlength Maximum length of the buffer. - * @return Length of string written to buffer. + * @param buffer Buffer to use for storing the string. + * @param maxlength Maximum length of the buffer. + * @return Length of string written to buffer. */ native int GetCmdArgString(char[] buffer, int maxlength); +methodmap CommandIterator < Handle { + // Creates a new CommandIterator. Must be freed with delete or + // CloseHandle(). + // + // The CommandIterator can be used to iterate commands created by + // SourceMod plugins and allows inspection of properties associated + // with the command. + // + // @return New CommandIterator Handle. + public native CommandIterator(); + + // Determines if there is a next command. If one is found, the + // iterator is advanced to it. + // + // @return true if found and iterator is advanced. + public native bool Next(); + + // Retrieves the command's description. + // + // @param buffer Buffer to copy to. + // @param maxlen Maximum size of the buffer. + // @error Invalid iterator position. + public native void GetDescription(char[] buffer, int maxlen); + + // Retrieves the command's name. + // + // @param buffer Buffer to copy to. + // @param maxlen Maximum size of the buffer. + // @error Invalid iterator position. + public native void GetName(char[] buffer, int maxlen); + + // Retrieves the plugin handle of the command's creator + // + // @error Invalid iterator position. + property Handle Plugin { + public native get(); + } + + // Retrieves the command's default flags + // + // @error Invalid iterator position. + property int Flags { + public native get(); + } +} + /** * Gets a command iterator. Must be freed with CloseHandle(). * - * @return A new command iterator. + * @return A new command iterator. */ native Handle GetCommandIterator(); @@ -429,13 +497,13 @@ native Handle GetCommandIterator(); * Reads a command iterator, then advances to the next command if any. * Only SourceMod specific commands are returned. * - * @param iter Command iterator Handle. - * @param name Name buffer. - * @param nameLen Name buffer size. - * @param eflags Effective default flags of a command. - * @param desc Command description buffer. - * @param descLen Command description buffer size. - * @return True on success, false if there are no more commands. + * @param iter Command iterator Handle. + * @param name Name buffer. + * @param nameLen Name buffer size. + * @param eflags Effective default flags of a command. + * @param desc Command description buffer. + * @param descLen Command description buffer size. + * @return True on success, false if there are no more commands. */ native bool ReadCommandIterator(Handle iter, char[] name, @@ -450,16 +518,16 @@ native bool ReadCommandIterator(Handle iter, * commands. This feature essentially allows you to create custom * flags using the override system. * - * @param client Client index. - * @param command Command name. If the command is not found, the default - * flags are used. - * @param flags Flag string to use as a default, if the command or override - * is not found. - * @param override_only If true, SourceMod will not attempt to find a matching - * command, and it will only use the default flags specified. - * Otherwise, SourceMod will ignore the default flags if - * there is a matching admin command. - * @return True if the client has access, false otherwise. + * @param client Client index. + * @param command Command name. If the command is not found, the default + * flags are used. + * @param flags Flag string to use as a default, if the command or override + * is not found. + * @param override_only If true, SourceMod will not attempt to find a matching + * command, and it will only use the default flags specified. + * Otherwise, SourceMod will ignore the default flags if + * there is a matching admin command. + * @return True if the client has access, false otherwise. */ native bool CheckCommandAccess(int client, const char[] command, @@ -472,16 +540,16 @@ native bool CheckCommandAccess(int client, * commands. This feature essentially allows you to create custom flags * using the override system. * - * @param id AdminId of the admin. - * @param command Command name. If the command is not found, the default - * flags are used. - * @param flags Flag string to use as a default, if the command or override - * is not found. - * @param override_only If true, SourceMod will not attempt to find a matching - * command, and it will only use the default flags specified. - * Otherwise, SourceMod will ignore the default flags if - * there is a matching admin command. - * @return True if the admin has access, false otherwise. + * @param id AdminId of the admin. + * @param command Command name. If the command is not found, the default + * flags are used. + * @param flags Flag string to use as a default, if the command or override + * is not found. + * @param override_only If true, SourceMod will not attempt to find a matching + * command, and it will only use the default flags specified. + * Otherwise, SourceMod will ignore the default flags if + * there is a matching admin command. + * @return True if the admin has access, false otherwise. */ native bool CheckAccess(AdminId id, const char[] command, @@ -491,18 +559,18 @@ native bool CheckAccess(AdminId id, /** * Returns the bitstring of flags of a command. * - * @param name Name of the command. - * @return A bitstring containing the FCVAR_* flags that are enabled - * or INVALID_FCVAR_FLAGS if command not found. + * @param name Name of the command. + * @return A bitstring containing the FCVAR_* flags that are enabled + * or INVALID_FCVAR_FLAGS if command not found. */ native int GetCommandFlags(const char[] name); /** * Sets the bitstring of flags of a command. * - * @param name Name of the command. - * @param flags A bitstring containing the FCVAR_* flags to enable. - * @return True on success, otherwise false. + * @param name Name of the command. + * @param flags A bitstring containing the FCVAR_* flags to enable. + * @return True on success, otherwise false. */ native bool SetCommandFlags(const char[] name, int flags); @@ -511,38 +579,38 @@ native bool SetCommandFlags(const char[] name, int flags); * ConCommands. If a Handle is returned, the next entry must be read * via FindNextConCommand(). The order of the list is undefined. * - * @param buffer Buffer to store entry name. - * @param max_size Maximum size of the buffer. - * @param isCommand Variable to store whether the entry is a command. - * If it is not a command, it is a ConVar. - * @param flags Variable to store entry flags. - * @param description Buffer to store the description, empty if no description present. - * @param descrmax_size Maximum size of the description buffer. - * @return On success, a ConCmdIter Handle is returned, which - * can be read via FindNextConCommand(), and must be - * closed via CloseHandle(). Additionally, the output - * parameters will be filled with information of the - * first ConCommandBase entry. - * On failure, INVALID_HANDLE is returned, and the - * contents of outputs is undefined. + * @param buffer Buffer to store entry name. + * @param max_size Maximum size of the buffer. + * @param isCommand Variable to store whether the entry is a command. + * If it is not a command, it is a ConVar. + * @param flags Variable to store entry flags. + * @param description Buffer to store the description, empty if no description present. + * @param descrmax_size Maximum size of the description buffer. + * @return On success, a ConCmdIter Handle is returned, which + can be read via FindNextConCommand(), and must be + closed via CloseHandle(). Additionally, the output + parameters will be filled with information of the + first ConCommandBase entry. + On failure, INVALID_HANDLE is returned, and the + contents of outputs is undefined. */ native Handle FindFirstConCommand(char[] buffer, int max_size, bool &isCommand, int &flags=0, char[] description="", int descrmax_size=0); /** * Reads the next entry in a ConCommandBase iterator. * - * @param search ConCmdIter Handle to search. - * @param buffer Buffer to store entry name. - * @param max_size Maximum size of the buffer. - * @param isCommand Variable to store whether the entry is a command. - * If it is not a command, it is a ConVar. - * @param flags Variable to store entry flags. - * @param description Buffer to store the description, empty if no description present. - * @param descrmax_size Maximum size of the description buffer. - * @return On success, the outputs are filled, the iterator is - * advanced to the next entry, and true is returned. - * If no more entries exist, false is returned, and the - * contents of outputs is undefined. + * @param search ConCmdIter Handle to search. + * @param buffer Buffer to store entry name. + * @param max_size Maximum size of the buffer. + * @param isCommand Variable to store whether the entry is a command. + If it is not a command, it is a ConVar. + * @param flags Variable to store entry flags. + * @param description Buffer to store the description, empty if no description present. + * @param descrmax_size Maximum size of the description buffer. + * @return On success, the outputs are filled, the iterator is + advanced to the next entry, and true is returned. + If no more entries exist, false is returned, and the + contents of outputs is undefined. */ native bool FindNextConCommand(Handle search, char[] buffer, int max_size, bool &isCommand, int &flags=0, char[] description="", int descrmax_size=0); @@ -553,14 +621,14 @@ native bool FindNextConCommand(Handle search, char[] buffer, int max_size, bool * Note: Tags are automatically removed when a plugin unloads. * Note: Currently, this function does nothing because of bugs in the Valve master. * - * @param tag Tag string to append. + * @param tag Tag string to append. */ native void AddServerTag(const char[] tag); /** * Removes a tag previously added by the calling plugin. * - * @param tag Tag string to remove. + * @param tag Tag string to remove. */ native void RemoveServerTag(const char[] tag); @@ -586,7 +654,7 @@ native void RemoveServerTag(const char[] tag); * @param command Command name, lower case. To get name as typed, use * GetCmdArg() and specify argument 0. * @param argc Argument count. - * @return Action to take (see extended notes above). + * @return Action to take (see extended notes above). */ typedef CommandListener = function Action (int client, const char[] command, int argc); @@ -604,7 +672,7 @@ typedef CommandListener = function Action (int client, const char[] command, int * FEATURECAP_COMMANDLISTENER. * * @param callback Callback. - * @param command Command, or if not specified, a global listener. + * @param command Command, or if not specified, a global listener. * The command is case insensitive. * @return True if this feature is available on the current game, * false otherwise. @@ -614,18 +682,18 @@ native bool AddCommandListener(CommandListener callback, const char[] command="" /** * Removes a previously added command listener, in reverse order of being added. * - * @param callback Callback. - * @param command Command, or if not specified, a global listener. + * @param callback Callback. + * @param command Command, or if not specified, a global listener. * The command is case insensitive. - * @error Callback has no active listeners. + * @error Callback has no active listeners. */ native void RemoveCommandListener(CommandListener callback, const char[] command=""); /** * Returns true if the supplied command exists. * - * @param command Command to find. - * @return True if command is found, false otherwise. + * @param command Command to find. + * @return True if command is found, false otherwise. */ stock bool CommandExists(const char[] command) { @@ -634,20 +702,20 @@ stock bool CommandExists(const char[] command) /** * Global listener for the chat commands. * - * @param client Client index. - * @param command Command name. - * @param sArgs Chat argument string. + * @param client Client index. + * @param command Command name. + * @param sArgs Chat argument string. * - * @return An Action value. Returning Plugin_Handled bypasses the game function call. - Returning Plugin_Stop bypasses the post hook as well as the game function. + * @return An Action value. Returning Plugin_Handled bypasses the game function call. + * Returning Plugin_Stop bypasses the post hook as well as the game function. */ forward Action OnClientSayCommand(int client, const char[] command, const char[] sArgs); /** * Global post listener for the chat commands. * - * @param client Client index. - * @param command Command name. - * @param sArgs Chat argument string. + * @param client Client index. + * @param command Command name. + * @param sArgs Chat argument string. */ forward void OnClientSayCommand_Post(int client, const char[] command, const char[] sArgs); diff --git a/env/include/convars.inc b/env/include/convars.inc index 6896ce1..7bc9f77 100644 --- a/env/include/convars.inc +++ b/env/include/convars.inc @@ -31,7 +31,7 @@ */ #if defined _convars_included - #endinput + #endinput #endif #define _convars_included @@ -49,31 +49,35 @@ enum ConVarBounds */ 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. */ + 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. */ }; -// 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. +/** + * 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. + */ typedef ConVarChanged = function void (ConVar convar, const char[] oldValue, const char[] newValue); -// 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. +/** + * 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 char[] name, const char[] defaultValue, @@ -82,10 +86,12 @@ native ConVar CreateConVar( 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 ConVar object if found; null otherwise. +/** + * Searches for a console variable. + * + * @param name Name of convar to find. + * @return A ConVar object if found; null otherwise. + */ native ConVar FindConVar(const char[] name); // A ConVar is a configurable, named setting in the srcds console. @@ -242,27 +248,27 @@ methodmap ConVar < Handle /** * Creates a hook for when a console variable's value is changed. * - * @param convar Handle to the convar. - * @param callback An OnConVarChanged function pointer. - * @error Invalid or corrupt Handle or invalid callback function. + * @param convar Handle to the convar. + * @param callback An OnConVarChanged function pointer. + * @error Invalid or corrupt Handle or invalid callback function. */ native void 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. - * @error Invalid or corrupt Handle, invalid callback function, or no active hook on convar. + * @param convar Handle to the convar. + * @param callback An OnConVarChanged function pointer. + * @error Invalid or corrupt Handle, invalid callback function, or no active hook on convar. */ native void 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. + * @param convar Handle to the convar. + * @return The boolean value of the convar. + * @error Invalid or corrupt Handle. */ native bool GetConVarBool(Handle convar); @@ -272,23 +278,23 @@ native bool GetConVarBool(Handle convar); * 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. - * @error Invalid or corrupt Handle. + * @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. + * @error Invalid or corrupt Handle. */ native void 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. + * @param convar Handle to the convar. + * @return The integer value of the convar. + * @error Invalid or corrupt Handle. */ native int GetConVarInt(Handle convar); @@ -298,23 +304,23 @@ native int GetConVarInt(Handle convar); * 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. - * @error Invalid or corrupt Handle. + * @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. + * @error Invalid or corrupt Handle. */ native void SetConVarInt(Handle convar, int 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. + * @param convar Handle to the convar. + * @return The floating point value of the convar. + * @error Invalid or corrupt Handle. */ native float GetConVarFloat(Handle convar); @@ -324,24 +330,24 @@ native float GetConVarFloat(Handle convar); * 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. - * @error Invalid or corrupt Handle. + * @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. + * @error Invalid or corrupt Handle. */ native void 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. - * @error Invalid or corrupt Handle. + * @param convar Handle to the convar. + * @param value Buffer to store the value of the convar. + * @param maxlength Maximum length of string buffer. + * @error Invalid or corrupt Handle. */ native void GetConVarString(Handle convar, char[] value, int maxlength); @@ -351,14 +357,14 @@ native void GetConVarString(Handle convar, char[] value, int maxlength); * 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. - * @error Invalid or corrupt Handle. + * @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. + * @error Invalid or corrupt Handle. */ native void SetConVarString(Handle convar, const char[] value, bool replicate=false, bool notify=false); @@ -368,85 +374,85 @@ native void SetConVarString(Handle convar, const char[] value, bool replicate=fa * 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. - * @error Invalid or corrupt Handle. + * @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. + * @error Invalid or corrupt Handle. */ native void 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. + * @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 int GetConVarDefault(Handle convar, char[] value, int 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. + * @param convar Handle to the convar. + * @return A bitstring containing the FCVAR_* flags that are enabled. + * @error Invalid or corrupt Handle. */ native int 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. - * @error Invalid or corrupt Handle. + * @param convar Handle to the convar. + * @param flags A bitstring containing the FCVAR_* flags to enable. + * @error Invalid or corrupt Handle. */ native void SetConVarFlags(Handle convar, int 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. + * @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. - * @error Invalid or corrupt Handle. + * @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. + * @error Invalid or corrupt Handle. */ native void 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. - * @error Invalid or corrupt Handle. + * @param convar Handle to the convar. + * @param name Buffer to store the name of the convar. + * @param maxlength Maximum length of string buffer. + * @error Invalid or corrupt Handle. */ native void GetConVarName(Handle convar, char[] name, int maxlength); /** * 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 + * @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(int client, Handle convar, const char[] value); @@ -454,43 +460,43 @@ typeset 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. + // @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. 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. + // @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. 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. + * @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(int client, const char[] 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 + * @param c Character to validate. + * @return True is valid for ConVars, false otherwise */ stock bool IsValidConVarChar(int c) { diff --git a/env/include/core.inc b/env/include/core.inc index 5d6c704..7174212 100644 --- a/env/include/core.inc +++ b/env/include/core.inc @@ -38,7 +38,7 @@ #include /** If this gets changed, you need to update Core's check. */ -#define SOURCEMOD_PLUGINAPI_VERSION 5 +#define SOURCEMOD_PLUGINAPI_VERSION 5 struct PlVers { @@ -53,10 +53,10 @@ struct PlVers */ enum Action { - Plugin_Continue = 0, /**< Continue with the original action */ - Plugin_Changed = 1, /**< Inputs or outputs have been overridden with new values */ - Plugin_Handled = 3, /**< Handle the action at the end (don't call it) */ - Plugin_Stop = 4, /**< Immediately stop the hook chain and handle the original */ + Plugin_Continue = 0, /**< Continue with the original action */ + Plugin_Changed = 1, /**< Inputs or outputs have been overridden with new values */ + Plugin_Handled = 3, /**< Handle the action at the end (don't call it) */ + Plugin_Stop = 4 /**< Immediately stop the hook chain and handle the original */ }; /** @@ -82,17 +82,17 @@ public PlVers __version = */ enum PluginStatus { - Plugin_Running=0, /**< Plugin is running */ + Plugin_Running=0, /**< Plugin is running */ /* All states below are "temporarily" unexecutable */ - Plugin_Paused, /**< Plugin is loaded but paused */ - Plugin_Error, /**< Plugin is loaded but errored/locked */ + Plugin_Paused, /**< Plugin is loaded but paused */ + Plugin_Error, /**< Plugin is loaded but errored/locked */ /* All states below do not have all natives */ - Plugin_Loaded, /**< Plugin has passed loading and can be finalized */ - Plugin_Failed, /**< Plugin has a fatal failure */ - Plugin_Created, /**< Plugin is created but not initialized */ - Plugin_Uncompiled, /**< Plugin is not yet compiled by the JIT */ - Plugin_BadLoad, /**< Plugin failed to load */ - Plugin_Evicted /**< Plugin was unloaded due to an error */ + Plugin_Loaded, /**< Plugin has passed loading and can be finalized */ + Plugin_Failed, /**< Plugin has a fatal failure */ + Plugin_Created, /**< Plugin is created but not initialized */ + Plugin_Uncompiled, /**< Plugin is not yet compiled by the JIT */ + Plugin_BadLoad, /**< Plugin failed to load */ + Plugin_Evicted /**< Plugin was unloaded due to an error */ }; /** @@ -112,11 +112,11 @@ enum PluginStatus */ enum PluginInfo { - PlInfo_Name, /**< Plugin name */ - PlInfo_Author, /**< Plugin author */ - PlInfo_Description, /**< Plugin description */ - PlInfo_Version, /**< Plugin version */ - PlInfo_URL, /**< Plugin URL */ + PlInfo_Name, /**< Plugin name */ + PlInfo_Author, /**< Plugin author */ + PlInfo_Description, /**< Plugin description */ + PlInfo_Version, /**< Plugin version */ + PlInfo_URL /**< Plugin URL */ }; /** @@ -124,10 +124,10 @@ enum PluginInfo */ struct Extension { - public const char[] name; /**< Short name */ - public const char[] file; /**< Default file name */ - public bool autoload; /**< Whether or not to auto-load */ - public bool required; /**< Whether or not to require */ + public const char[] name; /**< Short name */ + public const char[] file; /**< Default file name */ + public bool autoload; /**< Whether or not to auto-load */ + public bool required; /**< Whether or not to require */ }; /** @@ -135,13 +135,29 @@ struct Extension */ struct SharedPlugin { - public const char[] name; /**< Short name */ - public const char[] file; /**< File name */ - public bool required; /**< Whether or not to require */ + public const char[] name; /**< Short name */ + public const char[] file; /**< File name */ + public bool required; /**< Whether or not to require */ }; -public float NULL_VECTOR[3]; /**< Pass this into certain functions to act as a C++ NULL */ -public const char NULL_STRING[1]; /**< pass this into certain functions to act as a C++ NULL */ +public float NULL_VECTOR[3]; /**< Pass this into certain functions to act as a C++ NULL */ +public const char NULL_STRING[1]; /**< pass this into certain functions to act as a C++ NULL */ + +/** + * Check if the given vector is the NULL_VECTOR. + * + * @param vec The vector to test. + * @return True if NULL_VECTOR, false otherwise. + */ +native bool IsNullVector(const float vec[3]); + +/** + * Check if the given string is the NULL_STRING. + * + * @param str The string to test. + * @return True if NULL_STRING, false otherwise. + */ +native bool IsNullString(const char[] str); /** * Horrible compatibility shim. @@ -161,7 +177,7 @@ native int VerifyCoreVersion(); * or otherwise non-existent, the plugin will still work. Calling * removed natives results in a run-time error. * - * @param name Native name. + * @param name Native name. */ native void MarkNativeAsOptional(const char[] name); @@ -171,7 +187,7 @@ public void __ext_core_SetNTVOptional() MarkNativeAsOptional("RequireFeature"); MarkNativeAsOptional("AddCommandListener"); MarkNativeAsOptional("RemoveCommandListener"); - + MarkNativeAsOptional("BfWriteBool"); MarkNativeAsOptional("BfWriteByte"); MarkNativeAsOptional("BfWriteChar"); @@ -230,8 +246,8 @@ public void __ext_core_SetNTVOptional() MarkNativeAsOptional("BfRead.ReadVecCoord"); MarkNativeAsOptional("BfRead.ReadVecNormal"); MarkNativeAsOptional("BfRead.ReadAngles"); - MarkNativeAsOptional("BfRead.GetNumBytesLeft"); - + MarkNativeAsOptional("BfRead.BytesLeft.get"); + MarkNativeAsOptional("PbReadInt"); MarkNativeAsOptional("PbReadFloat"); MarkNativeAsOptional("PbReadBool"); @@ -263,6 +279,7 @@ public void __ext_core_SetNTVOptional() MarkNativeAsOptional("PbAddMessage"); MarkNativeAsOptional("Protobuf.ReadInt"); + MarkNativeAsOptional("Protobuf.ReadInt64"); MarkNativeAsOptional("Protobuf.ReadFloat"); MarkNativeAsOptional("Protobuf.ReadBool"); MarkNativeAsOptional("Protobuf.ReadString"); @@ -272,6 +289,7 @@ public void __ext_core_SetNTVOptional() MarkNativeAsOptional("Protobuf.ReadVector2D"); MarkNativeAsOptional("Protobuf.GetRepeatedFieldCount"); MarkNativeAsOptional("Protobuf.SetInt"); + MarkNativeAsOptional("Protobuf.SetInt64"); MarkNativeAsOptional("Protobuf.SetFloat"); MarkNativeAsOptional("Protobuf.SetBool"); MarkNativeAsOptional("Protobuf.SetString"); @@ -280,6 +298,7 @@ public void __ext_core_SetNTVOptional() MarkNativeAsOptional("Protobuf.SetVector"); MarkNativeAsOptional("Protobuf.SetVector2D"); MarkNativeAsOptional("Protobuf.AddInt"); + MarkNativeAsOptional("Protobuf.AddInt64"); MarkNativeAsOptional("Protobuf.AddFloat"); MarkNativeAsOptional("Protobuf.AddBool"); MarkNativeAsOptional("Protobuf.AddString"); diff --git a/env/include/cstrike.inc b/env/include/cstrike.inc index c13915e..19e3387 100644 --- a/env/include/cstrike.inc +++ b/env/include/cstrike.inc @@ -31,22 +31,22 @@ */ #if defined _cstrike_included - #endinput + #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_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_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 */ +#define CS_DMG_HEADSHOT (1 << 30) /**< Headshot */ enum CSRoundEndReason { @@ -70,8 +70,8 @@ enum CSRoundEndReason // The below only exist on CS:GO CSRoundEnd_TerroristsSurrender, /**< Terrorists Surrender */ CSRoundEnd_CTSurrender, /**< CTs Surrender */ - CSRoundEnd_TerroristsPlanted, /**< Terrorists Planted the bomb */ - CSRoundEnd_CTsReachedHostage, /**< CTs Reached the hostage */ + CSRoundEnd_TerroristsPlanted, /**< Terrorists Planted the bomb */ + CSRoundEnd_CTsReachedHostage /**< CTs Reached the hostage */ }; enum CSWeaponID @@ -109,7 +109,7 @@ enum CSWeaponID CSWeapon_SHIELD, CSWeapon_KEVLAR, CSWeapon_ASSAULTSUIT, - CSWeapon_NIGHTVISION, + CSWeapon_NIGHTVISION, //Anything below is CS:GO ONLY CSWeapon_GALILAR, CSWeapon_BIZON, CSWeapon_MAG7, @@ -130,7 +130,46 @@ enum CSWeaponID CSWeapon_MOLOTOV, CSWeapon_DECOY, CSWeapon_INCGRENADE, - CSWeapon_DEFUSER + CSWeapon_DEFUSER, + CSWeapon_HEAVYASSAULTSUIT, + //The rest are actual item definition indexes for CS:GO + CSWeapon_CUTTERS = 56, + CSWeapon_HEALTHSHOT = 57, + CSWeapon_KNIFE_T = 59, + CSWeapon_M4A1_SILENCER = 60, + CSWeapon_USP_SILENCER = 61, + CSWeapon_CZ75A = 63, + CSWeapon_REVOLVER = 64, + CSWeapon_TAGGRENADE = 68, + CSWeapon_FISTS = 69, + CSWeapon_BREACHCHARGE = 70, + CSWeapon_TABLET = 72, + CSWeapon_MELEE = 74, + CSWeapon_AXE = 75, + CSWeapon_HAMMER = 76, + CSWeapon_SPANNER = 78, + CSWeapon_KNIFE_GHOST = 80, + CSWeapon_FIREBOMB = 81, + CSWeapon_DIVERSION = 82, + CSWeapon_FRAGGRENADE = 83, + CSWeapon_SNOWBALL = 84, + CSWeapon_BUMPMINE = 85, + CSWeapon_MAX_WEAPONS_NO_KNIFES, // Max without the knife item defs, useful when treating all knives as a regular knife. + CSWeapon_BAYONET = 500, + CSWeapon_KNIFE_FLIP = 505, + CSWeapon_KNIFE_GUT = 506, + CSWeapon_KNIFE_KARAMBIT = 507, + CSWeapon_KNIFE_M9_BAYONET = 508, + CSWeapon_KNIFE_TATICAL = 509, + CSWeapon_KNIFE_FALCHION = 512, + CSWeapon_KNIFE_SURVIVAL_BOWIE = 514, + CSWeapon_KNIFE_BUTTERFLY = 515, + CSWeapon_KNIFE_PUSH = 516, + CSWeapon_KNIFE_URSUS = 519, + CSWeapon_KNIFE_GYPSY_JACKKNIFE = 520, + CSWeapon_KNIFE_STILETTO = 522, + CSWeapon_KNIFE_WIDOWMAKER = 523, + CSWeapon_MAX_WEAPONS //THIS MUST BE LAST, EASY WAY TO CREATE LOOPS. When looping, do CS_IsValidWeaponID(i), to check. }; /** @@ -138,8 +177,8 @@ enum CSWeaponID * 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 + * @param client Client index + * @param weapon User input for weapon name */ forward Action CS_OnBuyCommand(int client, const char[] weapon); @@ -148,8 +187,8 @@ forward Action CS_OnBuyCommand(int client, const char[] weapon); * Return Plugin_Continue to allow the call or return a * higher action to block. * - * @param client Client index - * @param weaponIndex Weapon index + * @param client Client index + * @param weaponIndex Weapon index */ forward Action CS_OnCSWeaponDrop(int client, int weaponIndex); @@ -160,11 +199,11 @@ forward Action CS_OnCSWeaponDrop(int client, int weaponIndex); * * @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 + * @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. + * @note Not all "weapons" call GetWeaponPrice. Example: c4, knife, vest, vest helmet, night vision. */ forward Action CS_OnGetWeaponPrice(int client, const char[] weapon, int &price); @@ -174,171 +213,173 @@ forward Action CS_OnGetWeaponPrice(int client, const char[] weapon, int &price); * 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 + * @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. - * @error Invalid client index, client not in game. + * @param client Player's index. + * @error Invalid client index, client not in game. */ native void CS_RespawnPlayer(int client); /** * Switches the player's team. * - * @param client Player's index. - * @param team Team index. - * @error Invalid client index, client not in game. + * @param client Player's index. + * @param team Team index. + * @error Invalid client index, client not in game. */ native void CS_SwitchTeam(int client, int 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 - * - * @error Invalid client index, client not in game, or invalid weapon index. + * @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 + * @error Invalid client index, client not in game, or invalid weapon index. */ native void CS_DropWeapon(int client, int 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. + * @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. */ native void 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. + * @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. * - * @note Will set the buffer to the original alias if it is not an alias to a weapon. + * @note Will set the buffer to the original alias if it is not an alias to a weapon. */ native void CS_GetTranslatedWeaponAlias(const char[] alias, char[] weapon, int 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) + * @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. * - * @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. + * @note c4, knife and shield will always return 0. vest, vest helmet and night vision will always return default price. */ native int CS_GetWeaponPrice(int 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. + * @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 int CS_GetClientClanTag(int client, char[] buffer, int size); /** * Sets a clients clan tag - * @param client Client index to set clan tag for. - * @param tag Tag to set clients clan tag as. * - * @error Invalid client. + * @param client Client index to set clan tag for. + * @param tag Tag to set clients clan tag as. + * @error Invalid client. */ native void CS_SetClientClanTag(int client, const char[] tag); /** * Gets a team's score - * @param team Team index to get score for. - * @return Returns the internal team score. * - * @error Invalid team index. + * @param team Team index to get score for. + * @return Returns the internal team score. + * @error Invalid team index. */ native int CS_GetTeamScore(int team); /** * Sets a team's score - * @param team Team index to set score for. - * @param value Value to set teams score as. * - * @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. + * @param team Team index to set score for. + * @param value Value to set teams score as. + * @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 void CS_SetTeamScore(int team, int 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. + * @param client Client index to get mvp count of. + * @return Returns the client's internal MVP count. + * @error Invalid client. */ native int CS_GetMVPCount(int 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. * - * @error Invalid client. + * @param client Client index to set mvp count for. + * @param value Value to set client's mvp count as. + * @error Invalid client. */ native void CS_SetMVPCount(int client, int 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. + * @param client Client index to get score of. + * @return Returns the client's score. + * @error Invalid client. */ native int CS_GetClientContributionScore(int 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. * - * @error Invalid client. + * @param client Client index to set score for. + * @param value Value to set client's score as. + * @error Invalid client. */ native void CS_SetClientContributionScore(int client, int 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. + * @param client Client index to get assists of. + * @return Returns the client's assists. + * @error Invalid client. */ native int CS_GetClientAssists(int 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. * - * @error Invalid client. + * @param client Client index to set assists for. + * @param value Value to set client's assists as. + * @error Invalid client. */ native void CS_SetClientAssists(int client, int 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. + * + * @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. */ @@ -346,30 +387,54 @@ native CSWeaponID CS_AliasToWeaponID(const char[] 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. + * + * @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 int CS_WeaponIDToAlias(CSWeaponID weaponID, char[] destination, int 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 + * @param weaponID WeaponID to check + * @return Returns true if its a valid WeaponID false otherwise. + * + * @note This will return false always for CSWeapon_NONE. Should only be called after OnMapStart since weapon info isnt intialized before. */ native bool CS_IsValidWeaponID(CSWeaponID id); /** * Sets a player's model based on their current class * - * @param client Player's index. - * @error Invalid client index, client not in game. + * @param client Player's index. + * @error Invalid client index, client not in game. */ native void CS_UpdateClientModel(int client); +/** + * Returns a CSWeaponID equivalent based on the item definition index. + * + * @param iDefIndex Definition index to get the CSWeaponID value for. + * @return Returns CSWeaponID value for the definition index. + * @error Invalid definition index. + * + * @note In most cases the id will be the item definition index. Works for CS:GO ONLY. + */ +native CSWeaponID CS_ItemDefIndexToID(int iDefIndex); + +/** + * Returns a item definition index equivalent based on the CSWeaponID. + * + * @param id CSWeaponID to get the item definition for. + * @return Returns item definition index value for the weapon id. + * @error Invalid weapon id. + * + * @note In most cases the item deinition index will be the id. Works for CS:GO ONLY. + */ +native int CS_WeaponIDToItemDefIndex(CSWeaponID id); + /** * Do not edit below this line! */ @@ -408,5 +473,7 @@ public void __ext_cstrike_SetNTVOptional() MarkNativeAsOptional("CS_WeaponIDToAlias"); MarkNativeAsOptional("CS_IsValidWeaponID"); MarkNativeAsOptional("CS_UpdateClientModel"); + MarkNativeAsOptional("CS_ItemDefIndexToID"); + MarkNativeAsOptional("CS_WeaponIDToItemDefIndex"); } #endif diff --git a/env/include/datapack.inc b/env/include/datapack.inc index a8c0b64..07fe0b2 100644 --- a/env/include/datapack.inc +++ b/env/include/datapack.inc @@ -39,7 +39,7 @@ /** * Opaque handle to a datapack position. */ - enum DataPackPos: {}; +enum DataPackPos: {}; // A DataPack allows serializing multiple variables into a single stream. methodmap DataPack < Handle @@ -49,55 +49,59 @@ methodmap DataPack < Handle // Packs a normal cell into a data pack. // - // @param cell Cell to add. - public native void WriteCell(any cell); + // @param cell Cell to add. + // @param insert Determines whether mid-pack writes will insert instead of overwrite. + public native void WriteCell(any cell, bool insert = false); // Packs a float into a data pack. // - // @param val Float to add. - public native void WriteFloat(float val); + // @param val Float to add. + // @param insert Determines whether mid-pack writes will insert instead of overwrite. + public native void WriteFloat(float val, bool insert = false); // Packs a string into a data pack. // - // @param str String to add. - public native void WriteString(const char[] str); + // @param str String to add. + // @param insert Determines whether mid-pack writes will insert instead of overwrite. + public native void WriteString(const char[] str, bool insert = false); // Packs a function pointer into a data pack. // - // @param fktptr Function pointer to add. - public native void WriteFunction(Function fktptr); + // @param fktptr Function pointer to add. + // @param insert Determines whether mid-pack writes will insert instead of overwrite. + public native void WriteFunction(Function fktptr, bool insert = false); // Reads a cell from a data pack. // - // @param pack Handle to the data pack. + // @param pack Handle to the data pack. public native any ReadCell(); // Reads a float from a data pack. // - // @param pack Handle to the data pack. + // @param pack Handle to the data pack. public native float ReadFloat(); // Reads a string from a data pack. // - // @param buffer Destination string buffer. - // @param maxlen Maximum length of output string buffer. + // @param buffer Destination string buffer. + // @param maxlen Maximum length of output string buffer. public native void ReadString(char[] buffer, int maxlen); // Reads a function pointer from a data pack. // - // @return Function pointer. + // @return Function pointer. public native Function ReadFunction(); // Resets the position in a data pack. // - // @param clear If true, clears the contained data. + // @param clear If true, clears the contained data. public native void Reset(bool clear=false); // Returns whether or not a specified number of bytes from the data pack // position to the end can be read. // - // @param bytes Number of bytes to simulate reading. - public native bool IsReadable(); + // @param unused Unused variable. Exists for backwards compatability. + public native bool IsReadable(int unused = 0); // The read or write position in a data pack. property DataPackPos Position { @@ -109,117 +113,117 @@ methodmap DataPack < Handle /** * Creates a new data pack. * - * @return A Handle to the data pack. Must be closed with CloseHandle(). + * @return A Handle to the data pack. Must be closed with CloseHandle(). */ native DataPack CreateDataPack(); /** * Packs a normal cell into a data pack. * - * @param pack Handle to the data pack. - * @param cell Cell to add. - * @error Invalid handle. + * @param pack Handle to the data pack. + * @param cell Cell to add. + * @error Invalid handle. */ native void WritePackCell(Handle pack, any cell); /** * Packs a float into a data pack. * - * @param pack Handle to the data pack. - * @param val Float to add. - * @error Invalid handle. + * @param pack Handle to the data pack. + * @param val Float to add. + * @error Invalid handle. */ native void WritePackFloat(Handle pack, float val); /** * Packs a string into a data pack. * - * @param pack Handle to the data pack. - * @param str String to add. - * @error Invalid handle. + * @param pack Handle to the data pack. + * @param str String to add. + * @error Invalid handle. */ native void WritePackString(Handle pack, const char[] str); /** * Packs a function pointer into a data pack. * - * @param pack Handle to the data pack. - * @param fktptr Function pointer to add. - * @error Invalid handle. + * @param pack Handle to the data pack. + * @param fktptr Function pointer to add. + * @error Invalid handle. */ native void WritePackFunction(Handle pack, Function fktptr); /** * Reads a cell from a data pack. * - * @param pack Handle to the data pack. - * @return Cell value. - * @error Invalid handle, or bounds error. + * @param pack Handle to the data pack. + * @return Cell value. + * @error Invalid handle, or bounds error. */ native any ReadPackCell(Handle pack); /** * Reads a float from a data pack. * - * @param pack Handle to the data pack. - * @return Float value. - * @error Invalid handle, or bounds error. + * @param pack Handle to the data pack. + * @return Float value. + * @error Invalid handle, or bounds error. */ native float ReadPackFloat(Handle pack); /** * Reads a string from a data pack. * - * @param pack Handle to the data pack. - * @param buffer Destination string buffer. - * @param maxlen Maximum length of output string buffer. - * @error Invalid handle, or bounds error. + * @param pack Handle to the data pack. + * @param buffer Destination string buffer. + * @param maxlen Maximum length of output string buffer. + * @error Invalid handle, or bounds error. */ native void ReadPackString(Handle pack, char[] buffer, int maxlen); /** * Reads a function pointer from a data pack. * - * @param pack Handle to the data pack. - * @return Function pointer. - * @error Invalid handle, or bounds error. + * @param pack Handle to the data pack. + * @return Function pointer. + * @error Invalid handle, or bounds error. */ native Function ReadPackFunction(Handle pack); /** * Resets the position in a data pack. * - * @param pack Handle to the data pack. - * @param clear If true, clears the contained data. - * @error Invalid handle. + * @param pack Handle to the data pack. + * @param clear If true, clears the contained data. + * @error Invalid handle. */ native void ResetPack(Handle pack, bool clear=false); /** * Returns the read or write position in a data pack. * - * @param pack Handle to the data pack. - * @return Position in the data pack, only usable with calls to SetPackPosition. - * @error Invalid handle. + * @param pack Handle to the data pack. + * @return Position in the data pack, only usable with calls to SetPackPosition. + * @error Invalid handle. */ native DataPackPos GetPackPosition(Handle pack); /** * Sets the read/write position in a data pack. * - * @param pack Handle to the data pack. - * @param position New position to set. Must have been previously retrieved from a call to GetPackPosition. - * @error Invalid handle, or position is beyond the pack bounds. + * @param pack Handle to the data pack. + * @param position New position to set. Must have been previously retrieved from a call to GetPackPosition. + * @error Invalid handle, or position is beyond the pack bounds. */ native void SetPackPosition(Handle pack, DataPackPos position); /** * Returns whether or not a specified number of bytes from the data pack - * position to the end can be read. + * position to the end can be read. * - * @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. + * @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(Handle pack, int bytes); diff --git a/env/include/dbi.inc b/env/include/dbi.inc index 7c86954..e43a23c 100644 --- a/env/include/dbi.inc +++ b/env/include/dbi.inc @@ -40,10 +40,10 @@ */ enum DBResult { - DBVal_Error = 0, /**< Column number/field is invalid. */ - DBVal_TypeMismatch = 1, /**< You cannot retrieve this data with this type. */ - DBVal_Null = 2, /**< Field has no data (NULL) */ - DBVal_Data = 3, /**< Field has data */ + DBVal_Error = 0, /**< Column number/field is invalid. */ + DBVal_TypeMismatch = 1, /**< You cannot retrieve this data with this type. */ + DBVal_Null = 2, /**< Field has no data (NULL) */ + DBVal_Data = 3 /**< Field has data */ }; /** @@ -51,9 +51,9 @@ enum DBResult */ enum DBBindType { - DBBind_Int = 0, /**< Bind an integer. */ - DBBind_Float = 1, /**< Bind a float. */ - DBBind_String = 2, /**< Bind a string. */ + DBBind_Int = 0, /**< Bind an integer. */ + DBBind_Float = 1, /**< Bind a float. */ + DBBind_String = 2 /**< Bind a string. */ }; /** @@ -61,9 +61,9 @@ enum DBBindType */ enum DBPriority { - DBPrio_High = 0, /**< High priority. */ - DBPrio_Normal = 1, /**< Normal priority. */ - DBPrio_Low = 2, /**< Low priority. */ + DBPrio_High = 0, /**< High priority. */ + DBPrio_Normal = 1, /**< Normal priority. */ + DBPrio_Low = 2 /**< Low priority. */ }; // A Driver represents a database backend, currently MySQL or SQLite. @@ -192,8 +192,7 @@ methodmap DBResultSet < Handle // @return Number of bytes written. // @error Invalid field index, invalid type conversion requested // from the database, or no current result set. - public native int FetchString(int field, char[] buffer, int maxlength, - DBResult &result=DBVal_Error); + public native int FetchString(int field, char[] buffer, int maxlength, DBResult &result=DBVal_Error); // Fetches a float from a field in the current row of a result set. // If the result is NULL, a value of 0.0 will be returned. A NULL @@ -257,14 +256,16 @@ typeset SQLTxnSuccess function void (Database db, any data, int numQueries, DBResultSet[] results, any[] queryData); } -// Callback for a failed transaction. -// -// @param db Database handle. -// @param data Data value passed to SQL_ExecuteTransaction(). -// @param numQueries Number of queries executed in the transaction. -// @param error Error message. -// @param failIndex Index of the query that failed, or -1 if something else. -// @param queryData An array of each data value passed to SQL_AddQuery(). +/** + * Callback for a failed transaction. + * + * @param db Database handle. + * @param data Data value passed to SQL_ExecuteTransaction(). + * @param numQueries Number of queries executed in the transaction. + * @param error Error message. + * @param failIndex Index of the query that failed, or -1 if something else. + * @param queryData An array of each data value passed to SQL_AddQuery(). + */ typedef SQLTxnFailure = function void (Database db, any data, int numQueries, const char[] error, int failIndex, any[] queryData); // A Transaction is a collection of SQL statements that must all execute @@ -315,23 +316,27 @@ methodmap DBStatement < Handle public native void BindString(int param, const char[] value, bool copy); }; -// Callback for receiving asynchronous database connections. -// -// @param db Handle to the database connection. -// @param error Error string if there was an error. The error could be -// empty even if an error condition exists, so it is important -// to check the actual Handle value instead. -// @param data Data passed in via the original threaded invocation. +/** + * Callback for receiving asynchronous database connections. + * + * @param db Handle to the database connection. + * @param error Error string if there was an error. The error could be + * empty even if an error condition exists, so it is important + * to check the actual Handle value instead. + * @param data Data passed in via the original threaded invocation. + */ typedef SQLConnectCallback = function void (Database db, const char[] error, any data); -// Callback for receiving asynchronous database query results. -// -// @param db Cloned handle to the database connection. -// @param results Result object, or null on failure. -// @param error Error string if there was an error. The error could be -// empty even if an error condition exists, so it is important -// to check the actual results value instead. -// @param data Data passed in via the original threaded invocation. +/** + * Callback for receiving asynchronous database query results. + * + * @param db Cloned handle to the database connection. + * @param results Result object, or null on failure. + * @param error Error string if there was an error. The error could be + * empty even if an error condition exists, so it is important + * to check the actual results value instead. + * @param data Data passed in via the original threaded invocation. + */ typedef SQLQueryCallback = function void (Database db, DBResultSet results, const char[] error, any data); // A Database represents a live connection to a database, either over the @@ -340,9 +345,9 @@ methodmap Database < Handle { // Connects to a database asynchronously, so the game thread is not blocked. // - // @param callback Callback. If no driver was found, the owner is null. - // @param name Database configuration name. - // @param data Extra data value to pass to the callback. + // @param callback Callback. If no driver was found, the owner is null. + // @param name Database configuration name. + // @param data Extra data value to pass to the callback. public static native void Connect(SQLConnectCallback callback, const char[] name="default", any data=0); // Returns the driver for this database connection. @@ -372,14 +377,24 @@ methodmap Database < Handle // encloses the string in ''. While drivers tend to allow " instead, the string // may be not be escaped (for example, on SQLite)! // - // @param string String to quote. - // @param buffer Buffer to store quoted string in. - // @param maxlength Maximum length of the buffer. - // @param written Optionally returns the number of bytes written. - // @return True on success, false if buffer is not big enough. - // The buffer must be at least 2*strlen(string)+1. + // @param string String to quote. + // @param buffer Buffer to store quoted string in. + // @param maxlength Maximum length of the buffer. + // @param written Optionally returns the number of bytes written. + // @return True on success, false if buffer is not big enough. + // The buffer must be at least 2*strlen(string)+1. public native bool Escape(const char[] string, char[] buffer, int maxlength, int &written=0); + // Formats a string according to the SourceMod format rules (see documentation). + // All format specifiers are escaped (see SQL_EscapeString) unless the '!' flag is used. + // + // @param buffer Destination string buffer. + // @param maxlength Maximum length of output string buffer. + // @param format Formatting rules. + // @param ... Variable number of format parameters. + // @return Number of cells written. + public native int Format(const char[] buffer, int maxlength, const char[] format, any ...); + // Returns whether a database is the same connection as another database. public native bool IsSameConnection(Database other); @@ -405,11 +420,11 @@ methodmap Database < Handle // automatically closed. When the transaction completes, the optional // callback is invoked. // - // @param txn A transaction handle. - // @param onSuccess An optional callback to receive a successful transaction. - // @param onError An optional callback to receive an error message. - // @param data An optional value to pass to callbacks. - // @param prio Priority queue to use. + // @param txn A transaction handle. + // @param onSuccess An optional callback to receive a successful transaction. + // @param onError An optional callback to receive an error message. + // @param data An optional value to pass to callbacks. + // @param prio Priority queue to use. public native void Execute(Transaction txn, SQLTxnSuccess onSuccess = INVALID_FUNCTION, SQLTxnFailure onError = INVALID_FUNCTION, @@ -420,24 +435,24 @@ methodmap Database < Handle /** * Creates an SQL connection from a named configuration. * - * @param confname Named configuration. - * @param persistent True to re-use a previous persistent connection if - * possible, false otherwise. - * @param error Error buffer. - * @param maxlength Maximum length of the error buffer. - * @return A database connection Handle, or INVALID_HANDLE on failure. + * @param confname Named configuration. + * @param persistent True to re-use a previous persistent connection if + * possible, false otherwise. + * @param error Error buffer. + * @param maxlength Maximum length of the error buffer. + * @return A database connection Handle, or INVALID_HANDLE on failure. */ native Database SQL_Connect(const char[] confname, bool persistent, char[] error, int maxlength); /** * Creates a default SQL connection. * - * @param error Error buffer. - * @param maxlength Maximum length of the error buffer. - * @param persistent True to re-use a previous persistent connection - * if possible, false otherwise. - * @return A database connection Handle, or INVALID_HANDLE on failure. - * On failure the error buffer will be filled with a message. + * @param error Error buffer. + * @param maxlength Maximum length of the error buffer. + * @param persistent True to re-use a previous persistent connection + * if possible, false otherwise. + * @return A database connection Handle, or INVALID_HANDLE on failure. + * On failure the error buffer will be filled with a message. */ stock Database SQL_DefConnect(char[] error, int maxlength, bool persistent=true) { @@ -456,19 +471,19 @@ stock Database SQL_DefConnect(char[] error, int maxlength, bool persistent=true) * In general it is discouraged to use this function. Connections should go through * databases.cfg for greatest flexibility on behalf of users. * - * @param keyvalues Key/value pairs from a KeyValues handle, describing the connection. - * @param error Error buffer. - * @param maxlength Maximum length of the error buffer. - * @param persistent True to re-use a previous persistent connection if - * possible, false otherwise. - * @return A database connection Handle, or INVALID_HANDLE on failure. - * On failure the error buffer will be filled with a message. - * @error Invalid KeyValues handle. + * @param keyvalues Key/value pairs from a KeyValues handle, describing the connection. + * @param error Error buffer. + * @param maxlength Maximum length of the error buffer. + * @param persistent True to re-use a previous persistent connection if + * possible, false otherwise. + * @return A database connection Handle, or INVALID_HANDLE on failure. + * On failure the error buffer will be filled with a message. + * @error Invalid KeyValues handle. */ native Database SQL_ConnectCustom(Handle keyvalues, - char[] error, - int maxlength, - bool persistent); + char[] error, + int maxlength, + bool persistent); /** * Grabs a handle to an SQLite database, creating one if it does not exist. @@ -479,15 +494,13 @@ native Database SQL_ConnectCustom(Handle keyvalues, * As a precaution, you should always create some sort of unique prefix to your table names so * there are no conflicts, and you should never drop or modify tables that you do not own. * - * @param database Database name. - * @param error Error buffer. - * @param maxlength Maximum length of the error buffer. - * @return A database connection Handle, or INVALID_HANDLE on failure. - * On failure the error buffer will be filled with a message. + * @param database Database name. + * @param error Error buffer. + * @param maxlength Maximum length of the error buffer. + * @return A database connection Handle, or INVALID_HANDLE on failure. + * On failure the error buffer will be filled with a message. */ -stock Database SQLite_UseDatabase(const char[] database, - char[] error, - int maxlength) +stock Database SQLite_UseDatabase(const char[] database, char[] error, int maxlength) { KeyValues kv = new KeyValues(""); kv.SetString("driver", "sqlite"); @@ -502,6 +515,7 @@ stock Database SQLite_UseDatabase(const char[] database, /** * This function is deprecated. Use SQL_ConnectCustom or SQLite_UseDatabase instead. + * @deprecated */ #pragma deprecated Use SQL_ConnectCustom instead. native Handle SQL_ConnectEx(Handle driver, @@ -518,8 +532,8 @@ native Handle SQL_ConnectEx(Handle driver, /** * Returns if a named configuration is present in databases.cfg. * - * @param name Configuration name. - * @return True if it exists, false otherwise. + * @param name Configuration name. + * @return True if it exists, false otherwise. */ native bool SQL_CheckConfig(const char[] name); @@ -529,19 +543,19 @@ native bool SQL_CheckConfig(const char[] name); * If the driver is not found, SourceMod will attempt * to load an extension named dbi..ext.[dll|so]. * - * @param name Driver identification string, or an empty - * string to return the default driver. - * @return Driver Handle, or INVALID_HANDLE on failure. + * @param name Driver identification string, or an empty + * string to return the default driver. + * @return Driver Handle, or INVALID_HANDLE on failure. */ native Handle SQL_GetDriver(const char[] name=""); /** * Reads the driver of an opened database. * - * @param database Database Handle. - * @param ident Option buffer to store the identification string. - * @param ident_length Maximum length of the buffer. - * @return Driver Handle. + * @param database Database Handle. + * @param ident Option buffer to store the identification string. + * @param ident_length Maximum length of the buffer. + * @return Driver Handle. */ native Handle SQL_ReadDriver(Handle database, char[] ident="", int ident_length=0); @@ -550,10 +564,10 @@ native Handle SQL_ReadDriver(Handle database, char[] ident="", int ident_length= * * Example: "mysql", "sqlite" * - * @param driver Driver Handle, or INVALID_HANDLE for the default driver. - * @param ident Identification string buffer. - * @param maxlength Maximum length of the buffer. - * @error Invalid Handle other than INVALID_HANDLE. + * @param driver Driver Handle, or INVALID_HANDLE for the default driver. + * @param ident Identification string buffer. + * @param maxlength Maximum length of the buffer. + * @error Invalid Handle other than INVALID_HANDLE. */ native void SQL_GetDriverIdent(Handle driver, char[] ident, int maxlength); @@ -562,10 +576,10 @@ native void SQL_GetDriverIdent(Handle driver, char[] ident, int maxlength); * * Example: "MySQL", "SQLite" * - * @param driver Driver Handle, or INVALID_HANDLE for the default driver. - * @param product Product string buffer. - * @param maxlength Maximum length of the buffer. - * @error Invalid Handle other than INVALID_HANDLE. + * @param driver Driver Handle, or INVALID_HANDLE for the default driver. + * @param product Product string buffer. + * @param maxlength Maximum length of the buffer. + * @error Invalid Handle other than INVALID_HANDLE. */ native void SQL_GetDriverProduct(Handle driver, char[] product, int maxlength); @@ -584,29 +598,29 @@ native bool SQL_SetCharset(Handle database, const char[] charset); /** * Returns the number of affected rows from the last query. * - * @param hndl A database OR statement Handle. - * @return Number of rows affected by the last query. - * @error Invalid database or statement Handle. + * @param hndl A database OR statement Handle. + * @return Number of rows affected by the last query. + * @error Invalid database or statement Handle. */ native int SQL_GetAffectedRows(Handle hndl); /** * Returns the last query's insertion id. * - * @param hndl A database, query, OR statement Handle. - * @return Last query's insertion id. - * @error Invalid database, query, or statement Handle. + * @param hndl A database, query, OR statement Handle. + * @return Last query's insertion id. + * @error Invalid database, query, or statement Handle. */ native int SQL_GetInsertId(Handle hndl); /** * Returns the error reported by the last query. * - * @param hndl A database, query, OR statement Handle. - * @param error Error buffer. - * @param maxlength Maximum length of the buffer. - * @return True if there was an error, false otherwise. - * @error Invalid database, query, or statement Handle. + * @param hndl A database, query, OR statement Handle. + * @param error Error buffer. + * @param maxlength Maximum length of the buffer. + * @return True if there was an error, false otherwise. + * @error Invalid database, query, or statement Handle. */ native bool SQL_GetError(Handle hndl, char[] error, int maxlength); @@ -624,14 +638,14 @@ native bool SQL_GetError(Handle hndl, char[] error, int maxlength); * encloses the string in ''. While drivers tend to allow " instead, the string * may be not be escaped (for example, on SQLite)! * - * @param database A database Handle. - * @param string String to quote. - * @param buffer Buffer to store quoted string in. - * @param maxlength Maximum length of the buffer. - * @param written Optionally returns the number of bytes written. - * @return True on success, false if buffer is not big enough. - * The buffer must be at least 2*strlen(string)+1. - * @error Invalid database or statement Handle. + * @param database A database Handle. + * @param string String to quote. + * @param buffer Buffer to store quoted string in. + * @param maxlength Maximum length of the buffer. + * @param written Optionally returns the number of bytes written. + * @return True on success, false if buffer is not big enough. + * The buffer must be at least 2*strlen(string)+1. + * @error Invalid database or statement Handle. */ native bool SQL_EscapeString(Handle database, const char[] string, @@ -640,9 +654,23 @@ native bool SQL_EscapeString(Handle database, int &written=0); /** - * This is a backwards compatibility stock. You should use SQL_EscapeString() - * instead, as this function will probably be deprecated in SourceMod 1.1. + * Formats a string according to the SourceMod format rules (see documentation). + * All format specifiers are escaped (see SQL_EscapeString) unless the '!' flag is used. + * + * @param database A database Handle. + * @param buffer Destination string buffer. + * @param maxlength Maximum length of output string buffer. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @return Number of cells written. */ +native int SQL_FormatQuery(Handle database, const char[] buffer, int maxlength, const char[] format, any ...); + +/** + * This function is deprecated. Use SQL_EscapeString instead. + * @deprecated + */ +#pragma deprecated Use SQL_EscapeString instead. stock bool SQL_QuoteString(Handle database, const char[] string, char[] buffer, @@ -655,14 +683,14 @@ stock bool SQL_QuoteString(Handle database, /** * Executes a query and ignores the result set. * - * @param database A database Handle. - * @param query Query string. - * @param len Optional parameter to specify the query length, in - * bytes. This can be used to send binary queries that - * have a premature terminator. - * @return True if query succeeded, false otherwise. Use - * SQL_GetError to find the last error. - * @error Invalid database Handle. + * @param database A database Handle. + * @param query Query string. + * @param len Optional parameter to specify the query length, in + * bytes. This can be used to send binary queries that + * have a premature terminator. + * @return True if query succeeded, false otherwise. Use + * SQL_GetError to find the last error. + * @error Invalid database Handle. */ native bool SQL_FastQuery(Handle database, const char[] query, int len=-1); @@ -670,14 +698,14 @@ native bool SQL_FastQuery(Handle database, const char[] query, int len=-1); * Executes a simple query and returns a new query Handle for * receiving the results. * - * @param database A database Handle. - * @param query Query string. - * @param len Optional parameter to specify the query length, in - * bytes. This can be used to send binary queries that - * have a premature terminator. - * @return A new Query Handle on success, INVALID_HANDLE - * otherwise. The Handle must be freed with CloseHandle(). - * @error Invalid database Handle. + * @param database A database Handle. + * @param query Query string. + * @param len Optional parameter to specify the query length, in + * bytes. This can be used to send binary queries that + * have a premature terminator. + * @return A new Query Handle on success, INVALID_HANDLE + * otherwise. The Handle must be freed with CloseHandle(). + * @error Invalid database Handle. */ native DBResultSet SQL_Query(Handle database, const char[] query, int len=-1); @@ -689,13 +717,13 @@ native DBResultSet SQL_Query(Handle database, const char[] query, int len=-1); * * Statement handles will work in any function that accepts a Query handle. * - * @param database A database Handle. - * @param query Query string. - * @param error Error buffer. - * @param maxlength Maximum size of the error buffer. - * @return A new statement Handle on success, INVALID_HANDLE - * otherwise. The Handle must be freed with CloseHandle(). - * @error Invalid database Handle. + * @param database A database Handle. + * @param query Query string. + * @param error Error buffer. + * @param maxlength Maximum size of the error buffer. + * @return A new statement Handle on success, INVALID_HANDLE + * otherwise. The Handle must be freed with CloseHandle(). + * @error Invalid database Handle. */ native DBStatement SQL_PrepareQuery(Handle database, const char[] query, char[] error, int maxlength); @@ -707,9 +735,9 @@ native DBStatement SQL_PrepareQuery(Handle database, const char[] query, char[] * query. If this is the case, all result sets must be processed before * another query is made. * - * @param query A query Handle. - * @return True if there was another result set, false otherwise. - * @error Invalid query Handle. + * @param query A query Handle. + * @return True if there was another result set, false otherwise. + * @error Invalid query Handle. */ native bool SQL_FetchMoreResults(Handle query); @@ -718,50 +746,50 @@ native bool SQL_FetchMoreResults(Handle query); * return true even if 0 results were returned, but false * on queries like UPDATE, INSERT, or DELETE. * - * @param query A query (or statement) Handle. - * @return True if there is a result set, false otherwise. - * @error Invalid query Handle. + * @param query A query (or statement) Handle. + * @return True if there is a result set, false otherwise. + * @error Invalid query Handle. */ native bool SQL_HasResultSet(Handle query); /** * Retrieves the number of rows in the last result set. * - * @param query A query (or statement) Handle. - * @return Number of rows in the current result set. - * @error Invalid query Handle. + * @param query A query (or statement) Handle. + * @return Number of rows in the current result set. + * @error Invalid query Handle. */ native int SQL_GetRowCount(Handle query); /** * Retrieves the number of fields in the last result set. * - * @param query A query (or statement) Handle. - * @return Number of fields in the current result set. - * @error Invalid query Handle. + * @param query A query (or statement) Handle. + * @return Number of fields in the current result set. + * @error Invalid query Handle. */ native int SQL_GetFieldCount(Handle query); /** * Retrieves the name of a field by index. * - * @param query A query (or statement) Handle. - * @param field Field number (starting from 0). - * @param name Name buffer. - * @param maxlength Maximum length of the name buffer. - * @error Invalid query Handle, invalid field index, or - * no current result set. + * @param query A query (or statement) Handle. + * @param field Field number (starting from 0). + * @param name Name buffer. + * @param maxlength Maximum length of the name buffer. + * @error Invalid query Handle, invalid field index, or + * no current result set. */ native void SQL_FieldNumToName(Handle query, int field, char[] name, int maxlength); /** * Retrieves a field index by name. * - * @param query A query (or statement) Handle. - * @param name Name of the field (case sensitive). - * @param field Variable to store field index in. - * @return True if found, false if not found. - * @error Invalid query Handle or no current result set. + * @param query A query (or statement) Handle. + * @param name Name of the field (case sensitive). + * @param field Variable to store field index in. + * @return True if found, false if not found. + * @error Invalid query Handle or no current result set. */ native bool SQL_FieldNameToNum(Handle query, const char[] name, int &field); @@ -772,27 +800,27 @@ native bool SQL_FieldNameToNum(Handle query, const char[] name, int &field); * If this function fails, SQL_MoreResults() can be used to * tell if there was an error or the result set is finished. * - * @param query A query (or statement) Handle. - * @return True if a row was fetched, false otherwise. - * @error Invalid query Handle. + * @param query A query (or statement) Handle. + * @return True if a row was fetched, false otherwise. + * @error Invalid query Handle. */ native bool SQL_FetchRow(Handle query); /** * Returns if there are more rows. * - * @param query A query (or statement) Handle. - * @return True if there are more rows, false otherwise. - * @error Invalid query Handle. + * @param query A query (or statement) Handle. + * @return True if there are more rows, false otherwise. + * @error Invalid query Handle. */ native bool SQL_MoreRows(Handle query); /** * Rewinds a result set back to the first result. * - * @param query A query (or statement) Handle. - * @return True on success, false otherwise. - * @error Invalid query Handle or no current result set. + * @param query A query (or statement) Handle. + * @return True on success, false otherwise. + * @error Invalid query Handle or no current result set. */ native bool SQL_Rewind(Handle query); @@ -801,15 +829,15 @@ native bool SQL_Rewind(Handle query); * If the result is NULL, an empty string will be returned. A NULL * check can be done with the result parameter, or SQL_IsFieldNull(). * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @param buffer String buffer. - * @param maxlength Maximum size of the string buffer. - * @param result Optional variable to store the status of the return value. - * @return Number of bytes written. - * @error Invalid query Handle or field index, invalid - * type conversion requested from the database, - * or no current result set. + * @param query A query (or statement) Handle. + * @param field The field index (starting from 0). + * @param buffer String buffer. + * @param maxlength Maximum size of the string buffer. + * @param result Optional variable to store the status of the return value. + * @return Number of bytes written. + * @error Invalid query Handle or field index, invalid + * type conversion requested from the database, + * or no current result set. */ native int SQL_FetchString(Handle query, int field, char[] buffer, int maxlength, DBResult &result=DBVal_Error); @@ -818,13 +846,13 @@ native int SQL_FetchString(Handle query, int field, char[] buffer, int maxlength * If the result is NULL, a value of 0.0 will be returned. A NULL * check can be done with the result parameter, or SQL_IsFieldNull(). * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @param result Optional variable to store the status of the return value. - * @return A float value. - * @error Invalid query Handle or field index, invalid - * type conversion requested from the database, - * or no current result set. + * @param query A query (or statement) Handle. + * @param field The field index (starting from 0). + * @param result Optional variable to store the status of the return value. + * @return A float value. + * @error Invalid query Handle or field index, invalid + * type conversion requested from the database, + * or no current result set. */ native float SQL_FetchFloat(Handle query, int field, DBResult &result=DBVal_Error); @@ -833,13 +861,13 @@ native float SQL_FetchFloat(Handle query, int field, DBResult &result=DBVal_Erro * If the result is NULL, a value of 0 will be returned. A NULL * check can be done with the result parameter, or SQL_IsFieldNull(). * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @param result Optional variable to store the status of the return value. - * @return An integer value. - * @error Invalid query Handle or field index, invalid - * type conversion requested from the database, - * or no current result set. + * @param query A query (or statement) Handle. + * @param field The field index (starting from 0). + * @param result Optional variable to store the status of the return value. + * @return An integer value. + * @error Invalid query Handle or field index, invalid + * type conversion requested from the database, + * or no current result set. */ native int SQL_FetchInt(Handle query, int field, DBResult &result=DBVal_Error); @@ -847,11 +875,11 @@ native int SQL_FetchInt(Handle query, int field, DBResult &result=DBVal_Error); * Returns whether a field's data in the current row of a result set is * NULL or not. NULL is an SQL type which means "no data." * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @return True if data is NULL, false otherwise. - * @error Invalid query Handle or field index, or no - * current result set. + * @param query A query (or statement) Handle. + * @param field The field index (starting from 0). + * @return True if data is NULL, false otherwise. + * @error Invalid query Handle or field index, or no + * current result set. */ native bool SQL_IsFieldNull(Handle query, int field); @@ -861,59 +889,59 @@ native bool SQL_IsFieldNull(Handle query, int field); * bytes to use. Note that the return value does not include the null * terminator. * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @return Number of bytes for the field's data size. - * @error Invalid query Handle or field index or no - * current result set. + * @param query A query (or statement) Handle. + * @param field The field index (starting from 0). + * @return Number of bytes for the field's data size. + * @error Invalid query Handle or field index or no + * current result set. */ native int SQL_FetchSize(Handle query, int field); /** * Binds a parameter in a prepared statement to a given integer value. * - * @param statement A statement (prepared query) Handle. - * @param param The parameter index (starting from 0). - * @param number The number to bind. - * @param signed True to bind the number as signed, false to - * bind it as unsigned. - * @error Invalid statement Handle or parameter index, or - * SQL error. + * @param statement A statement (prepared query) Handle. + * @param param The parameter index (starting from 0). + * @param number The number to bind. + * @param signed True to bind the number as signed, false to + * bind it as unsigned. + * @error Invalid statement Handle or parameter index, or + * SQL error. */ native void SQL_BindParamInt(Handle statement, int param, int number, bool signed=true); /** * Binds a parameter in a prepared statement to a given float value. * - * @param statement A statement (prepared query) Handle. - * @param param The parameter index (starting from 0). - * @param value The float number to bind. - * @error Invalid statement Handle or parameter index, or - * SQL error. + * @param statement A statement (prepared query) Handle. + * @param param The parameter index (starting from 0). + * @param value The float number to bind. + * @error Invalid statement Handle or parameter index, or + * SQL error. */ native void SQL_BindParamFloat(Handle statement, int param, float value); /** * Binds a parameter in a prepared statement to a given string value. * - * @param statement A statement (prepared query) Handle. - * @param param The parameter index (starting from 0). - * @param value The string to bind. - * @param copy Whether or not SourceMod should copy the value - * locally if necessary. If the string contents - * won't change before calling SQL_Execute(), this - * can be set to false for optimization. - * @error Invalid statement Handle or parameter index, or - * SQL error. + * @param statement A statement (prepared query) Handle. + * @param param The parameter index (starting from 0). + * @param value The string to bind. + * @param copy Whether or not SourceMod should copy the value + * locally if necessary. If the string contents + * won't change before calling SQL_Execute(), this + * can be set to false for optimization. + * @error Invalid statement Handle or parameter index, or + * SQL error. */ native void SQL_BindParamString(Handle statement, int param, const char[] value, bool copy); /** * Executes a prepared statement. All parameters must be bound beforehand. * - * @param statement A statement (prepared query) Handle. - * @return True on success, false on failure. - * @error Invalid statement Handle. + * @param statement A statement (prepared query) Handle. + * @return True on success, false on failure. + * @error Invalid statement Handle. */ native bool SQL_Execute(Handle statement); @@ -931,38 +959,40 @@ native bool SQL_Execute(Handle statement); * If the lock cannot be acquired, the main thread will pause until the * threaded operation has concluded. * - * @param database A database Handle. - * @error Invalid database Handle. + * @param database A database Handle. + * @error Invalid database Handle. */ native void SQL_LockDatabase(Handle database); /** * Unlocks a database so threading operations may continue. * - * @param database A database Handle. - * @error Invalid database Handle. + * @param database A database Handle. + * @error Invalid database Handle. */ native void SQL_UnlockDatabase(Handle database); -// General callback for threaded SQL stuff. -// -// @param owner Parent object of the Handle (or INVALID_HANDLE if none). -// @param hndl Handle to the child object (or INVALID_HANDLE if none). -// @param error Error string if there was an error. The error could be -// empty even if an error condition exists, so it is important -// to check the actual Handle value instead. -// @param data Data passed in via the original threaded invocation. +/** + * General callback for threaded SQL stuff. + * + * @param owner Parent object of the Handle (or INVALID_HANDLE if none). + * @param hndl Handle to the child object (or INVALID_HANDLE if none). + * @param error Error string if there was an error. The error could be + * empty even if an error condition exists, so it is important + * to check the actual Handle value instead. + * @param data Data passed in via the original threaded invocation. + */ typedef SQLTCallback = function void (Handle owner, Handle hndl, const char[] error, any data); /** * Tells whether two database handles both point to the same database * connection. * - * @param hndl1 First database Handle. - * @param hndl2 Second database Handle. - * @return True if the Handles point to the same - * connection, false otherwise. - * @error Invalid Handle. + * @param hndl1 First database Handle. + * @param hndl2 Second database Handle. + * @return True if the Handles point to the same + * connection, false otherwise. + * @error Invalid Handle. */ native bool SQL_IsSameConnection(Handle hndl1, Handle hndl2); @@ -974,10 +1004,10 @@ native bool SQL_IsSameConnection(Handle hndl1, Handle hndl2); * don't (or you mix threaded/non-threaded queries), you should see * SQL_LockDatabase(). * - * @param callback Callback; new Handle will be in hndl, owner is the driver. - * If no driver was found, the owner is INVALID_HANDLE. - * @param name Database name. - * @param data Extra data value to pass to the callback. + * @param callback Callback; new Handle will be in hndl, owner is the driver. + * If no driver was found, the owner is INVALID_HANDLE. + * @param name Database name. + * @param data Extra data value to pass to the callback. */ native void SQL_TConnect(SQLTCallback callback, const char[] name="default", any data=0); @@ -992,13 +1022,13 @@ native void SQL_TConnect(SQLTCallback callback, const char[] name="default", any * The query Handle returned through the callback is temporary and destroyed * at the end of the callback. If you need to hold onto it, use CloneHandle(). * - * @param database A database Handle. - * @param callback Callback; database is in "owner" and the query Handle - * is passed in "hndl". - * @param query Query string. - * @param data Extra data value to pass to the callback. - * @param prio Priority queue to use. - * @error Invalid database Handle. + * @param database A database Handle. + * @param callback Callback; database is in "owner" and the query Handle + * is passed in "hndl". + * @param query Query string. + * @param data Extra data value to pass to the callback. + * @param prio Priority queue to use. + * @error Invalid database Handle. */ native void SQL_TQuery(Handle database, SQLTCallback callback, const char[] query, any data=0, DBPriority prio=DBPrio_Normal); @@ -1015,7 +1045,7 @@ native Transaction SQL_CreateTransaction(); * * @param txn A transaction handle. * @param query Query string. - * @param data Extra data value to pass to the final callback. + * @param data Extra data value to pass to the final callback. * @return The index of the query in the transaction's query list. * @error Invalid transaction handle. */ diff --git a/env/include/entity.inc b/env/include/entity.inc index 1dde579..a0f9116 100644 --- a/env/include/entity.inc +++ b/env/include/entity.inc @@ -40,38 +40,39 @@ */ enum PropType { - Prop_Send = 0, /**< This property is networked. */ - Prop_Data = 1, /**< This property is for save game data fields. */ + Prop_Send = 0, /**< This property is networked. */ + Prop_Data = 1 /**< This property is for save game data fields. */ }; /** * @section For more information on these, see the HL2SDK (public/edict.h) */ -#define FL_EDICT_CHANGED (1<<0) /**< Game DLL sets this when the entity state changes - Mutually exclusive with FL_EDICT_PARTIAL_CHANGE. */ -#define FL_EDICT_FREE (1<<1) /**< this edict if free for reuse */ -#define FL_EDICT_FULL (1<<2) /**< this is a full server entity */ -#define FL_EDICT_FULLCHECK (0<<0) /**< call ShouldTransmit() each time, this is a fake flag */ -#define FL_EDICT_ALWAYS (1<<3) /**< always transmit this entity */ -#define FL_EDICT_DONTSEND (1<<4) /**< don't transmit this entity */ -#define FL_EDICT_PVSCHECK (1<<5) /**< always transmit entity, but cull against PVS */ -#define FL_EDICT_PENDING_DORMANT_CHECK (1<<6) -#define FL_EDICT_DIRTY_PVS_INFORMATION (1<<7) -#define FL_FULL_EDICT_CHANGED (1<<8) +#define FL_EDICT_CHANGED (1<<0) /**< Game DLL sets this when the entity state changes + Mutually exclusive with FL_EDICT_PARTIAL_CHANGE. */ +#define FL_EDICT_FREE (1<<1) /**< this edict if free for reuse */ +#define FL_EDICT_FULL (1<<2) /**< this is a full server entity */ +#define FL_EDICT_FULLCHECK (0<<0) /**< call ShouldTransmit() each time, this is a fake flag */ +#define FL_EDICT_ALWAYS (1<<3) /**< always transmit this entity */ +#define FL_EDICT_DONTSEND (1<<4) /**< don't transmit this entity */ +#define FL_EDICT_PVSCHECK (1<<5) /**< always transmit entity, but cull against PVS */ +#define FL_EDICT_PENDING_DORMANT_CHECK (1<<6) +#define FL_EDICT_DIRTY_PVS_INFORMATION (1<<7) +#define FL_FULL_EDICT_CHANGED (1<<8) enum PropFieldType { - PropField_Unsupported, /**< The type is unsupported. */ - PropField_Integer, /**< Valid for SendProp and Data fields */ - PropField_Float, /**< Valid for SendProp and Data fields */ - PropField_Entity, /**< Valid for Data fields only (SendProp shows as int) */ - PropField_Vector, /**< Valid for SendProp and Data fields */ - PropField_String, /**< Valid for SendProp and Data fields */ - PropField_String_T, /**< Valid for Data fields. Read only. - Note that the size of a string_t is dynamic, and - thus FindDataMapOffs() will return the constant size - of the string_t container (which is 32 bits right now). - */ + PropField_Unsupported, /**< The type is unsupported. */ + PropField_Integer, /**< Valid for SendProp and Data fields */ + PropField_Float, /**< Valid for SendProp and Data fields */ + PropField_Entity, /**< Valid for Data fields only (SendProp shows as int) */ + PropField_Vector, /**< Valid for SendProp and Data fields */ + PropField_String, /**< Valid for SendProp and Data fields */ + PropField_String_T, /**< Valid for Data fields. Read only. + Note that the size of a string_t is dynamic, and + thus FindDataMapOffs() will return the constant size + of the string_t container (which is 32 bits right now). */ + PropField_Variant /**< Valid for Data fields only Type is not known at the field level, + (for this call), but dependent on current field value. */ }; /** @@ -85,7 +86,7 @@ enum PropFieldType * networked entities (maximum edicts), rather than total * maximum entities. * - * @return Maximum number of networked entities. + * @return Maximum number of networked entities. */ native int GetMaxEntities(); @@ -96,7 +97,7 @@ native int GetMaxEntities(); * of networked entities (current edicts), rather than total * count of current entities. * - * @return Number of entities in the server. + * @return Number of entities in the server. */ native int GetEntityCount(); @@ -104,67 +105,75 @@ native int GetEntityCount(); * Returns whether or not an entity is valid. Returns false * if there is no matching CBaseEntity for this entity index. * - * @param entity Index of the entity. - * @return True if valid, false otherwise. + * @param entity Index of the entity. + * @return True if valid, false otherwise. */ native bool IsValidEntity(int entity); /** * Returns whether or not an edict index is valid. * - * @param edict Index of the edict. - * @return True if valid, false otherwise. + * @param edict Index of the edict. + * @return True if valid, false otherwise. */ native bool IsValidEdict(int edict); /** * Returns whether or not an entity has a valid networkable edict. * - * @param edict Index of the entity. - * @return True if networkable, false if invalid or not networkable. + * @param entity Index of the entity. + * @return True if networkable, false if invalid or not networkable. */ -native bool IsEntNetworkable(int entiy); +native bool IsEntNetworkable(int entity); /** * Creates a new edict (the basis of a networkable entity) * - * @return Index of the edict, 0 on failure. + * @return Index of the edict, 0 on failure. */ native int CreateEdict(); /** * Removes an edict from the world. * - * @param edict Index of the edict. - * @error Invalid edict index. + * @param edict Index of the edict. + * @error Invalid edict index. */ native void RemoveEdict(int edict); +/** + * Marks an entity for deletion. + * + * @param entity Index of the entity. + * @error Invalid entity index. + */ +native void RemoveEntity(int entity); + /** * Returns the flags on an edict. These are not the same as entity flags. * - * @param edict Index of the entity. - * @return Edict flags. - * @error Invalid edict index. + * @param edict Index of the entity. + * @return Edict flags. + * @error Invalid edict index. */ native int GetEdictFlags(int edict); /** * Sets the flags on an edict. These are not the same as entity flags. * - * @param edict Index of the entity. - * @param flags Flags to set. - * @error Invalid edict index. + * @param edict Index of the entity. + * @param flags Flags to set. + * @error Invalid edict index. */ native void SetEdictFlags(int edict, int flags); /** * Retrieves an edict classname. * - * @param edict Index of the entity. - * @param clsname Buffer to store the classname. - * @param maxlength Maximum length of the buffer. - * @return True on success, false if there is no classname set. + * @param edict Index of the entity. + * @param clsname Buffer to store the classname. + * @param maxlength Maximum length of the buffer. + * @return True on success, false if there is no classname set. */ native bool GetEdictClassname(int edict, char[] clsname, int maxlength); @@ -172,11 +181,11 @@ native bool GetEdictClassname(int edict, char[] clsname, int maxlength); * Retrieves an entity's networkable serverclass name. * This is not the same as the classname and is used for networkable state changes. * - * @param edict Index of the entity. - * @param clsname Buffer to store the serverclass name. - * @param maxlength Maximum length of the buffer. - * @return True on success, false if the edict is not networkable. - * @error Invalid edict index. + * @param edict Index of the entity. + * @param clsname Buffer to store the serverclass name. + * @param maxlength Maximum length of the buffer. + * @return True on success, false if the edict is not networkable. + * @error Invalid edict index. */ native bool GetEntityNetClass(int edict, char[] clsname, int maxlength); @@ -206,10 +215,10 @@ native bool GetEntityNetClass(int edict, char[] clsname, int maxlength); * and wish for it to be immediately changed over the network. By default this * is not done for offset setting functions. * - * @param edict Index to the edict. - * @param offset Offset to mark as changed. If 0, - * the entire edict is marked as changed. - * @error Invalid entity or offset out of bounds. + * @param edict Index to the edict. + * @param offset Offset to mark as changed. If 0, + * the entire edict is marked as changed. + * @error Invalid entity or offset out of bounds. */ native void ChangeEdictState(int edict, int offset = 0); @@ -217,11 +226,11 @@ native void ChangeEdictState(int edict, int offset = 0); * Peeks into an entity's object data and retrieves the integer value at * the given offset. * - * @param entity Edict index. - * @param offset Offset to use. - * @param size Number of bytes to read (valid values are 1, 2, or 4). - * @return Value at the given memory location. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param size Number of bytes to read (valid values are 1, 2, or 4). + * @return Value at the given memory location. + * @error Invalid entity or offset out of reasonable bounds. */ native int GetEntData(int entity, int offset, int size=4); @@ -229,12 +238,12 @@ native int GetEntData(int entity, int offset, int size=4); * Peeks into an entity's object data and sets the integer value at * the given offset. * - * @param entity Edict index. - * @param offset Offset to use. - * @param value Value to set. - * @param size Number of bytes to write (valid values are 1, 2, or 4). - * @param changeState If true, change will be sent over the network. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param value Value to set. + * @param size Number of bytes to write (valid values are 1, 2, or 4). + * @param changeState If true, change will be sent over the network. + * @error Invalid entity or offset out of reasonable bounds. */ native void SetEntData(int entity, int offset, any value, int size=4, bool changeState=false); @@ -242,10 +251,10 @@ native void SetEntData(int entity, int offset, any value, int size=4, bool chang * Peeks into an entity's object data and retrieves the float value at * the given offset. * - * @param entity Edict index. - * @param offset Offset to use. - * @return Value at the given memory location. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @return Value at the given memory location. + * @error Invalid entity or offset out of reasonable bounds. */ native float GetEntDataFloat(int entity, int offset); @@ -253,11 +262,11 @@ native float GetEntDataFloat(int entity, int offset); * Peeks into an entity's object data and sets the float value at * the given offset. * - * @param entity Edict index. - * @param offset Offset to use. - * @param value Value to set. - * @param changeState If true, change will be sent over the network. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param value Value to set. + * @param changeState If true, change will be sent over the network. + * @error Invalid entity or offset out of reasonable bounds. */ native void SetEntDataFloat(int entity, int offset, float value, bool changeState=false); @@ -271,10 +280,11 @@ native void SetEntDataFloat(int entity, int offset, float value, bool changeStat * Note: This function makes no attempt to validate the returned * entity, and in fact, it could be garbage or completely unexpected. * - * @param entity Edict index. - * @param offset Offset to use. - * @return Entity index at the given location, or 0 if none. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @return Entity index at the given location, or 0 if none. + * @error Invalid entity or offset out of reasonable bounds. + * @deprecated Use GetEntDataEnt2() instead. */ #pragma deprecated Use GetEntDataEnt2() instead. native int GetEntDataEnt(int entity, int offset); @@ -287,11 +297,12 @@ native int GetEntDataEnt(int entity, int offset); * 0 is also the world entity index. Thus, a property cannot * be set to the world entity using this native. * - * @param entity Edict index. - * @param offset Offset to use. - * @param other Entity index to set, or 0 to clear. - * @param changeState If true, change will be sent over the network. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param other Entity index to set, or 0 to clear. + * @param changeState If true, change will be sent over the network. + * @error Invalid entity or offset out of reasonable bounds. + * @deprecated Use SetEntDataEnt2() instead. */ #pragma deprecated Use SetEntDataEnt2() instead. native void SetEntDataEnt(int entity, int offset, int other, bool changeState=false); @@ -304,11 +315,11 @@ native void SetEntDataEnt(int entity, int offset, int other, bool changeState=fa * handles" (which usually looks like m_h* in properties). These * are not SourceMod Handles, but internal Source structures. * - * @param entity Edict index. - * @param offset Offset to use. - * @return Entity index at the given location. If there is no entity, - * or the stored entity is invalid, then -1 is returned. - * @error Invalid input entity, or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @return Entity index at the given location. If there is no entity, + * or the stored entity is invalid, then -1 is returned. + * @error Invalid input entity, or offset out of reasonable bounds. */ native int GetEntDataEnt2(int entity, int offset); @@ -320,11 +331,11 @@ native int GetEntDataEnt2(int entity, int offset); * handles" (which usually looks like m_h* in properties). These * are not SourceMod Handles, but internal Source structures. * - * @param entity Edict index. - * @param offset Offset to use. - * @param other Entity index to set, or -1 to clear. - * @param changeState If true, change will be sent over the network. - * @error Invalid input entity, or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param other Entity index to set, or -1 to clear. + * @param changeState If true, change will be sent over the network. + * @error Invalid input entity, or offset out of reasonable bounds. */ native void SetEntDataEnt2(int entity, int offset, int other, bool changeState=false); @@ -332,12 +343,12 @@ native void SetEntDataEnt2(int entity, int offset, int other, bool changeState=f * Peeks into an entity's object data and retrieves the vector at the * given offset. * @note Both a Vector and a QAngle are three floats. This is a - * convenience function and will work with both types. + * convenience function and will work with both types. * - * @param entity Edict index. - * @param offset Offset to use. - * @param vec Vector buffer to store data in. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param vec Vector buffer to store data in. + * @error Invalid entity or offset out of reasonable bounds. */ native void GetEntDataVector(int entity, int offset, float vec[3]); @@ -345,13 +356,13 @@ native void GetEntDataVector(int entity, int offset, float vec[3]); * Peeks into an entity's object data and sets the vector at the given * offset. * @note Both a Vector and a QAngle are three floats. This is a - * convenience function and will work with both types. + * convenience function and will work with both types. * - * @param entity Edict index. - * @param offset Offset to use. - * @param vec Vector to set. - * @param changeState If true, change will be sent over the network. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param vec Vector to set. + * @param changeState If true, change will be sent over the network. + * @error Invalid entity or offset out of reasonable bounds. */ native void SetEntDataVector(int entity, int offset, const float vec[3], bool changeState=false); @@ -359,12 +370,12 @@ native void SetEntDataVector(int entity, int offset, const float vec[3], bool ch * Peeks into an entity's object data and retrieves the string at * the given offset. * - * @param entity Edict index. - * @param offset Offset to use. - * @param buffer Destination string buffer. - * @param maxlen Maximum length of output string buffer. - * @return Number of non-null bytes written. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param buffer Destination string buffer. + * @param maxlen Maximum length of output string buffer. + * @return Number of non-null bytes written. + * @error Invalid entity or offset out of reasonable bounds. */ native int GetEntDataString(int entity, int offset, char[] buffer, int maxlen); @@ -372,13 +383,13 @@ native int GetEntDataString(int entity, int offset, char[] buffer, int maxlen); * Peeks into an entity's object data and sets the string at * the given offset. * - * @param entity Edict index. - * @param offset Offset to use. - * @param buffer String to set. - * @param maxlen Maximum length of bytes to write. - * @param changeState If true, change will be sent over the network. - * @return Number of non-null bytes written. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Edict index. + * @param offset Offset to use. + * @param buffer String to set. + * @param maxlen Maximum length of bytes to write. + * @param changeState If true, change will be sent over the network. + * @return Number of non-null bytes written. + * @error Invalid entity or offset out of reasonable bounds. */ native int SetEntDataString(int entity, int offset, const char[] buffer, int maxlen, bool changeState=false); @@ -396,9 +407,10 @@ native int SetEntDataString(int entity, int offset, const char[] buffer, int max * should use FindSendPropInfo() instead. An example of such a property is * CTFPlayer::DT_LocalPlayer.m_nDisguiseClass on Team Fortress. * - * @param cls Classname. - * @param prop Property name. - * @return An offset, or -1 on failure. + * @param cls Classname. + * @param prop Property name. + * @return An offset, or -1 on failure. + * @deprecated Use FindSendPropInfo instead, or HasEntProp if you just want to check for existence. */ #pragma deprecated Use FindSendPropInfo instead, or HasEntProp if you just want to check for existence. native int FindSendPropOffs(const char[] cls, const char[] prop); @@ -407,18 +419,18 @@ native int FindSendPropOffs(const char[] cls, const char[] prop); * Given a ServerClass name, finds a networkable send property offset. * This information is cached for future calls. * - * @param cls Classname. - * @param prop Property name. - * @param type Optional parameter to store the type. - * @param num_bits Optional parameter to store the number of bits the field - * uses, if applicable (otherwise 0 is stored). The number - * of bits varies for integers and floats, and is always 0 - * for strings. - * @param local_offset Optional parameter to store the local offset, as - * FindSendPropOffs() would return. - * @return On success, returns an absolutely computed offset. - * If no offset is available, 0 is returned. - * If the property is not found, -1 is returned. + * @param cls Classname. + * @param prop Property name. + * @param type Optional parameter to store the type. + * @param num_bits Optional parameter to store the number of bits the field + * uses, if applicable (otherwise 0 is stored). The number + * of bits varies for integers and floats, and is always 0 + * for strings. + * @param local_offset Optional parameter to store the local offset, as + * FindSendPropOffs() would return. + * @return On success, returns an absolutely computed offset. + * If no offset is available, 0 is returned. + * If the property is not found, -1 is returned. */ native int FindSendPropInfo(const char[] cls, const char[] prop, @@ -430,13 +442,14 @@ native int FindSendPropInfo(const char[] cls, * Given an entity, finds a datamap property offset. * This information is cached for future calls. * - * @param entity Entity index. - * @param prop Property name. - * @param type Optional parameter to store the type. - * @param num_bits Optional parameter to store the number of bits the field - * uses. The bit count will either be 1 (for boolean) or - * divisible by 8 (including 0 if unknown). - * @return An offset, or -1 on failure. + * @param entity Entity index. + * @param prop Property name. + * @param type Optional parameter to store the type. + * @param num_bits Optional parameter to store the number of bits the field + * uses. The bit count will either be 1 (for boolean) or + * divisible by 8 (including 0 if unknown). + * @return An offset, or -1 on failure. + * @deprecated Use FindDataMapInfo instead, or HasEntProp if you just want to check for existence. */ #pragma deprecated Use FindDataMapInfo instead, or HasEntProp if you just want to check for existence. native int FindDataMapOffs(int entity, @@ -448,15 +461,15 @@ native int FindDataMapOffs(int entity, * Given an entity, finds a nested datamap property offset. * This information is cached for future calls. * - * @param entity Entity index. - * @param prop Property name. - * @param type Optional parameter to store the type. - * @param num_bits Optional parameter to store the number of bits the field - * uses. The bit count will either be 1 (for boolean) or - * divisible by 8 (including 0 if unknown). - * @param local_offset Optional parameter to store the local offset, as - * FindDataMapOffs() would return. - * @return An offset, or -1 on failure. + * @param entity Entity index. + * @param prop Property name. + * @param type Optional parameter to store the type. + * @param num_bits Optional parameter to store the number of bits the field + * uses. The bit count will either be 1 (for boolean) or + * divisible by 8 (including 0 if unknown). + * @param local_offset Optional parameter to store the local offset, as + * FindDataMapOffs() would return. + * @return An offset, or -1 on failure. */ native int FindDataMapInfo(int entity, const char[] prop, @@ -467,12 +480,12 @@ native int FindDataMapInfo(int entity, /** * Wrapper function for finding a send property for a particular entity. * - * @param ent Entity index. - * @param prop Property name. - * @param actual Defaults to false for backwards compatibility. - * If true, the newer FindSendPropInfo() function - * is used instead. - * @return An offset, or -1 on failure. + * @param ent Entity index. + * @param prop Property name. + * @param actual Defaults to false for backwards compatibility. + * If true, the newer FindSendPropInfo() function + * is used instead. + * @return An offset, or -1 on failure. */ stock int GetEntSendPropOffs(int ent, const char[] prop, bool actual=false) { @@ -489,32 +502,35 @@ stock int GetEntSendPropOffs(int ent, const char[] prop, bool actual=false) if (actual) { return offset; - } else { - return local; } + + return local; } /** * Checks if an entity property exists on an entity. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @return Whether the property exists on the entity. - * @error Invalid entity. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @return Whether the property exists on the entity. + * @error Invalid entity. */ stock bool HasEntProp(int entity, PropType type, const char[] prop) { - if (type == Prop_Data) { + if (type == Prop_Data) + { return (FindDataMapInfo(entity, prop) != -1); } - if (type != Prop_Send) { + if (type != Prop_Send) + { return false; } char cls[64]; - if (!GetEntityNetClass(entity, cls, sizeof(cls))) { + if (!GetEntityNetClass(entity, cls, sizeof(cls))) + { return false; } @@ -527,15 +543,15 @@ stock bool HasEntProp(int entity, PropType type, const char[] prop) * This function is considered safer and more robust over GetEntData, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param size Number of bytes to write (valid values are 1, 2, or 4). - * This value is auto-detected, and the size parameter is - * only used as a fallback in case detection fails. - * @param element Element # (starting from 0) if property is an array. - * @return Value at the given property offset. - * @error Invalid entity or property not found. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param size Number of bytes to write (valid values are 1, 2, or 4). + * This value is auto-detected, and the size parameter is + * only used as a fallback in case detection fails. + * @param element Element # (starting from 0) if property is an array. + * @return Value at the given property offset. + * @error Invalid entity or property not found. */ native int GetEntProp(int entity, PropType type, const char[] prop, int size=4, int element=0); @@ -545,15 +561,15 @@ native int GetEntProp(int entity, PropType type, const char[] prop, int size=4, * This function is considered safer and more robust over SetEntData, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param value Value to set. - * @param size Number of bytes to write (valid values are 1, 2, or 4). - * This value is auto-detected, and the size parameter is - * only used as a fallback in case detection fails. - * @param element Element # (starting from 0) if property is an array. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param value Value to set. + * @param size Number of bytes to write (valid values are 1, 2, or 4). + * This value is auto-detected, and the size parameter is + * only used as a fallback in case detection fails. + * @param element Element # (starting from 0) if property is an array. + * @error Invalid entity or offset out of reasonable bounds. */ native void SetEntProp(int entity, PropType type, const char[] prop, any value, int size=4, int element=0); @@ -563,12 +579,12 @@ native void SetEntProp(int entity, PropType type, const char[] prop, any value, * This function is considered safer and more robust over GetEntDataFloat, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param element Element # (starting from 0) if property is an array. - * @return Value at the given property offset. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param element Element # (starting from 0) if property is an array. + * @return Value at the given property offset. + * @error Invalid entity or offset out of reasonable bounds. */ native float GetEntPropFloat(int entity, PropType type, const char[] prop, int element=0); @@ -578,12 +594,12 @@ native float GetEntPropFloat(int entity, PropType type, const char[] prop, int e * This function is considered safer and more robust over SetEntDataFloat, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param value Value to set. - * @param element Element # (starting from 0) if property is an array. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param value Value to set. + * @param element Element # (starting from 0) if property is an array. + * @error Invalid entity or offset out of reasonable bounds. */ native void SetEntPropFloat(int entity, PropType type, const char[] prop, float value, int element=0); @@ -593,14 +609,14 @@ native void SetEntPropFloat(int entity, PropType type, const char[] prop, float * This function is considered safer and more robust over GetEntDataEnt*, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param element Element # (starting from 0) if property is an array. - * @return Entity index at the given property. - * If there is no entity, or the entity is not valid, - * then -1 is returned. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param element Element # (starting from 0) if property is an array. + * @return Entity index at the given property. + * If there is no entity, or the entity is not valid, + * then -1 is returned. + * @error Invalid entity or offset out of reasonable bounds. */ native int GetEntPropEnt(int entity, PropType type, const char[] prop, int element=0); @@ -610,12 +626,12 @@ native int GetEntPropEnt(int entity, PropType type, const char[] prop, int eleme * This function is considered safer and more robust over SetEntDataEnt*, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param other Entity index to set, or -1 to unset. - * @param element Element # (starting from 0) if property is an array. - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param other Entity index to set, or -1 to unset. + * @param element Element # (starting from 0) if property is an array. + * @error Invalid entity or offset out of reasonable bounds. */ native void SetEntPropEnt(int entity, PropType type, const char[] prop, int other, int element=0); @@ -625,13 +641,13 @@ native void SetEntPropEnt(int entity, PropType type, const char[] prop, int othe * This function is considered safer and more robust over GetEntDataVector, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param vec Vector buffer to store data in. - * @param element Element # (starting from 0) if property is an array. - * @error Invalid entity, property not found, or property not - * actually a vector data type. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param vec Vector buffer to store data in. + * @param element Element # (starting from 0) if property is an array. + * @error Invalid entity, property not found, or property not + * actually a vector data type. */ native void GetEntPropVector(int entity, PropType type, const char[] prop, float vec[3], int element=0); @@ -641,84 +657,86 @@ native void GetEntPropVector(int entity, PropType type, const char[] prop, float * This function is considered safer and more robust over SetEntDataVector, * because it performs strict offset checking and typing rules. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @param vec Vector to set. - * @param element Element # (starting from 0) if property is an array. - * @error Invalid entity, property not found, or property not - * actually a vector data type. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @param vec Vector to set. + * @param element Element # (starting from 0) if property is an array. + * @error Invalid entity, property not found, or property not + * actually a vector data type. */ native void SetEntPropVector(int entity, PropType type, const char[] prop, const float vec[3], int element=0); /** * Gets a network property as a string. * - * @param entity Edict index. - * @param type Property type. - * @param prop Property to use. - * @param buffer Destination string buffer. - * @param maxlen Maximum length of output string buffer. - * @param element Element # (starting from 0) if property is an array. - * @return Number of non-null bytes written. - * @error Invalid entity, offset out of reasonable bounds, or property is not a valid string. + * @param entity Edict index. + * @param type Property type. + * @param prop Property to use. + * @param buffer Destination string buffer. + * @param maxlen Maximum length of output string buffer. + * @param element Element # (starting from 0) if property is an array. + * @return Number of non-null bytes written. + * @error Invalid entity, offset out of reasonable bounds, or property is not a valid string. */ native int GetEntPropString(int entity, PropType type, const char[] prop, char[] buffer, int maxlen, int element=0); /** * Sets a network property as a string. * - * @param entity Edict index. - * @param type Property type. - * @param prop Property to use. - * @param buffer String to set. - * @param element Element # (starting from 0) if property is an array. - * @return Number of non-null bytes written. - * @error Invalid entity, offset out of reasonable bounds, or property is not a valid string. + * @param entity Edict index. + * @param type Property type. + * @param prop Property to use. + * @param buffer String to set. + * @param element Element # (starting from 0) if property is an array. + * @return Number of non-null bytes written. + * @error Invalid entity, offset out of reasonable bounds, or property is not a valid string. */ native int SetEntPropString(int entity, PropType type, const char[] prop, const char[] buffer, int element=0); /** * Retrieves the count of values that an entity property's array can store. * - * @param entity Entity/edict index. - * @param type Property type. - * @param prop Property name. - * @return Size of array (in elements) or 1 if property is not an array. - * @error Invalid entity or property not found. + * @param entity Entity/edict index. + * @param type Property type. + * @param prop Property name. + * @return Size of array (in elements) or 1 if property is not an array. + * @error Invalid entity or property not found. */ native int GetEntPropArraySize(int entity, PropType type, const char[] prop); /** * Copies an array of cells from an entity at a given offset. * - * @param entity Entity index. - * @param offset Offset to use. - * @param array Array to read into. - * @param arraySize Number of values to read. - * @param dataSize Size of each value in bytes (1, 2, or 4). - * @error Invalid entity or offset out of reasonable bounds. + * @param entity Entity index. + * @param offset Offset to use. + * @param array Array to read into. + * @param arraySize Number of values to read. + * @param dataSize Size of each value in bytes (1, 2, or 4). + * @error Invalid entity or offset out of reasonable bounds. */ stock void GetEntDataArray(int entity, int offset, int[] array, int arraySize, int dataSize=4) { - for (int i=0; i(GetEntProp(entity, Prop_Data, datamap)); } /** * Sets an entity's movetype. * - * @param entity Entity index. - * @param mt Movetype, see enum above. - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @param mt Movetype, see enum above. + * @error Invalid entity index, or lack of mod compliance. */ stock void SetEntityMoveType(int entity, MoveType mt) { static bool gotconfig = false; static char datamap[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_MoveType", datamap, sizeof(datamap)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_MoveType", datamap, sizeof(datamap)); + delete gc; + if (!exists) { strcopy(datamap, sizeof(datamap), "m_MoveType"); } - + gotconfig = true; } - + SetEntProp(entity, Prop_Data, datamap, mt); } /** * Gets an entity's render mode. * - * @param entity Entity index. - * @return RenderMode value. - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @return RenderMode value. + * @error Invalid entity index, or lack of mod compliance. */ stock RenderMode GetEntityRenderMode(int entity) { static bool gotconfig = false; static char prop[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_nRenderMode", prop, sizeof(prop)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_nRenderMode", prop, sizeof(prop)); + delete gc; + if (!exists) { strcopy(prop, sizeof(prop), "m_nRenderMode"); } - + gotconfig = true; } - + return view_as(GetEntProp(entity, Prop_Send, prop, 1)); } /** * Sets an entity's render mode. * - * @param entity Entity index. - * @param mode RenderMode value. - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @param mode RenderMode value. + * @error Invalid entity index, or lack of mod compliance. */ stock void SetEntityRenderMode(int entity, RenderMode mode) { static bool gotconfig = false; static char prop[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_nRenderMode", prop, sizeof(prop)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_nRenderMode", prop, sizeof(prop)); + delete gc; + if (!exists) { strcopy(prop, sizeof(prop), "m_nRenderMode"); } - + gotconfig = true; } - + SetEntProp(entity, Prop_Send, prop, mode, 1); } /** * Gets an entity's render Fx. * - * @param entity Entity index. - * @return RenderFx value. - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @return RenderFx value. + * @error Invalid entity index, or lack of mod compliance. */ stock RenderFx GetEntityRenderFx(int entity) { static bool gotconfig = false; static char prop[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_nRenderFX", prop, sizeof(prop)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_nRenderFX", prop, sizeof(prop)); + delete gc; + if (!exists) { strcopy(prop, sizeof(prop), "m_nRenderFX"); } - + gotconfig = true; } - + return view_as(GetEntProp(entity, Prop_Send, prop, 1)); } /** * Sets an entity's render Fx. * - * @param entity Entity index. - * @param fx RenderFx value. - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @param fx RenderFx value. + * @error Invalid entity index, or lack of mod compliance. */ stock void SetEntityRenderFx(int entity, RenderFx fx) { static bool gotconfig = false; static char prop[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_nRenderFX", prop, sizeof(prop)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_nRenderFX", prop, sizeof(prop)); + delete gc; + if (!exists) { strcopy(prop, sizeof(prop), "m_nRenderFX"); } - + gotconfig = true; } - + SetEntProp(entity, Prop_Send, prop, fx, 1); } /** * Gets an entity's color. * - * @param entity Entity index. - * @param r Amount of red (0-255) - * @param g Amount of green (0-255) - * @param b Amount of blue (0-255) - * @param a Amount of alpha (0-255) - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @param r Amount of red (0-255) + * @param g Amount of green (0-255) + * @param b Amount of blue (0-255) + * @param a Amount of alpha (0-255) + * @error Invalid entity index, or lack of mod compliance. */ stock void GetEntityRenderColor(int entity, int &r, int &g, int &b, int &a) { static bool gotconfig = false; static char prop[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_clrRender", prop, sizeof(prop)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_clrRender", prop, sizeof(prop)); + delete gc; + if (!exists) { strcopy(prop, sizeof(prop), "m_clrRender"); } - + gotconfig = true; } - + int offset = GetEntSendPropOffs(entity, prop); - + if (offset <= 0) { ThrowError("GetEntityRenderColor not supported by this mod"); } - + r = GetEntData(entity, offset, 1); g = GetEntData(entity, offset + 1, 1); b = GetEntData(entity, offset + 2, 1); @@ -411,39 +411,39 @@ stock void GetEntityRenderColor(int entity, int &r, int &g, int &b, int &a) /** * Sets an entity's color. * - * @param entity Entity index - * @param r Amount of red (0-255) - * @param g Amount of green (0-255) - * @param b Amount of blue (0-255) - * @param a Amount of alpha (0-255) - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index + * @param r Amount of red (0-255) + * @param g Amount of green (0-255) + * @param b Amount of blue (0-255) + * @param a Amount of alpha (0-255) + * @error Invalid entity index, or lack of mod compliance. */ stock void SetEntityRenderColor(int entity, int r=255, int g=255, int b=255, int a=255) { static bool gotconfig = false; static char prop[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_clrRender", prop, sizeof(prop)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_clrRender", prop, sizeof(prop)); + delete gc; + if (!exists) { strcopy(prop, sizeof(prop), "m_clrRender"); } - + gotconfig = true; } - + int offset = GetEntSendPropOffs(entity, prop); - + if (offset <= 0) { ThrowError("SetEntityRenderColor not supported by this mod"); } - + SetEntData(entity, offset, r, 1, true); SetEntData(entity, offset + 1, g, 1, true); SetEntData(entity, offset + 2, b, 1, true); @@ -454,104 +454,104 @@ stock void SetEntityRenderColor(int entity, int r=255, int g=255, int b=255, int * Gets an entity's gravity. * * @param entity Entity index. - * @return Entity's m_flGravity value. - * @error Invalid entity index, or lack of mod compliance. + * @return Entity's m_flGravity value. + * @error Invalid entity index, or lack of mod compliance. */ stock float GetEntityGravity(int entity) { static bool gotconfig = false; static char datamap[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_flGravity", datamap, sizeof(datamap)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_flGravity", datamap, sizeof(datamap)); + delete gc; + if (!exists) { strcopy(datamap, sizeof(datamap), "m_flGravity"); } - + gotconfig = true; } - + return GetEntPropFloat(entity, Prop_Data, datamap); } /** * Sets an entity's gravity. * - * @param entity Entity index. - * @param amount Gravity to set (default = 1.0, half = 0.5, double = 2.0). - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @param amount Gravity to set (default = 1.0, half = 0.5, double = 2.0). + * @error Invalid entity index, or lack of mod compliance. */ stock void SetEntityGravity(int entity, float amount) { static bool gotconfig = false; static char datamap[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_flGravity", datamap, sizeof(datamap)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_flGravity", datamap, sizeof(datamap)); + delete gc; + if (!exists) { strcopy(datamap, sizeof(datamap), "m_flGravity"); } - + gotconfig = true; } - + SetEntPropFloat(entity, Prop_Data, datamap, amount); } /** * Sets an entity's health * - * @param entity Entity index. - * @param amount Health amount. - * @error Invalid entity index, or lack of mod compliance. + * @param entity Entity index. + * @param amount Health amount. + * @error Invalid entity index, or lack of mod compliance. */ stock void SetEntityHealth(int entity, int amount) { static bool gotconfig = false; static char prop[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_iHealth", prop, sizeof(prop)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_iHealth", prop, sizeof(prop)); + delete gc; + if (!exists) { strcopy(prop, sizeof(prop), "m_iHealth"); } - + gotconfig = true; } - + char cls[64]; PropFieldType type; int offset; - + if (!GetEntityNetClass(entity, cls, sizeof(cls))) { ThrowError("SetEntityHealth not supported by this mod: Could not get serverclass name"); return; } - + offset = FindSendPropInfo(cls, prop, type); - + if (offset <= 0) { ThrowError("SetEntityHealth not supported by this mod"); return; } - + /* Dark Messiah uses a float for the health instead an integer */ if (type == PropField_Float) { @@ -566,29 +566,29 @@ stock void SetEntityHealth(int entity, int amount) /** * Get's a users current pressed buttons * - * @param client Client index - * @return Bitsum of buttons - * @error Invalid client index, client not in game, - * or lack of mod compliance. + * @param client Client index + * @return Bitsum of buttons + * @error Invalid client index, client not in game, + * or lack of mod compliance. */ stock int GetClientButtons(int client) { static bool gotconfig = false; static char datamap[32]; - + if (!gotconfig) { - Handle gc = LoadGameConfigFile("core.games"); - bool exists = GameConfGetKeyValue(gc, "m_nButtons", datamap, sizeof(datamap)); - CloseHandle(gc); - + GameData gc = new GameData("core.games"); + bool exists = gc.GetKeyValue("m_nButtons", datamap, sizeof(datamap)); + delete gc; + if (!exists) { strcopy(datamap, sizeof(datamap), "m_nButtons"); } - + gotconfig = true; } - + return GetEntProp(client, Prop_Data, datamap); } diff --git a/env/include/events.inc b/env/include/events.inc index dea14a3..6bba666 100644 --- a/env/include/events.inc +++ b/env/include/events.inc @@ -40,9 +40,9 @@ */ enum EventHookMode { - EventHookMode_Pre, //< Hook callback fired before event is fired */ - EventHookMode_Post, //< Hook callback fired after event is fired */ - EventHookMode_PostNoCopy //< Hook callback fired after event is fired, but event data won't be copied */ + EventHookMode_Pre, //< Hook callback fired before event is fired */ + EventHookMode_Post, //< Hook callback fired after event is fired */ + EventHookMode_PostNoCopy //< Hook callback fired after event is fired, but event data won't be copied */ }; /** @@ -52,20 +52,22 @@ typeset EventHook { // Called when a game event is fired. // - // @param event Handle to event. This could be INVALID_HANDLE if every plugin hooking - // this event has set the hook mode EventHookMode_PostNoCopy. - // @param name String containing the name of the event. - // @param dontBroadcast True if event was not broadcast to clients, false otherwise. - // @return Ignored for post hooks. Plugin_Handled will block event if hooked as pre. + // @param event Handle to event. This could be INVALID_HANDLE if every plugin hooking + // this event has set the hook mode EventHookMode_PostNoCopy. + // @param name String containing the name of the event. + // @param dontBroadcast True if event was not broadcast to clients, false otherwise. + // May not correspond to the real value. Use the property BroadcastDisabled. + // @return Ignored for post hooks. Plugin_Handled will block event if hooked as pre. /// function Action (Event event, const char[] name, bool dontBroadcast); + // // Called when a game event is fired. // - // @param event Handle to event. This could be INVALID_HANDLE if every plugin hooking - // this event has set the hook mode EventHookMode_PostNoCopy. - // @param name String containing the name of the event. - // @param dontBroadcast True if event was not broadcast to clients, false otherwise. + // @param event Handle to event. This could be INVALID_HANDLE if every plugin hooking + // this event has set the hook mode EventHookMode_PostNoCopy. + // @param name String containing the name of the event. + // @param dontBroadcast True if event was not broadcast to clients, false otherwise. /// function void (Event event, const char[] name, bool dontBroadcast); }; @@ -83,7 +85,7 @@ methodmap Event < Handle // // Unlike Fire, this function DOES NOT close the event Handle. // - // @param client Index of client to receive the event.. + // @param client Index of client to receive the event.. public native void FireToClient(int client); // Cancels a previously created game event that has not been fired. This @@ -160,37 +162,38 @@ methodmap Event < Handle // or HookEventEx callbacks. property bool BroadcastDisabled { public native set(bool dontBroadcast); + public native get(); } } /** * Creates a hook for when a game event is fired. * - * @param name Name of event. - * @param callback An EventHook function pointer. - * @param mode Optional EventHookMode determining the type of hook. - * @error Invalid event name or invalid callback function. + * @param name Name of event. + * @param callback An EventHook function pointer. + * @param mode Optional EventHookMode determining the type of hook. + * @error Invalid event name or invalid callback function. */ native void HookEvent(const char[] name, EventHook callback, EventHookMode mode=EventHookMode_Post); /** * Creates a hook for when a game event is fired. * - * @param name Name of event. - * @param callback An EventHook function pointer. - * @param mode Optional EventHookMode determining the type of hook. - * @return True if event exists and was hooked successfully, false otherwise. - * @error Invalid callback function. + * @param name Name of event. + * @param callback An EventHook function pointer. + * @param mode Optional EventHookMode determining the type of hook. + * @return True if event exists and was hooked successfully, false otherwise. + * @error Invalid callback function. */ native bool HookEventEx(const char[] name, EventHook callback, EventHookMode mode=EventHookMode_Post); /** * Removes a hook for when a game event is fired. * - * @param name Name of event. - * @param callback An EventHook function pointer. - * @param mode Optional EventHookMode determining the type of hook. - * @error Invalid callback function or no active hook for specified event. + * @param name Name of event. + * @param callback An EventHook function pointer. + * @param mode Optional EventHookMode determining the type of hook. + * @error Invalid callback function or no active hook for specified event. */ native void UnhookEvent(const char[] name, EventHook callback, EventHookMode mode=EventHookMode_Post); @@ -200,11 +203,11 @@ native void UnhookEvent(const char[] name, EventHook callback, EventHookMode mod * The Handle should not be closed via CloseHandle(). It must be closed via * event.Fire() or event.Cancel(). * - * @param name Name of event. - * @param force If set to true, this forces the event to be created even if it's not being hooked. - * Note that this will not force it if the event doesn't exist at all. - * @return Handle to event. INVALID_HANDLE is returned if the event doesn't exist or isn't - being hooked (unless force is true). + * @param name Name of event. + * @param force If set to true, this forces the event to be created even if it's not being hooked. + * Note that this will not force it if the event doesn't exist at all. + * @return Handle to event. INVALID_HANDLE is returned if the event doesn't exist or isn't + * being hooked (unless force is true). */ native Event CreateEvent(const char[] name, bool force=false); @@ -213,49 +216,49 @@ native Event CreateEvent(const char[] name, bool force=false); * * This function closes the event Handle after completing. * - * @param event Handle to the event. - * @param dontBroadcast Optional boolean that determines if event should be broadcast to clients. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param dontBroadcast Optional boolean that determines if event should be broadcast to clients. + * @error Invalid or corrupt Handle. */ native void FireEvent(Handle event, bool dontBroadcast=false); /** * Cancels a previously created game event that has not been fired. * - * @param event Handled to the event. - * @error Invalid or corrupt Handle. + * @param event Handled to the event. + * @error Invalid or corrupt Handle. */ native void CancelCreatedEvent(Handle event); /** * Returns the boolean value of a game event's key. * - * @param event Handle to the event. - * @param key Name of event key. - * @param defValue Optional default value to use if the key is not found. - * @return The boolean value of the specified event key. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param defValue Optional default value to use if the key is not found. + * @return The boolean value of the specified event key. + * @error Invalid or corrupt Handle. */ native bool GetEventBool(Handle event, const char[] key, bool defValue=false); /** * Sets the boolean value of a game event's key. * - * @param event Handle to the event. - * @param key Name of event key. - * @param value New boolean value. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param value New boolean value. + * @error Invalid or corrupt Handle. */ native void SetEventBool(Handle event, const char[] key, bool value); /** * Returns the integer value of a game event's key. * - * @param event Handle to the event. - * @param key Name of event key. - * @param defValue Optional default value to use if the key is not found. - * @return The integer value of the specified event key. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param defValue Optional default value to use if the key is not found. + * @return The integer value of the specified event key. + * @error Invalid or corrupt Handle. */ native int GetEventInt(Handle event, const char[] key, int defValue=0); @@ -267,63 +270,63 @@ native int GetEventInt(Handle event, const char[] key, int defValue=0); * integers, and only refer to how much data will actually be sent * over the network (if applicable). * - * @param event Handle to the event. - * @param key Name of event key. - * @param value New integer value. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param value New integer value. + * @error Invalid or corrupt Handle. */ native void SetEventInt(Handle event, const char[] key, int value); /** * Returns the floating point value of a game event's key. * - * @param event Handle to the event. - * @param key Name of event key. - * @param defValue Optional default value to use if the key is not found. - * @return The floating point value of the specified event key. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param defValue Optional default value to use if the key is not found. + * @return The floating point value of the specified event key. + * @error Invalid or corrupt Handle. */ native float GetEventFloat(Handle event, const char[] key, float defValue=0.0); /** * Sets the floating point value of a game event's key. * - * @param event Handle to the event. - * @param key Name of event key. - * @param value New floating point value. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param value New floating point value. + * @error Invalid or corrupt Handle. */ native void SetEventFloat(Handle event, const char[] key, float value); /** * Retrieves the string value of a game event's key. * - * @param event Handle to the event. - * @param key Name of event key. - * @param value Buffer to store the value of the specified event key. - * @param maxlength Maximum length of string buffer. - * @param defValue Optional default value to use if the key is not found. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param value Buffer to store the value of the specified event key. + * @param maxlength Maximum length of string buffer. + * @param defValue Optional default value to use if the key is not found. + * @error Invalid or corrupt Handle. */ native void GetEventString(Handle event, const char[] key, char[] value, int maxlength, const char[] defvalue=""); /** * Sets the string value of a game event's key. * - * @param event Handle to the event. - * @param key Name of event key. - * @param value New string value. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param key Name of event key. + * @param value New string value. + * @error Invalid or corrupt Handle. */ native void SetEventString(Handle event, const char[] key, const char[] value); /** * Retrieves the name of a game event. * - * @param event Handle to the event. - * @param name Buffer to store the name of the event. - * @param maxlength Maximum length of string buffer. - * @error Invalid or corrupt Handle. + * @param event Handle to the event. + * @param name Buffer to store the name of the event. + * @param maxlength Maximum length of string buffer. + * @error Invalid or corrupt Handle. */ native void GetEventName(Handle event, char[] name, int maxlength); diff --git a/env/include/files.inc b/env/include/files.inc index 8f6d227..fd292ba 100644 --- a/env/include/files.inc +++ b/env/include/files.inc @@ -9,7 +9,7 @@ * 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 @@ -39,13 +39,13 @@ * @global All paths in SourceMod natives are relative to the mod folder * unless otherwise noted. * - * Most functions in SourceMod (at least, ones that deal with direct + * Most functions in SourceMod (at least, ones that deal with direct * file manipulation) will support an alternate path specification. * - * If the path starts with the string "file://" and the PathType is - * not relative, then the "file://" portion is stripped off, and the - * rest of the path is used without any modification (except for - * correcting slashes). This can be used to override the path + * If the path starts with the string "file://" and the PathType is + * not relative, then the "file://" portion is stripped off, and the + * rest of the path is used without any modification (except for + * correcting slashes). This can be used to override the path * builder to supply alternate absolute paths. Examples: * * file://C:/Temp/file.txt @@ -57,9 +57,9 @@ */ enum FileType { - FileType_Unknown = 0, /* Unknown file type (device/socket) */ - FileType_Directory = 1, /* File is a directory */ - FileType_File = 2, /* File is a file */ + FileType_Unknown = 0, /* Unknown file type (device/socket) */ + FileType_Directory = 1, /* File is a directory */ + FileType_File = 2 /* File is a file */ }; /** @@ -67,23 +67,23 @@ enum FileType */ enum FileTimeMode { - FileTime_LastAccess = 0, /* Last access (does not work on FAT) */ - FileTime_Created = 1, /* Creation (does not work on FAT) */ - FileTime_LastChange = 2, /* Last modification */ + FileTime_LastAccess = 0, /* Last access (does not work on FAT) */ + FileTime_Created = 1, /* Creation (does not work on FAT) */ + FileTime_LastChange = 2 /* Last modification */ }; -#define PLATFORM_MAX_PATH 256 /**< Maximum path length. */ +#define PLATFORM_MAX_PATH 256 /**< Maximum path length. */ -#define SEEK_SET 0 /**< Seek from start. */ -#define SEEK_CUR 1 /**< Seek from current position. */ -#define SEEK_END 2 /**< Seek from end position. */ +#define SEEK_SET 0 /**< Seek from start. */ +#define SEEK_CUR 1 /**< Seek from current position. */ +#define SEEK_END 2 /**< Seek from end position. */ /** * Path types. */ enum PathType { - Path_SM, /**< SourceMod root folder */ + Path_SM, /**< SourceMod root folder */ }; // A DirectoryListing iterates over the contents of a directory. To obtain a @@ -92,9 +92,9 @@ methodmap DirectoryListing < Handle { // Reads the current directory entry as a local filename, then moves to the // next file. - // + // // Note: Both the '.' and '..' automatic directory entries will be retrieved. - // + // // @param buffer String buffer to hold directory name. // @param maxlength Maximum size of string buffer. // @param type Optional variable to store the file type. @@ -104,24 +104,24 @@ methodmap DirectoryListing < Handle // A File object can be obtained by calling OpenFile(). File objects should be // closed with delete or Close(). Note that, "delete file" does not -// actually a file, it just closes it. +// actually delete the file, it just closes the handle. methodmap File < Handle { - // Close the file handle. This is the same as using CloseHandle) or delete. + // Close the file handle. This is the same as using CloseHandle() or delete. public void Close() { CloseHandle(this); } // Reads a line of text from a file. - // + // // @param buffer String buffer to hold the line. - // @param maxlength Maximum size of string buffer. + // @param maxlength Maximum size of string buffer. // @return True on success, false otherwise. public native bool ReadLine(char[] buffer, int maxlength); // Reads binary data from a file. - // - // @param items Array to store each item read. + // + // @param items Array to store each item read. // @param num_items Number of items to read into the array. // @param size Size of each element, in bytes, to be read. // Valid sizes are 1, 2, or 4. @@ -129,40 +129,40 @@ methodmap File < Handle public native int Read(int[] items, int num_items, int size); // Reads a UTF8 or ANSI string from a file. - // + // // @param buffer Buffer to store the string. // @param max_size Maximum size of the string buffer. - // @param read_count If -1, reads until a null terminator is encountered in - // the file. Otherwise, read_count bytes are read - // into the buffer provided. In this case the buffer - // is not explicitly null terminated, and the buffer + // @param read_count If -1, reads until a null terminator is encountered in + // the file. Otherwise, read_count bytes are read + // into the buffer provided. In this case the buffer + // is not explicitly null terminated, and the buffer // will contain any null terminators read from the file. - // @return Number of characters written to the buffer, or -1 + // @return Number of characters written to the buffer, or -1 // if an error was encountered. // @error read_count > max_size. public native int ReadString(char[] buffer, int max_size, int read_count=-1); // Writes binary data to a file. // - // @param items Array of items to write. The data is read directly. - // That is, in 1 or 2-byte mode, the lower byte(s) in - // each cell are used directly, rather than performing + // @param items Array of items to write. The data is read directly. + // That is, in 1 or 2-byte mode, the lower byte(s) in + // each cell are used directly, rather than performing // any casts from a 4-byte number to a smaller number. // @param num_items Number of items in the array. - // @param size Size of each item in the array in bytes. + // @param size Size of each item in the array in bytes. // Valid sizes are 1, 2, or 4. // @return True on success, false on error. public native bool Write(const int[] items, int num_items, int size); // Writes a binary string to a file. - // + // // @param buffer String to write. // @param term True to append NUL terminator, false otherwise. // @return True on success, false on error. public native bool WriteString(const char[] buffer, bool term); // Writes a line of text to a text file. A newline is automatically appended. - // + // // @param hndl Handle to the file. // @param format Formatting rules. // @param ... Variable number of format parameters. @@ -222,7 +222,7 @@ methodmap File < Handle public native bool WriteInt32(int data); // Tests if the end of file has been reached. - // + // // @return True if end of file has been reached, false otherwise. public native bool EndOfFile(); @@ -233,6 +233,13 @@ methodmap File < Handle // @return True on success, false otherwise. public native bool Seek(int position, int where); + // Flushes a file's buffered output; any buffered output + // is immediately written to the file. + // + // @return True on success or use_valve_fs specified with OpenFile, + // otherwise false on failure. + public native bool Flush(); + // Get the current position in the file; returns -1 on failure. property int Position { public native get(); @@ -240,16 +247,16 @@ methodmap File < Handle } /** - * Builds a path relative to the SourceMod folder. This should be used instead of - * directly referencing addons/sourcemod, in case users change the name of their + * Builds a path relative to the SourceMod folder. This should be used instead of + * directly referencing addons/sourcemod, in case users change the name of their * folder layout. * - * @param type Type of path to build as the base. - * @param buffer Buffer to store the path. - * @param maxlength Maximum length of buffer. - * @param fmt Format string. - * @param ... Format arguments. - * @return Number of bytes written to buffer (not including null terminator). + * @param type Type of path to build as the base. + * @param buffer Buffer to store the path. + * @param maxlength Maximum length of buffer. + * @param fmt Format string. + * @param ... Format arguments. + * @return Number of bytes written to buffer (not including null terminator). */ native int BuildPath(PathType type, char[] buffer, int maxlength, const char[] fmt, any ...); @@ -260,13 +267,13 @@ native int BuildPath(PathType type, char[] buffer, int maxlength, const char[] f * @note Directories Handles can be cloned. * @note OpenDirectory() supports the "file://" notation. * - * @param path Path to open. + * @param path Path to open. * @param use_valve_fs If true, the Valve file system will be used instead. * This can be used to find files existing in any of * the Valve search paths, rather than solely files * existing directly in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. - * @return A Handle to the directory, null on error. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. + * @return A Handle to the directory, null on error. */ native DirectoryListing OpenDirectory(const char[] path, bool use_valve_fs=false, const char[] valve_path_id="GAME"); @@ -275,13 +282,13 @@ native DirectoryListing OpenDirectory(const char[] path, bool use_valve_fs=false * * @note Contents of buffers are undefined when returning false. * @note Both the '.' and '..' automatic directory entries will be retrieved for Windows and Linux. - * - * @param dir Handle to a directory. - * @param buffer String buffer to hold directory name. - * @param maxlength Maximum size of string buffer. - * @param type Optional variable to store the file type. - * @return True on success, false if there are no more files to read. - * @error Invalid or corrupt Handle. + * + * @param dir Handle to a directory. + * @param buffer String buffer to hold directory name. + * @param maxlength Maximum size of string buffer. + * @param type Optional variable to store the file type. + * @return True on success, false if there are no more files to read. + * @error Invalid or corrupt Handle. */ native bool ReadDirEntry(Handle dir, char[] buffer, int maxlength, FileType &type=FileType_Unknown); @@ -310,227 +317,229 @@ native bool ReadDirEntry(Handle dir, char[] buffer, int maxlength, FileType &typ * Example: "rb" opens a binary file for writing; "at" opens a text file for * appending. * - * @param file File to open. - * @param mode Open mode. + * @param file File to open. + * @param mode Open mode. * @param use_valve_fs If true, the Valve file system will be used instead. * This can be used to find files existing in valve - * search paths, rather than solely files existing directly - * in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. - * @return A File handle, or null if the file could not be opened. + * search paths, rather than solely files existing directly + * in the gamedir. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. + * @return A File handle, or null if the file could not be opened. */ native File OpenFile(const char[] file, const char[] mode, bool use_valve_fs=false, const char[] valve_path_id="GAME"); /** * Deletes a file. * - * @param path Path of the file to delete. + * @param path Path of the file to delete. * @param use_valve_fs If true, the Valve file system will be used instead. * This can be used to delete files existing in the Valve * search path, rather than solely files existing directly - * in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. - * @return True on success, false on failure or if file not immediately removed. + * in the gamedir. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. + * @return True on success, false on failure or if file not immediately removed. */ native bool DeleteFile(const char[] path, bool use_valve_fs=false, const char[] valve_path_id="DEFAULT_WRITE_PATH"); /** * Reads a line from a text file. * - * @param hndl Handle to the file. - * @param buffer String buffer to hold the line. - * @param maxlength Maximum size of string buffer. - * @return True on success, false otherwise. + * @param hndl Handle to the file. + * @param buffer String buffer to hold the line. + * @param maxlength Maximum size of string buffer. + * @return True on success, false otherwise. */ native bool ReadFileLine(Handle hndl, char[] buffer, int maxlength); /** * Reads binary data from a file. * - * @param hndl Handle to the file. - * @param items Array to store each item read. - * @param num_items Number of items to read into the array. - * @param size Size of each element, in bytes, to be read. - * Valid sizes are 1, 2, or 4. - * @return Number of elements read, or -1 on error. + * @param hndl Handle to the file. + * @param items Array to store each item read. + * @param num_items Number of items to read into the array. + * @param size Size of each element, in bytes, to be read. + * Valid sizes are 1, 2, or 4. + * @return Number of elements read, or -1 on error. */ native int ReadFile(Handle hndl, int[] items, int num_items, int size); /** * Reads a UTF8 or ANSI string from a file. * - * @param hndl Handle to the file. - * @param buffer Buffer to store the string. - * @param max_size Maximum size of the string buffer. - * @param read_count If -1, reads until a null terminator is encountered in - * the file. Otherwise, read_count bytes are read - * into the buffer provided. In this case the buffer - * is not explicitly null terminated, and the buffer - * will contain any null terminators read from the file. - * @return Number of characters written to the buffer, or -1 - * if an error was encountered. - * @error Invalid Handle, or read_count > max_size. + * @param hndl Handle to the file. + * @param buffer Buffer to store the string. + * @param max_size Maximum size of the string buffer. + * @param read_count If -1, reads until a null terminator is encountered in + * the file. Otherwise, read_count bytes are read + * into the buffer provided. In this case the buffer + * is not explicitly null terminated, and the buffer + * will contain any null terminators read from the file. + * @return Number of characters written to the buffer, or -1 + * if an error was encountered. + * @error Invalid Handle, or read_count > max_size. */ native int ReadFileString(Handle hndl, char[] buffer, int max_size, int read_count=-1); /** * Writes binary data to a file. * - * @param hndl Handle to the file. - * @param items Array of items to write. The data is read directly. - * That is, in 1 or 2-byte mode, the lower byte(s) in - * each cell are used directly, rather than performing - * any casts from a 4-byte number to a smaller number. - * @param num_items Number of items in the array. - * @param size Size of each item in the array in bytes. - * Valid sizes are 1, 2, or 4. - * @return True on success, false on error. - * @error Invalid Handle. + * @param hndl Handle to the file. + * @param items Array of items to write. The data is read directly. + * That is, in 1 or 2-byte mode, the lower byte(s) in + * each cell are used directly, rather than performing + * any casts from a 4-byte number to a smaller number. + * @param num_items Number of items in the array. + * @param size Size of each item in the array in bytes. + * Valid sizes are 1, 2, or 4. + * @return True on success, false on error. + * @error Invalid Handle. */ native bool WriteFile(Handle hndl, const int[] items, int num_items, int size); /** * Writes a binary string to a file. * - * @param hndl Handle to the file. - * @param buffer String to write. - * @param term True to append NUL terminator, false otherwise. - * @return True on success, false on error. - * @error Invalid Handle. + * @param hndl Handle to the file. + * @param buffer String to write. + * @param term True to append NUL terminator, false otherwise. + * @return True on success, false on error. + * @error Invalid Handle. */ native bool WriteFileString(Handle hndl, const char[] buffer, bool term); /** * Writes a line of text to a text file. A newline is automatically appended. * - * @param hndl Handle to the file. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @return True on success, false otherwise. - * @error Invalid Handle. + * @param hndl Handle to the file. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @return True on success, false otherwise. + * @error Invalid Handle. */ native bool WriteFileLine(Handle hndl, const char[] format, any ...); /** * Reads a single binary cell from a file. * - * @param hndl Handle to the file. - * @param data Variable to store the data read. - * @param size Size of the data to read in bytes. Valid - * sizes are 1, 2, or 4 bytes. - * @return Number of elements read (max 1), or -1 on error. - * @error Invalid Handle. + * @param hndl Handle to the file. + * @param data Variable to store the data read. + * @param size Size of the data to read in bytes. Valid + * sizes are 1, 2, or 4 bytes. + * @return Number of elements read (max 1), or -1 on error. + * @error Invalid Handle. */ stock int ReadFileCell(Handle hndl, int &data, int size) { int ret; int array[1]; - + if ((ret = ReadFile(hndl, array, 1, size)) == 1) + { data = array[0]; - + } + return ret; } /** * Writes a single binary cell to a file. * - * @param hndl Handle to the file. - * @param data Cell to write to the file. - * @param size Size of the data to read in bytes. Valid - * sizes are 1, 2, or 4 bytes. If the size - * is less than 4 bytes, the data is truncated - * rather than casted. That is, only the lower - * bits will be read. - * @return True on success, false on error. - * @error Invalid Handle. + * @param hndl Handle to the file. + * @param data Cell to write to the file. + * @param size Size of the data to read in bytes. Valid + * sizes are 1, 2, or 4 bytes. If the size + * is less than 4 bytes, the data is truncated + * rather than casted. That is, only the lower + * bits will be read. + * @return True on success, false on error. + * @error Invalid Handle. */ stock bool WriteFileCell(Handle hndl, int data, int size) { int array[1]; - array[0] = data; + return WriteFile(hndl, array, 1, size); } - + /** * Tests if the end of file has been reached. * - * @param file Handle to the file. - * @return True if end of file has been reached, false otherwise. - * @error Invalid Handle. + * @param file Handle to the file. + * @return True if end of file has been reached, false otherwise. + * @error Invalid Handle. */ native bool IsEndOfFile(Handle file); /** * Sets the file position indicator. * - * @param file Handle to the file. - * @param position Position relative to what is specified in whence. - * @param where SEEK_ constant value of where to see from. - * @return True on success, false otherwise. - * @error Invalid Handle. + * @param file Handle to the file. + * @param position Position relative to what is specified in whence. + * @param where SEEK_ constant value of where to see from. + * @return True on success, false otherwise. + * @error Invalid Handle. */ native bool FileSeek(Handle file, int position, int where); /** * Get current position in the file. * - * @param file Handle to the file. - * @return Value for the file position indicator. - * @error Invalid Handle. + * @param file Handle to the file. + * @return Value for the file position indicator. + * @error Invalid Handle. */ native int FilePosition(Handle file); /** * Checks if a file exists. * - * @param path Path to the file. - * @param use_valve_fs If true, the Valve file system will be used instead. - * This can be used to find files existing in any of - * the Valve search paths, rather than solely files - * existing directly in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. - * @return True if the file exists, false otherwise. + * @param path Path to the file. + * @param use_valve_fs If true, the Valve file system will be used instead. + * This can be used to find files existing in any of + * the Valve search paths, rather than solely files + * existing directly in the gamedir. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. + * @return True if the file exists, false otherwise. */ native bool FileExists(const char[] path, bool use_valve_fs=false, const char[] valve_path_id="GAME"); /** * Renames a file. * - * @param newpath New path to the file. - * @param oldpath Path to the existing file. + * @param newpath New path to the file. + * @param oldpath Path to the existing file. * @param use_valve_fs If true, the Valve file system will be used instead. * This can be used to rename files in the game's * Valve search paths, rather than directly in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. - * @return True on success or use_valve_fs specified, false otherwise. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. + * @return True on success or use_valve_fs specified, false otherwise. */ native bool RenameFile(const char[] newpath, const char[] oldpath, bool use_valve_fs=false, const char[] valve_path_id="DEFAULT_WRITE_PATH"); /** * Checks if a directory exists. * - * @param path Path to the directory. + * @param path Path to the directory. * @param use_valve_fs If true, the Valve file system will be used instead. * This can be used to find files existing in any of * the Valve search paths, rather than solely files * existing directly in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. - * @return True if the directory exists, false otherwise. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. + * @return True if the directory exists, false otherwise. */ native bool DirExists(const char[] path, bool use_valve_fs=false, const char[] valve_path_id="GAME"); /** * Get the file size in bytes. * - * @param path Path to the file. - * @param use_valve_fs If true, the Valve file system will be used instead. - * This can be used to find files existing in any of - * the Valve search paths, rather than solely files - * existing directly in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. - * @return File size in bytes, -1 if file not found. + * @param path Path to the file. + * @param use_valve_fs If true, the Valve file system will be used instead. + * This can be used to find files existing in any of + * the Valve search paths, rather than solely files + * existing directly in the gamedir. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for all search paths. + * @return File size in bytes, -1 if file not found. */ native int FileSize(const char[] path, bool use_valve_fs=false, const char[] valve_path_id="GAME"); @@ -538,8 +547,8 @@ native int FileSize(const char[] path, bool use_valve_fs=false, const char[] val * Flushes a file's buffered output; any buffered output * is immediately written to the file. * - * @param file Handle to the file. - * @return True on success or use_valve_fs specified with OpenFile, + * @param file Handle to the file. + * @return True on success or use_valve_fs specified with OpenFile, * otherwise false on failure. */ native bool FlushFile(Handle file); @@ -548,71 +557,72 @@ native bool FlushFile(Handle file); * Removes a directory. * @note On most Operating Systems you cannot remove a directory which has files inside it. * - * @param path Path to the directory. - * @return True on success, false otherwise. + * @param path Path to the directory. + * @return True on success, false otherwise. */ native bool RemoveDir(const char[] path); -#define FPERM_U_READ 0x0100 /* User can read. */ -#define FPERM_U_WRITE 0x0080 /* User can write. */ -#define FPERM_U_EXEC 0x0040 /* User can exec. */ -#define FPERM_G_READ 0x0020 /* Group can read. */ -#define FPERM_G_WRITE 0x0010 /* Group can write. */ -#define FPERM_G_EXEC 0x0008 /* Group can exec. */ -#define FPERM_O_READ 0x0004 /* Anyone can read. */ -#define FPERM_O_WRITE 0x0002 /* Anyone can write. */ -#define FPERM_O_EXEC 0x0001 /* Anyone can exec. */ +#define FPERM_U_READ 0x0100 /* User can read. */ +#define FPERM_U_WRITE 0x0080 /* User can write. */ +#define FPERM_U_EXEC 0x0040 /* User can exec. */ +#define FPERM_G_READ 0x0020 /* Group can read. */ +#define FPERM_G_WRITE 0x0010 /* Group can write. */ +#define FPERM_G_EXEC 0x0008 /* Group can exec. */ +#define FPERM_O_READ 0x0004 /* Anyone can read. */ +#define FPERM_O_WRITE 0x0002 /* Anyone can write. */ +#define FPERM_O_EXEC 0x0001 /* Anyone can exec. */ /** * Creates a directory. * - * @param path Path to create. - * @param mode Permissions (default is o=rx,g=rx,u=rwx). Note that folders must have - * the execute bit set on Linux. On Windows, the mode is ignored. + * @param path Path to create. + * @param mode Permissions (default is o=rx,g=rx,u=rwx). Note that folders must have + * the execute bit set on Linux. On Windows, the mode is ignored. * @param use_valve_fs If true, the Valve file system will be used instead. * This can be used to create folders in the game's * Valve search paths, rather than directly in the gamedir. - * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for default. + * @param valve_path_id If use_valve_fs, a search path from gameinfo or NULL_STRING for default. * In this case, mode is ignored. + * @return True on success, false otherwise. */ native bool CreateDirectory(const char[] path, int mode, bool use_valve_fs=false, const char[] valve_path_id="DEFAULT_WRITE_PATH"); /** * Changes a file or directories permissions. * - * @param path Path to the file. - * @param mode Permissions to set. - * @return True on success, false otherwise. + * @param path Path to the file. + * @param mode Permissions to set. + * @return True on success, false otherwise. */ native bool SetFilePermissions(const char[] path, int mode); /** * Returns a file timestamp as a unix timestamp. * - * @param file File name. - * @param tmode Time mode. - * @return Time value, or -1 on failure. + * @param file File name. + * @param tmode Time mode. + * @return Time value, or -1 on failure. */ native int GetFileTime(const char[] file, FileTimeMode tmode); /** - * Same as LogToFile(), except uses an open file Handle. The file must + * Same as LogToFile(), except uses an open file Handle. The file must * be opened in text appending mode. * - * @param hndl Handle to the file. - * @param message Message format. - * @param ... Message format parameters. - * @error Invalid Handle. + * @param hndl Handle to the file. + * @param message Message format. + * @param ... Message format parameters. + * @error Invalid Handle. */ native void LogToOpenFile(Handle hndl, const char[] message, any ...); /** - * Same as LogToFileEx(), except uses an open file Handle. The file must + * Same as LogToFileEx(), except uses an open file Handle. The file must * be opened in text appending mode. * - * @param hndl Handle to the file. - * @param message Message format. - * @param ... Message format parameters. - * @error Invalid Handle. + * @param hndl Handle to the file. + * @param message Message format. + * @param ... Message format parameters. + * @error Invalid Handle. */ native void LogToOpenFileEx(Handle hndl, const char[] message, any ...); diff --git a/env/include/float.inc b/env/include/float.inc index b6bbd34..8005e05 100644 --- a/env/include/float.inc +++ b/env/include/float.inc @@ -9,7 +9,7 @@ * 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 @@ -29,7 +29,7 @@ * * Version: $Id$ */ - + #if defined _float_included #endinput #endif @@ -39,8 +39,8 @@ /** * Converts an integer into a floating point value. * - * @param value Integer to convert. - * @return Floating point value. + * @param value Integer to convert. + * @return Floating point value. */ native float float(int value); #endif @@ -48,85 +48,101 @@ native float float(int value); /** * Multiplies two floats together. * - * @param oper1 First value. - * @param oper2 Second value. - * @return oper1*oper2. + * Note: This native is internal implementation. For multiplication use the '*' operator. + * + * @param oper1 First value. + * @param oper2 Second value. + * @return oper1*oper2. + * @deprecated This native is internal implementation. For multiplication use the '*' operator. */ +#pragma deprecated This native is internal implementation. For multiplication use the '*' operator. native float FloatMul(float oper1, float oper2); /** * Divides the dividend by the divisor. * - * @param dividend First value. - * @param divisor Second value. - * @return dividend/divisor. + * Note: This native is internal implementation. For division use the '/' operator. + * + * @param dividend First value. + * @param divisor Second value. + * @return dividend/divisor. + * @deprecated This native is internal implementation. For division use the '/' operator. */ +#pragma deprecated This native is internal implementation. For division use the '/' operator. native float FloatDiv(float dividend, float divisor); /** * Adds two floats together. * - * @param oper1 First value. - * @param oper2 Second value. - * @return oper1+oper2. + * Note: This native is internal implementation. For addition use the '+' operator. + * + * @param oper1 First value. + * @param oper2 Second value. + * @return oper1+oper2. + * @deprecated This native is internal implementation. For addition use the '+' operator. */ +#pragma deprecated This native is internal implementation. For addition use the '+' operator. native float FloatAdd(float oper1, float oper2); /** * Subtracts oper2 from oper1. * - * @param oper1 First value. - * @param oper2 Second value. - * @return oper1-oper2. + * Note: This native is internal implementation. For subtraction use the '-' operator. + * + * @param oper1 First value. + * @param oper2 Second value. + * @return oper1-oper2. + * @deprecated This native is internal implementation. For subtraction use the '-' operator. */ +#pragma deprecated This native is internal implementation. For subtraction use the '-' operator. native float FloatSub(float oper1, float oper2); /** * Returns the decimal part of a float. * - * @param value Input value. - * @return Decimal part. + * @param value Input value. + * @return Decimal part. */ native float FloatFraction(float value); /** * Rounds a float to the closest integer to zero. * - * @param value Input value to be rounded. - * @return Rounded value. + * @param value Input value to be rounded. + * @return Rounded value. */ native int RoundToZero(float value); /** * Rounds a float to the next highest integer value. * - * @param value Input value to be rounded. - * @return Rounded value. + * @param value Input value to be rounded. + * @return Rounded value. */ native int RoundToCeil(float value); /** * Rounds a float to the next lowest integer value. * - * @param value Input value to be rounded. - * @return Rounded value. + * @param value Input value to be rounded. + * @return Rounded value. */ native int RoundToFloor(float value); /** * Standard IEEE rounding. * - * @param value Input value to be rounded. - * @return Rounded value. + * @param value Input value to be rounded. + * @return Rounded value. */ native int RoundToNearest(float value); /** * Compares two floats. * - * @param fOne First value. - * @param fTwo Second value. - * @return Returns 1 if the first argument is greater than the second argument. + * @param fOne First value. + * @param fTwo Second value. + * @return Returns 1 if the first argument is greater than the second argument. * Returns -1 if the first argument is smaller than the second argument. * Returns 0 if both arguments are equal. */ @@ -135,107 +151,107 @@ native int FloatCompare(float fOne, float fTwo); /** * Returns the square root of the input value, equivalent to floatpower(value, 0.5). * - * @param value Input value. - * @return Square root of the value. + * @param value Input value. + * @return Square root of the value. */ native float SquareRoot(float value); /** * Returns the value raised to the power of the exponent. * - * @param value Value to be raised. - * @param exponent Value to raise the base. - * @return value^exponent. + * @param value Value to be raised. + * @param exponent Value to raise the base. + * @return value^exponent. */ native float Pow(float value, float exponent); /** * Returns the value of raising the input by e. * - * @param value Input value. - * @return exp(value). + * @param value Input value. + * @return exp(value). */ native float Exponential(float value); /** * Returns the logarithm of any base specified. * - * @param value Input value. - * @param base Logarithm base to use, default is 10. - * @return log(value)/log(base). + * @param value Input value. + * @param base Logarithm base to use, default is 10. + * @return log(value)/log(base). */ native float Logarithm(float value, float base=10.0); /** * Returns the sine of the argument. * - * @param value Input value in radians. - * @return sin(value). + * @param value Input value in radians. + * @return sin(value). */ native float Sine(float value); /** * Returns the cosine of the argument. * - * @param value Input value in radians. - * @return cos(value). + * @param value Input value in radians. + * @return cos(value). */ native float Cosine(float value); /** * Returns the tangent of the argument. * - * @param value Input value in radians. - * @return tan(value). + * @param value Input value in radians. + * @return tan(value). */ native float Tangent(float value); /** * Returns an absolute value. * - * @param value Input value. - * @return Absolute value of the input. + * @param value Input value. + * @return Absolute value of the input. */ native float FloatAbs(float value); /** * Returns the arctangent of the input value. * - * @param angle Input value. - * @return atan(value) in radians. + * @param angle Input value. + * @return atan(value) in radians. */ native float ArcTangent(float angle); /** * Returns the arccosine of the input value. * - * @param angle Input value. - * @return acos(value) in radians. + * @param angle Input value. + * @return acos(value) in radians. */ native float ArcCosine(float angle); /** * Returns the arcsine of the input value. * - * @param angle Input value. - * @return asin(value) in radians. + * @param angle Input value. + * @return asin(value) in radians. */ native float ArcSine(float angle); /** * Returns the arctangent2 of the input values. * - * @param x Horizontal value. - * @param y Vertical value. - * @return atan2(value) in radians. + * @param x Horizontal value. + * @param y Vertical value. + * @return atan2(value) in radians. */ native float ArcTangent2(float x, float y); /** * Rounds a floating point number using the "round to nearest" algorithm. * - * @param value Floating point value to round. - * @return The value rounded to the nearest integer. + * @param value Floating point value to round. + * @return The value rounded to the nearest integer. */ stock int RoundFloat(float value) { @@ -248,6 +264,12 @@ stock int RoundFloat(float value) #if !defined __sourcepawn2__ #pragma rational Float +// Internal aliases for backwards compatability. +native float __FLOAT_MUL__(float a, float b) = FloatMul; +native float __FLOAT_DIV__(float a, float b) = FloatDiv; +native float __FLOAT_ADD__(float a, float b) = FloatAdd; +native float __FLOAT_SUB__(float a, float b) = FloatSub; + native bool __FLOAT_GT__(float a, float b); native bool __FLOAT_GE__(float a, float b); native bool __FLOAT_LT__(float a, float b); @@ -280,37 +302,39 @@ stock float operator--(float oper) stock float operator-(float oper) { - return oper^view_as(cellmin); /* IEEE values are sign/magnitude */ + return oper^view_as(cellmin); /* IEEE values are sign/magnitude */ } +// The stocks below are int->float converting versions of the above natives. + stock float operator*(float oper1, int oper2) { - return FloatMul(oper1, float(oper2)); /* "*" is commutative */ + return __FLOAT_MUL__(oper1, float(oper2)); /* "*" is commutative */ } stock float operator/(float oper1, int oper2) { - return FloatDiv(oper1, float(oper2)); + return __FLOAT_DIV__(oper1, float(oper2)); } stock float operator/(int oper1, float oper2) { - return FloatDiv(float(oper1), oper2); + return __FLOAT_DIV__(float(oper1), oper2); } stock float operator+(float oper1, int oper2) { - return FloatAdd(oper1, float(oper2)); /* "+" is commutative */ + return __FLOAT_ADD__(oper1, float(oper2)); /* "+" is commutative */ } stock float operator-(float oper1, int oper2) { - return FloatSub(oper1, float(oper2)); + return __FLOAT_SUB__(oper1, float(oper2)); } stock float operator-(int oper1, float oper2) { - return FloatSub(float(oper1), oper2); + return __FLOAT_SUB__(float(oper1), oper2); } stock bool operator==(float oper1, int oper2) @@ -376,8 +400,8 @@ forward operator%(int oper1, float oper2); /** * Converts degrees to radians. * - * @param angle Degrees. - * @return Radians. + * @param angle Degrees. + * @return Radians. */ stock float DegToRad(float angle) { @@ -385,10 +409,10 @@ stock float DegToRad(float angle) } /** - * Converts degrees to radians. + * Converts radians to degrees. * - * @param angle Radians. - * @return Degrees. + * @param angle Radians. + * @return Degrees. */ stock float RadToDeg(float angle) { @@ -400,7 +424,7 @@ stock float RadToDeg(float angle) * * Note: Uniform random number streams are seeded automatically per-plugin. * - * @return Random integer. + * @return Random integer. */ native int GetURandomInt(); @@ -409,7 +433,7 @@ native int GetURandomInt(); * * Note: Uniform random number streams are seeded automatically per-plugin. * - * @return Uniform random floating-point number. + * @return Uniform random floating-point number. */ native float GetURandomFloat(); @@ -417,8 +441,8 @@ native float GetURandomFloat(); * Seeds a plugin's uniform random number stream. This is done automatically, * so normally it is totally unnecessary to call this. * - * @param seeds Array of numbers to use as seeding data. - * @param numSeeds Number of seeds in the seeds array. + * @param seeds Array of numbers to use as seeding data. + * @param numSeeds Number of seeds in the seeds array. */ native void SetURandomSeed(const int[] seeds, int numSeeds); diff --git a/env/include/functions.inc b/env/include/functions.inc index 17f8813..b82935f 100644 --- a/env/include/functions.inc +++ b/env/include/functions.inc @@ -9,7 +9,7 @@ * 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 @@ -29,27 +29,27 @@ * * Version: $Id$ */ - + #if defined _functions_included #endinput #endif #define _functions_included - -#define SP_PARAMFLAG_BYREF (1<<0) /**< Internal use only. */ + +#define SP_PARAMFLAG_BYREF (1<<0) /**< Internal use only. */ /** * Describes the various ways to pass parameters to functions or forwards. */ enum ParamType { - Param_Any = 0, /**< Any data type can be pushed */ - Param_Cell = (1<<1), /**< Only basic cells can be pushed */ - Param_Float = (2<<1), /**< Only floats can be pushed */ - Param_String = (3<<1)|SP_PARAMFLAG_BYREF, /**< Only strings can be pushed */ - Param_Array = (4<<1)|SP_PARAMFLAG_BYREF, /**< Only arrays can be pushed */ - Param_VarArgs = (5<<1), /**< Same as "..." in plugins, anything can be pushed, but it will always be byref */ - Param_CellByRef = (1<<1)|SP_PARAMFLAG_BYREF, /**< Only a cell by reference can be pushed */ - Param_FloatByRef = (2<<1)|SP_PARAMFLAG_BYREF /**< Only a float by reference can be pushed */ + Param_Any = 0, /**< Any data type can be pushed */ + Param_Cell = (1<<1), /**< Only basic cells can be pushed */ + Param_Float = (2<<1), /**< Only floats can be pushed */ + Param_String = (3<<1)|SP_PARAMFLAG_BYREF, /**< Only strings can be pushed */ + Param_Array = (4<<1)|SP_PARAMFLAG_BYREF, /**< Only arrays can be pushed */ + Param_VarArgs = (5<<1), /**< Same as "..." in plugins, anything can be pushed, but it will always be byref */ + Param_CellByRef = (1<<1)|SP_PARAMFLAG_BYREF, /**< Only a cell by reference can be pushed */ + Param_FloatByRef = (2<<1)|SP_PARAMFLAG_BYREF /**< Only a float by reference can be pushed */ }; /** @@ -57,21 +57,21 @@ enum ParamType */ enum ExecType { - ET_Ignore = 0, /**< Ignore all return values, return 0 */ - ET_Single = 1, /**< Only return the last exec, ignore all others */ - ET_Event = 2, /**< Acts as an event with the Actions defined in core.inc, no mid-Stops allowed, returns highest */ - ET_Hook = 3 /**< Acts as a hook with the Actions defined in core.inc, mid-Stops allowed, returns highest */ + ET_Ignore = 0, /**< Ignore all return values, return 0 */ + ET_Single = 1, /**< Only return the last exec, ignore all others */ + ET_Event = 2, /**< Acts as an event with the Actions defined in core.inc, no mid-Stops allowed, returns highest */ + ET_Hook = 3 /**< Acts as a hook with the Actions defined in core.inc, mid-Stops allowed, returns highest */ }; /** * @section Flags that are used with Call_PushArrayEx() and Call_PushStringEx() */ - -#define SM_PARAM_COPYBACK (1<<0) /**< Copy an array/reference back after call */ -#define SM_PARAM_STRING_UTF8 (1<<0) /**< String should be UTF-8 handled */ -#define SM_PARAM_STRING_COPY (1<<1) /**< String should be copied into the plugin */ -#define SM_PARAM_STRING_BINARY (1<<2) /**< Treat the string as a binary string */ +#define SM_PARAM_COPYBACK (1<<0) /**< Copy an array/reference back after call */ + +#define SM_PARAM_STRING_UTF8 (1<<0) /**< String should be UTF-8 handled */ +#define SM_PARAM_STRING_COPY (1<<1) /**< String should be copied into the plugin */ +#define SM_PARAM_STRING_BINARY (1<<2) /**< Treat the string as a binary string */ /** * @endsection @@ -80,45 +80,113 @@ enum ExecType /** * @section Error codes */ -#define SP_ERROR_NONE 0 /**< No error occurred */ -#define SP_ERROR_FILE_FORMAT 1 /**< File format unrecognized */ -#define SP_ERROR_DECOMPRESSOR 2 /**< A decompressor was not found */ -#define SP_ERROR_HEAPLOW 3 /**< Not enough space left on the heap */ -#define SP_ERROR_PARAM 4 /**< Invalid parameter or parameter type */ -#define SP_ERROR_INVALID_ADDRESS 5 /**< A memory address was not valid */ -#define SP_ERROR_NOT_FOUND 6 /**< The object in question was not found */ -#define SP_ERROR_INDEX 7 /**< Invalid index parameter */ -#define SP_ERROR_STACKLOW 8 /**< Not enough space left on the stack */ -#define SP_ERROR_NOTDEBUGGING 9 /**< Debug mode was not on or debug section not found */ -#define SP_ERROR_INVALID_INSTRUCTION 10 /**< Invalid instruction was encountered */ -#define SP_ERROR_MEMACCESS 11 /**< Invalid memory access */ -#define SP_ERROR_STACKMIN 12 /**< Stack went beyond its minimum value */ -#define SP_ERROR_HEAPMIN 13 /**< Heap went beyond its minimum value */ -#define SP_ERROR_DIVIDE_BY_ZERO 14 /**< Division by zero */ -#define SP_ERROR_ARRAY_BOUNDS 15 /**< Array index is out of bounds */ -#define SP_ERROR_INSTRUCTION_PARAM 16 /**< Instruction had an invalid parameter */ -#define SP_ERROR_STACKLEAK 17 /**< A native leaked an item on the stack */ -#define SP_ERROR_HEAPLEAK 18 /**< A native leaked an item on the heap */ -#define SP_ERROR_ARRAY_TOO_BIG 19 /**< A dynamic array is too big */ -#define SP_ERROR_TRACKER_BOUNDS 20 /**< Tracker stack is out of bounds */ -#define SP_ERROR_INVALID_NATIVE 21 /**< Native was pending or invalid */ -#define SP_ERROR_PARAMS_MAX 22 /**< Maximum number of parameters reached */ -#define SP_ERROR_NATIVE 23 /**< Error originates from a native */ -#define SP_ERROR_NOT_RUNNABLE 24 /**< Function or plugin is not runnable */ -#define SP_ERROR_ABORTED 25 /**< Function call was aborted */ +#define SP_ERROR_NONE 0 /**< No error occurred */ +#define SP_ERROR_FILE_FORMAT 1 /**< File format unrecognized */ +#define SP_ERROR_DECOMPRESSOR 2 /**< A decompressor was not found */ +#define SP_ERROR_HEAPLOW 3 /**< Not enough space left on the heap */ +#define SP_ERROR_PARAM 4 /**< Invalid parameter or parameter type */ +#define SP_ERROR_INVALID_ADDRESS 5 /**< A memory address was not valid */ +#define SP_ERROR_NOT_FOUND 6 /**< The object in question was not found */ +#define SP_ERROR_INDEX 7 /**< Invalid index parameter */ +#define SP_ERROR_STACKLOW 8 /**< Not enough space left on the stack */ +#define SP_ERROR_NOTDEBUGGING 9 /**< Debug mode was not on or debug section not found */ +#define SP_ERROR_INVALID_INSTRUCTION 10 /**< Invalid instruction was encountered */ +#define SP_ERROR_MEMACCESS 11 /**< Invalid memory access */ +#define SP_ERROR_STACKMIN 12 /**< Stack went beyond its minimum value */ +#define SP_ERROR_HEAPMIN 13 /**< Heap went beyond its minimum value */ +#define SP_ERROR_DIVIDE_BY_ZERO 14 /**< Division by zero */ +#define SP_ERROR_ARRAY_BOUNDS 15 /**< Array index is out of bounds */ +#define SP_ERROR_INSTRUCTION_PARAM 16 /**< Instruction had an invalid parameter */ +#define SP_ERROR_STACKLEAK 17 /**< A native leaked an item on the stack */ +#define SP_ERROR_HEAPLEAK 18 /**< A native leaked an item on the heap */ +#define SP_ERROR_ARRAY_TOO_BIG 19 /**< A dynamic array is too big */ +#define SP_ERROR_TRACKER_BOUNDS 20 /**< Tracker stack is out of bounds */ +#define SP_ERROR_INVALID_NATIVE 21 /**< Native was pending or invalid */ +#define SP_ERROR_PARAMS_MAX 22 /**< Maximum number of parameters reached */ +#define SP_ERROR_NATIVE 23 /**< Error originates from a native */ +#define SP_ERROR_NOT_RUNNABLE 24 /**< Function or plugin is not runnable */ +#define SP_ERROR_ABORTED 25 /**< Function call was aborted */ /** * @endsection */ +methodmap GlobalForward < Handle { + // Creates a global forward. + // + // @note The name used to create the forward is used as its public function in all target plugins. + // @note This is ideal for global, static forwards that are never changed. + // @note Global forwards cannot be cloned. + // @note Use CloseHandle() to destroy these. + // + // @param name Name of public function to use in forward. + // @param type Execution type to be used. + // @param ... Variable number of parameter types (up to 32). + // @return Handle to new global forward. + // @error More than 32 paramater types passed. + public native GlobalForward(const char[] name, ExecType type, ParamType ...); + + // Returns the number of functions in a global or private forward's call list. + property int FunctionCount { + public native get(); + } +}; + +methodmap PrivateForward < GlobalForward { + // Creates a private forward. + // + // @note No functions are automatically added. Use AddToForward() to do this. + // @note Private forwards can be cloned. + // @note Use CloseHandle() to destroy these. + // + // @param type Execution type to be used. + // @param ... Variable number of parameter types (up to 32). + // @return Handle to new private forward. + // @error More than 32 paramater types passed. + public native PrivateForward(ExecType type, ParamType ...); + + // Adds a function to a private forward's call list. + // + // @note Cannot be used during an incomplete call. + // + // @param plugin Handle of the plugin that contains the function. + // Pass INVALID_HANDLE to specify the calling plugin. + // @param func Function to add to forward. + // @return True on success, false otherwise. + // @error Invalid or corrupt private forward handle, invalid or corrupt plugin handle, or invalid function. + public native bool AddFunction(Handle plugin, Function func); + + // Removes a function from a private forward's call list. + // + // @note Only removes one instance. + // @note Functions will be removed automatically if their parent plugin is unloaded. + // + // @param plugin Handle of the plugin that contains the function. + // Pass INVALID_HANDLE to specify the calling plugin. + // @param func Function to remove from forward. + // @return True on success, false otherwise. + // @error Invalid or corrupt private forward handle, invalid or corrupt plugin handle, or invalid function. + public native bool RemoveFunction(Handle plugin, Function func); + + // Removes all instances of a plugin from a private forward's call list. + // + // @note Functions will be removed automatically if their parent plugin is unloaded. + // + // @param plugin Handle of the plugin to remove instances of. + // Pass INVALID_HANDLE to specify the calling plugin. + // @return Number of functions removed from forward. + // @error Invalid or corrupt private forward handle or invalid or corrupt plugin handle. + public native int RemoveAllFunctions(Handle plugin); +}; + /** - * Gets a function id from a function name. + * Gets a function id from a function name. * - * @param plugin Handle of the plugin that contains the function. - Pass INVALID_HANDLE to search in the calling plugin. - * @param name Name of the function. - * @return Function id or INVALID_FUNCTION if not found. - * @error Invalid or corrupt plugin handle. + * @param plugin Handle of the plugin that contains the function. + * Pass INVALID_HANDLE to search in the calling plugin. + * @param name Name of the function. + * @return Function id or INVALID_FUNCTION if not found. + * @error Invalid or corrupt plugin handle. */ native Function GetFunctionByName(Handle plugin, const char[] name); @@ -130,13 +198,13 @@ native Function GetFunctionByName(Handle plugin, const char[] name); * @note Global forwards cannot be cloned. * @note Use CloseHandle() to destroy these. * - * @param name Name of public function to use in forward. - * @param type Execution type to be used. - * @param ... Variable number of parameter types (up to 32). - * @return Handle to new global forward. - * @error More than 32 paramater types passed. + * @param name Name of public function to use in forward. + * @param type Execution type to be used. + * @param ... Variable number of parameter types (up to 32). + * @return Handle to new global forward. + * @error More than 32 paramater types passed. */ -native Handle CreateGlobalForward(const char[] name, ExecType type, ParamType ...); +native GlobalForward CreateGlobalForward(const char[] name, ExecType type, ParamType ...); /** * Creates a private forward. @@ -145,19 +213,19 @@ native Handle CreateGlobalForward(const char[] name, ExecType type, ParamType .. * @note Private forwards can be cloned. * @note Use CloseHandle() to destroy these. * - * @param type Execution type to be used. - * @param ... Variable number of parameter types (up to 32). - * @return Handle to new private forward. - * @error More than 32 paramater types passed. + * @param type Execution type to be used. + * @param ... Variable number of parameter types (up to 32). + * @return Handle to new private forward. + * @error More than 32 paramater types passed. */ -native Handle CreateForward(ExecType type, ParamType ...); +native PrivateForward CreateForward(ExecType type, ParamType ...); /** * Returns the number of functions in a global or private forward's call list. * - * @param fwd Handle to global or private forward. - * @return Number of functions in forward. - * @error Invalid or corrupt forward handle. + * @param fwd Handle to global or private forward. + * @return Number of functions in forward. + * @error Invalid or corrupt forward handle. */ native int GetForwardFunctionCount(Handle fwd); @@ -166,12 +234,12 @@ native int GetForwardFunctionCount(Handle fwd); * * @note Cannot be used during an incomplete call. * - * @param fwd Handle to private forward. - * @param plugin Handle of the plugin that contains the function. - * Pass INVALID_HANDLE to specify the calling plugin. - * @param func Function to add to forward. - * @return True on success, false otherwise. - * @error Invalid or corrupt private forward handle, invalid or corrupt plugin handle, or invalid function. + * @param fwd Handle to private forward. + * @param plugin Handle of the plugin that contains the function. + * Pass INVALID_HANDLE to specify the calling plugin. + * @param func Function to add to forward. + * @return True on success, false otherwise. + * @error Invalid or corrupt private forward handle, invalid or corrupt plugin handle, or invalid function. */ native bool AddToForward(Handle fwd, Handle plugin, Function func); @@ -181,12 +249,12 @@ native bool AddToForward(Handle fwd, Handle plugin, Function func); * @note Only removes one instance. * @note Functions will be removed automatically if their parent plugin is unloaded. * - * @param fwd Handle to private forward. - * @param plugin Handle of the plugin that contains the function. - * Pass INVALID_HANDLE to specify the calling plugin. - * @param func Function to remove from forward. - * @return True on success, false otherwise. - * @error Invalid or corrupt private forward handle, invalid or corrupt plugin handle, or invalid function. + * @param fwd Handle to private forward. + * @param plugin Handle of the plugin that contains the function. + * Pass INVALID_HANDLE to specify the calling plugin. + * @param func Function to remove from forward. + * @return True on success, false otherwise. + * @error Invalid or corrupt private forward handle, invalid or corrupt plugin handle, or invalid function. */ native bool RemoveFromForward(Handle fwd, Handle plugin, Function func); @@ -195,11 +263,11 @@ native bool RemoveFromForward(Handle fwd, Handle plugin, Function func); * * @note Functions will be removed automatically if their parent plugin is unloaded. * - * @param fwd Handle to private forward. - * @param plugin Handle of the plugin to remove instances of. - * Pass INVALID_HANDLE to specify the calling plugin. - * @return Number of functions removed from forward. - * @error Invalid or corrupt private forward handle or invalid or corrupt plugin handle. + * @param fwd Handle to private forward. + * @param plugin Handle of the plugin to remove instances of. + * Pass INVALID_HANDLE to specify the calling plugin. + * @return Number of functions removed from forward. + * @error Invalid or corrupt private forward handle or invalid or corrupt plugin handle. */ native int RemoveAllFromForward(Handle fwd, Handle plugin); @@ -208,8 +276,8 @@ native int RemoveAllFromForward(Handle fwd, Handle plugin); * * @note Cannot be used during an incomplete call. * - * @param fwd Handle to global or private forward. - * @error Invalid or corrupt forward handle or called before another call has completed. + * @param fwd Handle to global or private forward. + * @error Invalid or corrupt forward handle or called before another call has completed. */ native void Call_StartForward(Handle fwd); @@ -218,20 +286,31 @@ native void Call_StartForward(Handle fwd); * * @note Cannot be used during an incomplete call. * - * @param plugin Handle of the plugin that contains the function. - * Pass INVALID_HANDLE to specify the calling plugin. - * @param func Function to call. - * @error Invalid or corrupt plugin handle, invalid function, or called before another call has completed. + * @param plugin Handle of the plugin that contains the function. + * Pass INVALID_HANDLE to specify the calling plugin. + * @param func Function to call. + * @error Invalid or corrupt plugin handle, invalid function, or called before another call has completed. */ native void Call_StartFunction(Handle plugin, Function func); +/** + * Starts a call to a native. + * + * @note Cannot be used during an incomplete call. + * + * @param name Name of the native. + * @return True on success, false otherwise. + * @error Invalid function, or called before another call has completed. + */ +native bool Call_StartNative(const char[] name); + /** * Pushes a cell onto the current call. * * @note Cannot be used before a call has been started. * - * @param value Cell value to push. - * @error Called before a call has been started. + * @param value Cell value to push. + * @error Called before a call has been started. */ native void Call_PushCell(any value); @@ -240,8 +319,8 @@ native void Call_PushCell(any value); * * @note Cannot be used before a call has been started. * - * @param value Cell reference to push. - * @error Called before a call has been started. + * @param value Cell reference to push. + * @error Called before a call has been started. */ native void Call_PushCellRef(any &value); @@ -250,8 +329,8 @@ native void Call_PushCellRef(any &value); * * @note Cannot be used before a call has been started. * - * @param value Floating point value to push. - * @error Called before a call has been started. + * @param value Floating point value to push. + * @error Called before a call has been started. */ native void Call_PushFloat(float value); @@ -260,8 +339,8 @@ native void Call_PushFloat(float value); * * @note Cannot be used before a call has been started. * - * @param value Floating point reference to push. - * @error Called before a call has been started. + * @param value Floating point reference to push. + * @error Called before a call has been started. */ native void Call_PushFloatRef(float &value); @@ -271,9 +350,9 @@ native void Call_PushFloatRef(float &value); * @note Changes to array are not copied back to caller. Use PushArrayEx() to do this. * @note Cannot be used before a call has been started. * - * @param value Array to push. - * @param size Size of array. - * @error Called before a call has been started. + * @param value Array to push. + * @param size Size of array. + * @error Called before a call has been started. */ native void Call_PushArray(const any[] value, int size); @@ -282,22 +361,32 @@ native void Call_PushArray(const any[] value, int size); * * @note Cannot be used before a call has been started. * - * @param value Array to push. - * @param size Size of array. - * @param cpflags Whether or not changes should be copied back to the input array. - * See SP_PARAM_* constants for details. - * @error Called before a call has been started. + * @param value Array to push. + * @param size Size of array. + * @param cpflags Whether or not changes should be copied back to the input array. + * See SP_PARAM_* constants for details. + * @error Called before a call has been started. */ native void Call_PushArrayEx(any[] value, int size, int cpflags); +/** + * Pushes the NULL_VECTOR onto the current call. + * @see IsNullVector + * + * @note Cannot be used before a call has been started. + * + * @error Called before a call has been started. + */ +native void Call_PushNullVector(); + /** * Pushes a string onto the current call. * * @note Changes to string are not copied back to caller. Use PushStringEx() to do this. * @note Cannot be used before a call has been started. * - * @param value String to push. - * @error Called before a call has been started. + * @param value String to push. + * @error Called before a call has been started. */ native void Call_PushString(const char[] value); @@ -306,113 +395,154 @@ native void Call_PushString(const char[] value); * * @note Cannot be used before a call has been started. * - * @param value String to push. - * @param length Length of string buffer. - * @param szflags Flags determining how string should be handled. - * See SM_PARAM_STRING_* constants for details. - * The default (0) is to push ASCII. - * @param cpflags Whether or not changes should be copied back to the input array. - * See SM_PARAM_* constants for details. - * @error Called before a call has been started. + * @param value String to push. + * @param length Length of string buffer. + * @param szflags Flags determining how string should be handled. + * See SM_PARAM_STRING_* constants for details. + * The default (0) is to push ASCII. + * @param cpflags Whether or not changes should be copied back to the input array. + * See SM_PARAM_* constants for details. + * @error Called before a call has been started. */ native void Call_PushStringEx(char[] value, int length, int szflags, int cpflags); +/** + * Pushes the NULL_STRING onto the current call. + * @see IsNullString + * + * @note Cannot be used before a call has been started. + * + * @error Called before a call has been started. + */ +native void Call_PushNullString(); + /** * Completes a call to a function or forward's call list. * * @note Cannot be used before a call has been started. * - * @param result Return value of function or forward's call list. + * @param result Return value of function or forward's call list. + * @return SP_ERROR_NONE on success, any other integer on failure. + * @error Called before a call has been started. + */ +native int Call_Finish(any &result=0); + +/** + * Completes a call to a function or forward's call list. + * Catches exceptions thrown by the native. + * + * @note Cannot be used before a call has been started. + * + * @param result Return value of function or forward's call list. + * @param exception Buffer to store the exception in. + * @param maxlength Maximum length of the buffer. * @return SP_ERROR_NONE on success, any other integer on failure. * @error Called before a call has been started. */ -native int Call_Finish(any &result=0); +native int Call_FinishEx(any &result=0, char[] exception, int maxlength); /** * Cancels a call to a function or forward's call list. * * @note Cannot be used before a call has been started. - * - * @error Called before a call has been started. + * + * @error Called before a call has been started. */ native void Call_Cancel(); -/** - * Defines a native function. - * - * It is not necessary to validate the parameter count - * - * @param plugin Handle of the calling plugin. - * @param numParams Number of parameters passed to the native. - * @return Value for the native call to return. - */ -typedef NativeCall = function int (Handle plugin, int numParams); +typeset NativeCall +{ + /** + * Defines a native function. + * + * It is not necessary to validate the parameter count + * + * @param plugin Handle of the calling plugin. + * @param numParams Number of parameters passed to the native. + * @return Value for the native call to return. + */ + function int (Handle plugin, int numParams); + + /** + * Defines a native function. + * + * It is not necessary to validate the parameter count + * + * @param plugin Handle of the calling plugin. + * @param numParams Number of parameters passed to the native. + * @return Value for the native call to return. + */ + function any (Handle plugin, int numParams); +} /** - * Creates a dynamic native. This should only be called in AskPluginLoad(), or + * Creates a dynamic native. This should only be called in AskPluginLoad(), or * else you risk not having your native shared with other plugins. * - * @param name Name of the dynamic native; must be unique among - * all other registered dynamic natives. - * @param func Function to use as the dynamic native. + * @param name Name of the dynamic native; must be unique among + * all other registered dynamic natives. + * @param func Function to use as the dynamic native. */ native void CreateNative(const char[] name, NativeCall func); /** * Throws an error in the calling plugin of a native, instead of your own plugin. * - * @param error Error code to use. - * @param fmt Error message format. - * @param ... Format arguments. + * @param error Error code to use. + * @param fmt Error message format. + * @param ... Format arguments. */ native int ThrowNativeError(int error, const char[] fmt, any ...); /** - * Retrieves the string length from a native parameter string. This is useful + * Retrieves the string length from a native parameter string. This is useful for * fetching the entire string using dynamic arrays. + * * @note If this function succeeds, Get/SetNativeString will also succeed. * - * @param param Parameter number, starting from 1. - * @param length Stores the length of the string. - * @return SP_ERROR_NONE on success, any other integer on failure. - * @error Invalid parameter number or calling from a non-native function. + * @param param Parameter number, starting from 1. + * @param length Stores the length of the string. + * @return SP_ERROR_NONE on success, any other integer on failure. + * @error Invalid parameter number or calling from a non-native function. */ native int GetNativeStringLength(int param, int &length); /** * Retrieves a string from a native parameter. + * * @note Output conditions are undefined on failure. * - * @param param Parameter number, starting from 1. - * @param buffer Buffer to store the string in. - * @param maxlength Maximum length of the buffer. - * @param bytes Optionally store the number of bytes written. - * @return SP_ERROR_NONE on success, any other integer on failure. - * @error Invalid parameter number or calling from a non-native function. + * @param param Parameter number, starting from 1. + * @param buffer Buffer to store the string in. + * @param maxlength Maximum length of the buffer. + * @param bytes Optionally store the number of bytes written. + * @return SP_ERROR_NONE on success, any other integer on failure. + * @error Invalid parameter number or calling from a non-native function. */ native int GetNativeString(int param, char[] buffer, int maxlength, int &bytes=0); /** * Sets a string in a native parameter. + * * @note Output conditions are undefined on failure. * - * @param param Parameter number, starting from 1. - * @param source Source string to use. - * @param maxlength Maximum number of bytes to write. - * @param utf8 If false, string will not be written - * with UTF8 safety. - * @param bytes Optionally store the number of bytes written. - * @return SP_ERROR_NONE on success, any other integer on failure. - * @error Invalid parameter number or calling from a non-native function. + * @param param Parameter number, starting from 1. + * @param source Source string to use. + * @param maxlength Maximum number of bytes to write. + * @param utf8 If false, string will not be written + * with UTF8 safety. + * @param bytes Optionally store the number of bytes written. + * @return SP_ERROR_NONE on success, any other integer on failure. + * @error Invalid parameter number or calling from a non-native function. */ native int SetNativeString(int param, const char[] source, int maxlength, bool utf8=true, int &bytes=0); /** * Gets a cell from a native parameter. * - * @param param Parameter number, starting from 1. - * @return Cell value at the parameter number. - * @error Invalid parameter number or calling from a non-native function. + * @param param Parameter number, starting from 1. + * @return Cell value at the parameter number. + * @error Invalid parameter number or calling from a non-native function. */ native any GetNativeCell(int param); @@ -428,62 +558,78 @@ native Function GetNativeFunction(int param); /** * Gets a cell from a native parameter, by reference. * - * @param param Parameter number, starting from 1. - * @return Cell value at the parameter number. - * @error Invalid parameter number or calling from a non-native function. + * @param param Parameter number, starting from 1. + * @return Cell value at the parameter number. + * @error Invalid parameter number or calling from a non-native function. */ native any GetNativeCellRef(int param); /** * Sets a cell from a native parameter, by reference. * - * @param param Parameter number, starting from 1. - * @param value Cell value at the parameter number to set by reference. - * @error Invalid parameter number or calling from a non-native function. + * @param param Parameter number, starting from 1. + * @param value Cell value at the parameter number to set by reference. + * @error Invalid parameter number or calling from a non-native function. */ native void SetNativeCellRef(int param, any value); /** * Gets an array from a native parameter (always by reference). * - * @param param Parameter number, starting from 1. - * @param local Local array to copy into. - * @param size Maximum size of local array. - * @return SP_ERROR_NONE on success, anything else on failure. - * @error Invalid parameter number or calling from a non-native function. + * @param param Parameter number, starting from 1. + * @param local Local array to copy into. + * @param size Maximum size of local array. + * @return SP_ERROR_NONE on success, anything else on failure. + * @error Invalid parameter number or calling from a non-native function. */ native int GetNativeArray(int param, any[] local, int size); /** * Copies a local array into a native parameter array (always by reference). - * - * @param param Parameter number, starting from 1. - * @param local Local array to copy from. - * @param size Size of the local array to copy. - * @return SP_ERROR_NONE on success, anything else on failure. - * @error Invalid parameter number or calling from a non-native function. + * + * @param param Parameter number, starting from 1. + * @param local Local array to copy from. + * @param size Size of the local array to copy. + * @return SP_ERROR_NONE on success, anything else on failure. + * @error Invalid parameter number or calling from a non-native function. */ native int SetNativeArray(int param, const any[] local, int size); +/** + * Check if the native parameter is the NULL_VECTOR. + * + * @param param Parameter number, starting from 1. + * @return True if NULL_VECTOR, false otherwise. + */ +native bool IsNativeParamNullVector(int param); + +/** + * Check if the native parameter is the NULL_STRING. + * + * @param param Parameter number, starting from 1. + * @return True if NULL_STRING, false otherwise. + */ +native bool IsNativeParamNullString(int param); + /** * Formats a string using parameters from a native. * * @note All parameter indexes start at 1. * @note If the input and output buffers overlap, the contents - * of the output buffer at the end is undefined. + * of the output buffer at the end is undefined. * - * @param out_param Output parameter number to write to. If 0, out_string is used. - * @param fmt_param Format parameter number. If 0, fmt_string is used. - * @param vararg_param First variable parameter number. - * @param out_len Output string buffer maximum length (always required). - * @param written Optionally stores the number of bytes written. - * @param out_string Output string buffer to use if out_param is not used. - * @param fmt_string Format string to use if fmt_param is not used. - * @return SP_ERROR_NONE on success, anything else on failure. + * @param out_param Output parameter number to write to. If 0, out_string is used. + * @param fmt_param Format parameter number. If 0, fmt_string is used. + * @param vararg_param First variable parameter number. + * @param out_len Output string buffer maximum length (always required). + * @param written Optionally stores the number of bytes written. + * @param out_string Output string buffer to use if out_param is not used. + * @param fmt_string Format string to use if fmt_param is not used. + * @return SP_ERROR_NONE on success, anything else on failure. */ -native int FormatNativeString(int out_param, - int fmt_param, - int vararg_param, +native int FormatNativeString(int out_param, + int fmt_param, + int vararg_param, int out_len, int &written=0, char[] out_string="", @@ -492,14 +638,17 @@ native int FormatNativeString(int out_param, /** * Defines a RequestFrame Callback. * - * @param data Data passed to the RequestFrame native. + * @param data Data passed to the RequestFrame native. */ -typedef RequestFrameCallback = function void (any data); +typeset RequestFrameCallback { + function void (); + function void (any data); +} /** * Creates a single use Next Frame hook. * - * @param Function Function to call on the next frame. - * @param data Value to be passed on the invocation of the Function. + * @param Function Function to call on the next frame. + * @param data Value to be passed on the invocation of the Function. */ native void RequestFrame(RequestFrameCallback Function, any data=0); diff --git a/env/include/geoip.inc b/env/include/geoip.inc index 7906977..be6653d 100644 --- a/env/include/geoip.inc +++ b/env/include/geoip.inc @@ -31,7 +31,7 @@ */ #if defined _geoip_included - #endinput + #endinput #endif #define _geoip_included @@ -44,28 +44,28 @@ /** * Gets the two character country code from an IP address. (US, CA, etc) * - * @param ip Ip to determine the country code. - * @param ccode Destination string buffer to store the code. - * @return True on success, false if no country found. + * @param ip Ip to determine the country code. + * @param ccode Destination string buffer to store the code. + * @return True on success, false if no country found. */ native bool GeoipCode2(const char[] ip, char ccode[3]); /** * Gets the three character country code from an IP address. (USA, CAN, etc) * - * @param ip Ip to determine the country code. - * @param ccode Destination string buffer to store the code. - * @return True on success, false if no country found. + * @param ip Ip to determine the country code. + * @param ccode Destination string buffer to store the code. + * @return True on success, false if no country found. */ native bool GeoipCode3(const char[] ip, char ccode[4]); /** * Gets the full country name. (max length of output string is 45) * - * @param ip Ip to determine the country code. - * @param name Destination string buffer to store the country name. - * @param maxlength Maximum length of output string buffer. - * @return True on success, false if no country found. + * @param ip Ip to determine the country code. + * @param name Destination string buffer to store the country name. + * @param maxlength Maximum length of output string buffer. + * @return True on success, false if no country found. */ native bool GeoipCountry(const char[] ip, char[] name, int maxlength); diff --git a/env/include/halflife.inc b/env/include/halflife.inc index b7bae22..783e807 100644 --- a/env/include/halflife.inc +++ b/env/include/halflife.inc @@ -9,7 +9,7 @@ * 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 @@ -35,60 +35,61 @@ #endif #define _halflife_included -#define SOURCE_SDK_UNKNOWN 0 /**< Could not determine the engine version */ -#define SOURCE_SDK_ORIGINAL 10 /**< Original Source engine (still used by "The Ship") */ -#define SOURCE_SDK_DARKMESSIAH 15 /**< Modified version of original engine used by Dark Messiah (no SDK) */ -#define SOURCE_SDK_EPISODE1 20 /**< SDK+Engine released after Episode 1 */ -#define SOURCE_SDK_EPISODE2 30 /**< SDK+Engine released after Episode 2/Orange Box */ -#define SOURCE_SDK_BLOODYGOODTIME 32 /**< Modified version of ep2 engine used by Bloody Good Time (no SDK) */ -#define SOURCE_SDK_EYE 33 /**< Modified version of ep2 engine used by E.Y.E Divine Cybermancy (no SDK) */ -#define SOURCE_SDK_CSS 34 /**< Sometime-older version of Source 2009 SDK+Engine, used for Counter-Strike: Source */ -#define SOURCE_SDK_EPISODE2VALVE 35 /**< SDK+Engine released after Episode 2/Orange Box, "Source 2009" or "Source MP" */ -#define SOURCE_SDK_LEFT4DEAD 40 /**< Engine released after Left 4 Dead (no SDK yet) */ -#define SOURCE_SDK_LEFT4DEAD2 50 /**< Engine released after Left 4 Dead 2 (no SDK yet) */ -#define SOURCE_SDK_ALIENSWARM 60 /**< SDK+Engine released after Alien Swarm */ -#define SOURCE_SDK_CSGO 80 /**< Engine released after CS:GO (no SDK yet) */ -#define SOURCE_SDK_DOTA 90 /**< Engine released after Dota 2 (no SDK) */ +#define SOURCE_SDK_UNKNOWN 0 /**< Could not determine the engine version */ +#define SOURCE_SDK_ORIGINAL 10 /**< Original Source engine (still used by "The Ship") */ +#define SOURCE_SDK_DARKMESSIAH 15 /**< Modified version of original engine used by Dark Messiah (no SDK) */ +#define SOURCE_SDK_EPISODE1 20 /**< SDK+Engine released after Episode 1 */ +#define SOURCE_SDK_EPISODE2 30 /**< SDK+Engine released after Episode 2/Orange Box */ +#define SOURCE_SDK_BLOODYGOODTIME 32 /**< Modified version of ep2 engine used by Bloody Good Time (no SDK) */ +#define SOURCE_SDK_EYE 33 /**< Modified version of ep2 engine used by E.Y.E Divine Cybermancy (no SDK) */ +#define SOURCE_SDK_CSS 34 /**< Sometime-older version of Source 2009 SDK+Engine, used for Counter-Strike: Source */ +#define SOURCE_SDK_EPISODE2VALVE 35 /**< SDK+Engine released after Episode 2/Orange Box, "Source 2009" or "Source MP" */ +#define SOURCE_SDK_LEFT4DEAD 40 /**< Engine released after Left 4 Dead (no SDK yet) */ +#define SOURCE_SDK_LEFT4DEAD2 50 /**< Engine released after Left 4 Dead 2 (no SDK yet) */ +#define SOURCE_SDK_ALIENSWARM 60 /**< SDK+Engine released after Alien Swarm */ +#define SOURCE_SDK_CSGO 80 /**< Engine released after CS:GO (no SDK yet) */ +#define SOURCE_SDK_DOTA 90 /**< Engine released after Dota 2 (no SDK) */ -#define MOTDPANEL_TYPE_TEXT 0 /**< Treat msg as plain text */ -#define MOTDPANEL_TYPE_INDEX 1 /**< Msg is auto determined by the engine */ -#define MOTDPANEL_TYPE_URL 2 /**< Treat msg as an URL link */ -#define MOTDPANEL_TYPE_FILE 3 /**< Treat msg as a filename to be opened */ +#define MOTDPANEL_TYPE_TEXT 0 /**< Treat msg as plain text */ +#define MOTDPANEL_TYPE_INDEX 1 /**< Msg is auto determined by the engine */ +#define MOTDPANEL_TYPE_URL 2 /**< Treat msg as an URL link */ +#define MOTDPANEL_TYPE_FILE 3 /**< Treat msg as a filename to be opened */ enum DialogType { - DialogType_Msg = 0, /**< just an on screen message */ - DialogType_Menu, /**< an options menu */ - DialogType_Text, /**< a richtext dialog */ - DialogType_Entry, /**< an entry box */ - DialogType_AskConnect /**< ask the client to connect to a specified IP */ + DialogType_Msg = 0, /**< just an on screen message */ + DialogType_Menu, /**< an options menu */ + DialogType_Text, /**< a richtext dialog */ + DialogType_Entry, /**< an entry box */ + DialogType_AskConnect /**< ask the client to connect to a specified IP */ }; enum EngineVersion { - Engine_Unknown, /**< Could not determine the engine version */ - Engine_Original, /**< Original Source Engine (used by The Ship) */ - Engine_SourceSDK2006, /**< Episode 1 Source Engine (second major SDK) */ - Engine_SourceSDK2007, /**< Orange Box Source Engine (third major SDK) */ - Engine_Left4Dead, /**< Left 4 Dead */ - Engine_DarkMessiah, /**< Dark Messiah Multiplayer (based on original engine) */ - Engine_Left4Dead2 = 7, /**< Left 4 Dead 2 */ - Engine_AlienSwarm, /**< Alien Swarm (and Alien Swarm SDK) */ - Engine_BloodyGoodTime, /**< Bloody Good Time */ - Engine_EYE, /**< E.Y.E Divine Cybermancy */ - Engine_Portal2, /**< Portal 2 */ - Engine_CSGO, /**< Counter-Strike: Global Offensive */ - Engine_CSS, /**< Counter-Strike: Source */ - Engine_DOTA, /**< Dota 2 */ - Engine_HL2DM, /**< Half-Life 2 Deathmatch */ - Engine_DODS, /**< Day of Defeat: Source */ - Engine_TF2, /**< Team Fortress 2 */ - Engine_NuclearDawn, /**< Nuclear Dawn */ - Engine_SDK2013, /**< Source SDK 2013 */ - Engine_Blade, /**< Blade Symphony */ - Engine_Insurgency, /**< Insurgency (2013 Retail version)*/ - Engine_Contagion, /**< Contagion */ - Engine_BlackMesa, /**< Black Mesa Multiplayer */ + Engine_Unknown, /**< Could not determine the engine version */ + Engine_Original, /**< Original Source Engine (used by The Ship) */ + Engine_SourceSDK2006, /**< Episode 1 Source Engine (second major SDK) */ + Engine_SourceSDK2007, /**< Orange Box Source Engine (third major SDK) */ + Engine_Left4Dead, /**< Left 4 Dead */ + Engine_DarkMessiah, /**< Dark Messiah Multiplayer (based on original engine) */ + Engine_Left4Dead2 = 7, /**< Left 4 Dead 2 */ + Engine_AlienSwarm, /**< Alien Swarm (and Alien Swarm SDK) */ + Engine_BloodyGoodTime, /**< Bloody Good Time */ + Engine_EYE, /**< E.Y.E Divine Cybermancy */ + Engine_Portal2, /**< Portal 2 */ + Engine_CSGO, /**< Counter-Strike: Global Offensive */ + Engine_CSS, /**< Counter-Strike: Source */ + Engine_DOTA, /**< Dota 2 */ + Engine_HL2DM, /**< Half-Life 2 Deathmatch */ + Engine_DODS, /**< Day of Defeat: Source */ + Engine_TF2, /**< Team Fortress 2 */ + Engine_NuclearDawn, /**< Nuclear Dawn */ + Engine_SDK2013, /**< Source SDK 2013 */ + Engine_Blade, /**< Blade Symphony */ + Engine_Insurgency, /**< Insurgency (2013 Retail version)*/ + Engine_Contagion, /**< Contagion */ + Engine_BlackMesa, /**< Black Mesa Multiplayer */ + Engine_DOI /**< Day of Infamy */ }; enum FindMapResult @@ -115,226 +116,234 @@ enum FindMapResult /** * Logs a generic message to the HL2 logs. * - * @param format String format. - * @param ... Format arguments. + * @param format String format. + * @param ... Format arguments. */ native void LogToGame(const char[] format, any ...); /** * Sets the seed value for the global Half-Life 2 Random Stream. * - * @param seed Seed value. + * @param seed Seed value. */ native void SetRandomSeed(int seed); /** * Returns a random floating point number from the Half-Life 2 Random Stream. * - * @param fMin Minimum random bound. - * @param fMax Maximum random bound. - * @return A random number between (inclusive) fMin and fMax. + * @param fMin Minimum random bound. + * @param fMax Maximum random bound. + * @return A random number between (inclusive) fMin and fMax. */ native float GetRandomFloat(float fMin=0.0, float fMax=1.0); /** * Returns a random number from the Half-Life 2 Random Stream. * - * @param nmin Minimum random bound. - * @param nmax Maximum random bound. - * @return A random number between (inclusive) nmin and nmax. + * @param nmin Minimum random bound. + * @param nmax Maximum random bound. + * @return A random number between (inclusive) nmin and nmax. */ native int GetRandomInt(int nmin, int nmax); /** * Returns whether a map is valid or not. - * - * @param map Map name, excluding .bsp extension. - * @return True if valid, false otherwise. + * + * @param map Map name, excluding .bsp extension. + * @return True if valid, false otherwise. */ native bool IsMapValid(const char[] map); /** * Returns whether a full or partial map name is found or can be resolved - * - * @param map Map name (usually same as map path relative to maps/ dir, - * excluding .bsp extension). - * @param foundmap Resolved map name. If the return is FindMap_FuzzyMatch - * or FindMap_NonCanonical the buffer will be the full path. - * @param maxlen Maximum length to write to map var. - * @return Result of the find operation. Not all result types are supported on all games. + * + * @param map Map name (usually same as map path relative to maps/ dir, + * excluding .bsp extension). + * @param foundmap Resolved map name. If the return is FindMap_FuzzyMatch + * or FindMap_NonCanonical the buffer will be the full path. + * @param maxlen Maximum length to write to map var. + * @return Result of the find operation. Not all result types are supported on all games. */ native FindMapResult FindMap(const char[] map, char[] foundmap, int maxlen); /** * Get the display name of a workshop map. - * + * * Note: You do not need to call FindMap first. This native will call FindMap internally. - * - * @param map Map name (usually same as map path relative to maps/ dir, - * excluding .bsp extension). - * @param displayName Map's display name, i.e. cp_mymapname or de_mymapname. - * If FindMap returns FindMap_PossiblyAvailable or FindMap_NotFound, - * the map cannot be resolved and this native will return false, - * but displayName will be a copy of map. - * @param maxlen Maximum length to write to displayName var. - * @return true if FindMap returns FindMap_Found, FindMap_FuzzyMatch, or - * FindMap_NonCanonical. - * false if FindMap returns FindMap_PossiblyAvailable or FindMap_NotFound. + * + * @param map Map name (usually same as map path relative to maps/ dir, + * excluding .bsp extension). + * @param displayName Map's display name, i.e. cp_mymapname or de_mymapname. + * If FindMap returns FindMap_PossiblyAvailable or FindMap_NotFound, + * the map cannot be resolved and this native will return false, + * but displayName will be a copy of map. + * @param maxlen Maximum length to write to displayName var. + * @return true if FindMap returns FindMap_Found, FindMap_FuzzyMatch, or + * FindMap_NonCanonical. + * false if FindMap returns FindMap_PossiblyAvailable or FindMap_NotFound. */ native bool GetMapDisplayName(const char[] map, char[] displayName, int maxlen); /** * Returns whether the server is dedicated. * - * @return True if dedicated, false otherwise. + * @return True if dedicated, false otherwise. */ native bool IsDedicatedServer(); /** * Returns a high-precision time value for profiling the engine. * - * @return A floating point time value. + * @return A floating point time value. */ native float GetEngineTime(); -/** +/** * Returns the game time based on the game tick. * - * @return Game tick time. + * @return Game tick time. */ native float GetGameTime(); -/** +/** * Returns the game's internal tick count. * - * @return Game tick count. + * @return Game tick count. */ native int GetGameTickCount(); +/** + * Returns the time the Game took processing the last frame. + * + * @return Game frame time. + */ +native float GetGameFrameTime(); + /** * Returns the game description from the mod. * - * @param buffer Buffer to store the description. - * @param maxlength Maximum size of the buffer. - * @param original If true, retrieves the original game description, - * ignoring any potential hooks from plugins. - * @return Number of bytes written to the buffer (UTF-8 safe). + * @param buffer Buffer to store the description. + * @param maxlength Maximum size of the buffer. + * @param original If true, retrieves the original game description, + * ignoring any potential hooks from plugins. + * @return Number of bytes written to the buffer (UTF-8 safe). */ native int GetGameDescription(char[] buffer, int maxlength, bool original=false); /** * Returns the name of the game's directory. * - * @param buffer Buffer to store the directory name. - * @param maxlength Maximum size of the buffer. - * @return Number of bytes written to the buffer (UTF-8 safe). + * @param buffer Buffer to store the directory name. + * @param maxlength Maximum size of the buffer. + * @return Number of bytes written to the buffer (UTF-8 safe). */ native int GetGameFolderName(char[] buffer, int maxlength); /** * Returns the current map name. * - * @param buffer Buffer to store map name. - * @param maxlength Maximum length of buffer. - * @return Number of bytes written (UTF-8 safe). + * @param buffer Buffer to store map name. + * @param maxlength Maximum length of buffer. + * @return Number of bytes written (UTF-8 safe). */ native int GetCurrentMap(char[] buffer, int maxlength); /** * Precaches a given model. * - * @param model Name of the model to precache. - * @param preload If preload is true the file will be precached before level startup. - * @return Returns the model index, 0 for error. + * @param model Name of the model to precache. + * @param preload If preload is true the file will be precached before level startup. + * @return Returns the model index, 0 for error. */ native int PrecacheModel(const char[] model, bool preload=false); /** * Precaches a given sentence file. * - * @param file Name of the sentence file to precache. - * @param preload If preload is true the file will be precached before level startup. - * @return Returns a sentence file index. + * @param file Name of the sentence file to precache. + * @param preload If preload is true the file will be precached before level startup. + * @return Returns a sentence file index. */ native int PrecacheSentenceFile(const char[] file, bool preload=false); /** * Precaches a given decal. * - * @param decal Name of the decal to precache. - * @param preload If preload is true the file will be precached before level startup. - * @return Returns a decal index. + * @param decal Name of the decal to precache. + * @param preload If preload is true the file will be precached before level startup. + * @return Returns a decal index. */ native int PrecacheDecal(const char[] decal, bool preload=false); /** * Precaches a given generic file. * - * @param generic Name of the generic file to precache. - * @param preload If preload is true the file will be precached before level startup. - * @return Returns a generic file index. + * @param generic Name of the generic file to precache. + * @param preload If preload is true the file will be precached before level startup. + * @return Returns a generic file index. */ native int PrecacheGeneric(const char[] generic, bool preload=false); /** * Returns if a given model is precached. * - * @param model Name of the model to check. - * @return True if precached, false otherwise. + * @param model Name of the model to check. + * @return True if precached, false otherwise. */ native bool IsModelPrecached(const char[] model); /** * Returns if a given decal is precached. * - * @param decal Name of the decal to check. - * @return True if precached, false otherwise. + * @param decal Name of the decal to check. + * @return True if precached, false otherwise. */ native bool IsDecalPrecached(const char[] decal); /** * Returns if a given generic file is precached. * - * @param generic Name of the generic file to check. - * @return True if precached, false otherwise. + * @param generic Name of the generic file to check. + * @return True if precached, false otherwise. */ native bool IsGenericPrecached(const char[] generic); /** * Precaches a given sound. * - * @param sound Name of the sound to precache. - * @param preload If preload is true the file will be precached before level startup. - * @return True if successfully precached, false otherwise. + * @param sound Name of the sound to precache. + * @param preload If preload is true the file will be precached before level startup. + * @return True if successfully precached, false otherwise. */ native bool PrecacheSound(const char[] sound, bool preload=false); /** * Returns if a given sound is precached. * - * @param sound Name of the sound to check. - * @return True if precached, false otherwise. + * @param sound Name of the sound to check. + * @return True if precached, false otherwise. */ native bool IsSoundPrecached(const char[] sound); /** * Creates different types of ingame messages. * - * @param client Index of the client. - * @param kv KeyValues handle to set the menu keys and options. (Check iserverplugin.h for more information). - * @param type Message type to display ingame. - * @error Invalid client index, or client not connected. + * @param client Index of the client. + * @param kv KeyValues handle to set the menu keys and options. (Check iserverplugin.h for more information). + * @param type Message type to display ingame. + * @error Invalid client index, or client not connected. */ native void CreateDialog(int client, Handle kv, DialogType type); /** - * Guesses the SDK version a mod was compiled against. If nothing + * Guesses the SDK version a mod was compiled against. If nothing * specific is known about the game, the engine version is used instead. * - * The return values are guaranteed to increase chronologically (that is, + * The return values are guaranteed to increase chronologically (that is, * a later release will have a higher value). * - * @return SOURCE_SDK version code. + * @return SOURCE_SDK version code. + * @deprecated See GetEngineVersion() */ #pragma deprecated See GetEngineVersion() native int GuessSDKVersion(); @@ -345,30 +354,30 @@ native int GuessSDKVersion(); * The engine version values are not guaranteed to be in any particular order, * and should only be compared by (in)equality. * - * @return An EngineVersion value. + * @return An EngineVersion value. */ native EngineVersion GetEngineVersion(); /** * Prints a message to a specific client in the chat area. * - * @param client Client index. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @error If the client is not connected an error will be thrown. + * @param client Client index. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @error If the client is not connected an error will be thrown. */ native void PrintToChat(int client, const char[] format, any ...); /** * Prints a message to all clients in the chat area. * - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param format Formatting rules. + * @param ... Variable number of format parameters. */ stock void PrintToChatAll(const char[] format, any ...) { char buffer[254]; - + for (int i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) @@ -383,18 +392,18 @@ stock void PrintToChatAll(const char[] format, any ...) /** * Prints a message to a specific client in the center of the screen. * - * @param client Client index. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @error If the client is not connected an error will be thrown. + * @param client Client index. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @error If the client is not connected an error will be thrown. */ native void PrintCenterText(int client, const char[] format, any ...); /** * Prints a message to all clients in the center of the screen. * - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param format Formatting rules. + * @param ... Variable number of format parameters. */ stock void PrintCenterTextAll(const char[] format, any ...) { @@ -414,23 +423,23 @@ stock void PrintCenterTextAll(const char[] format, any ...) /** * Prints a message to a specific client with a hint box. * - * @param client Client index. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @error If the client is not connected an error will be thrown. + * @param client Client index. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @error If the client is not connected an error will be thrown. */ native void PrintHintText(int client, const char[] format, any ...); /** * Prints a message to all clients with a hint box. * - * @param format Formatting rules. - * @param ... Variable number of format parameters. + * @param format Formatting rules. + * @param ... Variable number of format parameters. */ stock void PrintHintTextToAll(const char[] format, any ...) { char buffer[254]; - + for (int i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) @@ -445,130 +454,130 @@ stock void PrintHintTextToAll(const char[] format, any ...) /** * Shows a VGUI panel to a specific client. * - * @param client Client index. - * @param name Panel type name (Check viewport_panel_names.h to see a list of - * some panel names). - * @param Kv KeyValues handle with all the data for the panel setup (Depends - * on the panel type and may be unused). - * @param show True to show the panel, or false to remove it from the client screen. - * @error If the client is not connected an error will be thrown. + * @param client Client index. + * @param name Panel type name (Check viewport_panel_names.h to see a list of + * some panel names). + * @param Kv KeyValues handle with all the data for the panel setup (Depends + * on the panel type and may be unused). + * @param show True to show the panel, or false to remove it from the client screen. + * @error If the client is not connected an error will be thrown. */ native void ShowVGUIPanel(int client, const char[] name, Handle Kv=INVALID_HANDLE, bool show=true); /** - * Creates a HUD synchronization object. This object is used to automatically assign and - * re-use channels for a set of messages. + * Creates a HUD synchronization object. This object is used to automatically assign and + * re-use channels for a set of messages. * - * The HUD has a hardcoded number of channels (usually 6) for displaying - * text. You can use any channel for any area of the screen. Text on - * different channels can overlap, but text on the same channel will + * The HUD has a hardcoded number of channels (usually 6) for displaying + * text. You can use any channel for any area of the screen. Text on + * different channels can overlap, but text on the same channel will * erase the old text first. This overlapping and overwriting gets problematic. * - * A HUD synchronization object automatically selects channels for you based on + * A HUD synchronization object automatically selects channels for you based on * the following heuristics: - * - If channel X was last used by the object, and hasn't been modified again, + * - If channel X was last used by the object, and hasn't been modified again, * channel X gets re-used. * - Otherwise, a new channel is chosen based on the least-recently-used channel. * - * This ensures that if you display text on a sync object, that the previous text - * displayed on it will always be cleared first. This is because your new text - * will either overwrite the old text on the same channel, or because another + * This ensures that if you display text on a sync object, that the previous text + * displayed on it will always be cleared first. This is because your new text + * will either overwrite the old text on the same channel, or because another * channel has already erased your text. * - * Note that messages can still overlap if they are on different synchronization + * Note that messages can still overlap if they are on different synchronization * objects, or they are displayed to manual channels. * - * These are particularly useful for displaying repeating or refreshing HUD text, in - * addition to displaying multiple message sets in one area of the screen (for example, - * center-say messages that may pop up randomly that you don't want to overlap each + * These are particularly useful for displaying repeating or refreshing HUD text, in + * addition to displaying multiple message sets in one area of the screen (for example, + * center-say messages that may pop up randomly that you don't want to overlap each * other). * - * @return New HUD synchronization object. - * The Handle can be closed with CloseHandle(). - * If HUD text is not supported on this mod, then - * INVALID_HANDLE is returned. + * @return New HUD synchronization object. + * The Handle can be closed with CloseHandle(). + * If HUD text is not supported on this mod, then + * INVALID_HANDLE is returned. */ native Handle CreateHudSynchronizer(); /** - * Sets the HUD parameters for drawing text. These parameters are stored - * globally, although nothing other than this function and SetHudTextParamsEx + * Sets the HUD parameters for drawing text. These parameters are stored + * globally, although nothing other than this function and SetHudTextParamsEx * modify them. * - * You must call this function before drawing text. If you are drawing - * text to multiple clients, you can set the parameters once, since - * they won't be modified. However, as soon as you pass control back + * You must call this function before drawing text. If you are drawing + * text to multiple clients, you can set the parameters once, since + * they won't be modified. However, as soon as you pass control back * to other plugins, you must reset the parameters next time you draw. * - * @param x x coordinate, from 0 to 1. -1.0 is the center. - * @param y y coordinate, from 0 to 1. -1.0 is the center. - * @param holdTime Number of seconds to hold the text. - * @param r Red color value. - * @param g Green color value. - * @param b Blue color value. - * @param a Alpha transparency value. - * @param effect 0/1 causes the text to fade in and fade out. - * 2 causes the text to flash[?]. - * @param fxTime Duration of chosen effect (may not apply to all effects). - * @param fadeIn Number of seconds to spend fading in. - * @param fadeOut Number of seconds to spend fading out. + * @param x x coordinate, from 0 to 1. -1.0 is the center. + * @param y y coordinate, from 0 to 1. -1.0 is the center. + * @param holdTime Number of seconds to hold the text. + * @param r Red color value. + * @param g Green color value. + * @param b Blue color value. + * @param a Alpha transparency value. + * @param effect 0/1 causes the text to fade in and fade out. + * 2 causes the text to flash[?]. + * @param fxTime Duration of chosen effect (may not apply to all effects). + * @param fadeIn Number of seconds to spend fading in. + * @param fadeOut Number of seconds to spend fading out. */ native void SetHudTextParams(float x, float y, float holdTime, int r, int g, int b, int a, int effect = 0, float fxTime=6.0, float fadeIn=0.1, float fadeOut=0.2); - + /** - * Sets the HUD parameters for drawing text. These parameters are stored + * Sets the HUD parameters for drawing text. These parameters are stored * globally, although nothing other than this function and SetHudTextParams * modify them. * - * This is the same as SetHudTextParams(), except it lets you set the alternate - * color for when effects require it. + * This is the same as SetHudTextParams(), except it lets you set the alternate + * color for when effects require it. * - * @param x x coordinate, from 0 to 1. -1.0 is the center. - * @param y y coordinate, from 0 to 1. -1.0 is the center. - * @param holdTime Number of seconds to hold the text. - * @param color1 First color set, array values being [red, green, blue, alpha] - * @param color2 Second color set, array values being [red, green, blue, alpha] - * @param effect 0/1 causes the text to fade in and fade out. - * 2 causes the text to flash[?]. - * @param fxTime Duration of chosen effect (may not apply to all effects). - * @param fadeIn Number of seconds to spend fading in. - * @param fadeOut Number of seconds to spend fading out. + * @param x x coordinate, from 0 to 1. -1.0 is the center. + * @param y y coordinate, from 0 to 1. -1.0 is the center. + * @param holdTime Number of seconds to hold the text. + * @param color1 First color set, array values being [red, green, blue, alpha] + * @param color2 Second color set, array values being [red, green, blue, alpha] + * @param effect 0/1 causes the text to fade in and fade out. + * 2 causes the text to flash[?]. + * @param fxTime Duration of chosen effect (may not apply to all effects). + * @param fadeIn Number of seconds to spend fading in. + * @param fadeOut Number of seconds to spend fading out. */ -native void SetHudTextParamsEx(float x, float y, float holdTime, int color1[4], - int color2[4]={255,255,255,0}, int effect = 0, float fxTime=6.0, +native void SetHudTextParamsEx(float x, float y, float holdTime, int color1[4], + int color2[4]={255,255,255,0}, int effect = 0, float fxTime=6.0, float fadeIn=0.1, float fadeOut=0.2); /** - * Shows a synchronized HUD message to a client. + * Shows a synchronized HUD message to a client. * * As of this writing, only TF, HL2MP, and SourceForts support HUD Text. * - * @param client Client index to send the message to. - * @param sync Synchronization object. - * @param message Message text or formatting rules. - * @param ... Message formatting parameters. - * @return -1 on failure, anything else on success. - * This function fails if the mod does not support it. - * @error Client not in-game, or sync object not valid. + * @param client Client index to send the message to. + * @param sync Synchronization object. + * @param message Message text or formatting rules. + * @param ... Message formatting parameters. + * @return -1 on failure, anything else on success. + * This function fails if the mod does not support it. + * @error Client not in-game, or sync object not valid. */ native int ShowSyncHudText(int client, Handle sync, const char[] message, any ...); /** - * Clears the text on a synchronized HUD channel. + * Clears the text on a synchronized HUD channel. * - * This is not the same as sending "" because it guarantees that it won't - * overwrite text on another channel. For example, consider the scenario: + * This is not the same as sending "" because it guarantees that it won't + * overwrite text on another channel. For example, consider the scenario: * * 1. Your synchronized message goes to channel 3. * 2. Someone else's non-synchronized message goes to channel 3. * - * If you were to simply send "" on your synchronized message, + * If you were to simply send "" on your synchronized message, * then someone else's text could be overwritten. * - * @param client Client index to send the message to. - * @param sync Synchronization object. - * @error Client not in-game, or sync object not valid. + * @param client Client index to send the message to. + * @param sync Synchronization object. + * @error Client not in-game, or sync object not valid. */ native void ClearSyncHud(int client, Handle sync); @@ -576,30 +585,30 @@ native void ClearSyncHud(int client, Handle sync); * Shows a HUD message to a client on the given channel. * * As of this writing, only TF, HL2MP, and SourceForts support HUD Text. - * - * @param client Client index to send the message to. - * @param channel A channel number. - * If -1, then a channel will automatically be selected - * based on the least-recently-used channel. If the - * channel is any other number, it will be modulo'd with - * the channel count to get a final channel number. - * @param message Message text or formatting rules. - * @param ... Message formatting parameters. - * @return -1 on failure (lack of mod support). - * Any other return value is the channel number that was - * used to render the text. + * + * @param client Client index to send the message to. + * @param channel A channel number. + * If -1, then a channel will automatically be selected + * based on the least-recently-used channel. If the + * channel is any other number, it will be modulo'd with + * the channel count to get a final channel number. + * @param message Message text or formatting rules. + * @param ... Message formatting parameters. + * @return -1 on failure (lack of mod support). + * Any other return value is the channel number that was + * used to render the text. */ native int ShowHudText(int client, int channel, const char[] message, any ...); /** * Shows a MOTD panel to a specific client. * - * @param client Client index. - * @param title Title of the panel (printed on the top border of the window). - * @param msg Contents of the panel, it can be treated as an url, filename or plain text - * depending on the type parameter (WARNING: msg has to be 192 bytes maximum!) - * @param type Determines the way to treat the message body of the panel. - * @error If the client is not connected an error will be thrown. + * @param client Client index. + * @param title Title of the panel (printed on the top border of the window). + * @param msg Contents of the panel, it can be treated as an url, filename or plain text + * depending on the type parameter (WARNING: msg has to be 192 bytes maximum!) + * @param type Determines the way to treat the message body of the panel. + * @error If the client is not connected an error will be thrown. */ stock void ShowMOTDPanel(int client, const char[] title, const char[] msg, int type=MOTDPANEL_TYPE_INDEX) { @@ -617,10 +626,10 @@ stock void ShowMOTDPanel(int client, const char[] title, const char[] msg, int t /** * Displays a panel asking the client to connect to a specified IP. * - * @param client Client index. - * @param time Duration to hold the panel on the client's screen. - * @param ip Destination IP. - * @param password Password to connect to the destination IP. The client will be able to see this. + * @param client Client index. + * @param time Duration to hold the panel on the client's screen. + * @param ip Destination IP. + * @param password Password to connect to the destination IP. The client will be able to see this. */ stock void DisplayAskConnectBox(int client, float time, const char[] ip, const char[] password = "") { @@ -637,42 +646,41 @@ stock void DisplayAskConnectBox(int client, float time, const char[] ip, const c /** * Converts an entity index into a serial encoded entity reference. * - * @param entity Entity index. - * @return Entity reference. + * @param entity Entity index. + * @return Entity reference. */ native int EntIndexToEntRef(int entity); /** * Retrieves the entity index from a reference. * - * @param ref Entity reference. - * @return Entity index. + * @param ref Entity reference. + * @return Entity index. */ native int EntRefToEntIndex(int ref); /** * Converts a reference into a backwards compatible version. * - * @param ref Entity reference. - * @return Bcompat reference. + * @param ref Entity reference. + * @return Bcompat reference. */ native int MakeCompatEntRef(int ref); - enum ClientRangeType { RangeType_Visibility = 0, - RangeType_Audibility, + RangeType_Audibility } /** * Find clients that are potentially in range of a position. * - * @param origin Coordinates from which to test range. - * @param rangeType Range type to use for filtering clients. - * @param clients Array to which found client indexes will be written. - * @param size Maximum size of clients array. - * @return Number of client indexes written to clients array. + * @param origin Coordinates from which to test range. + * @param rangeType Range type to use for filtering clients. + * @param clients Array to which found client indexes will be written. + * @param size Maximum size of clients array. + * @return Number of client indexes written to clients array. */ native int GetClientsInRange(float origin[3], ClientRangeType rangeType, int[] clients, int size); @@ -682,17 +690,17 @@ native int GetClientsInRange(float origin[3], ClientRangeType rangeType, int[] c * Note: If called before server is connected to Steam, auth id * will be invalid ([I:0:1], 1, etc.) * - * @param authType Auth id type and format to use. - * (Only AuthId_Steam3 and AuthId_SteamID64 are supported) - * @param auth Buffer to store the server's auth id. - * @param maxlen Maximum length of string buffer (includes NULL terminator). - * @error Invalid AuthIdType given. + * @param authType Auth id type and format to use. + * (Only AuthId_Steam3 and AuthId_SteamID64 are supported) + * @param auth Buffer to store the server's auth id. + * @param maxlen Maximum length of string buffer (includes NULL terminator). + * @error Invalid AuthIdType given. */ native void GetServerAuthId(AuthIdType authType, char[] auth, int maxlen); /** * Returns the server's Steam account ID. * - * @return Steam account ID or 0 if not available. + * @return Steam account ID or 0 if not available. */ native int GetServerSteamAccountId(); diff --git a/env/include/handles.inc b/env/include/handles.inc index 57763b8..a6f7ebe 100644 --- a/env/include/handles.inc +++ b/env/include/handles.inc @@ -9,7 +9,7 @@ * 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 @@ -40,19 +40,19 @@ */ enum Handle // Tag disables introducing "Handle" as a symbol. { - INVALID_HANDLE = 0, + INVALID_HANDLE = 0 }; /** - * Closes a Handle. If the handle has multiple copies open, + * Closes a Handle. If the handle has multiple copies open, * it is not destroyed unless all copies are closed. - * + * * @note Closing a Handle has a different meaning for each Handle type. Make * sure you read the documentation on whatever provided the Handle. * - * @param hndl Handle to close. - * @error Invalid handles will cause a run time error. + * @param hndl Handle to close. + * @error Invalid handles will cause a run time error. */ native void CloseHandle(Handle hndl); @@ -60,38 +60,39 @@ native void CloseHandle(Handle hndl); * Clones a Handle. When passing handles in between plugins, caching handles * can result in accidental invalidation when one plugin releases the Handle, or is its owner * is unloaded from memory. To prevent this, the Handle may be "cloned" with a new owner. - * - * @note Usually, you will be cloning Handles for other plugins. This means that if you clone - * the Handle without specifying the new owner, it will assume the identity of your original calling - * plugin, which is not very useful. You should either specify that the receiving plugin should - * clone the handle on its own, or you should explicitly clone the Handle using the receiving plugin's - * identity Handle. * - * @param hndl Handle to clone/duplicate. - * @param plugin Optional Handle to another plugin to mark as the new owner. - * If no owner is passed, the owner becomes the calling plugin. - * @return Handle on success, INVALID_HANDLE if not cloneable. - * @error Invalid handles will cause a run time error. + * @note Usually, you will be cloning Handles for other plugins. This means that if you clone + * the Handle without specifying the new owner, it will assume the identity of your original + * calling plugin, which is not very useful. You should either specify that the receiving + * plugin should clone the handle on its own, or you should explicitly clone the Handle + * using the receiving plugin's identity Handle. + * + * @param hndl Handle to clone/duplicate. + * @param plugin Optional Handle to another plugin to mark as the new owner. + * If no owner is passed, the owner becomes the calling plugin. + * @return Handle on success, INVALID_HANDLE if not cloneable. + * @error Invalid handles will cause a run time error. */ native Handle CloneHandle(Handle hndl, Handle plugin=INVALID_HANDLE); using __intrinsics__.Handle; /** - * Do not use this function. Returns if a Handle and its contents - * are readable, whereas INVALID_HANDLE only checks for the absence + * Do not use this function. Returns if a Handle and its contents + * are readable, whereas INVALID_HANDLE only checks for the absence * of a Handle. * - * This function is intended only for tests where the validity of a - * Handle can absolutely not be known. + * This function is intended only for tests where the validity of a + * Handle can absolutely not be known. * - * Do not use this to check the return values of functions, or to - * check if timers should be closed (except in very rare cases). - * This function is for very specific usage and using it for general + * Do not use this to check the return values of functions, or to + * check if timers should be closed (except in very rare cases). + * This function is for very specific usage and using it for general * purpose routines can and will hide very subtle bugs. * - * @param hndl Handle to test for validity. - * @return True if handle is valid, false otherwise. + * @param hndl Handle to test for validity. + * @return True if handle is valid, false otherwise. + * @deprecated Do not use this function. */ #pragma deprecated Do not use this function. native bool IsValidHandle(Handle hndl); diff --git a/env/include/helpers.inc b/env/include/helpers.inc index 34614f1..0996372 100644 --- a/env/include/helpers.inc +++ b/env/include/helpers.inc @@ -36,38 +36,26 @@ #define _helpers_included /** - * Formats a user's info as log text. This is usually not needed because - * %L can be used to auto-format client information into a string. + * This function is deprecated. Use the %L format specifier instead. + * + * Formats a user's info as log text. * - * @param client Client index. - * @param buffer Buffer for text. - * @param maxlength Maximum length of text. + * @param client Client index. + * @param buffer Buffer for text. + * @param maxlength Maximum length of text. + * @deprecated Use the %L format specifier instead. */ +#pragma deprecated Use the %L format specifier instead. stock void FormatUserLogText(int client, char[] buffer, int maxlength) { - char auth[32]; - char name[MAX_NAME_LENGTH]; - - int userid = GetClientUserId(client); - if (!GetClientAuthString(client, auth, sizeof(auth))) - { - strcopy(auth, sizeof(auth), "UNKNOWN"); - } - if (!GetClientName(client, name, sizeof(name))) - { - strcopy(name, sizeof(name), "UNKNOWN"); - } - - /** Currently, no team stuff ... */ - - Format(buffer, maxlength, "\"%s<%d><%s><>\"", name, userid, auth); + FormatEx(buffer, maxlength, "\"%L\"", client); } /** * Returns plugin handle from plugin filename. * - * @param filename Filename of the plugin to search for. - * @return Handle to plugin if found, INVALID_HANDLE otherwise. + * @param filename Filename of the plugin to search for. + * @return Handle to plugin if found, INVALID_HANDLE otherwise. */ stock Handle FindPluginByFile(const char[] filename) { @@ -94,7 +82,7 @@ stock Handle FindPluginByFile(const char[] filename) } /** - * @deprecated Use FindTarget() or ProcessTargetString(). + * @deprecated Use FindTarget() or ProcessTargetString(). */ #pragma deprecated Use FindTarget() or ProcessTargetString() stock int SearchForClients(const char[] pattern, int[] clients, int maxClients) @@ -102,24 +90,34 @@ stock int SearchForClients(const char[] pattern, int[] clients, int maxClients) int total = 0; if (maxClients == 0) + { return 0; + } - if (pattern[0] == '#') { + if (pattern[0] == '#') + { int input = StringToInt(pattern[1]); if (!input) { char name[MAX_NAME_LENGTH]; - for (int i=1; i<=MaxClients; i++) { + for (int i=1; i<=MaxClients; i++) + { if (!IsClientInGame(i)) + { continue; + } GetClientName(i, name, sizeof(name)); - if (strcmp(name, pattern, false) == 0) { + if (strcmp(name, pattern, false) == 0) + { clients[0] = i; return 1; } } - } else { + } + else + { int client = GetClientOfUserId(input); - if (client) { + if (client) + { clients[0] = client; return 1; } @@ -130,12 +128,18 @@ stock int SearchForClients(const char[] pattern, int[] clients, int maxClients) for (int i=1; i<=MaxClients; i++) { if (!IsClientInGame(i)) + { continue; + } + GetClientName(i, name, sizeof(name)); - if (StrContains(name, pattern, false) != -1) { + if (StrContains(name, pattern, false) != -1) + { clients[total++] = i; if (total >= maxClients) + { break; + } } } @@ -146,11 +150,11 @@ stock int SearchForClients(const char[] pattern, int[] clients, int maxClients) * Wraps ProcessTargetString() and handles producing error messages for * bad targets. * - * @param client Client who issued command - * @param target Client's target argument - * @param nobots Optional. Set to true if bots should NOT be targetted - * @param immunity Optional. Set to false to ignore target immunity. - * @return Index of target client, or -1 on error. + * @param client Client who issued command + * @param target Client's target argument + * @param nobots Optional. Set to true if bots should NOT be targetted + * @param immunity Optional. Set to false to ignore target immunity. + * @return Index of target client, or -1 on error. */ stock int FindTarget(int client, const char[] target, bool nobots = false, bool immunity = true) { @@ -163,6 +167,7 @@ stock int FindTarget(int client, const char[] target, bool nobots = false, bool { flags |= COMMAND_FILTER_NO_BOTS; } + if (!immunity) { flags |= COMMAND_FILTER_NO_IMMUNITY; @@ -180,11 +185,9 @@ stock int FindTarget(int client, const char[] target, bool nobots = false, bool { return target_list[0]; } - else - { - ReplyToTargetError(client, target_count); - return -1; - } + + ReplyToTargetError(client, target_count); + return -1; } /** @@ -197,83 +200,84 @@ stock int FindTarget(int client, const char[] target, bool nobots = false, bool * parameter is used to store a timestamp of the file. If specified, the file will only be reloaded if it * has changed. * - * @param array Valid array handle, should be created with CreateArray(33) or larger. - * @param fileTime Variable containing the "last changed" time of the file. Used to avoid needless reloading. - * @param fileCvar CVAR set to the file to be loaded. Optional. - * @return Number of maps loaded or 0 if in error. + * @param array Valid array handle, should be created with CreateArray(33) or larger. + * @param fileTime Variable containing the "last changed" time of the file. Used to avoid needless reloading. + * @param fileCvar CVAR set to the file to be loaded. Optional. + * @return Number of maps loaded or 0 if in error. + * @deprecated Use ReadMapList() instead. */ #pragma deprecated Use ReadMapList() instead. - stock int LoadMaps(Handle array, int &fileTime = 0, Handle fileCvar = INVALID_HANDLE) - { - char mapPath[256], mapFile[64]; - bool fileFound = false; - - if (fileCvar != INVALID_HANDLE) - { - GetConVarString(fileCvar, mapFile, 64); - BuildPath(Path_SM, mapPath, sizeof(mapPath), mapFile); - fileFound = FileExists(mapPath); - } +stock int LoadMaps(Handle array, int &fileTime = 0, Handle fileCvar = INVALID_HANDLE) +{ + char mapPath[256], mapFile[64]; + bool fileFound = false; + + if (fileCvar != INVALID_HANDLE) + { + GetConVarString(fileCvar, mapFile, 64); + BuildPath(Path_SM, mapPath, sizeof(mapPath), mapFile); + fileFound = FileExists(mapPath); + } - if (!fileFound) - { - Handle mapCycleFile = FindConVar("mapcyclefile"); - GetConVarString(mapCycleFile, mapPath, sizeof(mapPath)); - fileFound = FileExists(mapPath); - } - - if (!fileFound) - { - LogError("Failed to find a file to load maps from. No maps loaded."); - ClearArray(array); - - return 0; - } + if (!fileFound) + { + Handle mapCycleFile = FindConVar("mapcyclefile"); + GetConVarString(mapCycleFile, mapPath, sizeof(mapPath)); + fileFound = FileExists(mapPath); + } + + if (!fileFound) + { + LogError("Failed to find a file to load maps from. No maps loaded."); + ClearArray(array); + + return 0; + } - // If the file hasn't changed, there's no reason to reload - // all of the maps. - int newTime = GetFileTime(mapPath, FileTime_LastChange); - if (fileTime == newTime) - { - return GetArraySize(array); - } - - fileTime = newTime; - - ClearArray(array); + // If the file hasn't changed, there's no reason to reload + // all of the maps. + int newTime = GetFileTime(mapPath, FileTime_LastChange); + if (fileTime == newTime) + { + return GetArraySize(array); + } + + fileTime = newTime; + + ClearArray(array); - File file = OpenFile(mapPath, "rt"); - if (!file) { - LogError("Could not open file: %s", mapPath); - return 0; - } + File file = OpenFile(mapPath, "rt"); + if (!file) { + LogError("Could not open file: %s", mapPath); + return 0; + } LogMessage("Loading maps from file: %s", mapPath); int len; - char buffer[64]; - while (!file.EndOfFile() && file.ReadLine(buffer, sizeof(buffer))) - { - TrimString(buffer); + char buffer[64]; + while (!file.EndOfFile() && file.ReadLine(buffer, sizeof(buffer))) + { + TrimString(buffer); - if ((len = StrContains(buffer, ".bsp", false)) != -1) - { - buffer[len] = '\0'; - } + if ((len = StrContains(buffer, ".bsp", false)) != -1) + { + buffer[len] = '\0'; + } - if (buffer[0] == '\0' || !IsValidConVarChar(buffer[0]) || !IsMapValid(buffer)) - { - continue; - } - - if (FindStringInArray(array, buffer) != -1) - { - continue; - } + if (buffer[0] == '\0' || !IsValidConVarChar(buffer[0]) || !IsMapValid(buffer)) + { + continue; + } + + if (FindStringInArray(array, buffer) != -1) + { + continue; + } - PushArrayString(array, buffer); - } + PushArrayString(array, buffer); + } file.Close(); - return GetArraySize(array); + return GetArraySize(array); } diff --git a/env/include/keyvalues.inc b/env/include/keyvalues.inc index e60fed6..7318507 100644 --- a/env/include/keyvalues.inc +++ b/env/include/keyvalues.inc @@ -9,7 +9,7 @@ * 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 @@ -29,7 +29,7 @@ * * Version: $Id$ */ - + #if defined _keyvalues_included #endinput #endif @@ -40,23 +40,23 @@ */ enum KvDataTypes { - KvData_None = 0, /**< Type could not be identified, or no type */ - KvData_String, /**< String value */ - KvData_Int, /**< Integer value */ - KvData_Float, /**< Floating point value */ - KvData_Ptr, /**< Pointer value (sometimes called "long") */ - KvData_WString, /**< Wide string value */ - KvData_Color, /**< Color value */ - KvData_UInt64, /**< Large integer value */ + KvData_None = 0, /**< Type could not be identified, or no type */ + KvData_String, /**< String value */ + KvData_Int, /**< Integer value */ + KvData_Float, /**< Floating point value */ + KvData_Ptr, /**< Pointer value (sometimes called "long") */ + KvData_WString, /**< Wide string value */ + KvData_Color, /**< Color value */ + KvData_UInt64, /**< Large integer value */ /* --- */ - KvData_NUMTYPES, + KvData_NUMTYPES }; methodmap KeyValues < Handle { // Creates a new KeyValues structure. The Handle must be closed with // CloseHandle() or delete. - // + // // @param name Name of the root section. // @param firstKey If non-empty, specifies the first key value. // @param firstValue If firstKey is non-empty, specifies the first key's value. @@ -68,6 +68,18 @@ methodmap KeyValues < Handle // @return True on success, false otherwise. public native bool ExportToFile(const char[] file); + // Exports a KeyValues tree to a string. The string is dumped from the current position. + // + // @param buffer Buffer to write to. + // @param maxlength Max length of buffer. + // @return Number of bytes that can be written to buffer. + public native int ExportToString(char[] buffer, int maxlength); + + // Amount of bytes written by ExportToFile & ExportToString. + property int ExportLength { + public native get(); + } + // Imports a file in KeyValues format. The file is read into the current // position of the tree. // @@ -77,7 +89,7 @@ methodmap KeyValues < Handle // Converts a given string to a KeyValues tree. The string is read into // the current postion of the tree. - // + // // @param buffer String buffer to load into the KeyValues. // @param resourceName The resource name of the KeyValues, used for error tracking purposes. // @return True on success, false otherwise. @@ -86,7 +98,7 @@ methodmap KeyValues < Handle // Imports subkeys in the given KeyValues, at the current position in that // KeyValues, into the current position in this KeyValues. Note that this // copies keys; it does not embed a reference to them. - // + // // @param other Origin KeyValues Handle. public native void Import(KeyValues other); @@ -133,13 +145,13 @@ methodmap KeyValues < Handle } // Sets a vector value of a KeyValues key. - // + // // @param key Name of the key, or NULL_STRING. // @param vec Vector value. public native void SetVector(const char[] key, const float vec[3]); // Retrieves a string value from a KeyValues key. - // + // // @param key Name of the key, or NULL_STRING. // @param value Buffer to store key value in. // @param maxlength Maximum length of the value buffer. @@ -147,7 +159,7 @@ methodmap KeyValues < Handle public native void GetString(const char[] key, char[] value, int maxlength, const char[] defvalue=""); // Retrieves an integer value from a KeyValues key. - // + // // @param key Name of the key, or NULL_STRING. // @param defvalue Optional default value to use if the key is not found. // @return Integer value of the key. @@ -164,9 +176,9 @@ methodmap KeyValues < Handle // // @param key Name of the key, or NULL_STRING. // @param r Red value, set by reference. - // @param g Green value, set by reference. - // @param b Blue value, set by reference. - // @param a Alpha value, set by reference. + // @param g Green value, set by reference. + // @param b Blue value, set by reference. + // @param a Alpha value, set by reference. public native void GetColor(const char[] key, int &r, int &g, int &b, int &a); // Retrieves a set of color values from a KeyValues key. @@ -219,13 +231,13 @@ methodmap KeyValues < Handle // Sets the current position in the KeyValues tree to the next sub key. // This native does NOT add to the internal traversal stack, and thus // GoBack() is not needed for each successive call to this function. - // + // // @param keyOnly If false, non-keys will be traversed (values). // @return True on success, false if there was no next sub key. public native bool GotoNextKey(bool keyOnly=true); // Saves the current position in the traversal stack onto the traversal - // stack. This can be useful if you wish to use KvGotoNextKey() and + // stack. This can be useful if you wish to use KvGotoNextKey() and // have the previous key saved for backwards traversal. // // @param kv KeyValues Handle. @@ -248,9 +260,9 @@ methodmap KeyValues < Handle // Removes the current sub-key and attempts to set the position // to the sub-key after the removed one. If no such sub-key exists, // the position will be the parent key in the traversal stack. - // Given the sub-key having position "N" in the traversal stack, the + // Given the sub-key having position "N" in the traversal stack, the // removal will always take place from position "N-1." - // + // // @param kv KeyValues Handle. // @return 1 if removal succeeded and there was another key. // 0 if the current node was not contained in the @@ -259,7 +271,7 @@ methodmap KeyValues < Handle // thus the state is as if KvGoBack() was called. public native int DeleteThis(); - // Sets the position back to the top node, emptying the entire node + // Sets the position back to the top node, emptying the entire node // traversal history. This can be used instead of looping KvGoBack() // if recursive iteration is not important. // @@ -267,14 +279,14 @@ methodmap KeyValues < Handle public native void Rewind(); // Retrieves the current section name. - // + // // @param section Buffer to store the section name. // @param maxlength Maximum length of the name buffer. // @return True on success, false on failure. public native bool GetSectionName(char[] section, int maxlength); // Sets the current section name. - // + // // @param section Section name. public native void SetSectionName(const char[] section); @@ -287,14 +299,14 @@ methodmap KeyValues < Handle // Sets whether or not the KeyValues parser will read escape sequences. // For example, \n would be read as a literal newline. This defaults // to false for new KeyValues structures. - // + // // @param useEscapes Whether or not to read escape sequences. public native void SetEscapeSequences(bool useEscapes); // Returns the position in the jump stack; I.e. the number of calls // required for KvGoBack to return to the root node. If at the root node, // 0 is returned. - // + // // @return Number of non-root nodes in the jump stack. public native int NodesInStack(); @@ -307,14 +319,14 @@ methodmap KeyValues < Handle public native bool FindKeyById(int id, char[] name, int maxlength); // Finds a KeyValues id inside a KeyValues tree. - // + // // @param key Key name. // @param id Id of the found KeyValue. // @return True on success, false if key not found. public native bool GetNameSymbol(const char[] key, int &id); // Retrieves the current section id. - // + // // @param kv KeyValues Handle. // @param id Id of the current section. // @return True on success, false on failure. @@ -324,161 +336,161 @@ methodmap KeyValues < Handle /** * Creates a new KeyValues structure. The Handle must always be closed. * - * @param name Name of the root section. - * @param firstKey If non-empty, specifies the first key value. - * @param firstValue If firstKey is non-empty, specifies the first key's value. - * @return A Handle to a new KeyValues structure. + * @param name Name of the root section. + * @param firstKey If non-empty, specifies the first key value. + * @param firstValue If firstKey is non-empty, specifies the first key's value. + * @return A Handle to a new KeyValues structure. */ native KeyValues CreateKeyValues(const char[] name, const char[] firstKey="", const char[] firstValue=""); -/** +/** * Sets a string value of a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param value String value. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param value String value. + * @error Invalid Handle. */ native void KvSetString(Handle kv, const char[] key, const char[] value); -/** +/** * Sets an integer value of a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param value Value number. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param value Value number. + * @error Invalid Handle. */ native void KvSetNum(Handle kv, const char[] key, int value); -/** +/** * Sets a large integer value of a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param value Large integer value (0=High bits, 1=Low bits) - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param value Large integer value (0=High bits, 1=Low bits) + * @error Invalid Handle. */ native void KvSetUInt64(Handle kv, const char[] key, const int value[2]); -/** +/** * Sets a floating point value of a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param value Floating point value. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param value Floating point value. + * @error Invalid Handle. */ native void KvSetFloat(Handle kv, const char[] key, float value); -/** +/** * Sets a set of color values of a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param r Red value. - * @param g Green value. - * @param b Blue value. - * @param a Alpha value. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param r Red value. + * @param g Green value. + * @param b Blue value. + * @param a Alpha value. + * @error Invalid Handle. */ native void KvSetColor(Handle kv, const char[] key, int r, int g, int b, int a=0); -/** +/** * Sets a vector value of a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param vec Vector value. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param vec Vector value. + * @error Invalid Handle. */ native void KvSetVector(Handle kv, const char[] key, const float vec[3]); -/** +/** * Retrieves a string value from a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param value Buffer to store key value in. - * @param maxlength Maximum length of the value buffer. - * @param defvalue Optional default value to use if the key is not found. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param value Buffer to store key value in. + * @param maxlength Maximum length of the value buffer. + * @param defvalue Optional default value to use if the key is not found. + * @error Invalid Handle. */ native void KvGetString(Handle kv, const char[] key, char[] value, int maxlength, const char[] defvalue=""); -/** +/** * Retrieves an integer value from a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param defvalue Optional default value to use if the key is not found. - * @return Integer value of the key. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param defvalue Optional default value to use if the key is not found. + * @return Integer value of the key. + * @error Invalid Handle. */ native int KvGetNum(Handle kv, const char[] key, int defvalue=0); -/** +/** * Retrieves a floating point value from a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param defvalue Optional default value to use if the key is not found. - * @return Floating point value of the key. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param defvalue Optional default value to use if the key is not found. + * @return Floating point value of the key. + * @error Invalid Handle. */ native float KvGetFloat(Handle kv, const char[] key, float defvalue=0.0); -/** +/** * Retrieves a set of color values from a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param r Red value, set by reference. - * @param g Green value, set by reference. - * @param b Blue value, set by reference. - * @param a Alpha value, set by reference. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param r Red value, set by reference. + * @param g Green value, set by reference. + * @param b Blue value, set by reference. + * @param a Alpha value, set by reference. + * @error Invalid Handle. */ native void KvGetColor(Handle kv, const char[] key, int &r, int &g, int &b, int &a); -/** +/** * Retrieves a large integer value from a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param value Array to represent the large integer. - * @param defvalue Optional default value to use if the key is not found. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param value Array to represent the large integer. + * @param defvalue Optional default value to use if the key is not found. + * @error Invalid Handle. */ native void KvGetUInt64(Handle kv, const char[] key, int value[2], int defvalue[2]={0,0}); -/** +/** * Retrieves a vector value from a KeyValues key. * - * @param kv KeyValues Handle. - * @param key Name of the key, or NULL_STRING. - * @param vec Destination vector to store the value in. - * @param defvalue Optional default value to use if the key is not found. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key, or NULL_STRING. + * @param vec Destination vector to store the value in. + * @param defvalue Optional default value to use if the key is not found. + * @error Invalid Handle. */ native void KvGetVector(Handle kv, const char[] key, float vec[3], const float defvalue[3]={0.0, 0.0, 0.0}); /** * Sets the current position in the KeyValues tree to the given key. * - * @param kv KeyValues Handle. - * @param key Name of the key. - * @param create If true, and the key does not exist, it will be created. - * @return True if the key exists, false if it does not and was not created. + * @param kv KeyValues Handle. + * @param key Name of the key. + * @param create If true, and the key does not exist, it will be created. + * @return True if the key exists, false if it does not and was not created. */ native bool KvJumpToKey(Handle kv, const char[] key, bool create=false); /** * Sets the current position in the KeyValues tree to the given key. * - * @param kv KeyValues Handle. - * @param id KeyValues id. - * @return True if the key exists, false if it does not. + * @param kv KeyValues Handle. + * @param id KeyValues id. + * @return True if the key exists, false if it does not. */ native bool KvJumpToKeySymbol(Handle kv, int id); @@ -486,10 +498,10 @@ native bool KvJumpToKeySymbol(Handle kv, int id); * Sets the current position in the KeyValues tree to the first sub key. * This native adds to the internal traversal stack. * - * @param kv KeyValues Handle. - * @param keyOnly If false, non-keys will be traversed (values). - * @return True on success, false if there was no first sub key. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param keyOnly If false, non-keys will be traversed (values). + * @return True on success, false if there was no first sub key. + * @error Invalid Handle. */ native bool KvGotoFirstSubKey(Handle kv, bool keyOnly=true); @@ -498,30 +510,30 @@ native bool KvGotoFirstSubKey(Handle kv, bool keyOnly=true); * This native does NOT add to the internal traversal stack, and thus * KvGoBack() is not needed for each successive call to this function. * - * @param kv KeyValues Handle. - * @param keyOnly If false, non-keys will be traversed (values). - * @return True on success, false if there was no next sub key. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param keyOnly If false, non-keys will be traversed (values). + * @return True on success, false if there was no next sub key. + * @error Invalid Handle. */ native bool KvGotoNextKey(Handle kv, bool keyOnly=true); /** * Saves the current position in the traversal stack onto the traversal - * stack. This can be useful if you wish to use KvGotoNextKey() and + * stack. This can be useful if you wish to use KvGotoNextKey() and * have the previous key saved for backwards traversal. * - * @param kv KeyValues Handle. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @error Invalid Handle. */ native void KvSavePosition(Handle kv); /** * Removes the given key from the current position. * - * @param kv KeyValues Handle. - * @param key Name of the key. - * @return True on success, false if key did not exist. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Name of the key. + * @return True on success, false if key did not exist. + * @error Invalid Handle. */ native bool KvDeleteKey(Handle kv, const char[] key); @@ -529,16 +541,16 @@ native bool KvDeleteKey(Handle kv, const char[] key); * Removes the current sub-key and attempts to set the position * to the sub-key after the removed one. If no such sub-key exists, * the position will be the parent key in the traversal stack. - * Given the sub-key having position "N" in the traversal stack, the + * Given the sub-key having position "N" in the traversal stack, the * removal will always take place from position "N-1." * - * @param kv KeyValues Handle. - * @return 1 if removal succeeded and there was another key. - * 0 if the current node was not contained in the - * previous node, or no previous node exists. - * -1 if removal succeeded and there were no more keys, - * thus the state is as if KvGoBack() was called. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @return 1 if removal succeeded and there was another key. + * 0 if the current node was not contained in the + * previous node, or no previous node exists. + * -1 if removal succeeded and there were no more keys, + * thus the state is as if KvGoBack() was called. + * @error Invalid Handle. */ native int KvDeleteThis(Handle kv); @@ -548,49 +560,49 @@ native int KvDeleteThis(Handle kv); * once for each successful Jump call, in order to return to the top node. * This function pops one node off the internal traversal stack. * - * @param kv KeyValues Handle. - * @return True on success, false if there is no higher node. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @return True on success, false if there is no higher node. + * @error Invalid Handle. */ native bool KvGoBack(Handle kv); /** - * Sets the position back to the top node, emptying the entire node + * Sets the position back to the top node, emptying the entire node * traversal history. This can be used instead of looping KvGoBack() * if recursive iteration is not important. * - * @param kv KeyValues Handle. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @error Invalid Handle. */ native void KvRewind(Handle kv); /** * Retrieves the current section name. - * - * @param kv KeyValues Handle. - * @param section Buffer to store the section name. - * @param maxlength Maximum length of the name buffer. - * @return True on success, false on failure. - * @error Invalid Handle. + * + * @param kv KeyValues Handle. + * @param section Buffer to store the section name. + * @param maxlength Maximum length of the name buffer. + * @return True on success, false on failure. + * @error Invalid Handle. */ native bool KvGetSectionName(Handle kv, char[] section, int maxlength); /** * Sets the current section name. - * - * @param kv KeyValues Handle. - * @param section Section name. - * @error Invalid Handle. + * + * @param kv KeyValues Handle. + * @param section Section name. + * @error Invalid Handle. */ native void KvSetSectionName(Handle kv, const char[] section); /** * Returns the data type at a key. * - * @param kv KeyValues Handle. - * @param key Key name. - * @return KvDataType value of the key. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Key name. + * @return KvDataType value of the key. + * @error Invalid Handle. */ native KvDataTypes KvGetDataType(Handle kv, const char[] key); @@ -598,10 +610,10 @@ native KvDataTypes KvGetDataType(Handle kv, const char[] key); * Converts a KeyValues tree to a file. The tree is dumped * from the current position. * - * @param kv KeyValues Handle. - * @param file File to dump write to. - * @return True on success, false otherwise. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param file File to dump write to. + * @return True on success, false otherwise. + * @error Invalid Handle. */ native bool KeyValuesToFile(Handle kv, const char[] file); @@ -609,10 +621,10 @@ native bool KeyValuesToFile(Handle kv, const char[] file); * Converts a file to a KeyValues tree. The file is read into * the current position of the tree. * - * @param kv KeyValues Handle. - * @param file File to read from. - * @return True on success, false otherwise. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param file File to read from. + * @return True on success, false otherwise. + * @error Invalid Handle. */ native bool FileToKeyValues(Handle kv, const char[] file); @@ -620,11 +632,11 @@ native bool FileToKeyValues(Handle kv, const char[] file); * Converts a given string to a KeyValues tree. The string is read into * the current postion of the tree. * - * @param kv KeyValues Handle. - * @param buffer String buffer to load into the KeyValues. - * @param resourceName The resource name of the KeyValues, used for error tracking purposes. - * @return True on success, false otherwise. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param buffer String buffer to load into the KeyValues. + * @param resourceName The resource name of the KeyValues, used for error tracking purposes. + * @return True on success, false otherwise. + * @error Invalid Handle. */ native bool StringToKeyValues(Handle kv, const char[] buffer, const char[] resourceName="StringToKeyValues"); @@ -633,9 +645,9 @@ native bool StringToKeyValues(Handle kv, const char[] buffer, const char[] resou * For example, \n would be read as a literal newline. This defaults * to false for new KeyValues structures. * - * @param kv KeyValues Handle. - * @param useEscapes Whether or not to read escape sequences. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param useEscapes Whether or not to read escape sequences. + * @error Invalid Handle. */ native void KvSetEscapeSequences(Handle kv, bool useEscapes); @@ -644,9 +656,9 @@ native void KvSetEscapeSequences(Handle kv, bool useEscapes); * required for KvGoBack to return to the root node. If at the root node, * 0 is returned. * - * @param kv KeyValues Handle. - * @return Number of non-root nodes in the jump stack. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @return Number of non-root nodes in the jump stack. + * @error Invalid Handle. */ native int KvNodesInStack(Handle kv); @@ -655,41 +667,41 @@ native int KvNodesInStack(Handle kv); * the destination KeyValues. * NOTE: All KeyValues are processed from the current location not the root one. * - * @param origin Origin KeyValues Handle. - * @param dest Destination KeyValues Handle. - * @error Invalid Handle. + * @param origin Origin KeyValues Handle. + * @param dest Destination KeyValues Handle. + * @error Invalid Handle. */ native void KvCopySubkeys(Handle origin, Handle dest); -/** +/** * Finds a KeyValues name by id. * - * @param kv KeyValues Handle. - * @param id KeyValues id. - * @param name Buffer to store the name. - * @param maxlength Maximum length of the value buffer. - * @return True on success, false if id not found. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param id KeyValues id. + * @param name Buffer to store the name. + * @param maxlength Maximum length of the value buffer. + * @return True on success, false if id not found. + * @error Invalid Handle. */ native bool KvFindKeyById(Handle kv, int id, char[] name, int maxlength); -/** +/** * Finds a KeyValues id inside a KeyValues tree. * - * @param kv KeyValues Handle. - * @param key Key name. - * @param id Id of the found KeyValue. - * @return True on success, false if key not found. - * @error Invalid Handle. + * @param kv KeyValues Handle. + * @param key Key name. + * @param id Id of the found KeyValue. + * @return True on success, false if key not found. + * @error Invalid Handle. */ native bool KvGetNameSymbol(Handle kv, const char[] key, int &id); /** * Retrieves the current section id. - * - * @param kv KeyValues Handle. - * @param id Id of the current section. - * @return True on success, false on failure. - * @error Invalid Handle. + * + * @param kv KeyValues Handle. + * @param id Id of the current section. + * @return True on success, false on failure. + * @error Invalid Handle. */ native bool KvGetSectionSymbol(Handle kv, int &id); diff --git a/env/include/lang.inc b/env/include/lang.inc index b3a6e60..440b795 100644 --- a/env/include/lang.inc +++ b/env/include/lang.inc @@ -9,7 +9,7 @@ * 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 @@ -35,13 +35,13 @@ #endif #define _lang_included -#define LANG_SERVER 0 /**< Translate using the server's language */ +#define LANG_SERVER 0 /**< Translate using the server's language */ /** * Loads a translation file for the plugin calling this native. * If no extension is specified, .txt is assumed. * - * @param file Translation file. + * @param file Translation file. */ native void LoadTranslations(const char[] file); @@ -51,66 +51,84 @@ native void LoadTranslations(const char[] file); * indexes can be specified but the error will occur during translation, * not during this function call. * - * @param client Client index or LANG_SERVER. + * @param client Client index or LANG_SERVER. */ native void SetGlobalTransTarget(int client); /** * Retrieves the language number of a client. * - * @param client Client index. - * @return Language number client is using. - * @error Invalid client index or client not connected. + * @param client Client index. + * @return Language number client is using. + * @error Invalid client index or client not connected. */ native int GetClientLanguage(int client); /** * Retrieves the server's language. * - * @return Language number server is using. + * @return Language number server is using. */ native int GetServerLanguage(); /** * Returns the number of languages known in languages.cfg. * - * @return Language count. + * @return Language count. */ native int GetLanguageCount(); /** * Retrieves info about a given language number. * - * @param language Language number. - * @param code Language code buffer (2-3 characters usually). - * @param codeLen Maximum length of the language code buffer. - * @param name Language name buffer. - * @param nameLen Maximum length of the language name buffer. - * @error Invalid language number. + * @param language Language number. + * @param code Language code buffer (2-3 characters usually). + * @param codeLen Maximum length of the language code buffer. + * @param name Language name buffer. + * @param nameLen Maximum length of the language name buffer. + * @error Invalid language number. */ native void GetLanguageInfo(int language, char[] code="", int codeLen=0, char[] name="", int nameLen=0); /** * Sets the language number of a client. * - * @param client Client index. - * @param language Language number. - * @error Invalid client index or client not connected. + * @param client Client index. + * @param language Language number. + * @error Invalid client index or client not connected. */ native void SetClientLanguage(int client, int language); /** * Retrieves the language number from a language code. * - * @param code Language code (2-3 characters usually). - * @return Language number. -1 if not found. + * @param code Language code (2-3 characters usually). + * @return Language number. -1 if not found. */ native int GetLanguageByCode(const char[] code); /** * Retrieves the language number from a language name. * - * @param name Language name (case insensitive). - * @return Language number. -1 if not found. + * @param name Language name (case insensitive). + * @return Language number. -1 if not found. */ native int GetLanguageByName(const char[] name); + +/** + * Determines if the specified phrase exists within the plugin's + * translation cache. + * + * @param phrase Phrase to look for. + * @return True if phrase exists. + */ +native bool TranslationPhraseExists(const char[] phrase); + +/** + * Determines if there is a translation for the specified language. + * + * @param phrase Phrase to check. + * @param language Language number. + * @return True if translation exists. + */ +native bool IsTranslatedForLanguage(const char[] phrase, int language); diff --git a/env/include/logging.inc b/env/include/logging.inc index 0fac733..2ab337c 100644 --- a/env/include/logging.inc +++ b/env/include/logging.inc @@ -9,7 +9,7 @@ * 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 @@ -29,77 +29,77 @@ * * Version: $Id$ */ - + #if defined _sm_logging_included #endinput #endif #define _sm_logging_included /** - * Logs a plugin message to the SourceMod logs. The log message will be + * Logs a plugin message to the SourceMod logs. The log message will be * prefixed by the plugin's logtag (filename). * - * @param format String format. - * @param ... Format arguments. + * @param format String format. + * @param ... Format arguments. */ native void LogMessage(const char[] format, any ...); /** - * Logs a message to any file. The log message will be in the normal + * Logs a message to any file. The log message will be in the normal * SourceMod format, with the plugin logtag prepended. * - * @param file File to write the log message in. - * @param format String format. - * @param ... Format arguments. - * @error File could not be opened/written. + * @param file File to write the log message in. + * @param format String format. + * @param ... Format arguments. + * @error File could not be opened/written. */ native void LogToFile(const char[] file, const char[] format, any ...); /** * Same as LogToFile(), except no plugin logtag is prepended. * - * @param file File to write the log message in. - * @param format String format. - * @param ... Format arguments. - * @error File could not be opened/written. + * @param file File to write the log message in. + * @param format String format. + * @param ... Format arguments. + * @error File could not be opened/written. */ native void LogToFileEx(const char[] file, const char[] format, any ...); /** - * Logs an action from a command or event whereby interception and routing may + * Logs an action from a command or event whereby interception and routing may * be important. This is intended to be a logging version of ShowActivity(). * - * @param client Client performing the action, 0 for server, or -1 if not - * applicable. - * @param target Client being targetted, or -1 if not applicable. - * @param message Message format. - * @param ... Message formatting parameters. + * @param client Client performing the action, 0 for server, or -1 if not + * applicable. + * @param target Client being targetted, or -1 if not applicable. + * @param message Message format. + * @param ... Message formatting parameters. */ native void LogAction(int client, int target, const char[] message, any ...); /** * Logs a plugin error message to the SourceMod logs. * - * @param format String format. - * @param ... Format arguments. + * @param format String format. + * @param ... Format arguments. */ native void LogError(const char[] format, any ...); /** * Called when an action is going to be logged. * - * @param source Handle to the object logging the action, or INVALID_HANDLE - * if Core is logging the action. - * @param ident Type of object logging the action (plugin, ext, or core). - * @param client Client the action is from; 0 for server, -1 if not applicable. - * @param target Client the action is targetting, or -1 if not applicable. - * @param message Message that is being logged. - * @return Plugin_Continue will perform the default logging behavior. - * Plugin_Handled will stop Core from logging the message. - * Plugin_Stop is the same as Handled, but prevents any other - * plugins from handling the message. + * @param source Handle to the object logging the action, or INVALID_HANDLE + * if Core is logging the action. + * @param ident Type of object logging the action (plugin, ext, or core). + * @param client Client the action is from; 0 for server, -1 if not applicable. + * @param target Client the action is targetting, or -1 if not applicable. + * @param message Message that is being logged. + * @return Plugin_Continue will perform the default logging behavior. + * Plugin_Handled will stop Core from logging the message. + * Plugin_Stop is the same as Handled, but prevents any other + * plugins from handling the message. */ -forward Action OnLogAction(Handle source, +forward Action OnLogAction(Handle source, Identity ident, int client, int target, @@ -108,28 +108,28 @@ forward Action OnLogAction(Handle source, /** * Called when a game log message is received. * - * Any Log*() functions called within this callback will not recursively + * Any Log*() functions called within this callback will not recursively * pass through. That is, they will log directly, bypassing this callback. * - * Note that this does not capture log messages from the engine. It only + * Note that this does not capture log messages from the engine. It only * captures log messages being sent from the game/mod itself. * - * @param message Message contents. - * @return Plugin_Handled or Plugin_Stop will prevent the message - * from being written to the log file. + * @param message Message contents. + * @return Plugin_Handled or Plugin_Stop will prevent the message + * from being written to the log file. */ typedef GameLogHook = function Action (const char[] message); /** * Adds a game log hook. * - * @param hook Hook function. + * @param hook Hook function. */ native void AddGameLogHook(GameLogHook hook); /** * Removes a game log hook. * - * @param hook Hook function. + * @param hook Hook function. */ native void RemoveGameLogHook(GameLogHook hook); diff --git a/env/include/mapchooser.inc b/env/include/mapchooser.inc index 0fe7def..89d73c7 100644 --- a/env/include/mapchooser.inc +++ b/env/include/mapchooser.inc @@ -9,7 +9,7 @@ * 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 @@ -30,71 +30,72 @@ * Version: $Id$ */ #if defined _mapchooser_included_ - #endinput + #endinput #endif #define _mapchooser_included_ enum NominateResult { - Nominate_Added, /** The map was added to the nominate list */ - Nominate_Replaced, /** A clients existing nomination was replaced */ - Nominate_AlreadyInVote, /** Specified map was already in the vote */ - Nominate_InvalidMap, /** Mapname specified wasn't a valid map */ - Nominate_VoteFull, /** This will only occur if force was set to false */ + Nominate_Added, /** The map was added to the nominate list */ + Nominate_Replaced, /** A clients existing nomination was replaced */ + Nominate_AlreadyInVote, /** Specified map was already in the vote */ + Nominate_InvalidMap, /** Mapname specified wasn't a valid map */ + Nominate_VoteFull /** This will only occur if force was set to false */ }; enum MapChange { - MapChange_Instant, /** Change map as soon as the voting results have come in */ - MapChange_RoundEnd, /** Change map at the end of the round */ - MapChange_MapEnd, /** Change the sm_nextmap cvar */ + MapChange_Instant, /** Change map as soon as the voting results have come in */ + MapChange_RoundEnd, /** Change map at the end of the round */ + MapChange_MapEnd /** Change the sm_nextmap cvar */ }; /** * Attempt to add a map to the mapchooser map list. * - * @param map Map to add. - * @param force Should we force the map in even if it requires overwriting an existing nomination? - * @param owner Client index of the nominator. If the client disconnects the nomination will be removed. Use 0 for constant nominations - * @return Nominate Result of the outcome + * @param map Map to add. + * @param force Should we force the map in even if it requires overwriting an existing nomination? + * @param owner Client index of the nominator. If the client disconnects the nomination will be removed. + * Use 0 for constant nominations + * @return Nominate Result of the outcome */ native NominateResult NominateMap(const char[] map, bool force, int owner); /** * Attempt to remove a map from the mapchooser map list. * - * @param map Map to remove. - * @return True if the nomination was found and removed, or false if the nomination was not found. + * @param map Map to remove. + * @return True if the nomination was found and removed, or false if the nomination was not found. */ native bool RemoveNominationByMap(const char[] map); /** * Attempt to remove a map from the mapchooser map list. * - * @param owner Client index of the nominator. - * @return True if the nomination was found and removed, or false if the nomination was not found. + * @param owner Client index of the nominator. + * @return True if the nomination was found and removed, or false if the nomination was not found. */ native bool RemoveNominationByOwner(int owner); /** * Gets the current list of excluded maps. * - * @param array An ADT array handle to add the map strings to. + * @param array An ADT array handle to add the map strings to. */ native void GetExcludeMapList(ArrayList array); /** * Gets the current list of nominated maps. * - * @param maparray An ADT array handle to add the map strings to. - * @param ownerarray An optional ADT array handle to add the nominator client indexes to. + * @param maparray An ADT array handle to add the map strings to. + * @param ownerarray An optional ADT array handle to add the nominator client indexes to. */ native void GetNominatedMapList(ArrayList maparray, ArrayList ownerarray = null); /** * Checks if MapChooser will allow a vote * - * @return True if a vote can be held, or false if mapchooser is already holding a vote. + * @return True if a vote can be held, or false if mapchooser is already holding a vote. */ native bool CanMapChooserStartVote(); @@ -104,22 +105,22 @@ native bool CanMapChooserStartVote(); * Note: If no input array is specified mapchooser will use its internal list. This includes * any nominations and excluded maps (as per mapchoosers convars). * - * @param when MapChange consant of when the resulting mapchange should occur. - * @param inputarray ADT array list of maps to add to the vote. + * @param when MapChange consant of when the resulting mapchange should occur. + * @param inputarray ADT array list of maps to add to the vote. */ native void InitiateMapChooserVote(MapChange when, ArrayList inputarray=null); /** * Checks if MapChooser's end of map vote has completed. * - * @return True if complete, false otherwise. + * @return True if complete, false otherwise. */ native bool HasEndOfMapVoteFinished(); /** * Checks if MapChooser is set to run an end of map vote. * - * @return True if enabled, false otherwise. + * @return True if enabled, false otherwise. */ native bool EndOfMapVoteEnabled(); @@ -134,7 +135,7 @@ forward void OnNominationRemoved(const char[] map, int owner); */ forward void OnMapVoteStarted(); -public SharedPlugin __pl_mapchooser = +public SharedPlugin __pl_mapchooser = { name = "mapchooser", file = "mapchooser.smx", diff --git a/env/include/menus.inc b/env/include/menus.inc index a200116..7341328 100644 --- a/env/include/menus.inc +++ b/env/include/menus.inc @@ -9,7 +9,7 @@ * 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 @@ -29,7 +29,7 @@ * * Version: $Id$ */ - + #if defined _menus_included #endinput #endif @@ -40,9 +40,9 @@ */ enum MenuStyle { - MenuStyle_Default = 0, /**< The "default" menu style for the mod */ - MenuStyle_Valve = 1, /**< The Valve provided menu style (Used on HL2DM) */ - MenuStyle_Radio = 2, /**< The simpler menu style commonly used on CS:S */ + MenuStyle_Default = 0, /**< The "default" menu style for the mod */ + MenuStyle_Valve = 1, /**< The Valve provided menu style (Used on HL2DM) */ + MenuStyle_Radio = 2 /**< The simpler menu style commonly used on CS:S */ }; /** @@ -50,64 +50,62 @@ enum MenuStyle */ enum MenuAction { - MenuAction_Start = (1<<0), /**< A menu has been started (nothing passed) */ - MenuAction_Display = (1<<1), /**< A menu is about to be displayed (param1=client, param2=MenuPanel Handle) */ - MenuAction_Select = (1<<2), /**< An item was selected (param1=client, param2=item) */ - MenuAction_Cancel = (1<<3), /**< The menu was cancelled (param1=client, param2=reason) */ - MenuAction_End = (1<<4), /**< A menu display has fully ended. - param1 is the MenuEnd reason, and if it's MenuEnd_Cancelled, then - param2 is the MenuCancel reason from MenuAction_Cancel. - */ - MenuAction_VoteEnd = (1<<5), /**< (VOTE ONLY): A vote sequence has succeeded (param1=chosen item) - This is not called if SetVoteResultCallback has been used on the menu. */ - MenuAction_VoteStart = (1<<6), /**< (VOTE ONLY): A vote sequence has started (nothing passed) */ - MenuAction_VoteCancel = (1<<7), /**< (VOTE ONLY): A vote sequence has been cancelled (param1=reason) */ - MenuAction_DrawItem = (1<<8), /**< An item is being drawn; return the new style (param1=client, param2=item) */ - MenuAction_DisplayItem = (1<<9),/**< Item text is being drawn to the display (param1=client, param2=item) - To change the text, use RedrawMenuItem(). - If you do so, return its return value. Otherwise, return 0. - */ + MenuAction_Start = (1<<0), /**< A menu has been started (nothing passed) */ + MenuAction_Display = (1<<1), /**< A menu is about to be displayed (param1=client, param2=MenuPanel Handle) */ + MenuAction_Select = (1<<2), /**< An item was selected (param1=client, param2=item) */ + MenuAction_Cancel = (1<<3), /**< The menu was cancelled (param1=client, param2=reason) */ + MenuAction_End = (1<<4), /**< A menu display has fully ended. + param1 is the MenuEnd reason, and if it's MenuEnd_Cancelled, then + param2 is the MenuCancel reason from MenuAction_Cancel. */ + MenuAction_VoteEnd = (1<<5), /**< (VOTE ONLY): A vote sequence has succeeded (param1=chosen item) + This is not called if SetVoteResultCallback has been used on the menu. */ + MenuAction_VoteStart = (1<<6), /**< (VOTE ONLY): A vote sequence has started (nothing passed) */ + MenuAction_VoteCancel = (1<<7), /**< (VOTE ONLY): A vote sequence has been cancelled (param1=reason) */ + MenuAction_DrawItem = (1<<8), /**< An item is being drawn; return the new style (param1=client, param2=item) */ + MenuAction_DisplayItem = (1<<9) /**< Item text is being drawn to the display (param1=client, param2=item) + To change the text, use RedrawMenuItem(). + If you do so, return its return value. Otherwise, return 0. */ }; /** Default menu actions */ -#define MENU_ACTIONS_DEFAULT MenuAction_Select|MenuAction_Cancel|MenuAction_End +#define MENU_ACTIONS_DEFAULT MenuAction_Select|MenuAction_Cancel|MenuAction_End /** All menu actions */ -#define MENU_ACTIONS_ALL view_as(0xFFFFFFFF) +#define MENU_ACTIONS_ALL view_as(0xFFFFFFFF) -#define MENU_NO_PAGINATION 0 /**< Menu should not be paginated (10 items max) */ -#define MENU_TIME_FOREVER 0 /**< Menu should be displayed as long as possible */ +#define MENU_NO_PAGINATION 0 /**< Menu should not be paginated (10 items max) */ +#define MENU_TIME_FOREVER 0 /**< Menu should be displayed as long as possible */ -#define ITEMDRAW_DEFAULT (0) /**< Item should be drawn normally */ -#define ITEMDRAW_DISABLED (1<<0) /**< Item is drawn but not selectable */ -#define ITEMDRAW_RAWLINE (1<<1) /**< Item should be a raw line, without a slot */ -#define ITEMDRAW_NOTEXT (1<<2) /**< No text should be drawn */ -#define ITEMDRAW_SPACER (1<<3) /**< Item should be drawn as a spacer, if possible */ -#define ITEMDRAW_IGNORE ((1<<1)|(1<<2)) /**< Item should be completely ignored (rawline + notext) */ -#define ITEMDRAW_CONTROL (1<<4) /**< Item is control text (back/next/exit) */ +#define ITEMDRAW_DEFAULT (0) /**< Item should be drawn normally */ +#define ITEMDRAW_DISABLED (1<<0) /**< Item is drawn but not selectable */ +#define ITEMDRAW_RAWLINE (1<<1) /**< Item should be a raw line, without a slot */ +#define ITEMDRAW_NOTEXT (1<<2) /**< No text should be drawn */ +#define ITEMDRAW_SPACER (1<<3) /**< Item should be drawn as a spacer, if possible */ +#define ITEMDRAW_IGNORE ((1<<1)|(1<<2)) /**< Item should be completely ignored (rawline + notext) */ +#define ITEMDRAW_CONTROL (1<<4) /**< Item is control text (back/next/exit) */ -#define MENUFLAG_BUTTON_EXIT (1<<0) /**< Menu has an "exit" button (default if paginated) */ -#define MENUFLAG_BUTTON_EXITBACK (1<<1) /**< Menu has an "exit back" button */ -#define MENUFLAG_NO_SOUND (1<<2) /**< Menu will not have any select sounds */ -#define MENUFLAG_BUTTON_NOVOTE (1<<3) /**< Menu has a "No Vote" button at slot 1 */ +#define MENUFLAG_BUTTON_EXIT (1<<0) /**< Menu has an "exit" button (default if paginated) */ +#define MENUFLAG_BUTTON_EXITBACK (1<<1) /**< Menu has an "exit back" button */ +#define MENUFLAG_NO_SOUND (1<<2) /**< Menu will not have any select sounds */ +#define MENUFLAG_BUTTON_NOVOTE (1<<3) /**< Menu has a "No Vote" button at slot 1 */ -#define VOTEINFO_CLIENT_INDEX 0 /**< Client index */ -#define VOTEINFO_CLIENT_ITEM 1 /**< Item the client selected, or -1 for none */ -#define VOTEINFO_ITEM_INDEX 0 /**< Item index */ -#define VOTEINFO_ITEM_VOTES 1 /**< Number of votes for the item */ +#define VOTEINFO_CLIENT_INDEX 0 /**< Client index */ +#define VOTEINFO_CLIENT_ITEM 1 /**< Item the client selected, or -1 for none */ +#define VOTEINFO_ITEM_INDEX 0 /**< Item index */ +#define VOTEINFO_ITEM_VOTES 1 /**< Number of votes for the item */ -#define VOTEFLAG_NO_REVOTES (1<<0) /**< Players cannot change their votes */ +#define VOTEFLAG_NO_REVOTES (1<<0) /**< Players cannot change their votes */ /** * Reasons a menu can be cancelled (MenuAction_Cancel). */ enum { - MenuCancel_Disconnected = -1, /**< Client dropped from the server */ - MenuCancel_Interrupted = -2, /**< Client was interrupted with another menu */ - MenuCancel_Exit = -3, /**< Client exited via "exit" */ - MenuCancel_NoDisplay = -4, /**< Menu could not be displayed to the client */ - MenuCancel_Timeout = -5, /**< Menu timed out */ - MenuCancel_ExitBack = -6, /**< Client selected "exit back" on a paginated menu */ + MenuCancel_Disconnected = -1, /**< Client dropped from the server */ + MenuCancel_Interrupted = -2, /**< Client was interrupted with another menu */ + MenuCancel_Exit = -3, /**< Client exited via "exit" */ + MenuCancel_NoDisplay = -4, /**< Menu could not be displayed to the client */ + MenuCancel_Timeout = -5, /**< Menu timed out */ + MenuCancel_ExitBack = -6 /**< Client selected "exit back" on a paginated menu */ }; /** @@ -115,8 +113,8 @@ enum */ enum { - VoteCancel_Generic = -1, /**< Vote was generically cancelled. */ - VoteCancel_NoVotes = -2, /**< Vote did not receive any votes. */ + VoteCancel_Generic = -1, /**< Vote was generically cancelled. */ + VoteCancel_NoVotes = -2 /**< Vote did not receive any votes. */ }; /** @@ -124,12 +122,12 @@ enum */ enum { - MenuEnd_Selected = 0, /**< Menu item was selected */ - MenuEnd_VotingDone = -1, /**< Voting finished */ - MenuEnd_VotingCancelled = -2, /**< Voting was cancelled */ - MenuEnd_Cancelled = -3, /**< Menu was cancelled (reason in param2) */ - MenuEnd_Exit = -4, /**< Menu was cleanly exited via "exit" */ - MenuEnd_ExitBack = -5, /**< Menu was cleanly exited via "back" */ + MenuEnd_Selected = 0, /**< Menu item was selected */ + MenuEnd_VotingDone = -1, /**< Voting finished */ + MenuEnd_VotingCancelled = -2, /**< Voting was cancelled */ + MenuEnd_Cancelled = -3, /**< Menu was cancelled (reason in param2) */ + MenuEnd_Exit = -4, /**< Menu was cleanly exited via "exit" */ + MenuEnd_ExitBack = -5 /**< Menu was cleanly exited via "back" */ }; /** @@ -137,19 +135,19 @@ enum */ enum MenuSource { - MenuSource_None = 0, /**< No menu is being displayed */ - MenuSource_External = 1, /**< External menu */ - MenuSource_Normal = 2, /**< A basic menu is being displayed */ - MenuSource_RawPanel = 3, /**< A display is active, but it is not tied to a menu */ + MenuSource_None = 0, /**< No menu is being displayed */ + MenuSource_External = 1, /**< External menu */ + MenuSource_Normal = 2, /**< A basic menu is being displayed */ + MenuSource_RawPanel = 3 /**< A display is active, but it is not tied to a menu */ }; /** * Called when a menu action is completed. * - * @param menu The menu being acted upon. - * @param action The action of the menu. - * @param param1 First action parameter (usually the client). - * @param param2 Second action parameter (usually the item). + * @param menu The menu being acted upon. + * @param action The action of the menu. + * @param param1 First action parameter (usually the client). + * @param param2 Second action parameter (usually the item). */ typedef MenuHandler = function int (Menu menu, MenuAction action, int param1, int param2); @@ -158,8 +156,8 @@ typedef MenuHandler = function int (Menu menu, MenuAction action, int param1, in methodmap Panel < Handle { // Constructor for a new Panel. - // - // @param hStyle MenuStyle Handle, or null to use the default style. + // + // @param hStyle MenuStyle Handle, or null to use the default style. public native Panel(Handle hStyle = null); // Sets the panel's title. @@ -171,7 +169,7 @@ methodmap Panel < Handle // Draws an item on a panel. If the item takes up a slot, the position // is returned. // - // @param text Display text to use. If not a raw line, + // @param text Display text to use. If not a raw line, // the style may automatically add color markup. // No numbering or newlines are needed. // @param style ITEMDRAW style flags. @@ -193,7 +191,7 @@ methodmap Panel < Handle public native bool CanDrawFlags(int style); // Sets the selectable key map of a panel. This is not supported by - // all styles (only by Radio, as of this writing). + // all styles (only by Radio, as of this writing). // // @param keys An integer where each bit N allows key // N+1 to be selected. If no keys are selectable, @@ -202,7 +200,7 @@ methodmap Panel < Handle public native bool SetKeys(int keys); // Sends a panel to a client. Unlike full menus, the handler - // function will only receive the following actions, both of + // function will only receive the following actions, both of // which will have null for a menu, and the client as param1. // // MenuAction_Select (param2 will be the key pressed) @@ -216,8 +214,8 @@ methodmap Panel < Handle // @return True on success, false on failure. public native bool Send(int client, MenuHandler handler, int time); - // Returns the amount of text the menu can still hold. If this is - // limit is reached or overflowed, the text is silently truncated. + // Returns the amount of text the menu can still hold. If this is + // limit is reached or overflowed, the text is silently truncated. // // Radio menus: Currently 511 characters (512 bytes). // Valve menus: Currently -1 (no meaning). @@ -242,9 +240,9 @@ methodmap Panel < Handle methodmap Menu < Handle { // Creates a new, empty menu using the default style. - // + // // @param handler Function which will receive menu actions. - // @param actions Optionally set which actions to receive. Select, + // @param actions Optionally set which actions to receive. Select, // Cancel, and End will always be received regardless // of whether they are set or not. They are also // the only default actions. @@ -272,7 +270,7 @@ methodmap Menu < Handle // // @param info Item information string. // @param display Default item display string. - // @param style Drawing style flags. Anything other than DEFAULT or + // @param style Drawing style flags. Anything other than DEFAULT or // DISABLED will be completely ignored when paginating. // @return True on success, false on failure. // @error Item limit reached. @@ -284,7 +282,7 @@ methodmap Menu < Handle // @param position Position, starting from 0. // @param info Item information string. // @param display Default item display string. - // @param style Drawing style flags. Anything other than DEFAULT or + // @param style Drawing style flags. Anything other than DEFAULT or // DISABLED will be completely ignored when paginating. // @return True on success, false on failure. // @error Invalid menu position. @@ -309,9 +307,23 @@ methodmap Menu < Handle // @param style By-reference variable to store drawing flags. // @param dispBuf Display buffer. // @param dispBufLen Maximum length of the display buffer. + // @param client Client index. Must be specified if menu is per-client random shuffled, -1 to ignore. // @return True on success, false if position is invalid. - public native bool GetItem(int position, char[] infoBuf, int infoBufLen, - int &style=0, char[] dispBuf="", int dispBufLen=0); + public native bool GetItem(int position, char[] infoBuf, int infoBufLen, + int &style=0, char[] dispBuf="", int dispBufLen=0, int client=0); + + // Generates a per-client random mapping for the current vote options. + // + // @param start Menu item index to start randomizing from. + // @param stop Menu item index to stop randomizing at. -1 = infinite + public native void ShufflePerClient(int start=0, int stop=-1); + + // Fills the client vote option mapping with user supplied values. + // + // @param client Client index. + // @param array Integer array with mapping. + // @param length Length of array. + public native void SetClientMapping(int client, int[] array, int length); // Sets the menu's default title/instruction message. // @@ -321,7 +333,6 @@ methodmap Menu < Handle // Returns the text of a menu's title. // - // @param menu Menu Handle. // @param buffer Buffer to store title. // @param maxlength Maximum length of the buffer. // @return Number of bytes written. @@ -330,7 +341,6 @@ methodmap Menu < Handle // Creates a raw MenuPanel based off the menu's style. // The Handle must be freed with CloseHandle(). // - // @param menu Menu Handle. // @return A new MenuPanel Handle. public native Panel ToPanel(); @@ -344,8 +354,8 @@ methodmap Menu < Handle // If any vote is in progress on a menu, it will be cancelled. public native void Cancel(); - // Broadcasts a menu to a list of clients. The most selected item will be - // returned through MenuAction_End. On a tie, a random item will be returned + // Broadcasts a menu to a list of clients. The most selected item will be + // returned through MenuAction_End. On a tie, a random item will be returned // from a list of the tied items. // // Note that MenuAction_VoteEnd and MenuAction_VoteStart are both @@ -371,15 +381,17 @@ methodmap Menu < Handle int[] players = new int[MaxClients]; for (int i = 1; i <= MaxClients; i++) { if (!IsClientInGame(i) || IsFakeClient(i)) + { continue; + } players[total++] = i; } return this.DisplayVote(players, total, time, flags); } // Get or set the menu's pagination. - // - // If pagination is MENU_NO_PAGINATION, and the exit button flag is set, + // + // If pagination is MENU_NO_PAGINATION, and the exit button flag is set, // then the exit button flag is removed. It can be re-applied if desired. property int Pagination { public native get(); @@ -401,10 +413,10 @@ methodmap Menu < Handle public native set(bool value); } - // Controls whether or not the menu has an "exit back" button. By default, - // menus do not have an exit back button. - // - // Exit Back buttons appear as "Back" on page 1 of paginated menus and have + // Controls whether or not the menu has an "exit back" button. By default, + // menus do not have an exit back button. + // + // Exit Back buttons appear as "Back" on page 1 of paginated menus and have // functionality defined by the user in MenuEnd_ExitBack. property bool ExitBackButton { public native get(); @@ -434,7 +446,7 @@ methodmap Menu < Handle } // Returns the first item on the page of a currently selected menu. - // + // // This is only valid inside a MenuAction_Select callback. property int Selection { public native get(); @@ -443,155 +455,176 @@ methodmap Menu < Handle /** * Creates a new, empty menu using the default style. - * - * @param handler Function which will receive menu actions. - * @param actions Optionally set which actions to receive. Select, - * Cancel, and End will always be received regardless - * of whether they are set or not. They are also - * the only default actions. - * @return A new menu Handle. + * + * @param handler Function which will receive menu actions. + * @param actions Optionally set which actions to receive. Select, + * Cancel, and End will always be received regardless + * of whether they are set or not. They are also + * the only default actions. + * @return A new menu Handle. */ native Menu CreateMenu(MenuHandler handler, MenuAction actions=MENU_ACTIONS_DEFAULT); /** * Displays a menu to a client. * - * @param menu Menu Handle. - * @param client Client index. - * @param time Maximum time to leave menu on the screen. - * @return True on success, false on failure. - * @error Invalid Handle or client not in game. + * @param menu Menu Handle. + * @param client Client index. + * @param time Maximum time to leave menu on the screen. + * @return True on success, false on failure. + * @error Invalid Handle or client not in game. */ native bool DisplayMenu(Handle menu, int client, int time); /** * Displays a menu to a client, starting from the given item. * - * @param menu Menu Handle. - * @param client Client index. - * @param first_item First item to begin drawing from. - * @param time Maximum time to leave menu on the screen. - * @return True on success, false on failure. - * @error Invalid Handle or client not in game. + * @param menu Menu Handle. + * @param client Client index. + * @param first_item First item to begin drawing from. + * @param time Maximum time to leave menu on the screen. + * @return True on success, false on failure. + * @error Invalid Handle or client not in game. */ native bool DisplayMenuAtItem(Handle menu, int client, int first_item, int time); /** * Appends a new item to the end of a menu. * - * @param menu Menu Handle. - * @param info Item information string. - * @param display Default item display string. - * @param style Drawing style flags. Anything other than DEFAULT or - * DISABLED will be completely ignored when paginating. - * @return True on success, false on failure. - * @error Invalid Handle or item limit reached. + * @param menu Menu Handle. + * @param info Item information string. + * @param display Default item display string. + * @param style Drawing style flags. Anything other than DEFAULT or + * DISABLED will be completely ignored when paginating. + * @return True on success, false on failure. + * @error Invalid Handle or item limit reached. */ -native bool AddMenuItem(Handle menu, - const char[] info, - const char[] display, +native bool AddMenuItem(Handle menu, + const char[] info, + const char[] display, int style=ITEMDRAW_DEFAULT); /** * Inserts an item into the menu before a certain position; the new item will * be at the given position and all next items pushed forward. * - * @param menu Menu Handle. - * @param position Position, starting from 0. - * @param info Item information string. - * @param display Default item display string. - * @param style Drawing style flags. Anything other than DEFAULT or - * DISABLED will be completely ignored when paginating. - * @return True on success, false on failure. - * @error Invalid Handle or menu position. + * @param menu Menu Handle. + * @param position Position, starting from 0. + * @param info Item information string. + * @param display Default item display string. + * @param style Drawing style flags. Anything other than DEFAULT or + * DISABLED will be completely ignored when paginating. + * @return True on success, false on failure. + * @error Invalid Handle or menu position. */ native bool InsertMenuItem(Handle menu, - position, - const char[] info, - const char[] display, + position, + const char[] info, + const char[] display, int style=ITEMDRAW_DEFAULT); /** * Removes an item from the menu. * - * @param menu Menu Handle. - * @param position Position, starting from 0. - * @return True on success, false on failure. - * @error Invalid Handle or menu position. + * @param menu Menu Handle. + * @param position Position, starting from 0. + * @return True on success, false on failure. + * @error Invalid Handle or menu position. */ native bool RemoveMenuItem(Handle menu, int position); /** * Removes all items from a menu. * - * @param menu Menu Handle. - * @error Invalid Handle or menu position. + * @param menu Menu Handle. + * @error Invalid Handle or menu position. */ native void RemoveAllMenuItems(Handle menu); /** * Retrieves information about a menu item. * - * @param menu Menu Handle. - * @param position Position, starting from 0. - * @param infoBuf Info buffer. - * @param infoBufLen Maximum length of the info buffer. - * @param style By-reference variable to store drawing flags. - * @param dispBuf Display buffer. - * @param dispBufLen Maximum length of the display buffer. - * @return True on success, false if position is invalid. - * @error Invalid Handle. + * @param menu Menu Handle. + * @param position Position, starting from 0. + * @param infoBuf Info buffer. + * @param infoBufLen Maximum length of the info buffer. + * @param style By-reference variable to store drawing flags. + * @param dispBuf Display buffer. + * @param dispBufLen Maximum length of the display buffer. + * @param client Client index. Must be specified if menu is per-client random shuffled, -1 to ignore. + * @return True on success, false if position is invalid. + * @error Invalid Handle. */ -native bool GetMenuItem(Handle menu, - int position, - char[] infoBuf, - int infoBufLen, - int &style=0, +native bool GetMenuItem(Handle menu, + int position, + char[] infoBuf, + int infoBufLen, + int &style=0, char[] dispBuf="", - int dispBufLen=0); - + int dispBufLen=0, + int client=0); + +/** + * Generates a per-client random mapping for the current vote options. + * + * @param menu Menu Handle. + * @param start Menu item index to start randomizing from. + * @param stop Menu item index to stop randomizing at. -1 = infinite + */ +native void MenuShufflePerClient(Handle menu, int start=0, int stop=-1); + +/* + * Fills the client vote option mapping with user supplied values. + * + * @param menu Menu Handle. + * @param client Client index. + * @param array Integer array with mapping. + * @param length Length of array. + */ +native void MenuSetClientMapping(Handle menu, int client, int[] array, int length); + /** * Returns the first item on the page of a currently selected menu. * * This is only valid inside a MenuAction_Select callback. * - * @return First item number on the page the client was viewing - * before selecting the item in the callback. This can - * be used to re-display the menu from the original - * position. - * @error Not called from inside a MenuAction_Select callback. + * @return First item number on the page the client was viewing + * before selecting the item in the callback. This can + * be used to re-display the menu from the original + * position. + * @error Not called from inside a MenuAction_Select callback. */ native int GetMenuSelectionPosition(); /** * Returns the number of items in a menu. * - * @param menu Menu Handle. - * @return Number of items in the menu. - * @error Invalid Handle. + * @param menu Menu Handle. + * @return Number of items in the menu. + * @error Invalid Handle. */ native int GetMenuItemCount(Handle menu); /** * Sets whether the menu should be paginated or not. * - * If itemsPerPage is MENU_NO_PAGINATION, and the exit button flag is set, + * If itemsPerPage is MENU_NO_PAGINATION, and the exit button flag is set, * then the exit button flag is removed. It can be re-applied if desired. * - * @param menu Handle to the menu. - * @param itemsPerPage Number of items per page, or MENU_NO_PAGINATION. - * @return True on success, false if pagination is too high or - * low. - * @error Invalid Handle. + * @param menu Handle to the menu. + * @param itemsPerPage Number of items per page, or MENU_NO_PAGINATION. + * @return True on success, false if pagination is too high or + * low. + * @error Invalid Handle. */ native bool SetMenuPagination(Handle menu, int itemsPerPage); /** * Returns a menu's pagination setting. * - * @param menu Handle to the menu. - * @return Pagination setting. - * @error Invalid Handle. + * @param menu Handle to the menu. + * @return Pagination setting. + * @error Invalid Handle. */ native int GetMenuPagination(Handle menu); @@ -599,30 +632,30 @@ native int GetMenuPagination(Handle menu); * Returns a menu's MenuStyle Handle. The Handle * is global and cannot be freed. * - * @param menu Handle to the menu. - * @return Handle to the menu's draw style. - * @error Invalid Handle. + * @param menu Handle to the menu. + * @return Handle to the menu's draw style. + * @error Invalid Handle. */ native Handle GetMenuStyle(Handle menu); /** * Sets the menu's default title/instruction message. * - * @param menu Menu Handle. - * @param fmt Message string format - * @param ... Message string arguments. - * @error Invalid Handle. + * @param menu Menu Handle. + * @param fmt Message string format + * @param ... Message string arguments. + * @error Invalid Handle. */ native void SetMenuTitle(Handle menu, const char[] fmt, any ...); /** * Returns the text of a menu's title. * - * @param menu Menu Handle. - * @param buffer Buffer to store title. - * @param maxlength Maximum length of the buffer. - * @return Number of bytes written. - * @error Invalid Handle/ + * @param menu Menu Handle. + * @param buffer Buffer to store title. + * @param maxlength Maximum length of the buffer. + * @return Number of bytes written. + * @error Invalid Handle/ */ native int GetMenuTitle(Handle menu, char[] buffer, int maxlength); @@ -630,9 +663,9 @@ native int GetMenuTitle(Handle menu, char[] buffer, int maxlength); * Creates a raw MenuPanel based off the menu's style. * The Handle must be freed with CloseHandle(). * - * @param menu Menu Handle. - * @return A new MenuPanel Handle. - * @error Invalid Handle. + * @param menu Menu Handle. + * @return A new MenuPanel Handle. + * @error Invalid Handle. */ native Panel CreatePanelFromMenu(Handle menu); @@ -640,53 +673,53 @@ native Panel CreatePanelFromMenu(Handle menu); * Returns whether or not the menu has an exit button. * By default, menus have an exit button. * - * @param menu Menu Handle. - * @return True if the menu has an exit button; false otherwise. - * @error Invalid Handle. + * @param menu Menu Handle. + * @return True if the menu has an exit button; false otherwise. + * @error Invalid Handle. */ native bool GetMenuExitButton(Handle menu); /** - * Sets whether or not the menu has an exit button. By default, paginated menus + * Sets whether or not the menu has an exit button. By default, paginated menus * have an exit button. * - * If a menu's pagination is changed to MENU_NO_PAGINATION, and the pagination - * was previously a different value, then the Exit button status is changed to + * If a menu's pagination is changed to MENU_NO_PAGINATION, and the pagination + * was previously a different value, then the Exit button status is changed to * false. It must be explicitly re-enabled afterwards. * - * If a non-paginated menu has an exit button, then at most 9 items will be + * If a non-paginated menu has an exit button, then at most 9 items will be * displayed. * - * @param menu Menu Handle. - * @param button True to enable the button, false to remove it. - * @return True if allowed; false on failure. - * @error Invalid Handle. + * @param menu Menu Handle. + * @param button True to enable the button, false to remove it. + * @return True if allowed; false on failure. + * @error Invalid Handle. */ native bool SetMenuExitButton(Handle menu, bool button); /** - * Returns whether or not the menu has an "exit back" button. By default, - * menus do not have an exit back button. + * Returns whether or not the menu has an "exit back" button. By default, + * menus do not have an exit back button. * - * Exit Back buttons appear as "Back" on page 1 of paginated menus and have + * Exit Back buttons appear as "Back" on page 1 of paginated menus and have * functionality defined by the user in MenuEnd_ExitBack. * - * @param menu Menu Handle. - * @return True if the menu has an exit back button; false otherwise. - * @error Invalid Handle. + * @param menu Menu Handle. + * @return True if the menu has an exit back button; false otherwise. + * @error Invalid Handle. */ native bool GetMenuExitBackButton(Handle menu); /** - * Sets whether or not the menu has an "exit back" button. By default, menus + * Sets whether or not the menu has an "exit back" button. By default, menus * do not have an exit back button. * - * Exit Back buttons appear as "Back" on page 1 of paginated menus and have + * Exit Back buttons appear as "Back" on page 1 of paginated menus and have * functionality defined by the user in MenuEnd_ExitBack. * - * @param menu Menu Handle. - * @param button True to enable the button, false to remove it. - * @error Invalid Handle. + * @param menu Menu Handle. + * @param button True to enable the button, false to remove it. + * @error Invalid Handle. */ native void SetMenuExitBackButton(Handle menu, bool button); @@ -694,10 +727,10 @@ native void SetMenuExitBackButton(Handle menu, bool button); * Sets whether or not the menu has a "no vote" button in slot 1. * By default, menus do not have a no vote button. * - * @param menu Menu Handle. - * @param button True to enable the button, false to remove it. - * @return True if allowed; false on failure. - * @error Invalid Handle. + * @param menu Menu Handle. + * @param button True to enable the button, false to remove it. + * @return True if allowed; false on failure. + * @error Invalid Handle. */ native bool SetMenuNoVoteButton(Handle menu, bool button); @@ -711,17 +744,17 @@ native bool SetMenuNoVoteButton(Handle menu, bool button); * * If any vote is in progress on a menu, it will be cancelled. * - * @param menu Menu Handle. - * @error Invalid Handle. + * @param menu Menu Handle. + * @error Invalid Handle. */ native void CancelMenu(Handle menu); /** * Retrieves a menu's option flags. * - * @param menu Menu Handle. - * @return A bitstring of MENUFLAG bits. - * @error Invalid Handle. + * @param menu Menu Handle. + * @return A bitstring of MENUFLAG bits. + * @error Invalid Handle. */ native int GetMenuOptionFlags(Handle menu); @@ -732,61 +765,61 @@ native int GetMenuOptionFlags(Handle menu); * See SetMenuExitButton() for information on Exit buttons. * See SetMenuExitBackButton() for information on Exit Back buttons. * - * @param menu Menu Handle. - * @param flags A new bitstring of MENUFLAG bits. - * @error Invalid Handle. + * @param menu Menu Handle. + * @param flags A new bitstring of MENUFLAG bits. + * @error Invalid Handle. */ native void SetMenuOptionFlags(Handle menu, int flags); /** * Returns whether a vote is in progress. * - * @param menu Deprecated; no longer used. - * @return True if a vote is in progress, false otherwise. + * @param menu Deprecated; no longer used. + * @return True if a vote is in progress, false otherwise. */ native bool IsVoteInProgress(Handle menu=INVALID_HANDLE); /** * Cancels the vote in progress. * - * @error If no vote is in progress. + * @error If no vote is in progress. */ native void CancelVote(); /** - * Broadcasts a menu to a list of clients. The most selected item will be - * returned through MenuAction_End. On a tie, a random item will be returned + * Broadcasts a menu to a list of clients. The most selected item will be + * returned through MenuAction_End. On a tie, a random item will be returned * from a list of the tied items. * * Note that MenuAction_VoteEnd and MenuAction_VoteStart are both * default callbacks and do not need to be enabled. * - * @param menu Menu Handle. - * @param clients Array of clients to broadcast to. - * @param numClients Number of clients in the array. - * @param time Maximum time to leave menu on the screen. - * @param flags Optional voting flags. - * @return True on success, false if this menu already has a vote session - * in progress. - * @error Invalid Handle, or a vote is already in progress. + * @param menu Menu Handle. + * @param clients Array of clients to broadcast to. + * @param numClients Number of clients in the array. + * @param time Maximum time to leave menu on the screen. + * @param flags Optional voting flags. + * @return True on success, false if this menu already has a vote session + * in progress. + * @error Invalid Handle, or a vote is already in progress. */ native bool VoteMenu(Handle menu, int[] clients, int numClients, int time, int flags=0); /** * Sends a vote menu to all clients. See VoteMenu() for more information. * - * @param menu Menu Handle. - * @param time Maximum time to leave menu on the screen. - * @param flags Optional voting flags. - * @return True on success, false if this menu already has a vote session - * in progress. - * @error Invalid Handle. + * @param menu Menu Handle. + * @param time Maximum time to leave menu on the screen. + * @param flags Optional voting flags. + * @return True on success, false if this menu already has a vote session + * in progress. + * @error Invalid Handle. */ stock bool VoteMenuToAll(Handle menu, int time, int flags=0) { int total; int[] players = new int[MaxClients]; - + for (int i=1; i<=MaxClients; i++) { if (!IsClientInGame(i) || IsFakeClient(i)) @@ -795,20 +828,20 @@ stock bool VoteMenuToAll(Handle menu, int time, int flags=0) } players[total++] = i; } - + return VoteMenu(menu, players, total, time, flags); } /** * Callback for when a vote has ended and results are available. * - * @param menu The menu being voted on. - * @param num_votes Number of votes tallied in total. - * @param num_clients Number of clients who could vote. - * @param client_info Array of clients. Use VOTEINFO_CLIENT_ defines. - * @param num_items Number of unique items that were selected. - * @param item_info Array of items, sorted by count. Use VOTEINFO_ITEM - * defines. + * @param menu The menu being voted on. + * @param num_votes Number of votes tallied in total. + * @param num_clients Number of clients who could vote. + * @param client_info Array of clients. Use VOTEINFO_CLIENT_ defines. + * @param num_items Number of unique items that were selected. + * @param item_info Array of items, sorted by count. Use VOTEINFO_ITEM + * defines. */ typeset VoteHandler { @@ -837,9 +870,9 @@ typeset VoteHandler * Sets an advanced vote handling callback. If this callback is set, * MenuAction_VoteEnd will not be called. * - * @param menu Menu Handle. - * @param callback Callback function. - * @error Invalid Handle or callback. + * @param menu Menu Handle. + * @param callback Callback function. + * @error Invalid Handle or callback. */ native void SetVoteResultCallback(Handle menu, VoteHandler callback); @@ -848,113 +881,113 @@ native void SetVoteResultCallback(Handle menu, VoteHandler callback); * a publicly invocable menu. This number is the time remaining until * (last_vote + sm_vote_delay). * - * @return Number of seconds to wait, or 0 for none. + * @return Number of seconds to wait, or 0 for none. */ native int CheckVoteDelay(); /** - * Returns whether a client is in the pool of clients allowed - * to participate in the current vote. This is determined by + * Returns whether a client is in the pool of clients allowed + * to participate in the current vote. This is determined by * the client list passed to VoteMenu(). * - * @param client Client index. - * @return True if client is allowed to vote, false otherwise. - * @error If no vote is in progress or client index is invalid. + * @param client Client index. + * @return True if client is allowed to vote, false otherwise. + * @error If no vote is in progress or client index is invalid. */ native bool IsClientInVotePool(int client); /** * Redraws the current vote menu to a client in the voting pool. * - * @param client Client index. - * @param revotes True to allow revotes, false otherwise. - * @return True on success, false if the client is in the vote pool - * but cannot vote again. - * @error No vote in progress, int client is not in the voting pool, - * or client index is invalid. + * @param client Client index. + * @param revotes True to allow revotes, false otherwise. + * @return True on success, false if the client is in the vote pool + * but cannot vote again. + * @error No vote in progress, int client is not in the voting pool, + * or client index is invalid. */ native bool RedrawClientVoteMenu(int client, bool revotes=true); /** * Returns a style's global Handle. * - * @param style Menu Style. - * @return A Handle, or INVALID_HANDLE if not found or unusable. + * @param style Menu Style. + * @return A Handle, or INVALID_HANDLE if not found or unusable. */ native Handle GetMenuStyleHandle(MenuStyle style); /** - * Creates a MenuPanel from a MenuStyle. Panels are used for drawing raw + * Creates a MenuPanel from a MenuStyle. Panels are used for drawing raw * menus without any extra helper functions. The Handle must be closed * with CloseHandle(). * - * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. - * @return A new MenuPanel Handle. - * @error Invalid Handle other than INVALID_HANDLE. + * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. + * @return A new MenuPanel Handle. + * @error Invalid Handle other than INVALID_HANDLE. */ native Panel CreatePanel(Handle hStyle=INVALID_HANDLE); -/** - * Creates a Menu from a MenuStyle. The Handle must be closed with +/** + * Creates a Menu from a MenuStyle. The Handle must be closed with * CloseHandle(). * - * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. - * @param handler Function which will receive menu actions. - * @param actions Optionally set which actions to receive. Select, - * Cancel, and End will always be received regardless - * of whether they are set or not. They are also - * the only default actions. - * @return A new menu Handle. - * @error Invalid Handle other than INVALID_HANDLE. + * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. + * @param handler Function which will receive menu actions. + * @param actions Optionally set which actions to receive. Select, + * Cancel, and End will always be received regardless + * of whether they are set or not. They are also + * the only default actions. + * @return A new menu Handle. + * @error Invalid Handle other than INVALID_HANDLE. */ native Menu CreateMenuEx(Handle hStyle=INVALID_HANDLE, MenuHandler handler, MenuAction actions=MENU_ACTIONS_DEFAULT); /** * Returns whether a client is viewing a menu. * - * @param client Client index. - * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. - * @return A MenuSource value. - * @error Invalid Handle other than null. + * @param client Client index. + * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. + * @return A MenuSource value. + * @error Invalid Handle other than null. */ native MenuSource GetClientMenu(int client, Handle hStyle=null); -/** +/** * Cancels a menu on a client. This will only affect non-external menus. * - * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. - * @param client Client index. - * @param autoIgnore If true, no menus can be re-drawn on the client during - * the cancellation process. - * @return True if a menu was cancelled, false otherwise. + * @param client Client index. + * @param autoIgnore If true, no menus can be re-drawn on the client during + * the cancellation process. + * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. + * @return True if a menu was cancelled, false otherwise. */ native bool CancelClientMenu(int client, bool autoIgnore=false, Handle hStyle=INVALID_HANDLE); /** * Returns a style's maximum items per page. * - * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. - * @return Maximum items per page. - * @error Invalid Handle other than INVALID_HANDLE. + * @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. + * @return Maximum items per page. + * @error Invalid Handle other than INVALID_HANDLE. */ native int GetMaxPageItems(Handle hStyle=INVALID_HANDLE); /** * Returns a MenuPanel's parent style. * - * @param panel A MenuPanel Handle. - * @return The MenuStyle Handle that created the panel. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @return The MenuStyle Handle that created the panel. + * @error Invalid Handle. */ native Handle GetPanelStyle(Handle panel); /** * Sets the panel's title. * - * @param panel A MenuPanel Handle. - * @param text Text to set as the title. - * @param onlyIfEmpty If true, the title will only be set if no title is set. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @param text Text to set as the title. + * @param onlyIfEmpty If true, the title will only be set if no title is set. + * @error Invalid Handle. */ native void SetPanelTitle(Handle panel, const char[] text, bool onlyIfEmpty=false); @@ -962,24 +995,24 @@ native void SetPanelTitle(Handle panel, const char[] text, bool onlyIfEmpty=fals * Draws an item on a panel. If the item takes up a slot, the position * is returned. * - * @param panel A MenuPanel Handle. - * @param text Display text to use. If not a raw line, - * the style may automatically add color markup. - * No numbering or newlines are needed. - * @param style ITEMDRAW style flags. - * @return A slot position, or 0 if item was a rawline or could not be drawn. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @param text Display text to use. If not a raw line, + * the style may automatically add color markup. + * No numbering or newlines are needed. + * @param style ITEMDRAW style flags. + * @return A slot position, or 0 if item was a rawline or could not be drawn. + * @error Invalid Handle. */ native int DrawPanelItem(Handle panel, const char[] text, int style=ITEMDRAW_DEFAULT); /** * Draws a raw line of text on a panel, without any markup other than a newline. * - * @param panel A MenuPanel Handle, or INVALID_HANDLE if inside a - * MenuAction_DisplayItem callback. - * @param text Display text to use. - * @return True on success, false if raw lines are not supported. - * @error Invalid Handle. + * @param panel A MenuPanel Handle, or INVALID_HANDLE if inside a + * MenuAction_DisplayItem callback. + * @param text Display text to use. + * @return True on success, false if raw lines are not supported. + * @error Invalid Handle. */ native bool DrawPanelText(Handle panel, const char[] text); @@ -987,28 +1020,28 @@ native bool DrawPanelText(Handle panel, const char[] text); * Returns whether or not the given drawing flags are supported by * the menu style. * - * @param panel A MenuPanel Handle. - * @param style ITEMDRAW style flags. - * @return True if item is drawable, false otherwise. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @param style ITEMDRAW style flags. + * @return True if item is drawable, false otherwise. + * @error Invalid Handle. */ native bool CanPanelDrawFlags(Handle panel, int style); /** * Sets the selectable key map of a panel. This is not supported by - * all styles (only by Radio, as of this writing). + * all styles (only by Radio, as of this writing). * - * @param panel A MenuPanel Handle. - * @param keys An integer where each bit N allows key - * N+1 to be selected. If no keys are selectable, - * then key 0 (bit 9) is automatically set. - * @return True if supported, false otherwise. + * @param panel A MenuPanel Handle. + * @param keys An integer where each bit N allows key + * N+1 to be selected. If no keys are selectable, + * then key 0 (bit 9) is automatically set. + * @return True if supported, false otherwise. */ native bool SetPanelKeys(Handle panel, int keys); /** * Sends a panel to a client. Unlike full menus, the handler - * function will only receive the following actions, both of + * function will only receive the following actions, both of * which will have INVALID_HANDLE for a menu, and the client * as param1. * @@ -1017,35 +1050,35 @@ native bool SetPanelKeys(Handle panel, int keys); * * Also, if the menu fails to display, no callbacks will be called. * - * @param panel A MenuPanel Handle. - * @param client A client to draw to. - * @param handler The MenuHandler function to catch actions with. - * @param time Time to hold the menu for. - * @return True on success, false on failure. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @param client A client to draw to. + * @param handler The MenuHandler function to catch actions with. + * @param time Time to hold the menu for. + * @return True on success, false on failure. + * @error Invalid Handle. */ native bool SendPanelToClient(Handle panel, int client, MenuHandler handler, int time); /** - * @brief Returns the amount of text the menu can still hold. If this is - * limit is reached or overflowed, the text is silently truncated. + * @brief Returns the amount of text the menu can still hold. If this is + * limit is reached or overflowed, the text is silently truncated. * * Radio menus: Currently 511 characters (512 bytes). * Valve menus: Currently -1 (no meaning). * - * @param panel A MenuPanel Handle. - * @return Number of characters that the menu can still hold, - * or -1 if there is no known limit. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @return Number of characters that the menu can still hold, + * or -1 if there is no known limit. + * @error Invalid Handle. */ native int GetPanelTextRemaining(Handle panel); /** * @brief Returns the current key position. * - * @param panel A MenuPanel Handle. - * @return Current key position starting at 1. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @return Current key position starting at 1. + * @error Invalid Handle. */ native int GetPanelCurrentKey(Handle panel); @@ -1053,48 +1086,48 @@ native int GetPanelCurrentKey(Handle panel); * @brief Sets the next key position. This cannot be used * to traverse backwards. * - * @param panel A MenuPanel Handle. - * @param key Key that is greater or equal to - * GetPanelCurrentKey(). - * @return True on success, false otherwise. - * @error Invalid Handle. + * @param panel A MenuPanel Handle. + * @param key Key that is greater or equal to + * GetPanelCurrentKey(). + * @return True on success, false otherwise. + * @error Invalid Handle. */ native bool SetPanelCurrentKey(Handle panel, int key); /** * @brief Redraws menu text from inside a MenuAction_DisplayItem callback. - * - * @param text Menu text to draw. - * @return Item position; must be returned via the callback. + * + * @param text Menu text to draw. + * @return Item position; must be returned via the callback. */ native int RedrawMenuItem(const char[] text); /** - * This function is provided for legacy code only. Some older plugins may use - * network messages instead of the panel API. This function wraps the panel - * API for eased portability into the SourceMod menu system. + * This function is provided for legacy code only. Some older plugins may use + * network messages instead of the panel API. This function wraps the panel + * API for eased portability into the SourceMod menu system. * - * This function is only usable with the Radio Menu style. You do not need to - * split up your menu into multiple packets; SourceMod will break the string + * This function is only usable with the Radio Menu style. You do not need to + * split up your menu into multiple packets; SourceMod will break the string * up internally. * - * @param client Client index. - * @param str Full menu string as would be passed over the network. - * @param time Time to hold the menu for. - * @param keys Selectable key bitstring. - * @param handler Optional handler function, with the same rules as - * SendPanelToClient(). - * @return True on success, false on failure. - * @error Invalid client index, or radio menus not supported. + * @param client Client index. + * @param str Full menu string as would be passed over the network. + * @param time Time to hold the menu for. + * @param keys Selectable key bitstring. + * @param handler Optional handler function, with the same rules as + * SendPanelToClient(). + * @return True on success, false on failure. + * @error Invalid client index, or radio menus not supported. */ native bool InternalShowMenu(int client, const char[] str, int time, int keys=-1, MenuHandler handler=INVALID_FUNCTION); /** * Retrieves voting information from MenuAction_VoteEnd. * - * @param param2 Second parameter of MenuAction_VoteEnd. - * @param winningVotes Number of votes received by the winning option. - * @param totalVotes Number of total votes received. + * @param param2 Second parameter of MenuAction_VoteEnd. + * @param winningVotes Number of votes received by the winning option. + * @param totalVotes Number of total votes received. */ stock void GetMenuVoteInfo(int param2, int &winningVotes, int &totalVotes) { @@ -1103,12 +1136,12 @@ stock void GetMenuVoteInfo(int param2, int &winningVotes, int &totalVotes) } /** - * Quick stock to determine whether voting is allowed. This doesn't let you - * fine-tune a reason for not voting, so it's not recommended for lazily + * Quick stock to determine whether voting is allowed. This doesn't let you + * fine-tune a reason for not voting, so it's not recommended for lazily * telling clients that voting isn't allowed. - * - * @return True if voting is allowed, false if voting is in progress - * or the cooldown is active. + * + * @return True if voting is allowed, false if voting is in progress + * or the cooldown is active. */ stock bool IsNewVoteAllowed() { @@ -1116,6 +1149,6 @@ stock bool IsNewVoteAllowed() { return false; } - + return true; } diff --git a/env/include/nextmap.inc b/env/include/nextmap.inc index e61e7b8..1039e25 100644 --- a/env/include/nextmap.inc +++ b/env/include/nextmap.inc @@ -9,7 +9,7 @@ * 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 @@ -31,52 +31,52 @@ */ #if defined _nextmap_included_ - #endinput + #endinput #endif #define _nextmap_included_ /** - * Sets SourceMod's internal nextmap. + * Sets SourceMod's internal nextmap. * Equivalent to changing sm_nextmap but with an added validity check. * - * @param map Next map to set. - * @return True if the nextmap was set, false if map was invalid. + * @param map Next map to set. + * @return True if the nextmap was set, false if map was invalid. */ native bool SetNextMap(const char[] map); /** * Returns SourceMod's internal nextmap. * - * @param map Buffer to store the nextmap name. - * @param maxlen Maximum length of the map buffer. - * @return True if a Map was found and copied, false if no nextmap is set (map will be unchanged). + * @param map Buffer to store the nextmap name. + * @param maxlen Maximum length of the map buffer. + * @return True if a Map was found and copied, false if no nextmap is set (map will be unchanged). */ native bool GetNextMap(char[] map, int maxlen); /** * Changes the current map and records the reason for the change with maphistory * - * @param map Map to change to. - * @param reason Reason for change. + * @param map Map to change to. + * @param reason Reason for change. */ native void ForceChangeLevel(const char[] map, const char[] reason); /** * Gets the current number of maps in the map history * - * @return Number of maps. + * @return Number of maps. */ native int GetMapHistorySize(); /** * Retrieves a map from the map history list. - * - * @param item Item number. Must be 0 or greater and less than GetMapHistorySize(). - * @param map Buffer to store the map name. - * @param mapLen Length of map buffer. - * @param reason Buffer to store the change reason. - * @param reasonLen Length of the reason buffer. - * @param startTime Time the map started. - * @error Invalid item number. + * + * @param item Item number. Must be 0 or greater and less than GetMapHistorySize(). + * @param map Buffer to store the map name. + * @param mapLen Length of map buffer. + * @param reason Buffer to store the change reason. + * @param reasonLen Length of the reason buffer. + * @param startTime Time the map started. + * @error Invalid item number. */ native void GetMapHistory(int item, char[] map, int mapLen, char[] reason, int reasonLen, int &startTime); diff --git a/env/include/profiler.inc b/env/include/profiler.inc index 82c2498..df5b956 100644 --- a/env/include/profiler.inc +++ b/env/include/profiler.inc @@ -1,7 +1,7 @@ /** * vim: set ts=4 : * ============================================================================= - * SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved. + * SourceMod (C)2004-2018 AlliedModders LLC. All rights reserved. * ============================================================================= * * This file is part of the SourceMod/SourcePawn SDK. @@ -38,28 +38,54 @@ /** * ONLY AVAILABLE ON WINDOWS RIGHT NOW K. */ - + +methodmap Profiler < Handle +{ + // Creates a new profile object. The Handle must be freed + // using delete or CloseHandle(). + // + // @return A new Profiler Handle. + public native Profiler(); + + // Starts a cycle for profiling. + public native void Start(); + + // Stops a cycle for profiling. + // + // @error Profiler was never started. + public native void Stop(); + + // Returns the amount of high-precision time in seconds + // that passed during the profiler's last start/stop + // cycle. + // + // @return Time elapsed in seconds. + property float Time { + public native get(); + } +}; + /** * Creates a new profile object. The Handle must be freed - * using CloseHandle(). + * using delete or CloseHandle(). * - * @return Handle to the profiler object. + * @return Handle to the profiler object. */ -native Handle CreateProfiler(); +native Profiler CreateProfiler(); /** * Starts profiling. * - * @param prof Profiling object. - * @error Invalid Handle. + * @param prof Profiling object. + * @error Invalid Handle. */ native void StartProfiling(Handle prof); /** * Stops profiling. * - * @param prof Profiling object. - * @error Invalid Handle or profiling was never started. + * @param prof Profiling object. + * @error Invalid Handle or profiling was never started. */ native void StopProfiling(Handle prof); @@ -68,9 +94,9 @@ native void StopProfiling(Handle prof); * that passed during the profiler's last start/stop * cycle. * - * @param prof Profiling object. - * @return Time elapsed in seconds. - * @error Invalid Handle. + * @param prof Profiling object. + * @return Time elapsed in seconds. + * @error Invalid Handle. */ native float GetProfilerTime(Handle prof); diff --git a/env/include/protobuf.inc b/env/include/protobuf.inc index 9e692b0..80c4337 100644 --- a/env/include/protobuf.inc +++ b/env/include/protobuf.inc @@ -9,7 +9,7 @@ * 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 @@ -29,9 +29,9 @@ * * Version: $Id$ */ - + #if defined _protobuf_included -#endinput + #endinput #endif #define _protobuf_included @@ -40,13 +40,21 @@ methodmap Protobuf < Handle { // Reads an int32, uint32, sint32, fixed32, sfixed32, or enum value from a protobuf message. - // + // // @param field Field name. // @param index Index into repeated field. // @return Integer value read. // @error Non-existent field, or incorrect field type. public native int ReadInt(const char[] field, int index = PB_FIELD_NOT_REPEATED); + // Reads an int64, uint64, sint64, fixed64, sfixed64 from a protobuf message. + // + // @param field Field name. + // @param value Array to represent the large integer (0=High bits, 1=Low bits). + // @param index Index into repeated field. + // @error Non-existent field, or incorrect field type. + public native void ReadInt64(const char[] field, int value[2], int index = PB_FIELD_NOT_REPEATED); + // Reads a float or downcasted double from a protobuf message. // // @param field Field name. @@ -56,7 +64,7 @@ methodmap Protobuf < Handle public native float ReadFloat(const char[] field, int index = PB_FIELD_NOT_REPEATED); // Reads a bool from a protobuf message. - // + // // @param field Field name. // @param index Index into repeated field. // @return Boolean value read. @@ -64,7 +72,7 @@ methodmap Protobuf < Handle public native bool ReadBool(const char[] field, int index = PB_FIELD_NOT_REPEATED); // Reads a string from a protobuf message. - // + // // @param field Field name. // @param buffer Destination string buffer. // @param maxlength Maximum length of output string buffer. @@ -73,7 +81,7 @@ methodmap Protobuf < Handle public native void ReadString(const char[] field, char[] buffer, int maxlength, int index = PB_FIELD_NOT_REPEATED); // Reads an RGBA color value from a protobuf message. - // + // // @param field Field name. // @param buffer Destination color buffer. // @param index Index into repeated field. @@ -89,7 +97,7 @@ methodmap Protobuf < Handle public native void ReadAngle(const char[] field, float buffer[3], int index = PB_FIELD_NOT_REPEATED); // Reads an XYZ vector value from a protobuf message. - // + // // @param pb protobuf handle. // @param field Field name. // @param buffer Destination vector buffer. @@ -109,16 +117,31 @@ methodmap Protobuf < Handle // // @param field Field name. // @return Number of elements in the field. - // @error Non-existent field, or incorrect field type. + // @error Non-existent field, or non-repeated field. public native int GetRepeatedFieldCount(const char[] field); + // Returns whether or not the named, non-repeated field has a value set. + // + // @param field Field name. + // @return True if value has been set, else false. + // @error Non-existent field, or repeated field. + public native bool HasField(const char[] field); + // Sets an int32, uint32, sint32, fixed32, sfixed32, or enum value on a protobuf message. // // @param field Field name. // @param value Integer value to set. // @param index Index into repeated field. // @error Non-existent field, or incorrect field type. - public native int SetInt(const char[] field, int value, int index = PB_FIELD_NOT_REPEATED); + public native void SetInt(const char[] field, int value, int index = PB_FIELD_NOT_REPEATED); + + // Sets an int64, uint64, sint64, fixed64, sfixed64 on a protobuf message. + // + // @param field Field name. + // @param value Large integer value to set (0=High bits, 1=Low bits). + // @param index Index into repeated field. + // @error Non-existent field, or incorrect field type. + public native void SetInt64(const char[] field, int value[2], int index = PB_FIELD_NOT_REPEATED); // Sets a float or double on a protobuf message. // @@ -129,7 +152,7 @@ methodmap Protobuf < Handle public native void SetFloat(const char[] field, float value, int index = PB_FIELD_NOT_REPEATED); // Sets a bool on a protobuf message. - // + // // @param field Field name. // @param value Boolean value to set. // @param index Index into repeated field. @@ -145,7 +168,7 @@ methodmap Protobuf < Handle public native void SetString(const char[] field, const char[] value, int index = PB_FIELD_NOT_REPEATED); // Sets an RGBA color on a protobuf message. - // + // // @param field Field name. // @param color Color value to set. // @param index Index into repeated field. @@ -153,7 +176,7 @@ methodmap Protobuf < Handle public native void SetColor(const char[] field, const int color[4], int index = PB_FIELD_NOT_REPEATED); // Sets an XYZ angle on a protobuf message. - // + // // @param field Field name. // @param angle Angle value to set. // @param index Index into repeated field. @@ -161,7 +184,7 @@ methodmap Protobuf < Handle public native void SetAngle(const char[] field, const float angle[3], int index = PB_FIELD_NOT_REPEATED); // Sets an XYZ vector on a protobuf message. - // + // // @param field Field name. // @param vec Vector value to set. // @param index Index into repeated field. @@ -183,8 +206,15 @@ methodmap Protobuf < Handle // @error Non-existent field, or incorrect field type. public native void AddInt(const char[] field, int value); + // Add an int64, uint64, sint64, fixed64, sfixed64 to a protobuf message repeated field. + // + // @param field Field name. + // @param value Large integer value to add (0=High bits, 1=Low bits). + // @error Non-existent field, or incorrect field type. + public native void AddInt64(const char[] field, int value[2]); + // Add a float or double to a protobuf message repeated field. - // + // // @param field Field name. // @param value Float value to add. // @error Non-existent field, or incorrect field type. @@ -205,14 +235,14 @@ methodmap Protobuf < Handle public native void AddString(const char[] field, const char[] value); // Add an RGBA color to a protobuf message repeated field. - // + // // @param field Field name. // @param color Color value to add. // @error Non-existent field, or incorrect field type. public native void AddColor(const char[] field, const int color[4]); // Add an XYZ angle to a protobuf message repeated field. - // + // // @param field Field name. // @param angle Angle value to add. // @error Non-existent field, or incorrect field type. @@ -266,307 +296,307 @@ methodmap Protobuf < Handle /** * Reads an int32, uint32, sint32, fixed32, sfixed32, or enum value from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param index Index into repeated field. - * @return Integer value read. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param index Index into repeated field. + * @return Integer value read. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native int PbReadInt(Handle pb, const char[] field, int index = PB_FIELD_NOT_REPEATED); /** * Reads a float or downcasted double from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param index Index into repeated field. - * @return Float value read. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param index Index into repeated field. + * @return Float value read. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native float PbReadFloat(Handle pb, const char[] field, int index = PB_FIELD_NOT_REPEATED); /** * Reads a bool from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param index Index into repeated field. - * @return Boolean value read. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param index Index into repeated field. + * @return Boolean value read. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native bool PbReadBool(Handle pb, const char[] field, int index = PB_FIELD_NOT_REPEATED); /** * Reads a string from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param buffer Destination string buffer. + * @param maxlength Maximum length of output string buffer. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbReadString(Handle pb, const char[] field, char[] buffer, int maxlength, int index = PB_FIELD_NOT_REPEATED); /** * Reads an RGBA color value from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param buffer Destination color buffer. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param buffer Destination color buffer. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbReadColor(Handle pb, const char[] field, int buffer[4], int index = PB_FIELD_NOT_REPEATED); /** * Reads an XYZ angle value from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param buffer Destination angle buffer. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param buffer Destination angle buffer. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbReadAngle(Handle pb, const char[] field, float buffer[3], int index = PB_FIELD_NOT_REPEATED); /** * Reads an XYZ vector value from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param buffer Destination vector buffer. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param buffer Destination vector buffer. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbReadVector(Handle pb, const char[] field, float buffer[3], int index = PB_FIELD_NOT_REPEATED); /** * Reads an XY vector value from a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param buffer Destination vector buffer. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param buffer Destination vector buffer. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbReadVector2D(Handle pb, const char[] field, float buffer[2], int index = PB_FIELD_NOT_REPEATED); /** * Gets the number of elements in a repeated field of a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @return Number of elements in the field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @return Number of elements in the field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native int PbGetRepeatedFieldCount(Handle pb, const char[] field); /** * Sets an int32, uint32, sint32, fixed32, sfixed32, or enum value on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param value Integer value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value Integer value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetInt(Handle pb, const char[] field, int value, int index = PB_FIELD_NOT_REPEATED); /** * Sets a float or double on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param value Float value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value Float value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetFloat(Handle pb, const char[] field, float value, int index = PB_FIELD_NOT_REPEATED); /** * Sets a bool on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param value Boolean value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value Boolean value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetBool(Handle pb, const char[] field, bool value, int index = PB_FIELD_NOT_REPEATED); /** * Sets a string on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param value String value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value String value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetString(Handle pb, const char[] field, const char[] value, int index = PB_FIELD_NOT_REPEATED); /** * Sets an RGBA color on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param color Color value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param color Color value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetColor(Handle pb, const char[] field, const int color[4], int index = PB_FIELD_NOT_REPEATED); /** * Sets an XYZ angle on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param angle Angle value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param angle Angle value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetAngle(Handle pb, const char[] field, const float angle[3], int index = PB_FIELD_NOT_REPEATED); /** * Sets an XYZ vector on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param vec Vector value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param vec Vector value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetVector(Handle pb, const char[] field, const float vec[3], int index = PB_FIELD_NOT_REPEATED); /** * Sets an XY vector on a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @param vec Vector value to set. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param vec Vector value to set. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbSetVector2D(Handle pb, const char[] field, const float vec[2], int index = PB_FIELD_NOT_REPEATED); /** * Add an int32, uint32, sint32, fixed32, sfixed32, or enum value to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param value Integer value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value Integer value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddInt(Handle pb, const char[] field, int value); /** * Add a float or double to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param value Float value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value Float value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddFloat(Handle pb, const char[] field, float value); /** * Add a bool to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param value Boolean value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value Boolean value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddBool(Handle pb, const char[] field, bool value); /** * Add a string to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param value String value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param value String value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddString(Handle pb, const char[] field, const char[] value); /** * Add an RGBA color to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param color Color value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param color Color value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddColor(Handle pb, const char[] field, const int color[4]); /** * Add an XYZ angle to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param angle Angle value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param angle Angle value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddAngle(Handle pb, const char[] field, const float angle[3]); /** * Add an XYZ vector to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param vec Vector value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param vec Vector value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddVector(Handle pb, const char[] field, const float vec[3]); /** * Add an XY vector to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param vec Vector value to add. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + * @param pb protobuf handle. + * @param field Field name. + * @param vec Vector value to add. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. */ native void PbAddVector2D(Handle pb, const char[] field, const float vec[2]); /** * Removes a value by index from a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param index Index into repeated field. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. - */ + * @param pb protobuf handle. + * @param field Field name. + * @param index Index into repeated field. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + */ native void PbRemoveRepeatedFieldValue(Handle pb, const char[] field, int index); /** * Retrieve a handle to an embedded protobuf message in a protobuf message. * - * @param pb protobuf handle. - * @param field Field name. - * @return protobuf handle to embedded message. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. - */ + * @param pb protobuf handle. + * @param field Field name. + * @return protobuf handle to embedded message. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + */ native Handle PbReadMessage(Handle pb, const char[] field); /** * Retrieve a handle to an embedded protobuf message in a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @param index Index in the repeated field. - * @return protobuf handle to embedded message. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. - */ + * @param pb protobuf handle. + * @param field Field name. + * @param index Index in the repeated field. + * @return protobuf handle to embedded message. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + */ native Handle PbReadRepeatedMessage(Handle pb, const char[] field, int index); /** * Adds an embedded protobuf message to a protobuf message repeated field. * - * @param pb protobuf handle. - * @param field Field name. - * @return protobuf handle to added, embedded message. - * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. - */ + * @param pb protobuf handle. + * @param field Field name. + * @return protobuf handle to added, embedded message. + * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. + */ native Handle PbAddMessage(Handle pb, const char[] field); diff --git a/env/include/regex.inc b/env/include/regex.inc index d926216..88ae11e 100644 --- a/env/include/regex.inc +++ b/env/include/regex.inc @@ -9,7 +9,7 @@ * 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 @@ -31,12 +31,12 @@ */ #if defined _regex_included - #endinput + #endinput #endif #define _regex_included /** - * @section Flags for compiling regex expressions. These come directly from the + * @section Flags for compiling regex expressions. These come directly from the * pcre library and can be used in MatchRegex and CompileRegex. */ #define PCRE_CASELESS 0x00000001 /* Ignore Case */ @@ -44,12 +44,12 @@ #define PCRE_DOTALL 0x00000004 /* Single line (affects . so that it matches any character, even new line characters). */ #define PCRE_EXTENDED 0x00000008 /* Pattern extension (ignore whitespace and # comments). */ #define PCRE_ANCHORED 0x00000010 /* Force pattern anchoring. */ -#define PCRE_DOLLAR_ENDONLY 0x00000020 /* $ not to match newline at end. */ +#define PCRE_DOLLAR_ENDONLY 0x00000020 /* $ not to match newline at end. */ #define PCRE_UNGREEDY 0x00000200 /* Invert greediness of quantifiers */ -#define PCRE_NOTEMPTY 0x00000400 /* An empty string is not a valid match. */ +#define PCRE_NOTEMPTY 0x00000400 /* An empty string is not a valid match. */ #define PCRE_UTF8 0x00000800 /* Use UTF-8 Chars */ #define PCRE_NO_UTF8_CHECK 0x00002000 /* Do not check the pattern for UTF-8 validity (only relevant if PCRE_UTF8 is set) */ -#define PCRE_UCP 0x20000000 /* Use Unicode properties for \ed, \ew, etc. */ +#define PCRE_UCP 0x20000000 /* Use Unicode properties for \ed, \ew, etc. */ /** @@ -57,8 +57,26 @@ */ enum RegexError { - REGEX_ERROR_NONE = 0, /* No error */ - REGEX_ERROR_NOMATCH = -1, /* No match was found */ + REGEX_ERROR_NONE = 0, /* No error */ + + REGEX_ERROR_ASSERT = 1, /* internal error ? */ + REGEX_ERROR_BADBR, /* invalid repeat counts in {} */ + REGEX_ERROR_BADPAT, /* pattern error */ + REGEX_ERROR_BADRPT, /* ? * + invalid */ + REGEX_ERROR_EBRACE, /* unbalanced {} */ + REGEX_ERROR_EBRACK, /* unbalanced [] */ + REGEX_ERROR_ECOLLATE, /* collation error - not relevant */ + REGEX_ERROR_ECTYPE, /* bad class */ + REGEX_ERROR_EESCAPE, /* bad escape sequence */ + REGEX_ERROR_EMPTY, /* empty expression */ + REGEX_ERROR_EPAREN, /* unbalanced () */ + REGEX_ERROR_ERANGE, /* bad range inside [] */ + REGEX_ERROR_ESIZE, /* expression too big */ + REGEX_ERROR_ESPACE, /* failed to get memory */ + REGEX_ERROR_ESUBREG, /* bad back reference */ + REGEX_ERROR_INVARG, /* bad argument */ + + REGEX_ERROR_NOMATCH = -1, /* No match was found */ REGEX_ERROR_NULL = -2, REGEX_ERROR_BADOPTION = -3, REGEX_ERROR_BADMAGIC = -4, @@ -66,7 +84,7 @@ enum RegexError REGEX_ERROR_NOMEMORY = -6, REGEX_ERROR_NOSUBSTRING = -7, REGEX_ERROR_MATCHLIMIT = -8, - REGEX_ERROR_CALLOUT = -9, /* Never used by PCRE itself */ + REGEX_ERROR_CALLOUT = -9, /* Never used by PCRE itself */ REGEX_ERROR_BADUTF8 = -10, REGEX_ERROR_BADUTF8_OFFSET = -11, REGEX_ERROR_PARTIAL = -12, @@ -79,7 +97,7 @@ enum RegexError REGEX_ERROR_DFA_WSSIZE = -19, REGEX_ERROR_DFA_RECURSE = -20, REGEX_ERROR_RECURSIONLIMIT = -21, - REGEX_ERROR_NULLWSLIMIT = -22, /* No longer actually used */ + REGEX_ERROR_NULLWSLIMIT = -22, /* No longer actually used */ REGEX_ERROR_BADNEWLINE = -23, REGEX_ERROR_BADOFFSET = -24, REGEX_ERROR_SHORTUTF8 = -25, @@ -89,7 +107,7 @@ enum RegexError REGEX_ERROR_BADENDIANNESS = -29, REGEX_ERROR_DFA_BADRESTART = -30, REGEX_ERROR_JIT_BADOPTION = -31, - REGEX_ERROR_BADLENGTH = -32, + REGEX_ERROR_BADLENGTH = -32 }; // Regular expression objects are used to match or decompose strings based on @@ -97,102 +115,139 @@ enum RegexError methodmap Regex < Handle { // Compile a regular expression. - // - // @param pattern The regular expression pattern. - // @param flags General flags for the regular expression. - // @param error Error message encountered, if applicable. - // @param maxLen Maximum string length of the error buffer. - // @param errcode Regex type error code encountered, if applicable. + // + // @param pattern The regular expression pattern. + // @param flags General flags for the regular expression. + // @param error Error message encountered, if applicable. + // @param maxLen Maximum string length of the error buffer. + // @param errcode Regex type error code encountered, if applicable. public native Regex(const char[] pattern, int flags = 0, char[] error="", int maxLen = 0, RegexError &errcode = REGEX_ERROR_NONE); // Matches a string against a pre-compiled regular expression pattern. - // - // @param str The string to check. - // @param regex Regex Handle from CompileRegex() - // @param ret Error code, if applicable. - // @return Number of substrings found or -1 on failure. - // - // @note Use the regex handle passed to this function to extract - // matches with GetRegexSubString(). - public native int Match(const char[] str, RegexError &ret = REGEX_ERROR_NONE); + // + // @param str The string to check. + // @param ret Error code, if applicable. + // @param offset Offset in the string to start searching from. MatchOffset returns the offset of the match. + // @return Number of captures found or -1 on failure. + // + // @note Use the regex handle passed to this function to extract + // matches with GetSubString(). + public native int Match(const char[] str, RegexError &ret = REGEX_ERROR_NONE, int offset = 0); + + // Gets all matches from a string against a pre-compiled regular expression pattern. + // + // @param str The string to check. + // @param ret Error code, if applicable. + // @return Number of matches found or -1 on failure. + // + // @note Use GetSubString() and loop from 0 -> totalmatches - 1. + public native int MatchAll(const char[] str, RegexError &ret = REGEX_ERROR_NONE); // Returns a matched substring from a regex handle. - // - // Substring ids start at 0 and end at substrings-1, where substrings is the - // number returned by Regex.Match. // - // @param regex The regex handle to extract data from. - // @param str_id The index of the expression to get - starts at 0, and ends at substrings - 1. - // @param buffer The buffer to set to the matching substring. - // @param maxlen The maximum string length of the buffer. - // @return True if a substring was found, False on fail/error - public native bool GetSubString(int str_id, char[] buffer, int maxlen); + // Substring ids start at 0 and end at captures-1, where captures is the + // number returned by Regex.Match or Regex.CaptureCount. + // + // @param str_id The index of the expression to get - starts at 0, and ends at captures - 1. + // @param buffer The buffer to set to the matching substring. + // @param maxlen The maximum string length of the buffer. + // @param match Match to get the captures for - starts at 0, and ends at MatchCount() -1 + // @return True if a substring was found, False on fail/error + // + // @note str_id = 0 is the full captured string, anything else is the capture group index. + // if Regex.Match is used match can only be 0 + public native bool GetSubString(int str_id, char[] buffer, int maxlen, int match = 0); + + // Returns number of matches + // + // When using Match this is always 1 or 0 (unless an error occured) + // @return Total number of matches found. + public native int MatchCount(); + + // Returns number of captures for a match + // + // @param match Match to get the number of captures for. Match starts at 0, and ends at MatchCount() -1 + // @return Number of captures in the match. + // + // @note Use GetSubString() and loop from 1 -> captures -1 for str_id to get all captures + public native int CaptureCount(int match = 0); + + // Returns the string offset of a match. + // + // @param match Match to get the offset of. Match starts at 0, and ends at MatchCount() -1 + // @return Offset of the match in the string. + public native int MatchOffset(int match = 0); }; /** - * Precompile a regular expression. Use this if you intend on using the + * Precompile a regular expression. Use this if you intend on using the * same expression multiple times. Pass the regex handle returned here to * MatchRegex to check for matches. * - * @param pattern The regular expression pattern. - * @param flags General flags for the regular expression. - * @param error Error message encountered, if applicable. - * @param maxLen Maximum string length of the error buffer. - * @param errcode Regex type error code encountered, if applicable. - * @return Valid regex handle on success, INVALID_HANDLE on failure. + * @param pattern The regular expression pattern. + * @param flags General flags for the regular expression. + * @param error Error message encountered, if applicable. + * @param maxLen Maximum string length of the error buffer. + * @param errcode Regex type error code encountered, if applicable. + * @return Valid regex handle on success, INVALID_HANDLE on failure. */ native Regex CompileRegex(const char[] pattern, int flags = 0, char[] error="", int maxLen = 0, RegexError &errcode = REGEX_ERROR_NONE); /** * Matches a string against a pre-compiled regular expression pattern. * - * @param str The string to check. - * @param regex Regex Handle from CompileRegex() - * @param ret Error code, if applicable. - * @return Number of substrings found or -1 on failure. + * @param regex Regex Handle from CompileRegex() + * @param str The string to check. + * @param ret Error code, if applicable. + * @return Number of captures found or -1 on failure. * - * @note Use the regex handle passed to this function to extract - * matches with GetRegexSubString(). + * @note Use the regex handle passed to this function to extract + * matches with GetRegexSubString(). */ native int MatchRegex(Handle regex, const char[] str, RegexError &ret = REGEX_ERROR_NONE); /** * Returns a matched substring from a regex handle. - * Substring ids start at 0 and end at substrings-1, where substrings is the number returned - * by MatchRegex + * Substring ids start at 0 and end at captures-1, where captures is the number returned + * by MatchRegex. + * + * @param regex The regex handle to extract data from. + * @param str_id The index of the expression to get - starts at 0, and ends at captures - 1. + * @param buffer The buffer to set to the matching substring. + * @param maxlen The maximum string length of the buffer. + * @return True if a substring was found, False on fail/error + * + * @note str_id = 0 is the full captured string, anything else is the capture group index. * - * @param regex The regex handle to extract data from. - * @param str_id The index of the expression to get - starts at 0, and ends at substrings - 1. - * @param buffer The buffer to set to the matching substring. - * @param maxlen The maximum string length of the buffer. - * @return True if a substring was found, False on fail/error */ native bool GetRegexSubString(Handle regex, int str_id, char[] buffer, int maxlen); /** * Matches a string against a regular expression pattern. * - * @note If you intend on using the same regular expression pattern - * multiple times, consider using CompileRegex and MatchRegex - * instead of making this function reparse the expression each time. + * @note If you intend on using the same regular expression pattern + * multiple times, consider using CompileRegex and MatchRegex + * instead of making this function reparse the expression each time. * - * @param str The string to check. - * @param pattern The regular expression pattern. - * @param flags General flags for the regular expression. - * @param error Error message, if applicable. - * @param maxLen Maximum length of the error buffer. - * @return Number of substrings found or -1 on failure. + * @param str The string to check. + * @param pattern The regular expression pattern. + * @param flags General flags for the regular expression. + * @param error Error message, if applicable. + * @param maxLen Maximum length of the error buffer. + * @return Number of substrings found or -1 on failure. */ stock int SimpleRegexMatch(const char[] str, const char[] pattern, int flags = 0, char[] error="", int maxLen = 0) { Regex regex = new Regex(pattern, flags, error, maxLen); if (!regex) - return -1; - + { + return -1; + } + int substrings = regex.Match(str); delete regex; - return substrings; + return substrings; } /** @@ -202,7 +257,7 @@ stock int SimpleRegexMatch(const char[] str, const char[] pattern, int flags = 0 /** * Do not edit below this line! */ -public Extension __ext_regex = +public Extension __ext_regex = { name = "Regex Extension", file = "regex.ext", @@ -217,3 +272,19 @@ public Extension __ext_regex = required = 0, #endif }; + +#if !defined REQUIRE_EXTENSIONS +public void __ext_regex_SetNTVOptional() +{ + MarkNativeAsOptional("CompileRegex"); + MarkNativeAsOptional("MatchRegex"); + MarkNativeAsOptional("GetRegexSubString"); + MarkNativeAsOptional("Regex.Regex"); + MarkNativeAsOptional("Regex.Match"); + MarkNativeAsOptional("Regex.MatchAll"); + MarkNativeAsOptional("Regex.GetSubString"); + MarkNativeAsOptional("Regex.MatchCount"); + MarkNativeAsOptional("Regex.CaptureCount"); + MarkNativeAsOptional("Regex.MatchOffset"); +} +#endif diff --git a/env/include/sdkhooks.inc b/env/include/sdkhooks.inc index f58c128..07c8d9c 100644 --- a/env/include/sdkhooks.inc +++ b/env/include/sdkhooks.inc @@ -9,7 +9,7 @@ * 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 @@ -35,45 +35,70 @@ // this is obviously _not_ a robust check, but it will solve most conflict and is clean #if !defined DMG_GENERIC -#define DMG_GENERIC 0 /**< generic damage was done */ -#define DMG_CRUSH (1 << 0) /**< crushed by falling or moving object. - NOTE: It's assumed crush damage is occurring as a result of physics collision, so no extra physics force is generated by crush damage. - DON'T use DMG_CRUSH when damaging entities unless it's the result of a physics collision. You probably want DMG_CLUB instead. */ -#define DMG_BULLET (1 << 1) /**< shot */ -#define DMG_SLASH (1 << 2) /**< cut, clawed, stabbed */ -#define DMG_BURN (1 << 3) /**< heat burned */ -#define DMG_VEHICLE (1 << 4) /**< hit by a vehicle */ -#define DMG_FALL (1 << 5) /**< fell too far */ -#define DMG_BLAST (1 << 6) /**< explosive blast damage */ -#define DMG_CLUB (1 << 7) /**< crowbar, punch, headbutt */ -#define DMG_SHOCK (1 << 8) /**< electric shock */ -#define DMG_SONIC (1 << 9) /**< sound pulse shockwave */ -#define DMG_ENERGYBEAM (1 << 10) /**< laser or other high energy beam */ -#define DMG_PREVENT_PHYSICS_FORCE (1 << 11) /**< Prevent a physics force */ -#define DMG_NEVERGIB (1 << 12) /**< with this bit OR'd in, no damage type will be able to gib victims upon death */ -#define DMG_ALWAYSGIB (1 << 13) /**< with this bit OR'd in, any damage type can be made to gib victims upon death. */ -#define DMG_DROWN (1 << 14) /**< Drowning */ -#define DMG_PARALYZE (1 << 15) /**< slows affected creature down */ -#define DMG_NERVEGAS (1 << 16) /**< nerve toxins, very bad */ -#define DMG_POISON (1 << 17) /**< blood poisoning - heals over time like drowning damage */ -#define DMG_RADIATION (1 << 18) /**< radiation exposure */ -#define DMG_DROWNRECOVER (1 << 19) /**< drowning recovery */ -#define DMG_ACID (1 << 20) /**< toxic chemicals or acid burns */ -#define DMG_SLOWBURN (1 << 21) /**< in an oven */ -#define DMG_REMOVENORAGDOLL (1 << 22) /**< with this bit OR'd in, no ragdoll will be created, and the target will be quietly removed. - use this to kill an entity that you've already got a server-side ragdoll for */ -#define DMG_PHYSGUN (1 << 23) /**< Hit by manipulator. Usually doesn't do any damage. */ -#define DMG_PLASMA (1 << 24) /**< Shot by Cremator */ -#define DMG_AIRBOAT (1 << 25) /**< Hit by the airboat's gun */ -#define DMG_DISSOLVE (1 << 26) /**< Dissolving! */ -#define DMG_BLAST_SURFACE (1 << 27) /**< A blast on the surface of water that cannot harm things underwater */ -#define DMG_DIRECT (1 << 28) -#define DMG_BUCKSHOT (1 << 29) /**< not quite a bullet. Little, rounder, different. */ +#define DMG_GENERIC 0 /**< generic damage was done */ +#define DMG_CRUSH (1 << 0) /**< crushed by falling or moving object. + NOTE: It's assumed crush damage is occurring as a result of physics collision, + so no extra physics force is generated by crush damage. + DON'T use DMG_CRUSH when damaging entities unless it's the result of a physics + collision. You probably want DMG_CLUB instead. */ +#define DMG_BULLET (1 << 1) /**< shot */ +#define DMG_SLASH (1 << 2) /**< cut, clawed, stabbed */ +#define DMG_BURN (1 << 3) /**< heat burned */ +#define DMG_VEHICLE (1 << 4) /**< hit by a vehicle */ +#define DMG_FALL (1 << 5) /**< fell too far */ +#define DMG_BLAST (1 << 6) /**< explosive blast damage */ +#define DMG_CLUB (1 << 7) /**< crowbar, punch, headbutt */ +#define DMG_SHOCK (1 << 8) /**< electric shock */ +#define DMG_SONIC (1 << 9) /**< sound pulse shockwave */ +#define DMG_ENERGYBEAM (1 << 10) /**< laser or other high energy beam */ +#define DMG_PREVENT_PHYSICS_FORCE (1 << 11) /**< Prevent a physics force */ +#define DMG_NEVERGIB (1 << 12) /**< with this bit OR'd in, no damage type will be able to gib victims upon death */ +#define DMG_ALWAYSGIB (1 << 13) /**< with this bit OR'd in, any damage type can be made to gib victims upon death. */ +#define DMG_DROWN (1 << 14) /**< Drowning */ +#define DMG_PARALYZE (1 << 15) /**< slows affected creature down */ +#define DMG_NERVEGAS (1 << 16) /**< nerve toxins, very bad */ +#define DMG_POISON (1 << 17) /**< blood poisoning - heals over time like drowning damage */ +#define DMG_RADIATION (1 << 18) /**< radiation exposure */ +#define DMG_DROWNRECOVER (1 << 19) /**< drowning recovery */ +#define DMG_ACID (1 << 20) /**< toxic chemicals or acid burns */ +#define DMG_SLOWBURN (1 << 21) /**< in an oven */ +#define DMG_REMOVENORAGDOLL (1 << 22) /**< with this bit OR'd in, no ragdoll will be created, and the target will be quietly removed. + use this to kill an entity that you've already got a server-side ragdoll for */ +#define DMG_PHYSGUN (1 << 23) /**< Hit by manipulator. Usually doesn't do any damage. */ +#define DMG_PLASMA (1 << 24) /**< Shot by Cremator */ +#define DMG_AIRBOAT (1 << 25) /**< Hit by the airboat's gun */ +#define DMG_DISSOLVE (1 << 26) /**< Dissolving! */ +#define DMG_BLAST_SURFACE (1 << 27) /**< A blast on the surface of water that cannot harm things underwater */ +#define DMG_DIRECT (1 << 28) +#define DMG_BUCKSHOT (1 << 29) /**< not quite a bullet. Little, rounder, different. */ #endif #if !defined DMG_CRIT - // TF2 crits and minicrits - #define DMG_CRIT DMG_ACID + #define DMG_CRIT DMG_ACID /**< TF2 crits and minicrits */ +#endif + +#if !defined DMG_RADIUS_MAX + #define DMG_RADIUS_MAX DMG_ENERGYBEAM /**< No damage falloff */ +#endif + +#if !defined DMG_NOCLOSEDISTANCEMOD + #define DMG_NOCLOSEDISTANCEMOD DMG_POISON /**< Don't do damage falloff too close */ +#endif + +#if !defined DMG_HALF_FALLOFF + #define DMG_HALF_FALLOFF DMG_RADIATION /**< 50% damage falloff */ +#endif + +#if !defined DMG_USEDISTANCEMOD + #define DMG_USEDISTANCEMOD DMG_SLOWBURN /**< Do damage falloff */ +#endif + +#if !defined DMG_IGNITE + #define DMG_IGNITE DMG_PLASMA /**< Ignite victim */ +#endif + +#if !defined DMG_USE_HITLOCATIONS + #define DMG_USE_HITLOCATIONS DMG_AIRBOAT /**< Do hit location damage (Like the sniperrifle and ambassador) */ #endif enum SDKHookType @@ -121,7 +146,7 @@ enum SDKHookType SDKHook_BlockedPost, SDKHook_OnTakeDamageAlive, SDKHook_OnTakeDamageAlivePost, - SDKHook_CanBeAutobalanced, + SDKHook_CanBeAutobalanced }; /* @@ -129,70 +154,70 @@ enum SDKHookType SDKHook_Blocked, SDKHook_BlockedPost, - + SDKHook_CanBeAutobalanced, - + SDKHook_EndTouch, SDKHook_EndTouchPost, - + SDKHook_FireBulletsPost, - + SDKHook_GetMaxHealth, (ep2v and later) - + SDKHook_GroundEntChangedPost, - + SDKHook_OnTakeDamage, SDKHook_OnTakeDamagePost, - + SDKHook_OnTakeDamageAlive, SDKHook_OnTakeDamageAlivePost, - + SDKHook_PreThink, SDKHook_PreThinkPost, - + SDKHook_PostThink, SDKHook_PostThinkPost, - + SDKHook_Reload, SDKHook_ReloadPost, - + SDKHook_SetTransmit, - + SDKHook_ShouldCollide, - + SDKHook_Spawn, SDKHook_SpawnPost, - + SDKHook_StartTouch, SDKHook_StartTouchPost, - + SDKHook_Think, SDKHook_ThinkPost, - + SDKHook_Touch, SDKHook_TouchPost, - + SDKHook_TraceAttack, SDKHook_TraceAttackPost, - + SDKHook_Use, SDKHook_UsePost, - + SDKHook_VPhysicsUpdate, SDKHook_VPhysicsUpdatePost, - + SDKHook_WeaponCanSwitchTo, SDKHook_WeaponCanSwitchToPost, - + SDKHook_WeaponCanUse, SDKHook_WeaponCanUsePost, - + SDKHook_WeaponDrop, SDKHook_WeaponDropPost, - + SDKHook_WeaponEquip, SDKHook_WeaponEquipPost, - + SDKHook_WeaponSwitch, SDKHook_WeaponSwitchPost */ @@ -210,47 +235,47 @@ typeset SDKHookCB // PreThink/Post // PostThink/Post function void (int client); - + // Spawn function Action (int entity); - + // GroundEntChanged // SpawnPost // Think/Post // VPhysicsUpdate/Post function void (int entity); - + // EndTouch // StartTouch // Touch // Blocked function Action (int entity, int other); - + // EndTouchPost // StartTouchPost // TouchPost function void (int entity, int other); - + // SetTransmit function Action (int entity, int client); - + // WeaponCanSwitchTo // WeaponCanUse // WeaponDrop // WeaponEquip // WeaponSwitch function Action (int client, int weapon); - + // WeaponCanSwitchToPost // WeaponCanUsePost // WeaponDropPost // WeaponEquipPost // WeaponSwitchPost function void (int client, int weapon); - + // GetMaxHealth (ep2v and later) function Action (int entity, int &maxhealth); - + // OnTakeDamage // OnTakeDamageAlive // Note: The weapon parameter is not used by all games and damage sources. @@ -263,131 +288,139 @@ typeset SDKHookCB // DON'T attempt to access 'damagecustom' var if feature status != available function Action (int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom); - + // OnTakeDamagePost // OnTakeDamageAlivePost function void (int victim, int attacker, int inflictor, float damage, int damagetype); function void (int victim, int attacker, int inflictor, float damage, int damagetype, int weapon, const float damageForce[3], const float damagePosition[3]); - function void (int victim, int attacker, int inflictor, float damage, int damagetype, int weapon, + function void (int victim, int attacker, int inflictor, float damage, int damagetype, int weapon, const float damageForce[3], const float damagePosition[3], int damagecustom); - + // FireBulletsPost function void (int client, int shots, const char[] weaponname); - + // TraceAttack function Action (int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &ammotype, int hitbox, int hitgroup); - + // TraceAttackPost function void (int victim, int attacker, int inflictor, float damage, int damagetype, int ammotype, int hitbox, int hitgroup); - + // ShouldCollide function bool (int entity, int collisiongroup, int contentsmask, bool originalResult); - + // Use function Action (int entity, int activator, int caller, UseType type, float value); - + // UsePost function void (int entity, int activator, int caller, UseType type, float value); - + // Reload function Action (int weapon); - + // Reload post function void (int weapon, bool bSuccessful); - + // CanBeAutobalanced function bool (int client, bool origRet); }; /** - * @brief When an entity is created + * When an entity is created * - * @param entity Entity index - * @param classname Class name + * @param entity Entity index + * @param classname Class name */ forward void OnEntityCreated(int entity, const char[] classname); /** - * @brief When an entity is destroyed + * When an entity is spawned * - * @param entity Entity index + * @param entity Entity index + * @param classname Class name + */ +forward void OnEntitySpawned(int entity, const char[] classname); + +/** + * When an entity is destroyed + * + * @param entity Entity index */ forward void OnEntityDestroyed(int entity); /** - * @brief When the game description is retrieved + * When the game description is retrieved * - * @note Not supported on ep2v. + * @note Not supported on ep2v. * - * @param gameDesc Game description - * @return Plugin_Changed if gameDesc has been edited, else no change. + * @param gameDesc Game description + * @return Plugin_Changed if gameDesc has been edited, else no change. */ forward Action OnGetGameDescription(char gameDesc[64]); /** - * @brief When the level is initialized + * When the level is initialized * - * @param mapName Name of the map - * @param mapEntities Entities of the map - * @return Plugin_Changed if mapEntities has been edited, else no change. + * @param mapName Name of the map + * @param mapEntities Entities of the map + * @return Plugin_Changed if mapEntities has been edited, else no change. */ forward Action OnLevelInit(const char[] mapName, char mapEntities[2097152]); /** - * @brief Hooks an entity + * Hooks an entity * - * @param entity Entity index - * @param type Type of function to hook - * @param callback Function to call when hook is called + * @param entity Entity index + * @param type Type of function to hook + * @param callback Function to call when hook is called */ native void SDKHook(int entity, SDKHookType type, SDKHookCB callback); /** - * @brief Hooks an entity + * Hooks an entity * - * @param entity Entity index - * @param type Type of function to hook - * @param callback Function to call when hook is called - * @return bool Hook Successful + * @param entity Entity index + * @param type Type of function to hook + * @param callback Function to call when hook is called + * @return Hook Successful */ native bool SDKHookEx(int entity, SDKHookType type, SDKHookCB callback); /** - * @brief Unhooks an entity + * Unhooks an entity * - * @param entity Entity index - * @param type Type of function to unhook - * @param callback Callback function to unhook + * @param entity Entity index + * @param type Type of function to unhook + * @param callback Callback function to unhook */ native void SDKUnhook(int entity, SDKHookType type, SDKHookCB callback); /** - * @brief Applies damage to an entity + * Applies damage to an entity * * @note Force application is dependent on game and damage type(s) * - * @param entity Entity index taking damage - * @param inflictor Inflictor entity index - * @param attacker Attacker entity index - * @param damage Amount of damage - * @param damageType Bitfield of damage types - * @param weapon Weapon index (orangebox and later) or -1 for unspecified - * @param damageForce Velocity of damage force - * @param damagePosition Origin of damage + * @param entity Entity index taking damage + * @param inflictor Inflictor entity index + * @param attacker Attacker entity index + * @param damage Amount of damage + * @param damageType Bitfield of damage types + * @param weapon Weapon index (orangebox and later) or -1 for unspecified + * @param damageForce Velocity of damage force + * @param damagePosition Origin of damage */ native void SDKHooks_TakeDamage(int entity, int inflictor, int attacker, float damage, int damageType=DMG_GENERIC, int weapon=-1, const float damageForce[3]=NULL_VECTOR, const float damagePosition[3]=NULL_VECTOR); /** - * @brief Forces a client to drop the specified weapon + * Forces a client to drop the specified weapon * - * @param client Client index. - * @param weapon Weapon entity index. - * @param vecTarget Location to toss weapon to, or NULL_VECTOR for default. - * @param vecVelocity Velocity at which to toss weapon, or NULL_VECTOR for default. - * @error Invalid client or weapon entity, weapon not owned by client. + * @param client Client index. + * @param weapon Weapon entity index. + * @param vecTarget Location to toss weapon to, or NULL_VECTOR for default. + * @param vecVelocity Velocity at which to toss weapon, or NULL_VECTOR for default. + * @error Invalid client or weapon entity, weapon not owned by client. */ native void SDKHooks_DropWeapon(int client, int weapon, const float vecTarget[3]=NULL_VECTOR, const float vecVelocity[3]=NULL_VECTOR); @@ -395,7 +428,7 @@ native void SDKHooks_DropWeapon(int client, int weapon, const float vecTarget[3] /** * Do not edit below this line! */ -public Extension __ext_sdkhooks = +public Extension __ext_sdkhooks = { name = "SDKHooks", file = "sdkhooks.ext", diff --git a/env/include/sdktools.inc b/env/include/sdktools.inc index 6a4d961..e5dffba 100644 --- a/env/include/sdktools.inc +++ b/env/include/sdktools.inc @@ -1,7 +1,7 @@ /** * vim: set ts=4 : * ============================================================================= - * SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved. + * SourceMod (C)2004-2017 AlliedModders LLC. All rights reserved. * ============================================================================= * * This file is part of the SourceMod/SourcePawn SDK. @@ -9,7 +9,7 @@ * 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 @@ -31,7 +31,7 @@ */ #if defined _sdktools_included - #endinput + #endinput #endif #define _sdktools_included @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -54,86 +55,86 @@ enum SDKCallType { - SDKCall_Static, /**< Static call */ - SDKCall_Entity, /**< CBaseEntity call */ - SDKCall_Player, /**< CBasePlayer call */ - SDKCall_GameRules, /**< CGameRules call */ - SDKCall_EntityList, /**< CGlobalEntityList call */ - SDKCall_Raw, /**< |this| pointer with an arbitrary address */ + SDKCall_Static, /**< Static call */ + SDKCall_Entity, /**< CBaseEntity call */ + SDKCall_Player, /**< CBasePlayer call */ + SDKCall_GameRules, /**< CGameRules call */ + SDKCall_EntityList, /**< CGlobalEntityList call */ + SDKCall_Raw /**< |this| pointer with an arbitrary address */ }; enum SDKLibrary { - SDKLibrary_Server, /**< server.dll/server_i486.so */ - SDKLibrary_Engine, /**< engine.dll/engine_*.so */ + SDKLibrary_Server, /**< server.dll/server_i486.so */ + SDKLibrary_Engine /**< engine.dll/engine_*.so */ }; enum SDKFuncConfSource { - SDKConf_Virtual = 0, /**< Read a virtual index from the Offsets section */ - SDKConf_Signature = 1, /**< Read a signature from the Signatures section */ - SDKConf_Address = 2, /**< Read an address from the Addresses section */ + SDKConf_Virtual = 0, /**< Read a virtual index from the Offsets section */ + SDKConf_Signature = 1, /**< Read a signature from the Signatures section */ + SDKConf_Address = 2 /**< Read an address from the Addresses section */ }; enum SDKType { - SDKType_CBaseEntity, /**< CBaseEntity (always as pointer) */ - SDKType_CBasePlayer, /**< CBasePlayer (always as pointer) */ - SDKType_Vector, /**< Vector (pointer, byval, or byref) */ - SDKType_QAngle, /**< QAngles (pointer, byval, or byref) */ - SDKType_PlainOldData, /**< Integer/generic data <=32bit (any) */ - SDKType_Float, /**< Float (any) */ - SDKType_Edict, /**< edict_t (always as pointer) */ - SDKType_String, /**< NULL-terminated string (always as pointer) */ - SDKType_Bool, /**< Boolean (any) */ + SDKType_CBaseEntity, /**< CBaseEntity (always as pointer) */ + SDKType_CBasePlayer, /**< CBasePlayer (always as pointer) */ + SDKType_Vector, /**< Vector (pointer, byval, or byref) */ + SDKType_QAngle, /**< QAngles (pointer, byval, or byref) */ + SDKType_PlainOldData, /**< Integer/generic data <=32bit (any) */ + SDKType_Float, /**< Float (any) */ + SDKType_Edict, /**< edict_t (always as pointer) */ + SDKType_String, /**< NULL-terminated string (always as pointer) */ + SDKType_Bool /**< Boolean (any) */ }; enum SDKPassMethod { - SDKPass_Pointer, /**< Pass as a pointer */ - SDKPass_Plain, /**< Pass as plain data */ - SDKPass_ByValue, /**< Pass an object by value */ - SDKPass_ByRef, /**< Pass an object by reference */ + SDKPass_Pointer, /**< Pass as a pointer */ + SDKPass_Plain, /**< Pass as plain data */ + SDKPass_ByValue, /**< Pass an object by value */ + SDKPass_ByRef /**< Pass an object by reference */ }; -#define VDECODE_FLAG_ALLOWNULL (1<<0) /**< Allow NULL for pointers */ -#define VDECODE_FLAG_ALLOWNOTINGAME (1<<1) /**< Allow players not in game */ -#define VDECODE_FLAG_ALLOWWORLD (1<<2) /**< Allow World entity */ -#define VDECODE_FLAG_BYREF (1<<3) /**< Floats/ints by reference */ +#define VDECODE_FLAG_ALLOWNULL (1<<0) /**< Allow NULL for pointers */ +#define VDECODE_FLAG_ALLOWNOTINGAME (1<<1) /**< Allow players not in game */ +#define VDECODE_FLAG_ALLOWWORLD (1<<2) /**< Allow World entity */ +#define VDECODE_FLAG_BYREF (1<<3) /**< Floats/ints by reference */ -#define VENCODE_FLAG_COPYBACK (1<<0) /**< Copy back data once done */ +#define VENCODE_FLAG_COPYBACK (1<<0) /**< Copy back data once done */ /** * Starts the preparation of an SDK call. * - * @param type Type of function call this will be. + * @param type Type of function call this will be. */ native void StartPrepSDKCall(SDKCallType type); /** * Sets the virtual index of the SDK call if it is virtual. * - * @param vtblidx Virtual table index. + * @param vtblidx Virtual table index. */ native void PrepSDKCall_SetVirtual(int vtblidx); /** * Finds an address in a library and sets it as the address to use for the SDK call. * - * @param lib Library to use. - * @param signature Binary data to search for in the library. If it starts with '@', - * the bytes parameter is ignored and the signature is interpreted - * as a symbol lookup in the library. - * @param bytes Number of bytes in the binary search string. - * @return True on success, false if nothing was found. + * @param lib Library to use. + * @param signature Binary data to search for in the library. If it starts with '@', + * the bytes parameter is ignored and the signature is interpreted + * as a symbol lookup in the library. + * @param bytes Number of bytes in the binary search string. + * @return True on success, false if nothing was found. */ native bool PrepSDKCall_SetSignature(SDKLibrary lib, const char[] signature, int bytes); /** * Uses the given function address for the SDK call. * - * @param addr Address of function to use. - * @return True on success, false on failure. + * @param addr Address of function to use. + * @return True on success, false on failure. */ native bool PrepSDKCall_SetAddress(Address addr); @@ -141,39 +142,39 @@ native bool PrepSDKCall_SetAddress(Address addr); * Finds an address or virtual function index in a GameConfig file and sets it as * the calling information for the SDK call. * - * @param gameconf GameConfig Handle, or INVALID_HANDLE to use sdktools.games.txt. - * @param source Whether to look in Offsets or Signatures. - * @param name Name of the property to find. - * @return True on success, false if nothing was found. + * @param gameconf GameConfig Handle, or INVALID_HANDLE to use sdktools.games.txt. + * @param source Whether to look in Offsets or Signatures. + * @param name Name of the property to find. + * @return True on success, false if nothing was found. */ native bool PrepSDKCall_SetFromConf(Handle gameconf, SDKFuncConfSource source, const char[] name); /** * Sets the return information of an SDK call. Do not call this if there is no return data. - * This must be called if there is a return value (i.e. it is not necessarily safe to ignore + * This must be called if there is a return value (i.e. it is not necessarily safe to ignore * the data). * - * @param type Data type to convert to/from. - * @param pass How the data is passed in C++. - * @param decflags Flags on decoding from the plugin to C++. - * @param encflags Flags on encoding from C++ to the plugin. + * @param type Data type to convert to/from. + * @param pass How the data is passed in C++. + * @param decflags Flags on decoding from the plugin to C++. + * @param encflags Flags on encoding from C++ to the plugin. */ native void PrepSDKCall_SetReturnInfo(SDKType type, SDKPassMethod pass, int decflags=0, int encflags=0); /** * Adds a parameter to the calling convention. This should be called in normal ascending order. * - * @param type Data type to convert to/from. - * @param pass How the data is passed in C++. - * @param decflags Flags on decoding from the plugin to C++. - * @param encflags Flags on encoding from C++ to the plugin. + * @param type Data type to convert to/from. + * @param pass How the data is passed in C++. + * @param decflags Flags on decoding from the plugin to C++. + * @param encflags Flags on encoding from C++ to the plugin. */ native void PrepSDKCall_AddParameter(SDKType type, SDKPassMethod pass, int decflags=0, int encflags=0); /** * Finalizes an SDK call preparation and returns the resultant Handle. * - * @return A new SDKCall Handle on success, or INVALID_HANDLE on failure. + * @return A new SDKCall Handle on success, or INVALID_HANDLE on failure. */ native Handle EndPrepSDKCall(); @@ -185,24 +186,24 @@ native Handle EndPrepSDKCall(); * If the return value is a Vector or QAngles, the SECOND parameter must be a Float[3]. * If the return value is a string, the THIRD parameter must be a String buffer, and the * FOURTH parameter must be the maximum length. - * All parameters must be passed after the above is followed. Failure to follow these + * All parameters must be passed after the above is followed. Failure to follow these * rules will result in crashes or wildly unexpected behavior! * * If the return value is a float or integer, the return value will be this value. * If the return value is a CBaseEntity, CBasePlayer, or edict, the return value will - * always be the entity index, or -1 for NULL. + * always be the entity index, or -1 for NULL. * - * @param call SDKCall Handle. - * @param ... Call Parameters. - * @return Simple return value, if any. - * @error Invalid Handle or internal decoding error. + * @param call SDKCall Handle. + * @param ... Call Parameters. + * @return Simple return value, if any. + * @error Invalid Handle or internal decoding error. */ native any SDKCall(Handle call, any ...); /** * Returns the entity index of the player resource/manager entity. * - * @return Index of resource entity or -1 if not found. + * @return Index of resource entity or -1 if not found. */ native int GetPlayerResourceEntity(); @@ -211,7 +212,7 @@ native int GetPlayerResourceEntity(); /** * Do not edit below this line! */ -public Extension __ext_sdktools = +public Extension __ext_sdktools = { name = "SDKTools", file = "sdktools.ext", diff --git a/env/include/sdktools_client.inc b/env/include/sdktools_client.inc index 786a659..23da412 100644 --- a/env/include/sdktools_client.inc +++ b/env/include/sdktools_client.inc @@ -31,20 +31,20 @@ */ #if defined _sdktools_client_included - #endinput + #endinput #endif #define _sdktools_client_included /** * Sets the client to an inactive state waiting for a new map * - * @param client The client index + * @param client The client index */ native void InactivateClient(int client); /** * Reconnect a client without dropping the netchannel * - * @param client The client index + * @param client The client index */ native void ReconnectClient(int client); diff --git a/env/include/sdktools_engine.inc b/env/include/sdktools_engine.inc index 127a7e6..95da43a 100644 --- a/env/include/sdktools_engine.inc +++ b/env/include/sdktools_engine.inc @@ -31,36 +31,36 @@ */ #if defined _sdktools_engine_included - #endinput + #endinput #endif #define _sdktools_engine_included -#define MAX_LIGHTSTYLES 64 +#define MAX_LIGHTSTYLES 64 /** * Sets a client's "viewing entity." * - * @param client Client index. - * @param entity Entity index. - * @error Invalid client or entity, lack of mod support, or client not in - * game. + * @param client Client index. + * @param entity Entity index. + * @error Invalid client or entity, lack of mod support, or client not in + * game. */ native void SetClientViewEntity(int client, int entity); /** * Sets a light style. * - * @param style Light style (from 0 to MAX_LIGHTSTYLES-1) - * @param value Light value string (see world.cpp/light.cpp in dlls) - * @error Light style index is out of range. + * @param style Light style (from 0 to MAX_LIGHTSTYLES-1) + * @param value Light value string (see world.cpp/light.cpp in dlls) + * @error Light style index is out of range. */ native void SetLightStyle(int style, const char[] value); /** * Returns the client's eye position. * - * @param client Player's index. - * @param pos Destination vector to store the client's eye position. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param pos Destination vector to store the client's eye position. + * @error Invalid client index, client not in game, or no mod support. */ native void GetClientEyePosition(int client, float pos[3]); diff --git a/env/include/sdktools_entinput.inc b/env/include/sdktools_entinput.inc index 85bd1e7..64454b3 100644 --- a/env/include/sdktools_entinput.inc +++ b/env/include/sdktools_entinput.inc @@ -1,7 +1,7 @@ /** * vim: set ts=4 : * ============================================================================= - * SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved. + * SourceMod (C)2004-2017 AlliedModders LLC. All rights reserved. * ============================================================================= * * This file is part of the SourceMod/SourcePawn SDK. @@ -9,7 +9,7 @@ * 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 @@ -31,78 +31,21 @@ */ #if defined _sdktools_entinput_included - #endinput + #endinput #endif #define _sdktools_entinput_included /** - * Invokes a named input method on an entity. + * Invokes a named input method on an entity. * * After completion (successful or not), the current global variant is re-initialized. * - * @param dest Destination entity index. - * @param input Input action. - * @param activator Entity index which initiated the sequence of actions (-1 for a NULL entity). - * @param caller Entity index from which this event is sent (-1 for a NULL entity). - * @param outputid Unknown. - * @return True if successful otherwise false. - * @error Invalid entity index or no mod support. + * @param dest Destination entity index. + * @param input Input action. + * @param activator Entity index which initiated the sequence of actions (-1 for a NULL entity). + * @param caller Entity index from which this event is sent (-1 for a NULL entity). + * @param outputid Unknown. + * @return True if successful otherwise false. + * @error Invalid entity index or no mod support. */ native bool AcceptEntityInput(int dest, const char[] input, int activator=-1, int caller=-1, int outputid=0); - -/** - * Sets a bool value in the global variant object. - * - * @param val Input value. - */ -native void SetVariantBool(bool val); - -/** - * Sets a string in the global variant object. - * - * @param str Input string. - */ -native void SetVariantString(const char[] str); - -/** - * Sets an integer value in the global variant object. - * - * @param val Input value. - */ -native void SetVariantInt(int val); - -/** - * Sets a floating point value in the global variant object. - * - * @param val Input value. - */ -native void SetVariantFloat(float val); - -/** - * Sets a 3D vector in the global variant object. - * - * @param vec Input vector. - */ -native void SetVariantVector3D(const float vec[3]); - -/** - * Sets a 3D position vector in the global variant object. - * - * @param vec Input position vector. - */ -native void SetVariantPosVector3D(const float vec[3]); - -/** - * Sets a color in the global variant object. - * - * @param color Input color. - */ -native void SetVariantColor(const int color[4]); - -/** - * Sets an entity in the global variant object. - * - * @param entity Entity index. - * @error Invalid entity index. - */ -native void SetVariantEntity(int entity); diff --git a/env/include/sdktools_entoutput.inc b/env/include/sdktools_entoutput.inc index 48d8d3e..eb5a915 100644 --- a/env/include/sdktools_entoutput.inc +++ b/env/include/sdktools_entoutput.inc @@ -1,7 +1,7 @@ /** * vim: set ts=4 : * ============================================================================= - * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. + * SourceMod (C)2004-2017 AlliedModders LLC. All rights reserved. * ============================================================================= * * This file is part of the SourceMod/SourcePawn SDK. @@ -9,7 +9,7 @@ * 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 @@ -31,20 +31,20 @@ */ #if defined _sdktools_entoutput_included - #endinput + #endinput #endif #define _sdktools_entoutput_included /** * Called when an entity output is fired. * - * @param output Name of the output that fired. - * @param caller Entity index of the caller. - * @param activator Entity index of the activator. - * @param delay Delay in seconds? before the event gets fired. - * @return Anything other than Plugin_Continue will supress this event, - * returning Plugin_Continue will allow it to propagate the results - * of this output to any entity inputs. + * @param output Name of the output that fired. + * @param caller Entity index of the caller. + * @param activator Entity index of the activator. + * @param delay Delay in seconds? before the event gets fired. + * @return Anything other than Plugin_Continue will supress this event, + * returning Plugin_Continue will allow it to propagate the results + * of this output to any entity inputs. */ typeset EntityOutput { @@ -55,41 +55,54 @@ typeset EntityOutput /** * Add an entity output hook on a entity classname * - * @param classname The classname to hook. - * @param output The output name to hook. - * @param callback An EntityOutput function pointer. - * @error Entity Outputs disabled. + * @param classname The classname to hook. + * @param output The output name to hook. + * @param callback An EntityOutput function pointer. + * @error Entity Outputs disabled. */ native void HookEntityOutput(const char[] classname, const char[] output, EntityOutput callback); /** * Remove an entity output hook. - * @param classname The classname to hook. - * @param output The output name to hook. - * @param callback An EntityOutput function pointer. - * @return True on success, false if no valid hook was found. - * @error Entity Outputs disabled. + * @param classname The classname to hook. + * @param output The output name to hook. + * @param callback An EntityOutput function pointer. + * @return True on success, false if no valid hook was found. + * @error Entity Outputs disabled. */ native bool UnhookEntityOutput(const char[] classname, const char[] output, EntityOutput callback); /** - * Add an entity output hook on a single entity instance + * Add an entity output hook on a single entity instance * - * @param entity The entity on which to add a hook. - * @param output The output name to hook. - * @param callback An EntityOutput function pointer. - * @param once Only fire this hook once and then remove itself. - * @error Entity Outputs disabled or Invalid Entity index. + * @param entity The entity on which to add a hook. + * @param output The output name to hook. + * @param callback An EntityOutput function pointer. + * @param once Only fire this hook once and then remove itself. + * @error Entity Outputs disabled or Invalid Entity index. */ native void HookSingleEntityOutput(int entity, const char[] output, EntityOutput callback, bool once=false); /** - * Remove a single entity output hook. + * Remove a single entity output hook. * - * @param entity The entity on which to remove the hook. - * @param output The output name to hook. - * @param callback An EntityOutput function pointer. - * @return True on success, false if no valid hook was found. - * @error Entity Outputs disabled or Invalid Entity index. + * @param entity The entity on which to remove the hook. + * @param output The output name to hook. + * @param callback An EntityOutput function pointer. + * @return True on success, false if no valid hook was found. + * @error Entity Outputs disabled or Invalid Entity index. */ native bool UnhookSingleEntityOutput(int entity, const char[] output, EntityOutput callback); + +/** + * Fire a named output on an entity. + * + * After completion (successful or not), the current global variant is re-initialized. + * + * @param caller Entity index from where the output is fired. + * @param output Output name. + * @param activator Entity index which initiated the sequence of actions (-1 for a NULL entity). + * @param delay Delay before firing the output. + * @error Invalid entity index or no mod support. + */ +native void FireEntityOutput(int caller, const char[] output, int activator=-1, float delay=0.0); diff --git a/env/include/sdktools_functions.inc b/env/include/sdktools_functions.inc index ccf472a..3be387e 100644 --- a/env/include/sdktools_functions.inc +++ b/env/include/sdktools_functions.inc @@ -9,7 +9,7 @@ * 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 @@ -31,175 +31,175 @@ */ #if defined _sdktools_functions_included - #endinput + #endinput #endif #define _sdktools_functions_included /** * Removes a player's item. * - * @param client Client index. - * @param item CBaseCombatWeapon entity index. - * @return True on success, false otherwise. - * @error Invalid client or entity, lack of mod support, or client not in - * game. + * @param client Client index. + * @param item CBaseCombatWeapon entity index. + * @return True on success, false otherwise. + * @error Invalid client or entity, lack of mod support, or client not in + * game. */ native bool RemovePlayerItem(int client, int item); /** * Gives a named item to a player. * - * @param client Client index. - * @param item Item classname (such as weapon_ak47). - * @param iSubType Unknown. - * @return Entity index on success, or -1 on failure. - * @error Invalid client or client not in game, or lack of mod support. + * @param client Client index. + * @param item Item classname (such as weapon_ak47). + * @param iSubType Unknown. + * @return Entity index on success, or -1 on failure. + * @error Invalid client or client not in game, or lack of mod support. */ native int GivePlayerItem(int client, const char[] item, int iSubType=0); /** - * Returns the weapon in a player's slot. + * Returns the weapon in a player's slot. * - * @param client Client index. - * @param slot Slot index (mod specific). - * @return Entity index on success, -1 if no weapon existed. - * @error Invalid client or client not in game, or lack of mod support. + * @param client Client index. + * @param slot Slot index (mod specific). + * @return Entity index on success, -1 if no weapon existed. + * @error Invalid client or client not in game, or lack of mod support. */ native int GetPlayerWeaponSlot(int client, int slot); /** * Ignites an entity on fire. * - * @param entity Entity index. - * @param time Number of seconds to set on fire. - * @param npc True to only affect NPCs. - * @param size Unknown. - * @param level Unknown. - * @error Invalid entity or client not in game, or lack of mod support. + * @param entity Entity index. + * @param time Number of seconds to set on fire. + * @param npc True to only affect NPCs. + * @param size Unknown. + * @param level Unknown. + * @error Invalid entity or client not in game, or lack of mod support. */ native void IgniteEntity(int entity, float time, bool npc=false, float size=0.0, bool level=false); /** * Extinguishes an entity that is on fire. * - * @param entity Entity index. - * @error Invalid entity or client not in game, or lack of mod support. + * @param entity Entity index. + * @error Invalid entity or client not in game, or lack of mod support. */ native void ExtinguishEntity(int entity); /** * Teleports an entity. * - * @param entity Client index. - * @param origin New origin, or NULL_VECTOR for no change. - * @param angles New angles, or NULL_VECTOR for no change. - * @param velocity New velocity, or NULL_VECTOR for no change. - * @error Invalid entity or client not in game, or lack of mod support. + * @param entity Client index. + * @param origin New origin, or NULL_VECTOR for no change. + * @param angles New angles, or NULL_VECTOR for no change. + * @param velocity New velocity, or NULL_VECTOR for no change. + * @error Invalid entity or client not in game, or lack of mod support. */ native void TeleportEntity(int entity, const float origin[3], const float angles[3], const float velocity[3]); /** * Forces a player to commit suicide. * - * @param client Client index. - * @error Invalid client or client not in game, or lack of mod support. + * @param client Client index. + * @error Invalid client or client not in game, or lack of mod support. */ native void ForcePlayerSuicide(int client); /** * Slaps a player in a random direction. * - * @param client Client index. - * @param health Health to subtract. - * @param sound False to disable the sound effects. - * @error Invalid client or client not in game, or lack of mod support. + * @param client Client index. + * @param health Health to subtract. + * @param sound False to disable the sound effects. + * @error Invalid client or client not in game, or lack of mod support. */ native void SlapPlayer(int client, int health=5, bool sound=true); /** * Searches for an entity by classname. * - * @param startEnt The entity index after which to begin searching from. - * Use -1 to start from the first entity. - * @param classname Classname of the entity to find. - * @return Entity index >= 0 if found, -1 otherwise. - * @error Lack of mod support. + * @param startEnt The entity index after which to begin searching from. + * Use -1 to start from the first entity. + * @param classname Classname of the entity to find. + * @return Entity index >= 0 if found, -1 otherwise. + * @error Lack of mod support. */ native int FindEntityByClassname(int startEnt, const char[] classname); /** * Returns the client's eye angles. * - * @param client Player's index. - * @param ang Destination vector to store the client's eye angles. - * @return True on success, false on failure. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param ang Destination vector to store the client's eye angles. + * @return True on success, false on failure. + * @error Invalid client index, client not in game, or no mod support. */ native bool GetClientEyeAngles(int client, float ang[3]); /** * Creates an entity by string name, but does not spawn it (see DispatchSpawn). - * If ForceEdictIndex is not -1, then it will use the edict by that index. If the index is + * If ForceEdictIndex is not -1, then it will use the edict by that index. If the index is * invalid or there is already an edict using that index, it will error out. * - * @param classname Entity classname. - * @param ForceEdictIndex Edict index used by the created entity (ignored on Orangebox and above). - * @return Entity index on success, or -1 on failure. - * @error Invalid edict index, or no mod support. + * @param classname Entity classname. + * @param ForceEdictIndex Edict index used by the created entity (ignored on Orangebox and above). + * @return Entity index on success, or -1 on failure. + * @error Invalid edict index, or no mod support. */ native int CreateEntityByName(const char[] classname, int ForceEdictIndex=-1); /** * Spawns an entity into the game. * - * @param entity Entity index of the created entity. - * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @param entity Entity index of the created entity. + * @return True on success, false otherwise. + * @error Invalid entity index, or no mod support. */ native bool DispatchSpawn(int entity); /** * Dispatches a KeyValue into given entity using a string value. * - * @param entity Destination entity index. - * @param keyName Name of the key. - * @param value String value. - * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @param entity Destination entity index. + * @param keyName Name of the key. + * @param value String value. + * @return True on success, false otherwise. + * @error Invalid entity index, or no mod support. */ native bool DispatchKeyValue(int entity, const char[] keyName, const char[] value); /** * Dispatches a KeyValue into given entity using a floating point value. * - * @param entity Destination entity index. - * @param keyName Name of the key. - * @param value Floating point value. - * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @param entity Destination entity index. + * @param keyName Name of the key. + * @param value Floating point value. + * @return True on success, false otherwise. + * @error Invalid entity index, or no mod support. */ native bool DispatchKeyValueFloat(int entity, const char[] keyName, float value); /** * Dispatches a KeyValue into given entity using a vector value. * - * @param entity Destination entity index. - * @param keyName Name of the key. - * @param vec Vector value. - * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @param entity Destination entity index. + * @param keyName Name of the key. + * @param vec Vector value. + * @return True on success, false otherwise. + * @error Invalid entity index, or no mod support. */ native bool DispatchKeyValueVector(int entity, const char[] keyName, const float vec[3]); /** * Returns the entity a client is aiming at. * - * @param client Client performing the aiming. - * @param only_clients True to exclude all entities but clients. - * @return Entity index being aimed at. - * -1 if no entity is being aimed at. - * -2 if the function is not supported. - * @error Invalid client index or client not in game. + * @param client Client performing the aiming. + * @param only_clients True to exclude all entities but clients. + * @return Entity index being aimed at. + * -1 if no entity is being aimed at. + * -2 if the function is not supported. + * @error Invalid client index or client not in game. */ native int GetClientAimTarget(int client, bool only_clients=true); @@ -207,7 +207,7 @@ native int GetClientAimTarget(int client, bool only_clients=true); * Returns the total number of teams in a game. * Note: This native should not be called before OnMapStart. * - * @return Total number of teams. + * @return Total number of teams. */ native int GetTeamCount(); @@ -215,10 +215,10 @@ native int GetTeamCount(); * Retrieves the team name based on a team index. * Note: This native should not be called before OnMapStart. * - * @param index Team index. - * @param name Buffer to store string in. - * @param maxlength Maximum length of string buffer. - * @error Invalid team index. + * @param index Team index. + * @param name Buffer to store string in. + * @param maxlength Maximum length of string buffer. + * @error Invalid team index. */ native void GetTeamName(int index, char[] name, int maxlength); @@ -226,9 +226,9 @@ native void GetTeamName(int index, char[] name, int maxlength); * Returns the score of a team based on a team index. * Note: This native should not be called before OnMapStart. * - * @param index Team index. - * @return Score. - * @error Invalid team index. + * @param index Team index. + * @return Score. + * @error Invalid team index. */ native int GetTeamScore(int index); @@ -236,9 +236,9 @@ native int GetTeamScore(int index); * Sets the score of a team based on a team index. * Note: This native should not be called before OnMapStart. * - * @param index Team index. - * @param value New score value. - * @error Invalid team index. + * @param index Team index. + * @param value New score value. + * @error Invalid team index. */ native void SetTeamScore(int index, int value); @@ -246,75 +246,75 @@ native void SetTeamScore(int index, int value); * Retrieves the number of players in a certain team. * Note: This native should not be called before OnMapStart. * - * @param index Team index. - * @return Number of players in the team. - * @error Invalid team index. + * @param index Team index. + * @return Number of players in the team. + * @error Invalid team index. */ native int GetTeamClientCount(int index); /** * Returns the entity index of a team. * - * @param teamIndex Team index. - * @return Entity index of team. - * @error Invalid team index. + * @param teamIndex Team index. + * @return Entity index of team. + * @error Invalid team index. */ native int GetTeamEntity(int teamIndex); /** * Sets the model to a given entity. * - * @param entity Entity index. - * @param model Model name. - * @error Invalid entity index, or no mod support. + * @param entity Entity index. + * @param model Model name. + * @error Invalid entity index, or no mod support. */ native void SetEntityModel(int entity, const char[] model); /** * Retrieves the decal file name associated with a given client. * - * @param client Player's index. - * @param hex Buffer to store the logo filename. - * @param maxlength Maximum length of string buffer. - * @return True on success, otherwise false. - * @error Invalid client or client not in game. + * @param client Player's index. + * @param hex Buffer to store the logo filename. + * @param maxlength Maximum length of string buffer. + * @return True on success, otherwise false. + * @error Invalid client or client not in game. */ native bool GetPlayerDecalFile(int client, char[] hex, int maxlength); /** * Retrieves the jingle file name associated with a given client. * - * @param client Player's index. - * @param hex Buffer to store the jingle filename. - * @param maxlength Maximum length of string buffer. - * @return True on success, otherwise false. - * @error Invalid client or client not in game. + * @param client Player's index. + * @param hex Buffer to store the jingle filename. + * @param maxlength Maximum length of string buffer. + * @return True on success, otherwise false. + * @error Invalid client or client not in game. */ native bool GetPlayerJingleFile(int client, char[] hex, int maxlength); /** * Returns the average server network traffic in bytes/sec. * - * @param in Buffer to store the input traffic velocity. - * @param out Buffer to store the output traffic velocity. + * @param in Buffer to store the input traffic velocity. + * @param out Buffer to store the output traffic velocity. */ native void GetServerNetStats(float &inAmount, float &outAmout); /** * Equip's a player's weapon. * - * @param client Client index. - * @param weapon CBaseCombatWeapon entity index. - * @error Invalid client or entity, lack of mod support, or client not in - * game. + * @param client Client index. + * @param weapon CBaseCombatWeapon entity index. + * @error Invalid client or entity, lack of mod support, or client not in + * game. */ native void EquipPlayerWeapon(int client, int weapon); /** * Activates an entity (CBaseAnimating::Activate) * - * @param entity Entity index. - * @error Invalid entity or lack of mod support. + * @param entity Entity index. + * @error Invalid entity or lack of mod support. */ native void ActivateEntity(int entity); @@ -322,18 +322,18 @@ native void ActivateEntity(int entity); * Sets values to client info buffer keys and notifies the engine of the change. * The change does not get propagated to mods until the next frame. * - * @param client Player's index. - * @param key Key string. - * @param value Value string. - * @error Invalid client index, or client not connected. + * @param client Player's index. + * @param key Key string. + * @param value Value string. + * @error Invalid client index, or client not connected. */ native void SetClientInfo(int client, const char[] key, const char[] value); /** * Changes a client's name. * - * @param client Player's index. - * @param name New name. + * @param client Player's index. + * @param name New name. * @error Invalid client index, or client not connected. */ native void SetClientName(int client, const char[] name); @@ -346,7 +346,6 @@ native void SetClientName(int client, const char[] name); * @param amount Amount of ammo to give. Is capped at ammotype's limit. * @param ammotype Type of ammo to give to player. * @param suppressSound If true, don't play the ammo pickup sound. - * - * @return Amount of ammo actually given. + * @return Amount of ammo actually given. */ native int GivePlayerAmmo(int client, int amount, int ammotype, bool suppressSound=false); diff --git a/env/include/sdktools_gamerules.inc b/env/include/sdktools_gamerules.inc index af498ec..dc69355 100644 --- a/env/include/sdktools_gamerules.inc +++ b/env/include/sdktools_gamerules.inc @@ -9,7 +9,7 @@ * 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 @@ -31,165 +31,165 @@ */ #if defined _sdktools_gamerules_included - #endinput + #endinput #endif #define _sdktools_gamerules_included enum RoundState { // initialize the game, create teams RoundState_Init, - + //Before players have joined the game. Periodically checks to see if enough players are ready //to start a game. Also reverts to this when there are no active players RoundState_Pregame, - + //The game is about to start, wait a bit and spawn everyone RoundState_StartGame, - + //All players are respawned, frozen in place RoundState_Preround, - + //Round is on, playing normally RoundState_RoundRunning, - + //Someone has won the round RoundState_TeamWin, - + //Noone has won, manually restart the game, reset scores RoundState_Restart, - + //Noone has won, restart the game RoundState_Stalemate, - + //Game is over, showing the scoreboard etc RoundState_GameOver, - + //Game is over, doing bonus round stuff RoundState_Bonus, - + //Between rounds - RoundState_BetweenRounds, + RoundState_BetweenRounds }; /** * Retrieves an integer value from a property of the gamerules entity. - * - * @param prop Property name. - * @param size Number of bytes to read (valid values are 1, 2, or 4). - * This value is auto-detected, and the size parameter is - * only used as a fallback in case detection fails. - * @param element Element # (starting from 0) if property is an array. - * @return Value at the given property offset. - * @error Not supported. + * + * @param prop Property name. + * @param size Number of bytes to read (valid values are 1, 2, or 4). + * This value is auto-detected, and the size parameter is + * only used as a fallback in case detection fails. + * @param element Element # (starting from 0) if property is an array. + * @return Value at the given property offset. + * @error Not supported. */ native int GameRules_GetProp(const char[] prop, int size=4, int element=0); /** * Sets an integer value for a property of the gamerules entity. * - * @param prop Property name. - * @param value Value to set. - * @param size Number of bytes to write (valid values are 1, 2, or 4). - * This value is auto-detected, and the size parameter is - * only used as a fallback in case detection fails. - * @param element Element # (starting from 0) if property is an array. - * @param changeState This parameter is ignored. - * @error Not supported. + * @param prop Property name. + * @param value Value to set. + * @param size Number of bytes to write (valid values are 1, 2, or 4). + * This value is auto-detected, and the size parameter is + * only used as a fallback in case detection fails. + * @param element Element # (starting from 0) if property is an array. + * @param changeState This parameter is ignored. + * @error Not supported. */ native void GameRules_SetProp(const char[] prop, any value, int size=4, int element=0, bool changeState=false); /** * Retrieves a float value from a property of the gamerules entity. - * - * @param prop Property name. - * @param element Element # (starting from 0) if property is an array. - * @return Value at the given property offset. - * @error Not supported. + * + * @param prop Property name. + * @param element Element # (starting from 0) if property is an array. + * @return Value at the given property offset. + * @error Not supported. */ native float GameRules_GetPropFloat(const char[] prop, int element=0); /** * Sets a float value for a property of the gamerules entity. - * - * @param prop Property name. - * @param value Value to set. - * @param element Element # (starting from 0) if property is an array. - * @param changeState This parameter is ignored. - * @error Not supported. + * + * @param prop Property name. + * @param value Value to set. + * @param element Element # (starting from 0) if property is an array. + * @param changeState This parameter is ignored. + * @error Not supported. */ native void GameRules_SetPropFloat(const char[] prop, float value, int element=0, bool changeState=false); /** * Retrieves a entity index from a property of the gamerules entity. - * - * @param prop Property name. - * @param element Element # (starting from 0) if property is an array. - * @return Entity index at the given property. - * If there is no entity, or the entity is not valid, - * then -1 is returned. - * @error Not supported. + * + * @param prop Property name. + * @param element Element # (starting from 0) if property is an array. + * @return Entity index at the given property. + * If there is no entity, or the entity is not valid, + * then -1 is returned. + * @error Not supported. */ native int GameRules_GetPropEnt(const char[] prop, int element=0); /** * Sets an entity index for a property of the gamerules entity. - * - * @param prop Property name. - * @param other Entity index to set, or -1 to unset. - * @param element Element # (starting from 0) if property is an array. - * @param changeState This parameter is ignored. - * @error Not supported. + * + * @param prop Property name. + * @param other Entity index to set, or -1 to unset. + * @param element Element # (starting from 0) if property is an array. + * @param changeState This parameter is ignored. + * @error Not supported. */ native void GameRules_SetPropEnt(const char[] prop, int other, int element=0, bool changeState=false); /** * Retrieves a vector of floats from the gamerules entity, given a named network property. - * - * @param prop Property name. - * @param vec Vector buffer to store data in. - * @param element Element # (starting from 0) if property is an array. - * @error Not supported. + * + * @param prop Property name. + * @param vec Vector buffer to store data in. + * @param element Element # (starting from 0) if property is an array. + * @error Not supported. */ native void GameRules_GetPropVector(const char[] prop, float vec[3], int element=0); /** * Sets a vector of floats in the gamerules entity, given a named network property. * - * @param prop Property name. - * @param vec Vector to set. - * @param element Element # (starting from 0) if property is an array. - * @param changeState This parameter is ignored. - * @error Not supported. + * @param prop Property name. + * @param vec Vector to set. + * @param element Element # (starting from 0) if property is an array. + * @param changeState This parameter is ignored. + * @error Not supported. */ native void GameRules_SetPropVector(const char[] prop, const float vec[3], int element=0, bool changeState=false); /** * Gets a gamerules property as a string. - * - * @param prop Property to use. - * @param buffer Destination string buffer. - * @param maxlen Maximum length of output string buffer. - * @return Number of non-null bytes written. - * @error Not supported. + * + * @param prop Property to use. + * @param buffer Destination string buffer. + * @param maxlen Maximum length of output string buffer. + * @return Number of non-null bytes written. + * @error Not supported. */ native int GameRules_GetPropString(const char[] prop, char[] buffer, int maxlen); /** * Sets a gamerules property as a string. * - * @param prop Property to use. - * @param buffer String to set. - * @param changeState This parameter is ignored. - * @return Number of non-null bytes written. - * @error Not supported. + * @param prop Property to use. + * @param buffer String to set. + * @param changeState This parameter is ignored. + * @return Number of non-null bytes written. + * @error Not supported. */ native int GameRules_SetPropString(const char[] prop, const char[] buffer, bool changeState=false); /** * Gets the current round state. * - * @return Round state. - * @error Game doesn't support round state. + * @return Round state. + * @error Game doesn't support round state. */ stock RoundState GameRules_GetRoundState() { diff --git a/env/include/sdktools_hooks.inc b/env/include/sdktools_hooks.inc index 4f30625..aa20e3b 100644 --- a/env/include/sdktools_hooks.inc +++ b/env/include/sdktools_hooks.inc @@ -9,7 +9,7 @@ * 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 @@ -31,49 +31,65 @@ */ #if defined _sdktools_hooks_included - #endinput + #endinput #endif #define _sdktools_hooks_included -#define FEATURECAP_PLAYERRUNCMD_11PARAMS "SDKTools PlayerRunCmd 11Params" +#define FEATURECAP_PLAYERRUNCMD_11PARAMS "SDKTools PlayerRunCmd 11Params" /** - * @brief Called when a clients movement buttons are being processed + * Called when a clients movement buttons are being processed * - * @param client Index of the client. - * @param buttons Copyback buffer containing the current commands (as bitflags - see entity_prop_stocks.inc). - * @param impulse Copyback buffer containing the current impulse command. - * @param vel Players desired velocity. - * @param angles Players desired view angles. - * @param weapon Entity index of the new weapon if player switches weapon, 0 otherwise. - * @param subtype Weapon subtype when selected from a menu. - * @param cmdnum Command number. Increments from the first command sent. - * @param tickcount Tick count. A client's prediction based on the server's GetGameTickCount value. - * @param seed Random seed. Used to determine weapon recoil, spread, and other predicted elements. - * @param mouse Mouse direction (x, y). - * @return Plugin_Handled to block the commands from being processed, Plugin_Continue otherwise. + * @param client Index of the client. + * @param buttons Copyback buffer containing the current commands (as bitflags - see entity_prop_stocks.inc). + * @param impulse Copyback buffer containing the current impulse command. + * @param vel Players desired velocity. + * @param angles Players desired view angles. + * @param weapon Entity index of the new weapon if player switches weapon, 0 otherwise. + * @param subtype Weapon subtype when selected from a menu. + * @param cmdnum Command number. Increments from the first command sent. + * @param tickcount Tick count. A client's prediction based on the server's GetGameTickCount value. + * @param seed Random seed. Used to determine weapon recoil, spread, and other predicted elements. + * @param mouse Mouse direction (x, y). + * @return Plugin_Handled to block the commands from being processed, Plugin_Continue otherwise. * - * @note To see if all 11 params are available, use FeatureType_Capability and - * FEATURECAP_PLAYERRUNCMD_11PARAMS. + * @note To see if all 11 params are available, use FeatureType_Capability and FEATURECAP_PLAYERRUNCMD_11PARAMS. */ forward Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2]); /** - * @brief Called when a client requests a file from the server. + * Called after a clients movement buttons were processed. * - * @param client Client index. - * @param sFile Requested file path. + * @param client Index of the client. + * @param buttons The current commands (as bitflags - see entity_prop_stocks.inc). + * @param impulse The current impulse command. + * @param vel Players desired velocity. + * @param angles Players desired view angles. + * @param weapon Entity index of the new weapon if player switches weapon, 0 otherwise. + * @param subtype Weapon subtype when selected from a menu. + * @param cmdnum Command number. Increments from the first command sent. + * @param tickcount Tick count. A client's prediction based on the server's GetGameTickCount value. + * @param seed Random seed. Used to determine weapon recoil, spread, and other predicted elements. + * @param mouse Mouse direction (x, y). + */ +forward void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float vel[3], const float angles[3], int weapon, int subtype, int cmdnum, int tickcount, int seed, const int mouse[2]); + +/** + * Called when a client requests a file from the server. * - * @return Plugin_Handled to block the transfer, Plugin_Continue to let it proceed. + * @param client Client index. + * @param sFile Requested file path. + * + * @return Plugin_Handled to block the transfer, Plugin_Continue to let it proceed. */ forward Action OnFileSend(int client, const char[] sFile); /** - * @brief Called when a client sends a file to the server. + * Called when a client sends a file to the server. * - * @param client Client index. - * @param sFile Requested file path. + * @param client Client index. + * @param sFile Requested file path. * - * @return Plugin_Handled to block the transfer, Plugin_Continue to let it proceed. + * @return Plugin_Handled to block the transfer, Plugin_Continue to let it proceed. */ forward Action OnFileReceive(int client, const char[] sFile); diff --git a/env/include/sdktools_sound.inc b/env/include/sdktools_sound.inc index 79668b2..41c87de 100644 --- a/env/include/sdktools_sound.inc +++ b/env/include/sdktools_sound.inc @@ -9,7 +9,7 @@ * 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 @@ -31,40 +31,40 @@ */ #if defined _sdktools_sound_included - #endinput + #endinput #endif #define _sdktools_sound_included /** * Sound should be from the target client. */ -#define SOUND_FROM_PLAYER -2 +#define SOUND_FROM_PLAYER -2 /** * Sound should be from the listen server player. */ -#define SOUND_FROM_LOCAL_PLAYER -1 +#define SOUND_FROM_LOCAL_PLAYER -1 /** * Sound is from the world. */ -#define SOUND_FROM_WORLD 0 +#define SOUND_FROM_WORLD 0 /** * Sound channels. */ enum { - SNDCHAN_REPLACE = -1, /**< Unknown */ - SNDCHAN_AUTO = 0, /**< Auto */ - SNDCHAN_WEAPON = 1, /**< Weapons */ - SNDCHAN_VOICE = 2, /**< Voices */ - SNDCHAN_ITEM = 3, /**< Items */ - SNDCHAN_BODY = 4, /**< Player? */ - SNDCHAN_STREAM = 5, /**< "Stream channel from the static or dynamic area" */ - SNDCHAN_STATIC = 6, /**< "Stream channel from the static area" */ - SNDCHAN_VOICE_BASE = 7, /**< "Channel for network voice data" */ - SNDCHAN_USER_BASE = 135 /**< Anything >= this is allocated to game code */ + SNDCHAN_REPLACE = -1, /**< Unknown */ + SNDCHAN_AUTO = 0, /**< Auto */ + SNDCHAN_WEAPON = 1, /**< Weapons */ + SNDCHAN_VOICE = 2, /**< Voices */ + SNDCHAN_ITEM = 3, /**< Items */ + SNDCHAN_BODY = 4, /**< Player? */ + SNDCHAN_STREAM = 5, /**< "Stream channel from the static or dynamic area" */ + SNDCHAN_STATIC = 6, /**< "Stream channel from the static area" */ + SNDCHAN_VOICE_BASE = 7, /**< "Channel for network voice data" */ + SNDCHAN_USER_BASE = 135 /**< Anything >= this is allocated to game code */ }; /** @@ -72,15 +72,15 @@ enum */ enum { - SND_NOFLAGS= 0, /**< Nothing */ - SND_CHANGEVOL = 1, /**< Change sound volume */ - SND_CHANGEPITCH = 2, /**< Change sound pitch */ - SND_STOP = 3, /**< Stop the sound */ - SND_SPAWNING = 4, /**< Used in some cases for ambients */ - SND_DELAY = 5, /**< Sound has an initial delay */ - SND_STOPLOOPING = 6, /**< Stop looping all sounds on the entity */ - SND_SPEAKER = 7, /**< Being played by a mic through a speaker */ - SND_SHOULDPAUSE = 8, /**< Pause if game is paused */ + SND_NOFLAGS= 0, /**< Nothing */ + SND_CHANGEVOL = 1, /**< Change sound volume */ + SND_CHANGEPITCH = 2, /**< Change sound pitch */ + SND_STOP = 3, /**< Stop the sound */ + SND_SPAWNING = 4, /**< Used in some cases for ambients */ + SND_DELAY = 5, /**< Sound has an initial delay */ + SND_STOPLOOPING = 6, /**< Stop looping all sounds on the entity */ + SND_SPEAKER = 7, /**< Being played by a mic through a speaker */ + SND_SHOULDPAUSE = 8 /**< Pause if game is paused */ }; /** @@ -88,52 +88,53 @@ enum */ enum { - SNDLEVEL_NONE = 0, /**< None */ - SNDLEVEL_RUSTLE = 20, /**< Rustling leaves */ - SNDLEVEL_WHISPER = 25, /**< Whispering */ - SNDLEVEL_LIBRARY = 30, /**< In a library */ - SNDLEVEL_FRIDGE = 45, /**< Refrigerator */ - SNDLEVEL_HOME = 50, /**< Average home (3.9 attn) */ - SNDLEVEL_CONVO = 60, /**< Normal conversation (2.0 attn) */ - SNDLEVEL_DRYER = 60, /**< Clothes dryer */ - SNDLEVEL_DISHWASHER = 65, /**< Dishwasher/washing machine (1.5 attn) */ - SNDLEVEL_CAR = 70, /**< Car or vacuum cleaner (1.0 attn) */ - SNDLEVEL_NORMAL = 75, /**< Normal sound level */ - SNDLEVEL_TRAFFIC = 75, /**< Busy traffic (0.8 attn) */ - SNDLEVEL_MINIBIKE = 80, /**< Mini-bike, alarm clock (0.7 attn) */ - SNDLEVEL_SCREAMING = 90, /**< Screaming child (0.5 attn) */ - SNDLEVEL_TRAIN = 100, /**< Subway train, pneumatic drill (0.4 attn) */ - SNDLEVEL_HELICOPTER = 105, /**< Helicopter */ - SNDLEVEL_SNOWMOBILE = 110, /**< Snow mobile */ - SNDLEVEL_AIRCRAFT = 120, /**< Auto horn, aircraft */ - SNDLEVEL_RAIDSIREN = 130, /**< Air raid siren */ - SNDLEVEL_GUNFIRE = 140, /**< Gunshot, jet engine (0.27 attn) */ - SNDLEVEL_ROCKET = 180, /**< Rocket launching (0.2 attn) */ + SNDLEVEL_NONE = 0, /**< None */ + SNDLEVEL_RUSTLE = 20, /**< Rustling leaves */ + SNDLEVEL_WHISPER = 25, /**< Whispering */ + SNDLEVEL_LIBRARY = 30, /**< In a library */ + SNDLEVEL_FRIDGE = 45, /**< Refrigerator */ + SNDLEVEL_HOME = 50, /**< Average home (3.9 attn) */ + SNDLEVEL_CONVO = 60, /**< Normal conversation (2.0 attn) */ + SNDLEVEL_DRYER = 60, /**< Clothes dryer */ + SNDLEVEL_DISHWASHER = 65, /**< Dishwasher/washing machine (1.5 attn) */ + SNDLEVEL_CAR = 70, /**< Car or vacuum cleaner (1.0 attn) */ + SNDLEVEL_NORMAL = 75, /**< Normal sound level */ + SNDLEVEL_TRAFFIC = 75, /**< Busy traffic (0.8 attn) */ + SNDLEVEL_MINIBIKE = 80, /**< Mini-bike, alarm clock (0.7 attn) */ + SNDLEVEL_SCREAMING = 90, /**< Screaming child (0.5 attn) */ + SNDLEVEL_TRAIN = 100, /**< Subway train, pneumatic drill (0.4 attn) */ + SNDLEVEL_HELICOPTER = 105, /**< Helicopter */ + SNDLEVEL_SNOWMOBILE = 110, /**< Snow mobile */ + SNDLEVEL_AIRCRAFT = 120, /**< Auto horn, aircraft */ + SNDLEVEL_RAIDSIREN = 130, /**< Air raid siren */ + SNDLEVEL_GUNFIRE = 140, /**< Gunshot, jet engine (0.27 attn) */ + SNDLEVEL_ROCKET = 180 /**< Rocket launching (0.2 attn) */ }; -#define SNDVOL_NORMAL 1.0 /**< Normal volume */ -#define SNDPITCH_NORMAL 100 /**< Normal pitch */ -#define SNDPITCH_LOW 95 /**< A low pitch */ -#define SNDPITCH_HIGH 120 /**< A high pitch */ -#define SNDATTN_NONE 0.0 /**< No attenuation */ -#define SNDATTN_NORMAL 0.8 /**< Normal attenuation */ -#define SNDATTN_STATIC 1.25 /**< Static attenuation? */ -#define SNDATTN_RICOCHET 1.5 /**< Ricochet effect */ -#define SNDATTN_IDLE 2.0 /**< Idle attenuation? */ - +#define SNDVOL_NORMAL 1.0 /**< Normal volume */ +#define SNDPITCH_NORMAL 100 /**< Normal pitch */ +#define SNDPITCH_LOW 95 /**< A low pitch */ +#define SNDPITCH_HIGH 120 /**< A high pitch */ +#define SNDATTN_NONE 0.0 /**< No attenuation */ +#define SNDATTN_NORMAL 0.8 /**< Normal attenuation */ +#define SNDATTN_STATIC 1.25 /**< Static attenuation? */ +#define SNDATTN_RICOCHET 1.5 /**< Ricochet effect */ +#define SNDATTN_IDLE 2.0 /**< Idle attenuation? */ + /** * Prefetches a sound. * - * @param name Sound file name relative to the "sounds" folder. + * @param name Sound file name relative to the "sound" folder. */ native void PrefetchSound(const char[] name); /** - * This function is not known to work, and may crash. You should + * This function is not known to work, and may crash. You should * not use it. It is provided for backwards compatibility only. * - * @param name Sound file name relative to the "sounds" folder. - * @return Duration in seconds. + * @param name Sound file name relative to the "sound" folder. + * @return Duration in seconds. + * @deprecated Does not work, may crash. */ #pragma deprecated Does not work, may crash. native float GetSoundDuration(const char[] name); @@ -141,14 +142,14 @@ native float GetSoundDuration(const char[] name); /** * Emits an ambient sound. * - * @param name Sound file name relative to the "sounds" folder. - * @param pos Origin of sound. - * @param entity Entity index to associate sound with. - * @param level Sound level (from 0 to 255). - * @param flags Sound flags. - * @param vol Volume (from 0.0 to 1.0). - * @param pitch Pitch (from 0 to 255). - * @param delay Play delay. + * @param name Sound file name relative to the "sound" folder. + * @param pos Origin of sound. + * @param entity Entity index to associate sound with. + * @param level Sound level (from 0 to 255). + * @param flags Sound flags. + * @param vol Volume (from 0.0 to 1.0). + * @param pitch Pitch (from 0 to 255). + * @param delay Play delay. */ native void EmitAmbientSound(const char[] name, const float pos[3], @@ -162,43 +163,43 @@ native void EmitAmbientSound(const char[] name, /** * Fades a client's volume level toward silence or a given percentage. * - * @param client Client index. - * @param percent Fade percentage. - * @param outtime Fade out time, in seconds. - * @param holdtime Hold time, in seconds. - * @param intime Fade in time, in seconds. - * @error Invalid client index or client not in game. + * @param client Client index. + * @param percent Fade percentage. + * @param outtime Fade out time, in seconds. + * @param holdtime Hold time, in seconds. + * @param intime Fade in time, in seconds. + * @error Invalid client index or client not in game. */ native void FadeClientVolume(int client, float percent, float outtime, float holdtime, float intime); /** * Stops a sound. * - * @param entity Entity index. - * @param channel Channel number. - * @param name Sound file name relative to the "sounds" folder. + * @param entity Entity index. + * @param channel Channel number. + * @param name Sound file name relative to the "sound" folder. */ native void StopSound(int entity, int channel, const char[] name); /** * Emits a sound to a list of clients. * - * @param clients Array of client indexes. - * @param numClients Number of clients in the array. - * @param sample Sound file name relative to the "sounds" folder. - * @param entity Entity to emit from. - * @param channel Channel to emit with. - * @param level Sound level. - * @param flags Sound flags. - * @param volume Sound volume. - * @param pitch Sound pitch. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @param ... Optional list of Float[3] arrays to specify additional origins. - * @error Invalid client index. + * @param clients Array of client indexes. + * @param numClients Number of clients in the array. + * @param sample Sound file name relative to the "sound" folder. + * @param entity Entity to emit from. + * @param channel Channel to emit with. + * @param level Sound level. + * @param flags Sound flags. + * @param volume Sound volume. + * @param pitch Sound pitch. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @param ... Optional list of Float[3] arrays to specify additional origins. + * @error Invalid client index. */ native void EmitSound(const int[] clients, int numClients, @@ -220,24 +221,24 @@ native void EmitSound(const int[] clients, * Emits a sound or game sound to a list of clients using the latest version of the engine sound interface. * This native is only available in engines that are greater than or equal to Portal 2. * - * @param clients Array of client indexes. - * @param numClients Number of clients in the array. - * @param soundEntry Sound entry name. - * @param sample Sound file name relative to the "sounds" folder. - * @param entity Entity to emit from. - * @param channel Channel to emit with. - * @param level Sound level. - * @param seed Sound seed. - * @param flags Sound flags. - * @param volume Sound volume. - * @param pitch Sound pitch. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @param ... Optional list of Float[3] arrays to specify additional origins. - * @error Invalid client index. + * @param clients Array of client indexes. + * @param numClients Number of clients in the array. + * @param soundEntry Sound entry name. + * @param sample Sound file name relative to the "sound" folder. + * @param entity Entity to emit from. + * @param channel Channel to emit with. + * @param level Sound level. + * @param seed Sound seed. + * @param flags Sound flags. + * @param volume Sound volume. + * @param pitch Sound pitch. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @param ... Optional list of Float[3] arrays to specify additional origins. + * @error Invalid client index. */ native void EmitSoundEntry(const int[] clients, int numClients, @@ -260,22 +261,22 @@ native void EmitSoundEntry(const int[] clients, /** * Emits a sentence to a list of clients. * - * @param clients Array of client indexes. - * @param numClients Number of clients in the array. - * @param sentence Sentence index (from PrecacheSentenceFile). - * @param entity Entity to emit from. - * @param channel Channel to emit with. - * @param level Sound level. - * @param flags Sound flags. - * @param volume Sound volume. - * @param pitch Sound pitch. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @param ... Optional list of Float[3] arrays to specify additional origins. - * @error Invalid client index. + * @param clients Array of client indexes. + * @param numClients Number of clients in the array. + * @param sentence Sentence index (from PrecacheSentenceFile). + * @param entity Entity to emit from. + * @param channel Channel to emit with. + * @param level Sound level. + * @param flags Sound flags. + * @param volume Sound volume. + * @param pitch Sound pitch. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @param ... Optional list of Float[3] arrays to specify additional origins. + * @error Invalid client index. */ native void EmitSentence(const int[] clients, int numClients, @@ -292,13 +293,13 @@ native void EmitSentence(const int[] clients, bool updatePos = true, float soundtime = 0.0, any ...); - + /** * Calculates gain of sound on given distance with given sound level in decibel * - * @param soundlevel decibel of sound, like SNDLEVEL_NORMAL or integer value - * @param distance distance of sound to calculate, not meter or feet, but Source Engine`s normal Coordinate unit - * @return gain of sound. you can multiply this with original sound`s volume to calculate volume on given distance + * @param soundlevel decibel of sound, like SNDLEVEL_NORMAL or integer value + * @param distance distance of sound to calculate, not meter or feet, but Source Engine`s normal Coordinate unit + * @return gain of sound. you can multiply this with original sound`s volume to calculate volume on given distance */ native float GetDistGainFromSoundLevel(int soundlevel, float distance); @@ -307,16 +308,16 @@ native float GetDistGainFromSoundLevel(int soundlevel, float distance); * * NOTICE: all parameters can be overwritten to modify the default behavior. * - * @param sample Sound file name relative to the "sounds" folder. - * @param entity Entity index associated to the sound. - * @param volume Volume (from 0.0 to 1.0). - * @param level Sound level (from 0 to 255). - * @param pitch Pitch (from 0 to 255). - * @param pos Origin of sound. - * @param flags Sound flags. - * @param delay Play delay. - * @return Plugin_Continue to allow the sound to be played, Plugin_Stop to block it, - * Plugin_Changed when any parameter has been modified. + * @param sample Sound file name relative to the "sound" folder. + * @param entity Entity index associated to the sound. + * @param volume Volume (from 0.0 to 1.0). + * @param level Sound level (from 0 to 255). + * @param pitch Pitch (from 0 to 255). + * @param pos Origin of sound. + * @param flags Sound flags. + * @param delay Play delay. + * @return Plugin_Continue to allow the sound to be played, Plugin_Stop to block it, + * Plugin_Changed when any parameter has been modified. */ typedef AmbientSHook = function Action ( char sample[PLATFORM_MAX_PATH], @@ -336,7 +337,7 @@ typeset NormalSHook // // @param clients Array of client indexes. // @param numClients Number of clients in the array (modify this value if you add/remove elements from the client array). - // @param sample Sound file name relative to the "sounds" folder. + // @param sample Sound file name relative to the "sound" folder. // @param entity Entity emitting the sound. // @param channel Channel emitting the sound. // @param volume Sound volume. @@ -345,17 +346,17 @@ typeset NormalSHook // @param flags Sound flags. // @param soundEntry Game sound entry name. (Used in engines newer than Portal 2) // @param seed Sound seed. (Used in engines newer than Portal 2) - // @return Plugin_Continue to allow the sound to be played, Plugin_Stop to block it, + // @return Plugin_Continue to allow the sound to be played, Plugin_Stop to block it, // Plugin_Changed when any parameter has been modified. function Action (int clients[MAXPLAYERS], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed); - + // Deprecated. Use other prototype. function Action (int clients[64], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags, char soundEntry[PLATFORM_MAX_PATH], int &seed); - + // Deprecated. Use other prototype. function Action (int clients[64], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags); @@ -364,52 +365,52 @@ typeset NormalSHook /** * Hooks all played ambient sounds. * - * @param hook Function to use as a hook. - * @error Invalid function hook. + * @param hook Function to use as a hook. + * @error Invalid function hook. */ native void AddAmbientSoundHook(AmbientSHook hook); /** * Hooks all played normal sounds. * - * @param hook Function to use as a hook. - * @error Invalid function hook. + * @param hook Function to use as a hook. + * @error Invalid function hook. */ native void AddNormalSoundHook(NormalSHook hook); /** * Unhooks all played ambient sounds. * - * @param hook Function used for the hook. - * @error Invalid function hook. + * @param hook Function used for the hook. + * @error Invalid function hook. */ native void RemoveAmbientSoundHook(AmbientSHook hook); /** * Unhooks all played normal sounds. * - * @param hook Function used for the hook. - * @error Invalid function hook. + * @param hook Function used for the hook. + * @error Invalid function hook. */ native void RemoveNormalSoundHook(NormalSHook hook); - + /** * Wrapper to emit sound to one client. * - * @param client Client index. - * @param sample Sound file name relative to the "sounds" folder. - * @param entity Entity to emit from. - * @param channel Channel to emit with. - * @param level Sound level. - * @param flags Sound flags. - * @param volume Sound volume. - * @param pitch Sound pitch. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @error Invalid client index. + * @param client Client index. + * @param sample Sound file name relative to the "sound" folder. + * @param entity Entity to emit from. + * @param channel Channel to emit with. + * @param level Sound level. + * @param flags Sound flags. + * @param volume Sound volume. + * @param pitch Sound pitch. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @error Invalid client index. */ stock void EmitSoundToClient(int client, const char[] sample, @@ -429,7 +430,7 @@ stock void EmitSoundToClient(int client, clients[0] = client; /* Save some work for SDKTools and remove SOUND_FROM_PLAYER references */ entity = (entity == SOUND_FROM_PLAYER) ? client : entity; - EmitSound(clients, 1, sample, entity, channel, + EmitSound(clients, 1, sample, entity, channel, level, flags, volume, pitch, speakerentity, origin, dir, updatePos, soundtime); } @@ -437,19 +438,19 @@ stock void EmitSoundToClient(int client, /** * Wrapper to emit sound to all clients. * - * @param sample Sound file name relative to the "sounds" folder. - * @param entity Entity to emit from. - * @param channel Channel to emit with. - * @param level Sound level. - * @param flags Sound flags. - * @param volume Sound volume. - * @param pitch Sound pitch. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @error Invalid client index. + * @param sample Sound file name relative to the "sound" folder. + * @param entity Entity to emit from. + * @param channel Channel to emit with. + * @param level Sound level. + * @param flags Sound flags. + * @param volume Sound volume. + * @param pitch Sound pitch. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @error Invalid client index. */ stock void EmitSoundToAll(const char[] sample, int entity = SOUND_FROM_PLAYER, @@ -466,7 +467,7 @@ stock void EmitSoundToAll(const char[] sample, { int[] clients = new int[MaxClients]; int total = 0; - + for (int i=1; i<=MaxClients; i++) { if (IsClientInGame(i)) @@ -474,23 +475,21 @@ stock void EmitSoundToAll(const char[] sample, clients[total++] = i; } } - - if (!total) + + if (total) { - return; + EmitSound(clients, total, sample, entity, channel, + level, flags, volume, pitch, speakerentity, + origin, dir, updatePos, soundtime); } - - EmitSound(clients, total, sample, entity, channel, - level, flags, volume, pitch, speakerentity, - origin, dir, updatePos, soundtime); } /** - * Converts an attenuation value to a sound level. + * Converts an attenuation value to a sound level. * This function is from the HL2SDK. * - * @param attn Attenuation value. - * @return Integer sound level. + * @param attn Attenuation value. + * @return Integer sound level. */ stock int ATTN_TO_SNDLEVEL(float attn) { @@ -510,16 +509,16 @@ stock int ATTN_TO_SNDLEVEL(float attn) * Note that if a game sound has a rndwave section, one of them will be returned * at random. * - * @param gameSound Name of game sound. - * @param channel Channel to emit with. - * @param level Sound level. - * @param volume Sound volume. - * @param pitch Sound pitch. - * @param sample Sound file name relative to the "sounds" folder. - * @param maxlength Maximum length of sample string buffer. - * @param entity Entity the sound is being emitted from. - * @return True if the sound was successfully retrieved, false if it - * was not found + * @param gameSound Name of game sound. + * @param channel Channel to emit with. + * @param level Sound level. + * @param volume Sound volume. + * @param pitch Sound pitch. + * @param sample Sound file name relative to the "sound" folder. + * @param maxlength Maximum length of sample string buffer. + * @param entity Entity the sound is being emitted from. + * @return True if the sound was successfully retrieved, false if it + * was not found */ native bool GetGameSoundParams(const char[] gameSound, int &channel, @@ -539,18 +538,18 @@ native bool GetGameSoundParams(const char[] gameSound, * Note that if a game sound has a rndwave section, one of them will be returned * at random. * - * @param clients Array of client indexes. - * @param numClients Number of clients in the array. - * @param gameSound Name of game sound. - * @param entity Entity to emit from. - * @param flags Sound flags. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @return True if the sound was played successfully, false if it failed - * @error Invalid client index. + * @param clients Array of client indexes. + * @param numClients Number of clients in the array. + * @param gameSound Name of game sound. + * @param entity Entity to emit from. + * @param flags Sound flags. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @return True if the sound was played successfully, false if it failed + * @error Invalid client index. */ stock bool EmitGameSound(const int[] clients, int numClients, @@ -568,16 +567,14 @@ stock bool EmitGameSound(const int[] clients, float volume; int pitch; char sample[PLATFORM_MAX_PATH]; - + if (GetGameSoundParams(gameSound, channel, level, volume, pitch, sample, sizeof(sample), entity)) { EmitSound(clients, numClients, sample, entity, channel, level, flags, volume, pitch, speakerentity, origin, dir, updatePos, soundtime); return true; } - else - { - return false; - } + + return false; } /** @@ -589,11 +586,11 @@ stock bool EmitGameSound(const int[] clients, * Note that if a game sound has a rndwave section, one of them will be returned * at random. * - * @param gameSound Name of game sound. - * @param pos Origin of sound. - * @param entity Entity index to associate sound with. - * @param flags Sound flags. - * @param delay Play delay. + * @param gameSound Name of game sound. + * @param pos Origin of sound. + * @param entity Entity index to associate sound with. + * @param flags Sound flags. + * @param delay Play delay. */ stock bool EmitAmbientGameSound(const char[] gameSound, const float pos[3], @@ -606,16 +603,14 @@ stock bool EmitAmbientGameSound(const char[] gameSound, float volume; int pitch; char sample[PLATFORM_MAX_PATH]; - + if (GetGameSoundParams(gameSound, channel, level, volume, pitch, sample, sizeof(sample), entity)) { EmitAmbientSound(sample, pos, entity, level, flags, volume, pitch, delay); return true; } - else - { - return false; - } + + return false; } /** @@ -627,16 +622,16 @@ stock bool EmitAmbientGameSound(const char[] gameSound, * Note that if a game sound has a rndwave section, one of them will be returned * at random. * - * @param client Client index. - * @param gameSound Name of game sound. - * @param entity Entity to emit from. - * @param flags Sound flags. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @error Invalid client index. + * @param client Client index. + * @param gameSound Name of game sound. + * @param entity Entity to emit from. + * @param flags Sound flags. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @error Invalid client index. */ stock bool EmitGameSoundToClient(int client, const char[] gameSound, @@ -665,15 +660,15 @@ stock bool EmitGameSoundToClient(int client, * Note that if a game sound has a rndwave section, one of them will be returned * at random. * - * @param gameSound Name of game sound. - * @param entity Entity to emit from. - * @param flags Sound flags. - * @param speakerentity Unknown. - * @param origin Sound origin. - * @param dir Sound direction. - * @param updatePos Unknown (updates positions?) - * @param soundtime Alternate time to play sound for. - * @error Invalid client index. + * @param gameSound Name of game sound. + * @param entity Entity to emit from. + * @param flags Sound flags. + * @param speakerentity Unknown. + * @param origin Sound origin. + * @param dir Sound direction. + * @param updatePos Unknown (updates positions?) + * @param soundtime Alternate time to play sound for. + * @error Invalid client index. */ stock bool EmitGameSoundToAll(const char[] gameSound, int entity = SOUND_FROM_PLAYER, @@ -686,7 +681,7 @@ stock bool EmitGameSoundToAll(const char[] gameSound, { int[] clients = new int[MaxClients]; int total = 0; - + for (int i=1; i<=MaxClients; i++) { if (IsClientInGame(i)) @@ -694,12 +689,12 @@ stock bool EmitGameSoundToAll(const char[] gameSound, clients[total++] = i; } } - + if (!total) { return false; } - + return EmitGameSound(clients, total, gameSound, entity, flags, speakerentity, origin, dir, updatePos, soundtime); } @@ -710,16 +705,15 @@ stock bool EmitGameSoundToAll(const char[] gameSound, * Most games will precache all game sounds on map start, but this is not guaranteed... * Team Fortress 2 is known to not pre-cache MvM game mode sounds on non-MvM maps. * - * Due to the above, this native should be called before any calls to GetGameSoundParams, + * Due to the above, this native should be called before any calls to GetGameSoundParams, * EmitGameSound*, or EmitAmbientGameSound. * * It should be safe to pass already precached game sounds to this function. - * + * * Note: It precaches all files for a game sound. - * - * @param soundname Game sound to precache - * - * @return True if the game sound was found, false if sound did not exist - * or had no files + * + * @param soundname Game sound to precache + * @return True if the game sound was found, false if sound did not exist + * or had no files */ native bool PrecacheScriptSound(const char[] soundname); diff --git a/env/include/sdktools_stocks.inc b/env/include/sdktools_stocks.inc index dfc32e0..9417938 100644 --- a/env/include/sdktools_stocks.inc +++ b/env/include/sdktools_stocks.inc @@ -31,7 +31,7 @@ */ #if defined _sdktools_stocks_included - #endinput + #endinput #endif #define _sdktools_stocks_included @@ -42,10 +42,10 @@ * first N characters of the team names, where N is the number of * characters in the search pattern. * - * @param name Partial or full team name. - * @return A valid team index on success. - * -1 if no team matched. - * -2 if more than one team matched. + * @param name Partial or full team name. + * @return A valid team index on success. + * -1 if no team matched. + * -2 if more than one team matched. */ stock int FindTeamByName(const char[] name) { diff --git a/env/include/sdktools_stringtables.inc b/env/include/sdktools_stringtables.inc index 9d36c2d..497dd99 100644 --- a/env/include/sdktools_stringtables.inc +++ b/env/include/sdktools_stringtables.inc @@ -9,7 +9,7 @@ * 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 @@ -31,131 +31,131 @@ */ #if defined _sdktools_stringtables_included - #endinput + #endinput #endif #define _sdktools_stringtables_included -#define INVALID_STRING_TABLE -1 /**< An invalid string table index */ -#define INVALID_STRING_INDEX -1 /**< An invalid string index in a table */ +#define INVALID_STRING_TABLE -1 /**< An invalid string table index */ +#define INVALID_STRING_INDEX -1 /**< An invalid string index in a table */ /** * Searches for a string table. * - * @param name Name of string table to find. - * @return A string table index number if found, INVALID_STRING_TABLE otherwise. + * @param name Name of string table to find. + * @return A string table index number if found, INVALID_STRING_TABLE otherwise. */ native int FindStringTable(const char[] name); /** * Returns the number of string tables that currently exist. * - * @return Number of string tables that currently exist. + * @return Number of string tables that currently exist. */ native int GetNumStringTables(); /** * Returns the number of strings that currently exist in a given string table. * - * @param tableidx A string table index. - * @return Number of strings that currently exist. - * @error Invalid string table index. + * @param tableidx A string table index. + * @return Number of strings that currently exist. + * @error Invalid string table index. */ native int GetStringTableNumStrings(int tableidx); /** * Returns the maximum number of strings that are allowed in a given string table. * - * @param tableidx A string table index. - * @return Maximum number of strings allowed. - * @error Invalid string table index. + * @param tableidx A string table index. + * @return Maximum number of strings allowed. + * @error Invalid string table index. */ native int GetStringTableMaxStrings(int tableidx); /** * Retrieves the name of a string table. * - * @param tableidx A string table index. - * @param name Buffer to store the name of the string table. - * @param maxlength Maximum length of string buffer. - * @return Number of bytes written to the buffer (UTF-8 safe). - * @error Invalid string table index. + * @param tableidx A string table index. + * @param name Buffer to store the name of the string table. + * @param maxlength Maximum length of string buffer. + * @return Number of bytes written to the buffer (UTF-8 safe). + * @error Invalid string table index. */ native int GetStringTableName(int tableidx, char[] name, int maxlength); /** * Searches for the index of a given string in a string table. * - * @param tableidx A string table index. - * @param str String to find. - * @return String index if found, INVALID_STRING_INDEX otherwise. - * @error Invalid string table index. + * @param tableidx A string table index. + * @param str String to find. + * @return String index if found, INVALID_STRING_INDEX otherwise. + * @error Invalid string table index. */ native int FindStringIndex(int tableidx, const char[] str); /** * Retrieves the string at a given index of a string table. * - * @param tableidx A string table index. - * @param stringidx A string index. - * @param str Buffer to store the string value. - * @param maxlength Maximum length of string buffer. - * @return Number of bytes written to the buffer (UTF-8 safe). - * @error Invalid string table index or string index. + * @param tableidx A string table index. + * @param stringidx A string index. + * @param str Buffer to store the string value. + * @param maxlength Maximum length of string buffer. + * @return Number of bytes written to the buffer (UTF-8 safe). + * @error Invalid string table index or string index. */ native int ReadStringTable(int tableidx, int stringidx, char[] str, int maxlength); /** * Returns the length of the user data associated with a given string index. * - * @param tableidx A string table index. - * @param stringidx A string index. - * @return Length of user data. This will be 0 if there is no user data. - * @error Invalid string table index or string index. + * @param tableidx A string table index. + * @param stringidx A string index. + * @return Length of user data. This will be 0 if there is no user data. + * @error Invalid string table index or string index. */ native int GetStringTableDataLength(int tableidx, int stringidx); /** * Retrieves the user data associated with a given string index. * - * @param tableidx A string table index. - * @param stringidx A string index. - * @param userdata Buffer to store the user data. This will be set to "" if there is no user data. - * @param maxlength Maximum length of string buffer. - * @return Number of bytes written to the buffer (UTF-8 safe). - * @error Invalid string table index or string index. + * @param tableidx A string table index. + * @param stringidx A string index. + * @param userdata Buffer to store the user data. This will be set to "" if there is no user data. + * @param maxlength Maximum length of string buffer. + * @return Number of bytes written to the buffer (UTF-8 safe). + * @error Invalid string table index or string index. */ native int GetStringTableData(int tableidx, int stringidx, char[] userdata, int maxlength); /** * Sets the user data associated with a given string index. * - * @param tableidx A string table index. - * @param stringidx A string index. - * @param userdata User data string that will be set. - * @param length Length of user data string. This should include the null terminator. - * @return Number of bytes written to the buffer (UTF-8 safe). - * @error Invalid string table index or string index. + * @param tableidx A string table index. + * @param stringidx A string index. + * @param userdata User data string that will be set. + * @param length Length of user data string. This should include the null terminator. + * @return Number of bytes written to the buffer (UTF-8 safe). + * @error Invalid string table index or string index. */ native int SetStringTableData(int tableidx, int stringidx, const char[] userdata, int length); /** * Adds a string to a given string table. * - * @param tableidx A string table index. - * @param str String to add. - * @param userdata An optional user data string. - * @param length Length of user data string. This should include the null terminator. - * If set to -1, then user data will be not be altered if the specified string - * already exists in the string table. + * @param tableidx A string table index. + * @param str String to add. + * @param userdata An optional user data string. + * @param length Length of user data string. This should include the null terminator. + * If set to -1, then user data will be not be altered if the specified string + * already exists in the string table. */ native void AddToStringTable(int tableidx, const char[] str, const char[] userdata="", int length=-1); /** * Locks or unlocks the network string tables. * - * @param lock Determines whether network string tables should be locked. - * True means the tables should be locked for writing; false means unlocked. - * @return Previous lock state. + * @param lock Determines whether network string tables should be locked. + * True means the tables should be locked for writing; false means unlocked. + * @return Previous lock state. */ native bool LockStringTables(bool lock); @@ -163,17 +163,17 @@ native bool LockStringTables(bool lock); * Adds a file to the downloadables network string table. * This forces a client to download the file if they do not already have it. * - * @param filename File that will be added to downloadables table. + * @param filename File that will be added to downloadables table. */ stock void AddFileToDownloadsTable(const char[] filename) { static int table = INVALID_STRING_TABLE; - + if (table == INVALID_STRING_TABLE) { table = FindStringTable("downloadables"); } - + bool save = LockStringTables(false); AddToStringTable(table, filename); LockStringTables(save); diff --git a/env/include/sdktools_tempents.inc b/env/include/sdktools_tempents.inc index 252fdd7..cc35c71 100644 --- a/env/include/sdktools_tempents.inc +++ b/env/include/sdktools_tempents.inc @@ -9,7 +9,7 @@ * 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 @@ -38,128 +38,128 @@ /** * Called when a temp entity is going to be sent. * - * @param te_name TE name. - * @param Players Array containing target player indexes. - * @param numClients Number of players in the array. - * @param delay Delay in seconds to send the TE. - * @return Plugin_Continue to allow the transmission of the TE, Plugin_Stop to block it. + * @param te_name TE name. + * @param Players Array containing target player indexes. + * @param numClients Number of players in the array. + * @param delay Delay in seconds to send the TE. + * @return Plugin_Continue to allow the transmission of the TE, Plugin_Stop to block it. */ typedef TEHook = function Action (const char[] te_name, const int[] Players, int numClients, float delay); /** * Hooks a temp entity. * - * @param te_name TE name to hook. - * @param hook Function to use as a hook. - * @error Temp Entity name not available or invalid function hook. + * @param te_name TE name to hook. + * @param hook Function to use as a hook. + * @error Temp Entity name not available or invalid function hook. */ native void AddTempEntHook(const char[] te_name, TEHook hook); /** * Removes a temp entity hook. * - * @param te_name TE name to unhook. - * @param hook Function used for the hook. - * @error Temp Entity name not available or invalid function hook. + * @param te_name TE name to unhook. + * @param hook Function used for the hook. + * @error Temp Entity name not available or invalid function hook. */ native void RemoveTempEntHook(const char[] te_name, TEHook hook); /** * Starts a temp entity transmission. * - * @param te_name TE name. - * @error Temp Entity name not available. + * @param te_name TE name. + * @error Temp Entity name not available. */ native void TE_Start(const char[] te_name); /** * Checks if a certain TE property exists. * - * @param prop Property to use. - * @return True if the property exists, otherwise false. + * @param prop Property to use. + * @return True if the property exists, otherwise false. */ native bool TE_IsValidProp(const char[] prop); /** * Sets an integer value in the current temp entity. * - * @param prop Property to use. - * @param value Integer value to set. - * @error Property not found. + * @param prop Property to use. + * @param value Integer value to set. + * @error Property not found. */ native void TE_WriteNum(const char[] prop, int value); /** * Reads an integer value in the current temp entity. * - * @param prop Property to use. - * @return Property value. - * @error Property not found. + * @param prop Property to use. + * @return Property value. + * @error Property not found. */ native int TE_ReadNum(const char[] prop); /** * Sets a floating point number in the current temp entity. * - * @param prop Property to use. - * @param value Floating point number to set. - * @error Property not found. + * @param prop Property to use. + * @param value Floating point number to set. + * @error Property not found. */ native void TE_WriteFloat(const char[] prop, float value); /** * Reads a floating point number in the current temp entity. * - * @param prop Property to use. - * @return Property value. - * @error Property not found. + * @param prop Property to use. + * @return Property value. + * @error Property not found. */ native float TE_ReadFloat(const char[] prop); /** * Sets a vector in the current temp entity. * - * @param prop Property to use. - * @param vector Vector to set. - * @error Property not found. + * @param prop Property to use. + * @param vector Vector to set. + * @error Property not found. */ native void TE_WriteVector(const char[] prop, const float vector[3]); /** * Reads a vector in the current temp entity. * - * @param prop Property to use. - * @param vector Vector to read. - * @error Property not found. + * @param prop Property to use. + * @param vector Vector to read. + * @error Property not found. */ native void TE_ReadVector(const char[] prop, float vector[3]); /** * Sets a QAngle in the current temp entity. * - * @param prop Property to use. - * @param angles Angles to set. - * @error Property not found. + * @param prop Property to use. + * @param angles Angles to set. + * @error Property not found. */ native void TE_WriteAngles(const char[] prop, const float angles[3]); /** * Sets an array of floats in the current temp entity. * - * @param prop Property to use. - * @param array Array of values to copy. - * @param arraySize Number of values to copy. - * @error Property not found. + * @param prop Property to use. + * @param array Array of values to copy. + * @param arraySize Number of values to copy. + * @error Property not found. */ native void TE_WriteFloatArray(const char[] prop, const float[] array, int arraySize); /** * Sends the current temp entity to one or more clients. * - * @param clients Array containing player indexes to broadcast to. - * @param numClients Number of players in the array. - * @param delay Delay in seconds to send the TE. - * @error Invalid client index or client not in game. + * @param clients Array containing player indexes to broadcast to. + * @param numClients Number of players in the array. + * @param delay Delay in seconds to send the TE. + * @error Invalid client index or client not in game. */ native void TE_Send(const int[] clients, int numClients, float delay=0.0); @@ -167,9 +167,9 @@ native void TE_Send(const int[] clients, int numClients, float delay=0.0); * Sets an encoded entity index in the current temp entity. * (This is usually used for m_nStartEntity and m_nEndEntity). * - * @param prop Property to use. - * @param value Value to set. - * @error Property not found. + * @param prop Property to use. + * @param value Value to set. + * @error Property not found. */ stock void TE_WriteEncodedEnt(const char[] prop, int value) { @@ -181,7 +181,7 @@ stock void TE_WriteEncodedEnt(const char[] prop, int value) * Broadcasts the current temp entity to all clients. * @note See TE_Start(). * - * @param delay Delay in seconds to send the TE. + * @param delay Delay in seconds to send the TE. */ stock void TE_SendToAll(float delay=0.0) { @@ -201,9 +201,9 @@ stock void TE_SendToAll(float delay=0.0) * Sends the current TE to only a client. * @note See TE_Start(). * - * @param client Client to send to. - * @param delay Delay in seconds to send the TE. - * @error Invalid client index or client not in game. + * @param client Client to send to. + * @param delay Delay in seconds to send the TE. + * @error Invalid client index or client not in game. */ stock void TE_SendToClient(int client, float delay=0.0) { @@ -215,14 +215,14 @@ stock void TE_SendToClient(int client, float delay=0.0) } /** - * Sends the current TE to all clients that are in + * Sends the current TE to all clients that are in * visible or audible range of the origin. * @note See TE_Start(). * @note See GetClientsInRange() * - * @param origin Coordinates from which to test range. - * @param rangeType Range type to use for filtering clients. - * @param delay Delay in seconds to send the TE. + * @param origin Coordinates from which to test range. + * @param rangeType Range type to use for filtering clients. + * @param delay Delay in seconds to send the TE. */ stock void TE_SendToAllInRange(float origin[3], ClientRangeType rangeType, float delay=0.0) { diff --git a/env/include/sdktools_tempents_stocks.inc b/env/include/sdktools_tempents_stocks.inc index d114ba0..75dfc5e 100644 --- a/env/include/sdktools_tempents_stocks.inc +++ b/env/include/sdktools_tempents_stocks.inc @@ -38,15 +38,15 @@ /** * @section TE Explosion flags. */ -#define TE_EXPLFLAG_NONE 0x0 /**< all flags clear makes default Half-Life explosion */ -#define TE_EXPLFLAG_NOADDITIVE 0x1 /**< sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite) */ -#define TE_EXPLFLAG_NODLIGHTS 0x2 /**< do not render dynamic lights */ -#define TE_EXPLFLAG_NOSOUND 0x4 /**< do not play client explosion sound */ -#define TE_EXPLFLAG_NOPARTICLES 0x8 /**< do not draw particles */ -#define TE_EXPLFLAG_DRAWALPHA 0x10 /**< sprite will be drawn alpha */ -#define TE_EXPLFLAG_ROTATE 0x20 /**< rotate the sprite randomly */ -#define TE_EXPLFLAG_NOFIREBALL 0x40 /**< do not draw a fireball */ -#define TE_EXPLFLAG_NOFIREBALLSMOKE 0x80 /**< do not draw smoke with the fireball */ +#define TE_EXPLFLAG_NONE 0x0 /**< all flags clear makes default Half-Life explosion */ +#define TE_EXPLFLAG_NOADDITIVE 0x1 /**< sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite) */ +#define TE_EXPLFLAG_NODLIGHTS 0x2 /**< do not render dynamic lights */ +#define TE_EXPLFLAG_NOSOUND 0x4 /**< do not play client explosion sound */ +#define TE_EXPLFLAG_NOPARTICLES 0x8 /**< do not draw particles */ +#define TE_EXPLFLAG_DRAWALPHA 0x10 /**< sprite will be drawn alpha */ +#define TE_EXPLFLAG_ROTATE 0x20 /**< rotate the sprite randomly */ +#define TE_EXPLFLAG_NOFIREBALL 0x40 /**< do not draw a fireball */ +#define TE_EXPLFLAG_NOFIREBALLSMOKE 0x80 /**< do not draw smoke with the fireball */ /** * @endsection @@ -55,22 +55,22 @@ /** * @section TE Beam flags. */ -#define FBEAM_STARTENTITY 0x00000001 -#define FBEAM_ENDENTITY 0x00000002 -#define FBEAM_FADEIN 0x00000004 -#define FBEAM_FADEOUT 0x00000008 -#define FBEAM_SINENOISE 0x00000010 -#define FBEAM_SOLID 0x00000020 -#define FBEAM_SHADEIN 0x00000040 -#define FBEAM_SHADEOUT 0x00000080 -#define FBEAM_ONLYNOISEONCE 0x00000100 /**< Only calculate our noise once */ -#define FBEAM_NOTILE 0x00000200 -#define FBEAM_USE_HITBOXES 0x00000400 /**< Attachment indices represent hitbox indices instead when this is set. */ -#define FBEAM_STARTVISIBLE 0x00000800 /**< Has this client actually seen this beam's start entity yet? */ -#define FBEAM_ENDVISIBLE 0x00001000 /**< Has this client actually seen this beam's end entity yet? */ -#define FBEAM_ISACTIVE 0x00002000 -#define FBEAM_FOREVER 0x00004000 -#define FBEAM_HALOBEAM 0x00008000 /**< When drawing a beam with a halo, don't ignore the segments and endwidth */ +#define FBEAM_STARTENTITY 0x00000001 +#define FBEAM_ENDENTITY 0x00000002 +#define FBEAM_FADEIN 0x00000004 +#define FBEAM_FADEOUT 0x00000008 +#define FBEAM_SINENOISE 0x00000010 +#define FBEAM_SOLID 0x00000020 +#define FBEAM_SHADEIN 0x00000040 +#define FBEAM_SHADEOUT 0x00000080 +#define FBEAM_ONLYNOISEONCE 0x00000100 /**< Only calculate our noise once */ +#define FBEAM_NOTILE 0x00000200 +#define FBEAM_USE_HITBOXES 0x00000400 /**< Attachment indices represent hitbox indices instead when this is set. */ +#define FBEAM_STARTVISIBLE 0x00000800 /**< Has this client actually seen this beam's start entity yet? */ +#define FBEAM_ENDVISIBLE 0x00001000 /**< Has this client actually seen this beam's end entity yet? */ +#define FBEAM_ISACTIVE 0x00002000 +#define FBEAM_FOREVER 0x00004000 +#define FBEAM_HALOBEAM 0x00008000 /**< When drawing a beam with a halo, don't ignore the segments and endwidth */ /** * @endsection @@ -79,10 +79,10 @@ /** * Sets up a sparks effect. * - * @param pos Position of the sparks. - * @param dir Direction of the sparks. - * @param Magnitude Sparks size. - * @param TrailLength Trail lenght of the sparks. + * @param pos Position of the sparks. + * @param dir Direction of the sparks. + * @param Magnitude Sparks size. + * @param TrailLength Trail lenght of the sparks. */ stock void TE_SetupSparks(const float pos[3], const float dir[3], int Magnitude, int TrailLength) { @@ -96,10 +96,10 @@ stock void TE_SetupSparks(const float pos[3], const float dir[3], int Magnitude, /** * Sets up a smoke effect. * - * @param pos Position of the smoke. - * @param Model Precached model index. - * @param Scale Scale of the smoke. - * @param FrameRate Frame rate of the smoke. + * @param pos Position of the smoke. + * @param Model Precached model index. + * @param Scale Scale of the smoke. + * @param FrameRate Frame rate of the smoke. */ stock void TE_SetupSmoke(const float pos[3], int Model, float Scale, int FrameRate) { @@ -113,10 +113,10 @@ stock void TE_SetupSmoke(const float pos[3], int Model, float Scale, int FrameRa /** * Sets up a dust cloud effect. * - * @param pos Position of the dust. - * @param dir Direction of the dust. - * @param Size Dust cloud size. - * @param Speed Dust cloud speed. + * @param pos Position of the dust. + * @param dir Direction of the dust. + * @param Size Dust cloud size. + * @param Speed Dust cloud speed. */ stock void TE_SetupDust(const float pos[3], const float dir[3], float Size, float Speed) { @@ -130,10 +130,10 @@ stock void TE_SetupDust(const float pos[3], const float dir[3], float Size, floa /** * Sets up a muzzle flash effect. * - * @param pos Position of the muzzle flash. - * @param angles Rotation angles of the muzzle flash. - * @param Scale Scale of the muzzle flash. - * @param Type Muzzle flash type to render (Mod specific). + * @param pos Position of the muzzle flash. + * @param angles Rotation angles of the muzzle flash. + * @param Scale Scale of the muzzle flash. + * @param Type Muzzle flash type to render (Mod specific). */ stock void TE_SetupMuzzleFlash(const float pos[3], const float angles[3], float Scale, int Type) { @@ -147,8 +147,8 @@ stock void TE_SetupMuzzleFlash(const float pos[3], const float angles[3], float /** * Sets up a metal sparks effect. * - * @param pos Position of the metal sparks. - * @param dir Direction of the metal sparks. + * @param pos Position of the metal sparks. + * @param dir Direction of the metal sparks. */ stock void TE_SetupMetalSparks(const float pos[3], const float dir[3]) { @@ -160,9 +160,9 @@ stock void TE_SetupMetalSparks(const float pos[3], const float dir[3]) /** * Sets up an energy splash effect. * - * @param pos Position of the energy splash. - * @param dir Direction of the energy splash. - * @param Explosive Makes the effect explosive. + * @param pos Position of the energy splash. + * @param dir Direction of the energy splash. + * @param Explosive Makes the effect explosive. */ stock void TE_SetupEnergySplash(const float pos[3], const float dir[3], bool Explosive) { @@ -175,8 +175,8 @@ stock void TE_SetupEnergySplash(const float pos[3], const float dir[3], bool Exp /** * Sets up an armor ricochet effect. * - * @param pos Position of the armor ricochet. - * @param dir Direction of the armor ricochet. + * @param pos Position of the armor ricochet. + * @param dir Direction of the armor ricochet. */ stock void TE_SetupArmorRicochet(const float pos[3], const float dir[3]) { @@ -188,11 +188,11 @@ stock void TE_SetupArmorRicochet(const float pos[3], const float dir[3]) /** * Sets up a glowing sprite effect. * - * @param pos Position of the sprite. - * @param Model Precached model index. - * @param Life Time duration of the sprite. - * @param Size Sprite size. - * @param Brightness Sprite brightness. + * @param pos Position of the sprite. + * @param Model Precached model index. + * @param Life Time duration of the sprite. + * @param Size Sprite size. + * @param Brightness Sprite brightness. */ stock void TE_SetupGlowSprite(const float pos[3], int Model, float Life, float Size, int Brightness) { @@ -207,15 +207,15 @@ stock void TE_SetupGlowSprite(const float pos[3], int Model, float Life, float S /** * Sets up a explosion effect. * - * @param pos Explosion position. - * @param Model Precached model index. - * @param Scale Explosion scale. - * @param Framerate Explosion frame rate. - * @param Flags Explosion flags. - * @param Radius Explosion radius. - * @param Magnitude Explosion size. - * @param normal Normal vector to the explosion. - * @param MaterialType Exploded material type. + * @param pos Explosion position. + * @param Model Precached model index. + * @param Scale Explosion scale. + * @param Framerate Explosion frame rate. + * @param Flags Explosion flags. + * @param Radius Explosion radius. + * @param Magnitude Explosion size. + * @param normal Normal vector to the explosion. + * @param MaterialType Exploded material type. */ stock void TE_SetupExplosion(const float pos[3], int Model, float Scale, int Framerate, int Flags, int Radius, int Magnitude, const float normal[3]={0.0, 0.0, 1.0}, int MaterialType='C') { @@ -234,12 +234,12 @@ stock void TE_SetupExplosion(const float pos[3], int Model, float Scale, int Fra /** * Sets up a blood sprite effect. * - * @param pos Position of the sprite. - * @param dir Sprite direction. - * @param color Color array (r, g, b, a). - * @param Size Sprite size. - * @param SprayModel Precached model index. - * @param BloodDropModel Precached model index. + * @param pos Position of the sprite. + * @param dir Sprite direction. + * @param color Color array (r, g, b, a). + * @param Size Sprite size. + * @param SprayModel Precached model index. + * @param BloodDropModel Precached model index. */ stock void TE_SetupBloodSprite(const float pos[3], const float dir[3], const int color[4], int Size, int SprayModel, int BloodDropModel) { @@ -258,19 +258,19 @@ stock void TE_SetupBloodSprite(const float pos[3], const float dir[3], const int /** * Sets up a beam ring point effect. * - * @param center Center position of the ring. - * @param Start_Radius Initial ring radius. - * @param End_Radius Final ring radius. - * @param ModelIndex Precached model index. - * @param HaloIndex Precached model index. - * @param StartFrame Initial frame to render. - * @param FrameRate Ring frame rate. - * @param Life Time duration of the ring. - * @param Width Beam width. - * @param Amplitude Beam amplitude. - * @param Color Color array (r, g, b, a). - * @param Speed Speed of the beam. - * @param Flags Beam flags. + * @param center Center position of the ring. + * @param Start_Radius Initial ring radius. + * @param End_Radius Final ring radius. + * @param ModelIndex Precached model index. + * @param HaloIndex Precached model index. + * @param StartFrame Initial frame to render. + * @param FrameRate Ring frame rate. + * @param Life Time duration of the ring. + * @param Width Beam width. + * @param Amplitude Beam amplitude. + * @param Color Color array (r, g, b, a). + * @param Speed Speed of the beam. + * @param Flags Beam flags. */ stock void TE_SetupBeamRingPoint(const float center[3], float Start_Radius, float End_Radius, int ModelIndex, int HaloIndex, int StartFrame, int FrameRate, float Life, float Width, float Amplitude, const int Color[4], int Speed, int Flags) @@ -299,19 +299,19 @@ stock void TE_SetupBeamRingPoint(const float center[3], float Start_Radius, floa /** * Sets up a point to point beam effect. * - * @param start Start position of the beam. - * @param end End position of the beam. - * @param ModelIndex Precached model index. - * @param HaloIndex Precached model index. - * @param StartFrame Initial frame to render. - * @param FrameRate Beam frame rate. - * @param Life Time duration of the beam. - * @param Width Initial beam width. - * @param EndWidth Final beam width. - * @param FadeLength Beam fade time duration. - * @param Amplitude Beam amplitude. - * @param Color Color array (r, g, b, a). - * @param Speed Speed of the beam. + * @param start Start position of the beam. + * @param end End position of the beam. + * @param ModelIndex Precached model index. + * @param HaloIndex Precached model index. + * @param StartFrame Initial frame to render. + * @param FrameRate Beam frame rate. + * @param Life Time duration of the beam. + * @param Width Initial beam width. + * @param EndWidth Final beam width. + * @param FadeLength Beam fade time duration. + * @param Amplitude Beam amplitude. + * @param Color Color array (r, g, b, a). + * @param Speed Speed of the beam. */ stock void TE_SetupBeamPoints(const float start[3], const float end[3], int ModelIndex, int HaloIndex, int StartFrame, int FrameRate, float Life, float Width, float EndWidth, int FadeLength, float Amplitude, const int Color[4], int Speed) @@ -338,19 +338,19 @@ stock void TE_SetupBeamPoints(const float start[3], const float end[3], int Mode /** * Sets up an entity to entity laser effect. * - * @param StartEntity Entity index from where the beam starts. - * @param EndEntity Entity index from where the beam ends. - * @param ModelIndex Precached model index. - * @param HaloIndex Precached model index. - * @param StartFrame Initial frame to render. - * @param FrameRate Beam frame rate. - * @param Life Time duration of the beam. - * @param Width Initial beam width. - * @param EndWidth Final beam width. - * @param FadeLength Beam fade time duration. - * @param Amplitude Beam amplitude. - * @param Color Color array (r, g, b, a). - * @param Speed Speed of the beam. + * @param StartEntity Entity index from where the beam starts. + * @param EndEntity Entity index from where the beam ends. + * @param ModelIndex Precached model index. + * @param HaloIndex Precached model index. + * @param StartFrame Initial frame to render. + * @param FrameRate Beam frame rate. + * @param Life Time duration of the beam. + * @param Width Initial beam width. + * @param EndWidth Final beam width. + * @param FadeLength Beam fade time duration. + * @param Amplitude Beam amplitude. + * @param Color Color array (r, g, b, a). + * @param Speed Speed of the beam. */ stock void TE_SetupBeamLaser(int StartEntity, int EndEntity, int ModelIndex, int HaloIndex, int StartFrame, int FrameRate, float Life, float Width, float EndWidth, int FadeLength, float Amplitude, const int Color[4], int Speed) @@ -377,18 +377,18 @@ stock void TE_SetupBeamLaser(int StartEntity, int EndEntity, int ModelIndex, int /** * Sets up a beam ring effect. * - * @param StartEntity Entity index from where the ring starts. - * @param EndEntity Entity index from where the ring ends. - * @param ModelIndex Precached model index. - * @param HaloIndex Precached model index. - * @param StartFrame Initial frame to render. - * @param FrameRate Ring frame rate. - * @param Life Time duration of the ring. - * @param Width Beam width. - * @param Amplitude Beam amplitude. - * @param Color Color array (r, g, b, a). - * @param Speed Speed of the beam. - * @param Flags Beam flags. + * @param StartEntity Entity index from where the ring starts. + * @param EndEntity Entity index from where the ring ends. + * @param ModelIndex Precached model index. + * @param HaloIndex Precached model index. + * @param StartFrame Initial frame to render. + * @param FrameRate Ring frame rate. + * @param Life Time duration of the ring. + * @param Width Beam width. + * @param Amplitude Beam amplitude. + * @param Color Color array (r, g, b, a). + * @param Speed Speed of the beam. + * @param Flags Beam flags. */ stock void TE_SetupBeamRing(int StartEntity, int EndEntity, int ModelIndex, int HaloIndex, int StartFrame, int FrameRate, float Life, float Width, float Amplitude, const int Color[4], int Speed, int Flags) { @@ -415,14 +415,14 @@ stock void TE_SetupBeamRing(int StartEntity, int EndEntity, int ModelIndex, int /** * Sets up a follow beam effect. * - * @param EntIndex Entity index from where the beam starts. - * @param ModelIndex Precached model index. - * @param HaloIndex Precached model index. - * @param Life Time duration of the beam. - * @param Width Initial beam width. - * @param EndWidth Final beam width. - * @param FadeLength Beam fade time duration. - * @param Color Color array (r, g, b, a). + * @param EntIndex Entity index from where the beam starts. + * @param ModelIndex Precached model index. + * @param HaloIndex Precached model index. + * @param Life Time duration of the beam. + * @param Width Initial beam width. + * @param EndWidth Final beam width. + * @param FadeLength Beam fade time duration. + * @param Color Color array (r, g, b, a). */ stock void TE_SetupBeamFollow(int EntIndex, int ModelIndex, int HaloIndex, float Life, float Width, float EndWidth, int FadeLength, const int Color[4]) { diff --git a/env/include/sdktools_trace.inc b/env/include/sdktools_trace.inc index daf83c7..cf977e1 100644 --- a/env/include/sdktools_trace.inc +++ b/env/include/sdktools_trace.inc @@ -9,7 +9,7 @@ * 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 @@ -35,70 +35,124 @@ #endif #define _sdktools_trace_included -#define CONTENTS_EMPTY 0 /**< No contents. */ -#define CONTENTS_SOLID 0x1 /**< an eye is never valid in a solid . */ -#define CONTENTS_WINDOW 0x2 /**< translucent, but not watery (glass). */ -#define CONTENTS_AUX 0x4 -#define CONTENTS_GRATE 0x8 /**< alpha-tested "grate" textures. Bullets/sight pass through, but solids don't. */ -#define CONTENTS_SLIME 0x10 -#define CONTENTS_WATER 0x20 -#define CONTENTS_MIST 0x40 -#define CONTENTS_OPAQUE 0x80 /**< things that cannot be seen through (may be non-solid though). */ -#define LAST_VISIBLE_CONTENTS 0x80 -#define ALL_VISIBLE_CONTENTS (LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1)) -#define CONTENTS_TESTFOGVOLUME 0x100 -#define CONTENTS_UNUSED5 0x200 -#define CONTENTS_UNUSED6 0x4000 -#define CONTENTS_TEAM1 0x800 /**< per team contents used to differentiate collisions. */ -#define CONTENTS_TEAM2 0x1000 /**< between players and objects on different teams. */ -#define CONTENTS_IGNORE_NODRAW_OPAQUE 0x2000 /**< ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW. */ -#define CONTENTS_MOVEABLE 0x4000 /**< hits entities which are MOVETYPE_PUSH (doors, plats, etc) */ -#define CONTENTS_AREAPORTAL 0x8000 /**< remaining contents are non-visible, and don't eat brushes. */ -#define CONTENTS_PLAYERCLIP 0x10000 -#define CONTENTS_MONSTERCLIP 0x20000 +#define CONTENTS_EMPTY 0 /**< No contents. */ +#define CONTENTS_SOLID 0x1 /**< an eye is never valid in a solid . */ +#define CONTENTS_WINDOW 0x2 /**< translucent, but not watery (glass). */ +#define CONTENTS_AUX 0x4 +#define CONTENTS_GRATE 0x8 /**< alpha-tested "grate" textures. Bullets/sight pass through, but solids don't. */ +#define CONTENTS_SLIME 0x10 +#define CONTENTS_WATER 0x20 +#define CONTENTS_MIST 0x40 +#define CONTENTS_OPAQUE 0x80 /**< things that cannot be seen through (may be non-solid though). */ +#define LAST_VISIBLE_CONTENTS 0x80 +#define ALL_VISIBLE_CONTENTS (LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1)) +#define CONTENTS_TESTFOGVOLUME 0x100 +#define CONTENTS_UNUSED5 0x200 +#define CONTENTS_UNUSED6 0x4000 +#define CONTENTS_TEAM1 0x800 /**< per team contents used to differentiate collisions. */ +#define CONTENTS_TEAM2 0x1000 /**< between players and objects on different teams. */ +#define CONTENTS_IGNORE_NODRAW_OPAQUE 0x2000 /**< ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW. */ +#define CONTENTS_MOVEABLE 0x4000 /**< hits entities which are MOVETYPE_PUSH (doors, plats, etc) */ +#define CONTENTS_AREAPORTAL 0x8000 /**< remaining contents are non-visible, and don't eat brushes. */ +#define CONTENTS_PLAYERCLIP 0x10000 +#define CONTENTS_MONSTERCLIP 0x20000 /** * @section currents can be added to any other contents, and may be mixed */ -#define CONTENTS_CURRENT_0 0x40000 -#define CONTENTS_CURRENT_90 0x80000 -#define CONTENTS_CURRENT_180 0x100000 -#define CONTENTS_CURRENT_270 0x200000 -#define CONTENTS_CURRENT_UP 0x400000 -#define CONTENTS_CURRENT_DOWN 0x800000 +#define CONTENTS_CURRENT_0 0x40000 +#define CONTENTS_CURRENT_90 0x80000 +#define CONTENTS_CURRENT_180 0x100000 +#define CONTENTS_CURRENT_270 0x200000 +#define CONTENTS_CURRENT_UP 0x400000 +#define CONTENTS_CURRENT_DOWN 0x800000 /** * @endsection */ -#define CONTENTS_ORIGIN 0x1000000 /**< removed before bsp-ing an entity. */ -#define CONTENTS_MONSTER 0x2000000 /**< should never be on a brush, only in game. */ -#define CONTENTS_DEBRIS 0x4000000 -#define CONTENTS_DETAIL 0x8000000 /**< brushes to be added after vis leafs. */ -#define CONTENTS_TRANSLUCENT 0x10000000 /**< auto set if any surface has trans. */ -#define CONTENTS_LADDER 0x20000000 -#define CONTENTS_HITBOX 0x40000000 /**< use accurate hitboxes on trace. */ +#define CONTENTS_ORIGIN 0x1000000 /**< removed before bsp-ing an entity. */ +#define CONTENTS_MONSTER 0x2000000 /**< should never be on a brush, only in game. */ +#define CONTENTS_DEBRIS 0x4000000 +#define CONTENTS_DETAIL 0x8000000 /**< brushes to be added after vis leafs. */ +#define CONTENTS_TRANSLUCENT 0x10000000 /**< auto set if any surface has trans. */ +#define CONTENTS_LADDER 0x20000000 +#define CONTENTS_HITBOX 0x40000000 /**< use accurate hitboxes on trace. */ /** * @section Trace masks. */ -#define MASK_ALL (0xFFFFFFFF) -#define MASK_SOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< everything that is normally solid */ -#define MASK_PLAYERSOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< everything that blocks player movement */ -#define MASK_NPCSOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< blocks npc movement */ -#define MASK_WATER (CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME) /**< water physics in these contents */ -#define MASK_OPAQUE (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE) /**< everything that blocks line of sight for AI, lighting, etc */ -#define MASK_OPAQUE_AND_NPCS (MASK_OPAQUE|CONTENTS_MONSTER) /**< everything that blocks line of sight for AI, lighting, etc, but with monsters added. */ -#define MASK_VISIBLE (MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE) /**< everything that blocks line of sight for players */ -#define MASK_VISIBLE_AND_NPCS (MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE) /**< everything that blocks line of sight for players, but with monsters added. */ -#define MASK_SHOT (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX) /**< bullets see these as solid */ -#define MASK_SHOT_HULL (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE) /**< non-raycasted weapons see this as solid (includes grates) */ -#define MASK_SHOT_PORTAL (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW) /**< hits solids (not grates) and passes through everything else */ -#define MASK_SOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE) /**< everything normally solid, except monsters (world+brush only) */ -#define MASK_PLAYERSOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE) /**< everything normally solid for player movement, except monsters (world+brush only) */ -#define MASK_NPCSOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) /**< everything normally solid for npc movement, except monsters (world+brush only) */ -#define MASK_NPCWORLDSTATIC (CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) /**< just the world, used for route rebuilding */ -#define MASK_SPLITAREAPORTAL (CONTENTS_WATER|CONTENTS_SLIME) /**< These are things that can split areaportals */ +#define MASK_ALL (0xFFFFFFFF) +#define MASK_SOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< everything that is normally solid */ +#define MASK_PLAYERSOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< everything that blocks player movement */ +#define MASK_NPCSOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< blocks npc movement */ +#define MASK_WATER (CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME) /**< water physics in these contents */ +#define MASK_OPAQUE (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE) /**< everything that blocks line of sight for AI, lighting, etc */ +#define MASK_OPAQUE_AND_NPCS (MASK_OPAQUE|CONTENTS_MONSTER) /**< everything that blocks line of sight for AI, lighting, etc, but with monsters added. */ +#define MASK_VISIBLE (MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE) /**< everything that blocks line of sight for players */ +#define MASK_VISIBLE_AND_NPCS (MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE) /**< everything that blocks line of sight for players, but with monsters added. */ +#define MASK_SHOT (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX) /**< bullets see these as solid */ +#define MASK_SHOT_HULL (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE) /**< non-raycasted weapons see this as solid (includes grates) */ +#define MASK_SHOT_PORTAL (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW) /**< hits solids (not grates) and passes through everything else */ +#define MASK_SOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE) /**< everything normally solid, except monsters (world+brush only) */ +#define MASK_PLAYERSOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE) /**< everything normally solid for player movement, except monsters (world+brush only) */ +#define MASK_NPCSOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) /**< everything normally solid for npc movement, except monsters (world+brush only) */ +#define MASK_NPCWORLDSTATIC (CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) /**< just the world, used for route rebuilding */ +#define MASK_SPLITAREAPORTAL (CONTENTS_WATER|CONTENTS_SLIME) /**< These are things that can split areaportals */ + +/** + * @endsection + */ + +/** + * @section Surface flags. + */ + +#define SURF_LIGHT 0x0001 /**< value will hold the light strength */ +#define SURF_SKY2D 0x0002 /**< don't draw, indicates we should skylight + draw 2d sky but not draw the 3D skybox */ +#define SURF_SKY 0x0004 /**< don't draw, but add to skybox */ +#define SURF_WARP 0x0008 /**< turbulent water warp */ +#define SURF_TRANS 0x0010 +#define SURF_NOPORTAL 0x0020 /**< the surface can not have a portal placed on it */ +#define SURF_TRIGGER 0x0040 /**< This is an xbox hack to work around elimination of trigger surfaces, which breaks occluders */ +#define SURF_NODRAW 0x0080 /**< don't bother referencing the texture */ + +#define SURF_HINT 0x0100 /**< make a primary bsp splitter */ + +#define SURF_SKIP 0x0200 /**< completely ignore, allowing non-closed brushes */ +#define SURF_NOLIGHT 0x0400 /**< Don't calculate light */ +#define SURF_BUMPLIGHT 0x0800 /**< calculate three lightmaps for the surface for bumpmapping */ +#define SURF_NOSHADOWS 0x1000 /**< Don't receive shadows */ +#define SURF_NODECALS 0x2000 /**< Don't receive decals */ +#define SURF_NOCHOP 0x4000 /**< Don't subdivide patches on this surface */ +#define SURF_HITBOX 0x8000 /**< surface is part of a hitbox */ + +/** + * @endsection + */ + +/** + * @section Partition masks. + */ + +#define PARTITION_SOLID_EDICTS (1 << 1) /**< every edict_t that isn't SOLID_TRIGGER or SOLID_NOT (and static props) */ +#define PARTITION_TRIGGER_EDICTS (1 << 2) /**< every edict_t that IS SOLID_TRIGGER */ +#define PARTITION_NON_STATIC_EDICTS (1 << 5) /**< everything in solid & trigger except the static props, includes SOLID_NOTs */ +#define PARTITION_STATIC_PROPS (1 << 7) + +/** + * @endsection + */ + +/** + * @section Displacement flags. + */ + +#define DISPSURF_FLAG_SURFACE (1<<0) +#define DISPSURF_FLAG_WALKABLE (1<<1) +#define DISPSURF_FLAG_BUILDABLE (1<<2) +#define DISPSURF_FLAG_SURFPROP1 (1<<3) +#define DISPSURF_FLAG_SURFPROP2 (1<<4) /** * @endsection @@ -106,8 +160,8 @@ enum RayType { - RayType_EndPoint, /**< The trace ray will go from the start position to the end position. */ - RayType_Infinite /**< The trace ray will go from the start position to infinity using a direction vector. */ + RayType_EndPoint, /**< The trace ray will go from the start position to the end position. */ + RayType_Infinite /**< The trace ray will go from the start position to infinity using a direction vector. */ }; typeset TraceEntityFilter @@ -115,254 +169,495 @@ typeset TraceEntityFilter /** * Called on entity filtering. * - * @param entity Entity index. - * @param contentsMask Contents Mask. - * @return True to allow the current entity to be hit, otherwise false. - */ + * @param entity Entity index. + * @param contentsMask Contents Mask. + * @return True to allow the current entity to be hit, otherwise false. + */ function bool (int entity, int contentsMask); - + /** * Called on entity filtering. * - * @param entity Entity index. - * @param contentsMask Contents Mask. - * @param data Data value, if used. - * @return True to allow the current entity to be hit, otherwise false. - */ + * @param entity Entity index. + * @param contentsMask Contents Mask. + * @param data Data value, if used. + * @return True to allow the current entity to be hit, otherwise false. + */ function bool (int entity, int contentsMask, any data); }; +typeset TraceEntityEnumerator +{ + /** + * Called for each entity enumerated with EnumerateEntities*. + * + * @param entity Entity index. + * @return True to continue enumerating, otherwise false. + */ + function bool (int entity); + + /** + * Called for each entity enumerated with EnumerateEntities*. + * + * @param entity Entity index. + * @param data Data value, if used. + * @return True to continue enumerating, otherwise false. */ + function bool (int entity, any data); +} + /** * Get the contents mask and the entity index at the given position. * - * @param pos World position to test. - * @param entindex Entity index found at the given position (by reference). - * @return Contents mask. + * @param pos World position to test. + * @param entindex Entity index found at the given position (by reference). + * @return Contents mask. */ native int TR_GetPointContents(const float pos[3], int &entindex=-1); /** * Get the point contents testing only the given entity index. * - * @param entindex Entity index to test. - * @param pos World position. - * @return Contents mask. + * @param entindex Entity index to test. + * @param pos World position. + * @return Contents mask. */ native int TR_GetPointContentsEnt(int entindex, const float pos[3]); /** * Starts up a new trace ray using a global trace result. * - * @param pos Starting position of the ray. - * @param vec Depending on RayType, it will be used as the - * ending point, or the direction angle. - * @param flags Trace flags. - * @param rtype Method to calculate the ray direction. + * @param pos Starting position of the ray. + * @param vec Depending on RayType, it will be used as the + * ending point, or the direction angle. + * @param flags Trace flags. + * @param rtype Method to calculate the ray direction. */ native void TR_TraceRay(const float pos[3], - const float vec[3], - int flags, - RayType rtype); - + const float vec[3], + int flags, + RayType rtype); + /** * Starts up a new trace hull using a global trace result. * - * @param pos Starting position of the ray. - * @param vec Ending position of the ray. - * @param mins Hull minimum size. - * @param maxs Hull maximum size. - * @param flags Trace flags. + * @param pos Starting position of the ray. + * @param vec Ending position of the ray. + * @param mins Hull minimum size. + * @param maxs Hull maximum size. + * @param flags Trace flags. */ native void TR_TraceHull(const float pos[3], - const float vec[3], - const float mins[3], - const float maxs[3], - int flags); + const float vec[3], + const float mins[3], + const float maxs[3], + int flags); /** - * Starts up a new trace ray using a global trace result and a customized + * Enumerates over entities along a ray. This may find entities that are + * close to the ray but do not actually intersect it. Use TR_Clip*RayToEntity + * with TR_DidHit to check if the ray actually intersects the entity. + * + * @param pos Starting position of the ray. + * @param vec Depending on RayType, it will be used as the ending + * point, or the direction angle. + * @param mask Mask to use for the trace. See PARTITION_* flags. + * @param rtype Method to calculate the ray direction. + * @param enumerator Function to use as enumerator. For each entity found + * along the ray, this function is called. + * @param data Arbitrary data value to pass through to the enumerator. + */ +native void TR_EnumerateEntities(const float pos[3], + const float vec[3], + int mask, + RayType rtype, + TraceEntityEnumerator enumerator, + any data=0); + +/** + * Enumerates over entities along a ray hull. This may find entities that are + * close to the ray but do not actually intersect it. Use TR_Clip*RayToEntity + * with TR_DidHit to check if the ray actually intersects the entity. + * + * @param pos Starting position of the ray. + * @param vec Ending position of the ray. + * @param mins Hull minimum size. + * @param maxs Hull maximum size. + * @param mask Mask to use for the trace. See PARTITION_* flags. + * @param enumerator Function to use as enumerator. For each entity found + * along the ray, this function is called. + * @param data Arbitrary data value to pass through to the enumerator. + */ +native void TR_EnumerateEntitiesHull(const float pos[3], + const float vec[3], + const float mins[3], + const float maxs[3], + int mask, + TraceEntityEnumerator enumerator, + any data=0); + +/** + * Starts up a new trace ray using a global trace result and a customized * trace ray filter. * - * Calling TR_Trace*Filter or TR_Trace*FilterEx from inside a filter + * Calling TR_Trace*Filter or TR_Trace*FilterEx from inside a filter * function is currently not allowed and may not work. * - * @param pos Starting position of the ray. - * @param vec Depending on RayType, it will be used as the ending - * point, or the direction angle. - * @param flags Trace flags. - * @param rtype Method to calculate the ray direction. - * @param filter Function to use as a filter. - * @param data Arbitrary data value to pass through to the filter - * function. + * @param pos Starting position of the ray. + * @param vec Depending on RayType, it will be used as the ending + * point, or the direction angle. + * @param flags Trace flags. + * @param rtype Method to calculate the ray direction. + * @param filter Function to use as a filter. + * @param data Arbitrary data value to pass through to the filter + * function. */ native void TR_TraceRayFilter(const float pos[3], - const float vec[3], - int flags, - RayType rtype, - TraceEntityFilter filter, - any data=0); - + const float vec[3], + int flags, + RayType rtype, + TraceEntityFilter filter, + any data=0); + /** - * Starts up a new trace hull using a global trace result and a customized + * Starts up a new trace hull using a global trace result and a customized * trace ray filter. * - * Calling TR_Trace*Filter or TR_Trace*FilterEx from inside a filter + * Calling TR_Trace*Filter or TR_Trace*FilterEx from inside a filter * function is currently not allowed and may not work. * - * @param pos Starting position of the ray. - * @param vec Depending on RayType, it will be used as the ending - * point, or the direction angle. - * @param mins Hull minimum size. - * @param maxs Hull maximum size. - * @param flags Trace flags. - * @param filter Function to use as a filter. - * @param data Arbitrary data value to pass through to the filter - * function. + * @param pos Starting position of the ray. + * @param vec Ending position of the ray. + * @param mins Hull minimum size. + * @param maxs Hull maximum size. + * @param flags Trace flags. + * @param filter Function to use as a filter. + * @param data Arbitrary data value to pass through to the filter + * function. */ native void TR_TraceHullFilter(const float pos[3], - const float vec[3], - const float mins[3], - const float maxs[3], - int flags, - TraceEntityFilter filter, - any data=0); + const float vec[3], + const float mins[3], + const float maxs[3], + int flags, + TraceEntityFilter filter, + any data=0); + +/** + * Clips a ray to a particular entity. + * + * @param pos Starting position of the ray. + * @param vec Depending on RayType, it will be used as the ending + * point, or the direction angle. + * @param flags Trace flags. + * @param rtype Method to calculate the ray direction. + * @param entity Entity to clip to. + */ +native void TR_ClipRayToEntity(const float pos[3], + const float vec[3], + int flags, + RayType rtype, + int entity); + +/** + * Clips a ray hull to a particular entity. + * + * @param pos Starting position of the ray. + * @param vec Ending position of the ray. + * @param mins Hull minimum size. + * @param maxs Hull maximum size. + * @param flags Trace flags. + * @param entity Entity to clip to. + */ +native void TR_ClipRayHullToEntity(const float pos[3], + const float vec[3], + const float mins[3], + const float maxs[3], + int flags, + int entity); + +/** + * Clips the current global ray (or hull) to a particular entity. + * + * @param flags Trace flags. + * @param entity Entity to clip to. + */ +native void TR_ClipCurrentRayToEntity(int flags, int entity); /** * Starts up a new trace ray using a new trace result. * - * @param pos Starting position of the ray. - * @param vec Depending on RayType, it will be used as the ending - * point, or the direction angle. - * @param flags Trace flags. - * @param rtype Method to calculate the ray direction. - * @return Ray trace handle, which must be closed via CloseHandle(). + * @param pos Starting position of the ray. + * @param vec Depending on RayType, it will be used as the ending + * point, or the direction angle. + * @param flags Trace flags. + * @param rtype Method to calculate the ray direction. + * @return Ray trace handle, which must be closed via CloseHandle(). */ native Handle TR_TraceRayEx(const float pos[3], - const float vec[3], - int flags, - RayType rtype); - + const float vec[3], + int flags, + RayType rtype); + /** * Starts up a new trace hull using a new trace result. * - * @param pos Starting position of the ray. - * @param vec Ending position of the ray. - * @param mins Hull minimum size. - * @param maxs Hull maximum size. - * @param flags Trace flags. - * @return Ray trace handle, which must be closed via CloseHandle(). + * @param pos Starting position of the ray. + * @param vec Ending position of the ray. + * @param mins Hull minimum size. + * @param maxs Hull maximum size. + * @param flags Trace flags. + * @return Ray trace handle, which must be closed via CloseHandle(). */ native Handle TR_TraceHullEx(const float pos[3], - const float vec[3], - const float mins[3], - const float maxs[3], - int flags); + const float vec[3], + const float mins[3], + const float maxs[3], + int flags); /** - * Starts up a new trace ray using a new trace result and a customized + * Starts up a new trace ray using a new trace result and a customized * trace ray filter. * - * Calling TR_Trace*Filter or TR_TraceRay*Ex from inside a filter + * Calling TR_Trace*Filter or TR_TraceRay*Ex from inside a filter * function is currently not allowed and may not work. * - * @param pos Starting position of the ray. - * @param vec Depending on RayType, it will be used as the ending - * point, or the direction angle. - * @param flags Trace flags. - * @param rtype Method to calculate the ray direction. - * @param filter Function to use as a filter. - * @param data Arbitrary data value to pass through to the filter function. - * @return Ray trace handle, which must be closed via CloseHandle(). + * @param pos Starting position of the ray. + * @param vec Depending on RayType, it will be used as the ending + * point, or the direction angle. + * @param flags Trace flags. + * @param rtype Method to calculate the ray direction. + * @param filter Function to use as a filter. + * @param data Arbitrary data value to pass through to the filter function. + * @return Ray trace handle, which must be closed via CloseHandle(). */ -native Handle TR_TraceRayFilterEx(const float pos[3], - const float vec[3], - int flags, - RayType rtype, - TraceEntityFilter filter, - any data=0); - +native Handle TR_TraceRayFilterEx(const float pos[3], + const float vec[3], + int flags, + RayType rtype, + TraceEntityFilter filter, + any data=0); + /** - * Starts up a new trace hull using a new trace result and a customized + * Starts up a new trace hull using a new trace result and a customized * trace ray filter. * - * Calling TR_Trace*Filter or TR_Trace*FilterEx from inside a filter + * Calling TR_Trace*Filter or TR_Trace*FilterEx from inside a filter * function is currently not allowed and may not work. * - * @param pos Starting position of the ray. - * @param vec Ending position of the ray. - * @param mins Hull minimum size. - * @param maxs Hull maximum size. - * @param flags Trace flags. - * @param filter Function to use as a filter. - * @param data Arbitrary data value to pass through to the filter function. - * @return Ray trace handle, which must be closed via CloseHandle(). + * @param pos Starting position of the ray. + * @param vec Ending position of the ray. + * @param mins Hull minimum size. + * @param maxs Hull maximum size. + * @param flags Trace flags. + * @param filter Function to use as a filter. + * @param data Arbitrary data value to pass through to the filter function. + * @return Ray trace handle, which must be closed via CloseHandle(). */ -native Handle TR_TraceHullFilterEx(const float pos[3], - const float vec[3], - const float mins[3], - const float maxs[3], - int flags, - TraceEntityFilter filter, - any data=0); +native Handle TR_TraceHullFilterEx(const float pos[3], + const float vec[3], + const float mins[3], + const float maxs[3], + int flags, + TraceEntityFilter filter, + any data=0); + +/** + * Clips a ray to a particular entity. + * + * @param pos Starting position of the ray. + * @param vec Depending on RayType, it will be used as the ending + * point, or the direction angle. + * @param flags Trace flags. + * @param rtype Method to calculate the ray direction. + * @param entity Entity to clip to. + * @return Ray trace handle, which must be closed via CloseHandle(). + */ +native Handle TR_ClipRayToEntityEx(const float pos[3], + const float vec[3], + int flags, + RayType rtype, + int entity); + +/** + * Clips a ray hull to a particular entity. + * + * @param pos Starting position of the ray. + * @param vec Ending position of the ray. + * @param mins Hull minimum size. + * @param maxs Hull maximum size. + * @param flags Trace flags. + * @param entity Entity to clip to. + * @return Ray trace handle, which must be closed via CloseHandle(). + */ +native Handle TR_ClipRayHullToEntityEx(const float pos[3], + const float vec[3], + const float mins[3], + const float maxs[3], + int flags, + int entity); + +/** + * Clips the current global ray (or hull) to a particular entity. + * + * @param flags Trace flags. + * @param entity Entity to clip to. + * @return Ray trace handle, which must be closed via CloseHandle(). + */ +native Handle TR_ClipCurrentRayToEntityEx(int flags, int entity); /** * Returns the time fraction from a trace result (1.0 means no collision). * - * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. - * @return Time fraction value of the trace. - * @error Invalid Handle. + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Time fraction value of the trace. + * @error Invalid Handle. */ native float TR_GetFraction(Handle hndl=INVALID_HANDLE); +/** + * Returns the time fraction from a trace result when it left a solid. + * Only valid if trace started in solid + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Time fraction left solid value of the trace. + * @error Invalid Handle. + */ +native float TR_GetFractionLeftSolid(Handle hndl=INVALID_HANDLE); + +/** + * Returns the starting position of a trace. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @param pos Vector buffer to store data in. + * @error Invalid Handle. + */ +native void TR_GetStartPosition(Handle hndl, float pos[3]); + /** * Returns the collision position of a trace result. * - * @param pos Vector buffer to store data in. - * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. - * @error Invalid Handle. + * @param pos Vector buffer to store data in. + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @error Invalid Handle. */ native void TR_GetEndPosition(float pos[3], Handle hndl=INVALID_HANDLE); /** * Returns the entity index that collided with the trace. * - * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. - * @return Entity index or -1 for no collision. - * @error Invalid Handle. + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Entity index or -1 for no collision. + * @error Invalid Handle. */ native int TR_GetEntityIndex(Handle hndl=INVALID_HANDLE); +/** + * Returns the displacement flags for the surface that was hit. See DISPSURF_FLAG_*. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Displacement flags. + * @error Invalid Handle. + */ +native int TR_GetDisplacementFlags(Handle hndl=INVALID_HANDLE); + +/** + * Returns the name of the surface that was hit. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @param buffer Buffer to store surface name in + * @param maxlen Maximum length of output buffer + * @error Invalid Handle. + */ +native void TR_GetSurfaceName(Handle hndl, char[] buffer, int maxlen); + +/** + * Returns the surface properties index of the surface that was hit. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Surface props. + * @error Invalid Handle. + */ +native int TR_GetSurfaceProps(Handle hndl=INVALID_HANDLE); + +/** + * Returns the surface flags. See SURF_*. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Surface flags. + * @error Invalid Handle. + */ +native int TR_GetSurfaceFlags(Handle hndl=INVALID_HANDLE); + +/** + * Returns the index of the physics bone that was hit. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Physics bone index. + * @error Invalid Handle. + */ +native int TR_GetPhysicsBone(Handle hndl=INVALID_HANDLE); + +/** + * Returns whether the entire trace was in a solid area. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return True if entire trace was in a solid area, otherwise false. + * @error Invalid Handle. + */ +native bool TR_AllSolid(Handle hndl=INVALID_HANDLE); + +/** + * Returns whether the initial point was in a solid area. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return True if initial point was in a solid area, otherwise false. + * @error Invalid Handle. + */ +native bool TR_StartSolid(Handle hndl=INVALID_HANDLE); + /** * Returns if there was any kind of collision along the trace ray. * - * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. - * @return True if any collision found, otherwise false. - * @error Invalid Handle. + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return True if any collision found, otherwise false. + * @error Invalid Handle. */ native bool TR_DidHit(Handle hndl=INVALID_HANDLE); /** * Returns in which body hit group the trace collided if any. * - * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. - * @return Body hit group. - * @error Invalid Handle. + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Body hit group. + * @error Invalid Handle. */ native int TR_GetHitGroup(Handle hndl=INVALID_HANDLE); +/** + * Returns in which hitbox the trace collided if any. + * + * Note: if the entity that collided with the trace is the world entity, + * then this function doesn't return an hitbox index but a static prop index. + * + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @return Hitbox index (Or static prop index). + * @error Invalid Handle. + */ +native int TR_GetHitBoxIndex(Handle hndl=INVALID_HANDLE); + /** * Find the normal vector to the collision plane of a trace. * - * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. - * @param normal Vector buffer to store the vector normal to the collision plane - * @error Invalid Handle + * @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result. + * @param normal Vector buffer to store the vector normal to the collision plane + * @error Invalid Handle */ native void TR_GetPlaneNormal(Handle hndl, float normal[3]); /** * Tests a point to see if it's outside any playable area * - * @param pos Vector buffer to store data in. - * @return True if outside world, otherwise false. + * @param pos Vector buffer to store data in. + * @return True if outside world, otherwise false. */ native bool TR_PointOutsideWorld(float pos[3]); diff --git a/env/include/sdktools_variant_t.inc b/env/include/sdktools_variant_t.inc new file mode 100644 index 0000000..71bfced --- /dev/null +++ b/env/include/sdktools_variant_t.inc @@ -0,0 +1,93 @@ +/** + * vim: set ts=4 : + * ============================================================================= + * SourceMod (C)2004-2017 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 . + * + * 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 . + * + * Version: $Id$ + */ + +#if defined _sdktools_variant_t_included + #endinput +#endif +#define _sdktools_variant_t_included + +/** + * Sets a bool value in the global variant object. + * + * @param val Input value. + */ +native void SetVariantBool(bool val); + +/** + * Sets a string in the global variant object. + * + * @param str Input string. + */ +native void SetVariantString(const char[] str); + +/** + * Sets an integer value in the global variant object. + * + * @param val Input value. + */ +native void SetVariantInt(int val); + +/** + * Sets a floating point value in the global variant object. + * + * @param val Input value. + */ +native void SetVariantFloat(float val); + +/** + * Sets a 3D vector in the global variant object. + * + * @param vec Input vector. + */ +native void SetVariantVector3D(const float vec[3]); + +/** + * Sets a 3D position vector in the global variant object. + * + * @param vec Input position vector. + */ +native void SetVariantPosVector3D(const float vec[3]); + +/** + * Sets a color in the global variant object. + * + * @param color Input color. + */ +native void SetVariantColor(const int color[4]); + +/** + * Sets an entity in the global variant object. + * + * @param entity Entity index. + * @error Invalid entity index. + */ +native void SetVariantEntity(int entity); diff --git a/env/include/sdktools_voice.inc b/env/include/sdktools_voice.inc index 8d84466..2731997 100644 --- a/env/include/sdktools_voice.inc +++ b/env/include/sdktools_voice.inc @@ -9,7 +9,7 @@ * 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 @@ -31,54 +31,55 @@ */ #if defined _sdktools_voice_included - #endinput + #endinput #endif #define _sdktools_voice_included /** * @section voice flags. */ -#define VOICE_NORMAL 0 /**< Allow the client to listen and speak normally. */ -#define VOICE_MUTED 1 /**< Mutes the client from speaking to everyone. */ -#define VOICE_SPEAKALL 2 /**< Allow the client to speak to everyone. */ -#define VOICE_LISTENALL 4 /**< Allow the client to listen to everyone. */ -#define VOICE_TEAM 8 /**< Allow the client to always speak to team, even when dead. */ -#define VOICE_LISTENTEAM 16 /**< Allow the client to always hear teammates, including dead ones. */ - +#define VOICE_NORMAL 0 /**< Allow the client to listen and speak normally. */ +#define VOICE_MUTED 1 /**< Mutes the client from speaking to everyone. */ +#define VOICE_SPEAKALL 2 /**< Allow the client to speak to everyone. */ +#define VOICE_LISTENALL 4 /**< Allow the client to listen to everyone. */ +#define VOICE_TEAM 8 /**< Allow the client to always speak to team, even when dead. */ +#define VOICE_LISTENTEAM 16 /**< Allow the client to always hear teammates, including dead ones. */ + /** * @endsection */ enum ListenOverride { - Listen_Default = 0, /**< Leave it up to the game */ - Listen_No, /**< Can't hear */ - Listen_Yes, /**< Can hear */ + Listen_Default = 0, /**< Leave it up to the game */ + Listen_No, /**< Can't hear */ + Listen_Yes /**< Can hear */ }; /** * Set the client listening flags. * - * @param client The client index - * @param flags The voice flags + * @param client The client index + * @param flags The voice flags */ native void SetClientListeningFlags(int client, int flags); /** * Retrieve the client current listening flags. * - * @param client The client index - * @return The current voice flags + * @param client The client index + * @return The current voice flags */ native int GetClientListeningFlags(int client); /** * Set the receiver ability to listen to the sender. * - * @param iReceiver The listener index. - * @param iSender The sender index. - * @param bListen True if the receiver can listen to the sender, false otherwise. - * @return True if successful otherwise false. + * @param iReceiver The listener index. + * @param iSender The sender index. + * @param bListen True if the receiver can listen to the sender, false otherwise. + * @return True if successful otherwise false. + * @deprecated Use SetListenOverride() instead. */ #pragma deprecated Use SetListenOverride() instead native bool SetClientListening(int iReceiver, int iSender, bool bListen); @@ -86,9 +87,10 @@ native bool SetClientListening(int iReceiver, int iSender, bool bListen); /** * Retrieves if the receiver can listen to the sender. * - * @param iReceiver The listener index. - * @param iSender The sender index. - * @return True if successful otherwise false. + * @param iReceiver The listener index. + * @param iSender The sender index. + * @return True if successful otherwise false. + * @deprecated GetListenOverride() instead. */ #pragma deprecated GetListenOverride() instead native bool GetClientListening(int iReceiver, int iSender); @@ -96,27 +98,27 @@ native bool GetClientListening(int iReceiver, int iSender); /** * Override the receiver's ability to listen to the sender. * - * @param iReceiver The listener index. - * @param iSender The sender index. - * @param override The override of the receiver's ability to listen to the sender. - * @return True if successful otherwise false. + * @param iReceiver The listener index. + * @param iSender The sender index. + * @param override The override of the receiver's ability to listen to the sender. + * @return True if successful otherwise false. */ native bool SetListenOverride(int iReceiver, int iSender, ListenOverride override); /** * Retrieves the override of the receiver's ability to listen to the sender. * - * @param iReceiver The listener index. - * @param iSender The sender index. - * @return The override value. + * @param iReceiver The listener index. + * @param iSender The sender index. + * @return The override value. */ native ListenOverride GetListenOverride(int iReceiver, int iSender); /** * Retrieves if the muter has muted the mutee. * - * @param iMuter The muter index. - * @param iMutee The mutee index. - * @return True if muter has muted mutee, false otherwise. + * @param iMuter The muter index. + * @param iMutee The mutee index. + * @return True if muter has muted mutee, false otherwise. */ native bool IsClientMuted(int iMuter, int iMutee); diff --git a/env/include/sorting.inc b/env/include/sorting.inc index 2478645..5b0c249 100644 --- a/env/include/sorting.inc +++ b/env/include/sorting.inc @@ -9,7 +9,7 @@ * 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 @@ -32,7 +32,7 @@ #if defined _sorting_included - #endinput + #endinput #endif #define _sorting_included @@ -41,9 +41,9 @@ */ enum SortOrder { - Sort_Ascending = 0, /**< Ascending order */ - Sort_Descending = 1, /**< Descending order */ - Sort_Random = 2 /**< Random order */ + Sort_Ascending = 0, /**< Ascending order */ + Sort_Descending = 1, /**< Descending order */ + Sort_Random = 2 /**< Random order */ }; /** @@ -51,35 +51,35 @@ enum SortOrder */ enum SortType { - Sort_Integer = 0, - Sort_Float, - Sort_String, + Sort_Integer = 0, + Sort_Float, + Sort_String }; /** * Sorts an array of integers. * - * @param array Array of integers to sort in-place. - * @param array_size Size of the array. - * @param order Sorting order to use. + * @param array Array of integers to sort in-place. + * @param array_size Size of the array. + * @param order Sorting order to use. */ native void SortIntegers(int[] array, int array_size, SortOrder order = Sort_Ascending); /** * Sorts an array of float point numbers. * - * @param array Array of floating point numbers to sort in-place. - * @param array_size Size of the array. - * @param order Sorting order to use. + * @param array Array of floating point numbers to sort in-place. + * @param array_size Size of the array. + * @param order Sorting order to use. */ native void SortFloats(float[] array, int array_size, SortOrder order = Sort_Ascending); /** * Sorts an array of strings. * - * @param array Array of strings to sort in-place. - * @param array_size Size of the array. - * @param order Sorting order to use. + * @param array Array of strings to sort in-place. + * @param array_size Size of the array. + * @param order Sorting order to use. */ native void SortStrings(char[][] array, int array_size, SortOrder order = Sort_Ascending); @@ -87,23 +87,23 @@ native void SortStrings(char[][] array, int array_size, SortOrder order = Sort_A * Sort comparison function for 1D array elements. * @note You may need to use explicit tags in order to use data properly. * - * @param elem1 First element to compare. - * @param elem2 Second element to compare. - * @param array Array that is being sorted (order is undefined). - * @param hndl Handle optionally passed in while sorting. - * @return -1 if first should go before second - * 0 if first is equal to second - * 1 if first should go after second + * @param elem1 First element to compare. + * @param elem2 Second element to compare. + * @param array Array that is being sorted (order is undefined). + * @param hndl Handle optionally passed in while sorting. + * @return -1 if first should go before second + * 0 if first is equal to second + * 1 if first should go after second */ typedef SortFunc1D = function int (int elem1, int elem2, const int[] array, Handle hndl); -/** +/** * Sorts a custom 1D array. You must pass in a comparison function. * - * @param array Array to sort. - * @param array_size Size of the array to sort. - * @param sortfunc Sort function. - * @param hndl Optional Handle to pass through the comparison calls. + * @param array Array to sort. + * @param array_size Size of the array to sort. + * @param sortfunc Sort function. + * @param hndl Optional Handle to pass through the comparison calls. */ native void SortCustom1D(int[] array, int array_size, SortFunc1D sortfunc, Handle hndl=INVALID_HANDLE); @@ -111,13 +111,13 @@ native void SortCustom1D(int[] array, int array_size, SortFunc1D sortfunc, Handl * Sort comparison function for 2D array elements (sub-arrays). * @note You may need to use explicit tags in order to use data properly. * - * @param elem1 First array to compare. - * @param elem2 Second array to compare. - * @param array Array that is being sorted (order is undefined). - * @param hndl Handle optionally passed in while sorting. - * @return -1 if first should go before second - * 0 if first is equal to second - * 1 if first should go after second + * @param elem1 First array to compare. + * @param elem2 Second array to compare. + * @param array Array that is being sorted (order is undefined). + * @param hndl Handle optionally passed in while sorting. + * @return -1 if first should go before second + * 0 if first is equal to second + * 1 if first should go after second */ typeset SortFunc2D { @@ -125,22 +125,22 @@ typeset SortFunc2D function int (char[] elem1, char[] elem2, const char[][] array, Handle hndl); }; -/** +/** * Sorts a custom 2D array. You must pass in a comparison function. * - * @param array Array to sort. - * @param array_size Size of the major array to sort (first index, outermost). - * @param sortfunc Sort comparison function to use. - * @param hndl Optional Handle to pass through the comparison calls. + * @param array Array to sort. + * @param array_size Size of the major array to sort (first index, outermost). + * @param sortfunc Sort comparison function to use. + * @param hndl Optional Handle to pass through the comparison calls. */ native void SortCustom2D(any[][] array, int array_size, SortFunc2D sortfunc, Handle hndl=INVALID_HANDLE); /** * Sort an ADT Array. Specify the type as Integer, Float, or String. * - * @param array Array Handle to sort - * @param order Sort order to use, same as other sorts. - * @param type Data type stored in the ADT Array + * @param array Array Handle to sort + * @param order Sort order to use, same as other sorts. + * @param type Data type stored in the ADT Array */ native void SortADTArray(Handle array, SortOrder order, SortType type); @@ -149,21 +149,21 @@ native void SortADTArray(Handle array, SortOrder order, SortType type); * indexes currently being sorted, use ADT Array functions to retrieve the * index values and compare. * - * @param index1 First index to compare. - * @param index2 Second index to compare. - * @param array Array that is being sorted (order is undefined). - * @param hndl Handle optionally passed in while sorting. - * @return -1 if first should go before second - * 0 if first is equal to second - * 1 if first should go after second + * @param index1 First index to compare. + * @param index2 Second index to compare. + * @param array Array that is being sorted (order is undefined). + * @param hndl Handle optionally passed in while sorting. + * @return -1 if first should go before second + * 0 if first is equal to second + * 1 if first should go after second */ typedef SortFuncADTArray = function int (int index1, int index2, Handle array, Handle hndl); /** * Custom sorts an ADT Array. You must pass in a comparison function. * - * @param array Array Handle to sort - * @param sortfunc Sort comparison function to use - * @param hndl Optional Handle to pass through the comparison calls. + * @param array Array Handle to sort + * @param sortfunc Sort comparison function to use + * @param hndl Optional Handle to pass through the comparison calls. */ -native void SortADTArrayCustom(Handle array, SortFuncADTArray sortfunc, Handle hndl=INVALID_HANDLE); +native void SortADTArrayCustom(Handle array, SortFuncADTArray sortfunc, Handle hndl=INVALID_HANDLE); diff --git a/env/include/sourcemod.inc b/env/include/sourcemod.inc index 1142f4b..8415296 100644 --- a/env/include/sourcemod.inc +++ b/env/include/sourcemod.inc @@ -9,7 +9,7 @@ * 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 @@ -40,21 +40,21 @@ */ struct Plugin { - public const char[] name; /**< Plugin Name */ - public const char[] description; /**< Plugin Description */ - public const char[] author; /**< Plugin Author */ - public const char[] version; /**< Plugin Version */ - public const char[] url; /**< Plugin URL */ + public const char[] name; /**< Plugin Name */ + public const char[] description; /**< Plugin Description */ + public const char[] author; /**< Plugin Author */ + public const char[] version; /**< Plugin Version */ + public const char[] url; /**< Plugin URL */ }; /** - * Returns whether a library exists. This function should be considered - * expensive; it should only be called on plugin to determine availability - * of resources. Use OnLibraryAdded()/OnLibraryRemoved() to detect changes + * Returns whether a library exists. This function should be considered + * expensive; it should only be called on plugin to determine availability + * of resources. Use OnLibraryAdded()/OnLibraryRemoved() to detect changes * in optional resources. * - * @param name Library name of a plugin or extension. - * @return True if exists, false otherwise. + * @param name Library name of a plugin or extension. + * @return True if exists, false otherwise. */ native bool LibraryExists(const char[] name); @@ -67,7 +67,7 @@ enum FeatureType * A native function call. */ FeatureType_Native, - + /** * A named capability. This is distinctly different from checking for a * native, because the underlying functionality could be enabled on-demand @@ -87,12 +87,12 @@ enum FeatureStatus * Feature is available for use. */ FeatureStatus_Available, - + /** * Feature is not available. */ FeatureStatus_Unavailable, - + /** * Feature is not known at all. */ @@ -132,6 +132,7 @@ native FeatureStatus GetFeatureStatus(FeatureType type, const char[] name); native void RequireFeature(FeatureType type, const char[] name, const char[] fmt="", any ...); + #include #include #include @@ -164,17 +165,48 @@ native void RequireFeature(FeatureType type, const char[] name, enum APLRes { - APLRes_Success = 0, /**< Plugin should load */ - APLRes_Failure, /**< Plugin shouldn't load and should display an error */ - APLRes_SilentFailure /**< Plugin shouldn't load but do so silently */ + APLRes_Success = 0, /**< Plugin should load */ + APLRes_Failure, /**< Plugin shouldn't load and should display an error */ + APLRes_SilentFailure /**< Plugin shouldn't load but do so silently */ +}; + +methodmap GameData < Handle +{ + // Loads a game config file. + // + // @param file File to load. The path must be relative to the 'gamedata' folder under the config folder + // and the extension should be omitted. + // @return A handle to the game config file or null on failure. + public native GameData(const char[] file); + + // Returns an offset value. + // + // @param key Key to retrieve from the offset section. + // @return An offset, or -1 on failure. + public native int GetOffset(const char[] key); + + // Gets the value of a key from the "Keys" section. + // + // @param key Key to retrieve from the Keys section. + // @param buffer Destination string buffer. + // @param maxlen Maximum length of output string buffer. + // @return True if key existed, false otherwise. + public native bool GetKeyValue(const char[] key, char[] buffer, int maxlen); + + // Finds an address calculation in a GameConfig file, + // performs LoadFromAddress on it as appropriate, then returns the final address. + // + // @param name Name of the property to find. + // @return An address calculated on success, or 0 on failure. + public native Address GetAddress(const char[] name); }; /** - * Called when the plugin is fully initialized and all known external references - * are resolved. This is only called once in the lifetime of the plugin, and is + * Called when the plugin is fully initialized and all known external references + * are resolved. This is only called once in the lifetime of the plugin, and is * paired with OnPluginEnd(). * - * If any run-time error is thrown during this callback, the plugin will be marked + * If any run-time error is thrown during this callback, the plugin will be marked * as failed. */ forward void OnPluginStart(); @@ -189,30 +221,29 @@ forward bool AskPluginLoad(Handle myself, bool late, char[] error, int err_max); /** * Called before OnPluginStart, in case the plugin wants to check for load failure. - * This is called even if the plugin type is "private." Any natives from modules are - * not available at this point. Thus, this forward should only be used for explicit - * pre-emptive things, such as adding dynamic natives, setting certain types of load + * This is called even if the plugin type is "private." Any natives from modules are + * not available at this point. Thus, this forward should only be used for explicit + * pre-emptive things, such as adding dynamic natives, setting certain types of load * filters (such as not loading the plugin for certain games). - * + * * @note It is not safe to call externally resolved natives until OnPluginStart(). * @note Any sort of RTE in this function will cause the plugin to fail loading. - * @note If you do not return anything, it is treated like returning success. + * @note If you do not return anything, it is treated like returning success. * @note If a plugin has an AskPluginLoad2(), AskPluginLoad() will not be called. * - * - * @param myself Handle to the plugin. - * @param late Whether or not the plugin was loaded "late" (after map load). - * @param error Error message buffer in case load failed. - * @param err_max Maximum number of characters for error message buffer. - * @return APLRes_Success for load success, APLRes_Failure or APLRes_SilentFailure otherwise + * @param myself Handle to the plugin. + * @param late Whether or not the plugin was loaded "late" (after map load). + * @param error Error message buffer in case load failed. + * @param err_max Maximum number of characters for error message buffer. + * @return APLRes_Success for load success, APLRes_Failure or APLRes_SilentFailure otherwise */ forward APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max); /** * Called when the plugin is about to be unloaded. * - * It is not necessary to close any handles or remove hooks in this function. - * SourceMod guarantees that plugin shutdown automatically and correctly releases + * It is not necessary to close any handles or remove hooks in this function. + * SourceMod guarantees that plugin shutdown automatically and correctly releases * all resources. */ forward void OnPluginEnd(); @@ -220,7 +251,7 @@ forward void OnPluginEnd(); /** * Called when the plugin's pause status is changing. * - * @param pause True if the plugin is being paused, false otherwise. + * @param pause True if the plugin is being paused, false otherwise. */ forward void OnPluginPauseChange(bool pause); @@ -234,7 +265,7 @@ forward void OnGameFrame(); * Called when the map is loaded. * * @note This used to be OnServerLoad(), which is now deprecated. - * Plugins still using the old forward will work. + * Plugins still using the old forward will work. */ forward void OnMapStart(); @@ -244,39 +275,39 @@ forward void OnMapStart(); forward void OnMapEnd(); /** - * Called when the map has loaded, servercfgfile (server.cfg) has been + * Called when the map has loaded, servercfgfile (server.cfg) has been * executed, and all plugin configs are done executing. This is the best - * place to initialize plugin functions which are based on cvar data. + * place to initialize plugin functions which are based on cvar data. * - * @note This will always be called once and only once per map. It will be - * called after OnMapStart(). + * @note This will always be called once and only once per map. It will be + * called after OnMapStart(). */ forward void OnConfigsExecuted(); /** - * This is called once, right after OnMapStart() but any time before - * OnConfigsExecuted(). It is called after the "exec sourcemod.cfg" - * command and all AutoExecConfig() exec commands have been added to + * This is called once, right after OnMapStart() but any time before + * OnConfigsExecuted(). It is called after the "exec sourcemod.cfg" + * command and all AutoExecConfig() exec commands have been added to * the ServerCommand() buffer. * - * If you need to load per-map settings that override default values, - * adding commands to the ServerCommand() buffer here will guarantee + * If you need to load per-map settings that override default values, + * adding commands to the ServerCommand() buffer here will guarantee * that they're set before OnConfigsExecuted(). * - * Unlike OnMapStart() and OnConfigsExecuted(), this is not called on + * Unlike OnMapStart() and OnConfigsExecuted(), this is not called on * late loads that occur after OnMapStart(). */ forward void OnAutoConfigsBuffered(); /** - * @deprecated Use OnConfigsExecuted() instead. + * @deprecated Use OnConfigsExecuted() instead. */ #pragma deprecated Use OnConfigsExecuted() instead forward void OnServerCfg(); /** - * Called after all plugins have been loaded. This is called once for - * every plugin. If a plugin late loads, it will be called immediately + * Called after all plugins have been loaded. This is called once for + * every plugin. If a plugin late loads, it will be called immediately * after OnPluginStart(). */ forward void OnAllPluginsLoaded(); @@ -284,87 +315,87 @@ forward void OnAllPluginsLoaded(); /** * Returns the calling plugin's Handle. * - * @return Handle of the calling plugin. + * @return Handle of the calling plugin. */ native Handle GetMyHandle(); /** * Returns an iterator that can be used to search through plugins. * - * @return Handle to iterate with. Must be closed via - * CloseHandle(). - * @error Invalid Handle. + * @return Handle to iterate with. Must be closed via + * CloseHandle(). + * @error Invalid Handle. */ native Handle GetPluginIterator(); /** * Returns whether there are more plugins available in the iterator. * - * @param iter Handle to the plugin iterator. - * @return True on more plugins, false otherwise. - * @error Invalid Handle. + * @param iter Handle to the plugin iterator. + * @return True on more plugins, false otherwise. + * @error Invalid Handle. */ native bool MorePlugins(Handle iter); /** * Returns the current plugin in the iterator and advances the iterator. * - * @param iter Handle to the plugin iterator. - * @return Current plugin the iterator is at, before - * the iterator is advanced. - * @error Invalid Handle. + * @param iter Handle to the plugin iterator. + * @return Current plugin the iterator is at, before + * the iterator is advanced. + * @error Invalid Handle. */ native Handle ReadPlugin(Handle iter); /** * Returns a plugin's status. * - * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). - * @return Status code for the plugin. - * @error Invalid Handle. + * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). + * @return Status code for the plugin. + * @error Invalid Handle. */ native PluginStatus GetPluginStatus(Handle plugin); /** * Retrieves a plugin's file name relative to the plugins folder. * - * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). - * @param buffer Buffer to the store the file name. - * @param maxlength Maximum length of the name buffer. - * @error Invalid Handle. + * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). + * @param buffer Buffer to the store the file name. + * @param maxlength Maximum length of the name buffer. + * @error Invalid Handle. */ native void GetPluginFilename(Handle plugin, char[] buffer, int maxlength); /** * Retrieves whether or not a plugin is being debugged. * - * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). - * @return True if being debugged, false otherwise. - * @error Invalid Handle. + * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). + * @return True if being debugged, false otherwise. + * @error Invalid Handle. */ native bool IsPluginDebugging(Handle plugin); /** * Retrieves a plugin's public info. * - * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). - * @param info Plugin info property to retrieve. - * @param buffer Buffer to store info in. - * @param maxlength Maximum length of buffer. - * @return True on success, false if property is not available. - * @error Invalid Handle. + * @param plugin Plugin Handle (INVALID_HANDLE uses the calling plugin). + * @param info Plugin info property to retrieve. + * @param buffer Buffer to store info in. + * @param maxlength Maximum length of buffer. + * @return True on success, false if property is not available. + * @error Invalid Handle. */ native bool GetPluginInfo(Handle plugin, PluginInfo info, char[] buffer, int maxlength); /** - * Finds a plugin by its order in the list from the "plugins list" server - * "sm" command. You should not use this function to loop through all plugins, - * use the iterator instead. Looping through all plugins using this native + * Finds a plugin by its order in the list from the "plugins list" server + * "sm" command. You should not use this function to loop through all plugins, + * use the iterator instead. Looping through all plugins using this native * is O(n^2), whereas using the iterator is O(n). * - * @param order_num Number of the plugin as it appears in "sm plugins list". - * @return Plugin Handle on success, INVALID_HANDLE if no plugin - * matches the given number. + * @param order_num Number of the plugin as it appears in "sm plugins list". + * @return Plugin Handle on success, INVALID_HANDLE if no plugin + * matches the given number. */ native Handle FindPluginByNumber(int order_num); @@ -372,18 +403,18 @@ native Handle FindPluginByNumber(int order_num); * Causes the plugin to enter a failed state. An error will be thrown and * the plugin will be paused until it is unloaded or reloaded. * - * For backwards compatibility, if no extra arguments are passed, no - * formatting is applied. If one or more additional arguments is passed, - * the string is formatted using Format(). If any errors are encountered - * during formatting, both the format specifier string and an additional + * For backwards compatibility, if no extra arguments are passed, no + * formatting is applied. If one or more additional arguments is passed, + * the string is formatted using Format(). If any errors are encountered + * during formatting, both the format specifier string and an additional * error message are written. * - * This function does not return, and no further code in the plugin is + * This function does not return, and no further code in the plugin is * executed. * - * @param string Format specifier string. - * @param ... Formatting arguments. - * @error Always throws SP_ERROR_ABORT. + * @param string Format specifier string. + * @param ... Formatting arguments. + * @error Always throws SP_ERROR_ABORT. */ native void SetFailState(const char[] string, any ...); @@ -391,60 +422,74 @@ native void SetFailState(const char[] string, any ...); * Aborts the current callback and throws an error. This function * does not return in that no code is executed following it. * - * @param fmt String format. - * @param ... Format arguments. - * @error Always! + * @param fmt String format. + * @param ... Format arguments. + * @error Always! */ native void ThrowError(const char[] fmt, any ...); +/** + * Logs a stack trace from the current function call. Code + * execution continues after the call + * + * @param fmt Format string to send with the stack trace. + * @param ... Format arguments. + * @error Always logs a stack trace. + */ +native void LogStackTrace(const char[] fmt, any ...); + /** * Gets the system time as a unix timestamp. * - * @param bigStamp Optional array to store the 64bit timestamp in. - * @return 32bit timestamp (number of seconds since unix epoch). + * @param bigStamp Optional array to store the 64bit timestamp in. + * @return 32bit timestamp (number of seconds since unix epoch). */ native int GetTime(int bigStamp[2]={0,0}); /** * Produces a date and/or time string value for a timestamp. * - * See this URL for valid parameters: + * See this URL for valid parameters: * http://cplusplus.com/reference/clibrary/ctime/strftime.html * - * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. - * @param format Formatting rules (passing NULL_STRING will use the rules defined in sm_datetime_format). - * @param stamp Optional time stamp. - * @error Buffer too small or invalid time format. + * Note that available parameters depends on support from your operating system. + * In particular, ones highlighted in yellow on that page are not currently + * available on Windows and should be avoided for portable plugins. + * + * @param buffer Destination string buffer. + * @param maxlength Maximum length of output string buffer. + * @param format Formatting rules (passing NULL_STRING will use the rules defined in sm_datetime_format). + * @param stamp Optional time stamp. + * @error Buffer too small or invalid time format. */ native void FormatTime(char[] buffer, int maxlength, const char[] format, int stamp=-1); /** * Loads a game config file. * - * @param file File to load. The path must be relative to the 'gamedata' folder under the config folder - * and the extension should be omitted. - * @return A handle to the game config file or INVALID_HANDLE in failure. + * @param file File to load. The path must be relative to the 'gamedata' folder under the config folder + * and the extension should be omitted. + * @return A handle to the game config file or INVALID_HANDLE on failure. */ -native Handle LoadGameConfigFile(const char[] file); +native GameData LoadGameConfigFile(const char[] file); /** * Returns an offset value. * - * @param gc Game config handle. - * @param key Key to retrieve from the offset section. - * @return An offset, or -1 on failure. + * @param gc Game config handle. + * @param key Key to retrieve from the offset section. + * @return An offset, or -1 on failure. */ native int GameConfGetOffset(Handle gc, const char[] key); /** * Gets the value of a key from the "Keys" section. * - * @param gc Game config handle. - * @param key Key to retrieve from the Keys section. - * @param buffer Destination string buffer. - * @param maxlen Maximum length of output string buffer. - * @return True if key existed, false otherwise. + * @param gc Game config handle. + * @param key Key to retrieve from the Keys section. + * @param buffer Destination string buffer. + * @param maxlen Maximum length of output string buffer. + * @return True if key existed, false otherwise. */ native bool GameConfGetKeyValue(Handle gc, const char[] key, char[] buffer, int maxlen); @@ -452,163 +497,163 @@ native bool GameConfGetKeyValue(Handle gc, const char[] key, char[] buffer, int * Finds an address calculation in a GameConfig file, * performs LoadFromAddress on it as appropriate, then returns the final address. * - * @param gameconf GameConfig Handle, or INVALID_HANDLE to use sdktools.games.txt. + * @param gameconf Game config handle. * @param name Name of the property to find. * @return An address calculated on success, or 0 on failure. */ native Address GameConfGetAddress(Handle gameconf, const char[] name); /** - * Returns the operating system's "tick count," which is a number of + * Returns the operating system's "tick count," which is a number of * milliseconds since the operating system loaded. This can be used * for basic benchmarks. * - * @return Tick count in milliseconds. + * @return Tick count in milliseconds. */ native int GetSysTickCount(); /** * Specifies that the given config file should be executed after plugin load. - * OnConfigsExecuted() will not be called until the config file has executed, + * OnConfigsExecuted() will not be called until the config file has executed, * but it will be called if the execution fails. * - * @param autoCreate If true, and the config file does not exist, such a config - * file will be automatically created and populated with - * information from the plugin's registered cvars. - * @param name Name of the config file, excluding the .cfg extension. - * If empty, is assumed. - * @param folder Folder under cfg/ to use. By default this is "sourcemod." + * @param autoCreate If true, and the config file does not exist, such a config + * file will be automatically created and populated with + * information from the plugin's registered cvars. + * @param name Name of the config file, excluding the .cfg extension. + * If empty, is assumed. + * @param folder Folder under cfg/ to use. By default this is "sourcemod." */ native void AutoExecConfig(bool autoCreate=true, const char[] name="", const char[] folder="sourcemod"); /** - * Registers a library name for identifying as a dependency to + * Registers a library name for identifying as a dependency to * other plugins. * - * @param name Library name. + * @param name Library name. */ native void RegPluginLibrary(const char[] name); /** * Returns the status of an extension, by filename. * - * @param name Extension name (like "sdktools.ext"). - * @param error Optional error message buffer. - * @param maxlength Length of optional error message buffer. - * @return -2 if the extension was not found. - * -1 if the extension was found but failed to load. - * 0 if the extension loaded but reported an error. - * 1 if the extension is running without error. + * @param name Extension name (like "sdktools.ext"). + * @param error Optional error message buffer. + * @param maxlength Length of optional error message buffer. + * @return -2 if the extension was not found. + * -1 if the extension was found but failed to load. + * 0 if the extension loaded but reported an error. + * 1 if the extension is running without error. */ native int GetExtensionFileStatus(const char[] name, char[] error="", int maxlength=0); /** - * Called after a library is added that the current plugin references - * optionally. A library is either a plugin name or extension name, as + * Called after a library is added that the current plugin references + * optionally. A library is either a plugin name or extension name, as * exposed via its include file. * - * @param name Library name. + * @param name Library name. */ forward void OnLibraryAdded(const char[] name); /** - * Called right before a library is removed that the current plugin references - * optionally. A library is either a plugin name or extension name, as + * Called right before a library is removed that the current plugin references + * optionally. A library is either a plugin name or extension name, as * exposed via its include file. * - * @param name Library name. + * @param name Library name. */ forward void OnLibraryRemoved(const char[] name); -#define MAPLIST_FLAG_MAPSFOLDER (1<<0) /**< On failure, use all maps in the maps folder. */ -#define MAPLIST_FLAG_CLEARARRAY (1<<1) /**< If an input array is specified, clear it before adding. */ -#define MAPLIST_FLAG_NO_DEFAULT (1<<2) /**< Do not read "default" or "mapcyclefile" on failure. */ +#define MAPLIST_FLAG_MAPSFOLDER (1<<0) /**< On failure, use all maps in the maps folder. */ +#define MAPLIST_FLAG_CLEARARRAY (1<<1) /**< If an input array is specified, clear it before adding. */ +#define MAPLIST_FLAG_NO_DEFAULT (1<<2) /**< Do not read "default" or "mapcyclefile" on failure. */ /** * Loads a map list to an ADT Array. * - * A map list is a list of maps from a file. SourceMod allows easy configuration of - * maplists through addons/sourcemod/configs/maplists.cfg. Each entry is given a - * name and a file (for example, "rtv" => "rtv.cfg"), or a name and a redirection - * (for example, "rtv" => "default"). This native will read a map list entry, - * cache the file, and return the list of maps it holds. + * A map list is a list of maps from a file. SourceMod allows easy configuration of + * maplists through addons/sourcemod/configs/maplists.cfg. Each entry is given a + * name and a file (for example, "rtv" => "rtv.cfg"), or a name and a redirection + * (for example, "rtv" => "default"). This native will read a map list entry, + * cache the file, and return the list of maps it holds. * - * Serial change numbers are used to identify if a map list has changed. Thus, if - * you pass a serial change number and it's equal to what SourceMod currently knows + * Serial change numbers are used to identify if a map list has changed. Thus, if + * you pass a serial change number and it's equal to what SourceMod currently knows * about the map list, then SourceMod won't re-parse the file. * - * If the maps end up being read from the maps folder (MAPLIST_FLAG_MAPSFOLDER), they + * If the maps end up being read from the maps folder (MAPLIST_FLAG_MAPSFOLDER), they * are automatically sorted in alphabetical, ascending order. * * Arrays created by this function are temporary and must be freed via CloseHandle(). - * Modifying arrays created by this function will not affect future return values or + * Modifying arrays created by this function will not affect future return values or * or the contents of arrays returned to other plugins. * - * @param array Array to store the map list. If INVALID_HANDLE, a new blank - * array will be created. The blocksize should be at least 16; - * otherwise results may be truncated. Items are added to the array - * as strings. The array is never checked for duplicates, and it is - * not read beforehand. Only the serial number is used to detect - * changes. - * @param serial Serial number to identify last known map list change. If -1, the - * the value will not be checked. If the map list has since changed, - * the serial is updated (even if -1 was passed). If there is an error - * finding a valid maplist, then the serial is set to -1. - * @param str Config name, or "default" for the default map list. Config names - * should be somewhat descriptive. For example, the admin menu uses - * a config name of "admin menu". The list names can be configured - * by users in addons/sourcemod/configs/maplists.cfg. - * @param flags MAPLIST_FLAG flags. - * @return On failure: - * INVALID_HANDLE is returned, the serial is set to -1, and the input - * array (if any) is left unchanged. - * On no change: - INVALID_HANDLE is returned, the serial is unchanged, and the input - array (if any) is left unchanged. - * On success: - * A valid array Handle is returned, containing at least one map string. - * If an array was passed, the return value is equal to the passed Array - * Handle. If the passed array was not cleared, it will have grown by at - * least one item. The serial number is updated to a positive number. - * @error Invalid array Handle that is not INVALID_HANDLE. + * @param array Array to store the map list. If INVALID_HANDLE, a new blank + * array will be created. The blocksize should be at least 16; + * otherwise results may be truncated. Items are added to the array + * as strings. The array is never checked for duplicates, and it is + * not read beforehand. Only the serial number is used to detect + * changes. + * @param serial Serial number to identify last known map list change. If -1, the + * the value will not be checked. If the map list has since changed, + * the serial is updated (even if -1 was passed). If there is an error + * finding a valid maplist, then the serial is set to -1. + * @param str Config name, or "default" for the default map list. Config names + * should be somewhat descriptive. For example, the admin menu uses + * a config name of "admin menu". The list names can be configured + * by users in addons/sourcemod/configs/maplists.cfg. + * @param flags MAPLIST_FLAG flags. + * @return On failure: + * INVALID_HANDLE is returned, the serial is set to -1, and the input + * array (if any) is left unchanged. + * On no change: + * INVALID_HANDLE is returned, the serial is unchanged, and the input + * array (if any) is left unchanged. + * On success: + * A valid array Handle is returned, containing at least one map string. + * If an array was passed, the return value is equal to the passed Array + * Handle. If the passed array was not cleared, it will have grown by at + * least one item. The serial number is updated to a positive number. + * @error Invalid array Handle that is not INVALID_HANDLE. */ native Handle ReadMapList(Handle array=INVALID_HANDLE, - int &serial=-1, - const char[] str="default", - int flags=MAPLIST_FLAG_CLEARARRAY); - + int &serial=-1, + const char[] str="default", + int flags=MAPLIST_FLAG_CLEARARRAY); + /** - * Makes a compatibility binding for map lists. For example, if a function previously used - * "clam.cfg" for map lists, this function will insert a "fake" binding to "clam.cfg" that + * Makes a compatibility binding for map lists. For example, if a function previously used + * "clam.cfg" for map lists, this function will insert a "fake" binding to "clam.cfg" that * will be overridden if it's in the maplists.cfg file. * - * @param name Configuration name that would be used with ReadMapList(). - * @param file Default file to use. + * @param name Configuration name that would be used with ReadMapList(). + * @param file Default file to use. */ native void SetMapListCompatBind(const char[] name, const char[] file); /** - * Called when a client has sent chat text. This must return either true or + * Called when a client has sent chat text. This must return either true or * false to indicate that a client is or is not spamming the server. * - * The return value is a hint only. Core or another plugin may decide + * The return value is a hint only. Core or another plugin may decide * otherwise. * - * @param client Client index. The server (0) will never be passed. - * @return True if client is spamming the server, false otherwise. + * @param client Client index. The server (0) will never be passed. + * @return True if client is spamming the server, false otherwise. */ forward bool OnClientFloodCheck(int client); /** - * Called after a client's flood check has been computed. This can be used + * Called after a client's flood check has been computed. This can be used * by antiflood algorithms to decay/increase flooding weights. * - * Since the result from "OnClientFloodCheck" isn't guaranteed to be the - * final result, it is generally a good idea to use this to play with other + * Since the result from "OnClientFloodCheck" isn't guaranteed to be the + * final result, it is generally a good idea to use this to play with other * algorithms nicely. * - * @param client Client index. The server (0) will never be passed. - * @param blocked True if client flooded last "say", false otherwise. + * @param client Client index. The server (0) will never be passed. + * @param blocked True if client flooded last "say", false otherwise. */ forward void OnClientFloodResult(int client, bool blocked); @@ -624,7 +669,7 @@ enum NumberType enum Address { - Address_Null = 0, // a typical invalid result when an address lookup fails + Address_Null = 0 // a typical invalid result when an address lookup fails }; /** @@ -643,7 +688,38 @@ native int LoadFromAddress(Address addr, NumberType size); * @param data Value to store at the address. * @param size How many bytes should be written. */ -native void StoreToAddress(Address addr, int data, NumberType size); +native void StoreToAddress(Address addr, int data, NumberType size); + +methodmap FrameIterator < Handle { + // Creates a stack frame iterator to build your own stack traces. + // @return New handle to a FrameIterator. + public native FrameIterator(); + + // Advances the iterator to the next stack frame. + // @return True if another frame was fetched and data can be successfully read. + // @error No next element exception. + public native bool Next(); + + // Resets the iterator back to it's starting position. + public native void Reset(); + + // Returns the line number of the current function call. + property int LineNumber { + public native get(); + } + + // Gets the name of the current function in the call stack. + // + // @param buffer Buffer to copy to. + // @param maxlen Max size of the buffer. + public native void GetFunctionName(char[] buffer, int maxlen); + + // Gets the file path to the current call in the call stack. + // + // @param buffer Buffer to copy to. + // @param maxlen Max size of the buffer. + public native void GetFilePath(char[] buffer, int maxlen); +} #include #include diff --git a/env/include/string.inc b/env/include/string.inc index 11c4b00..990989f 100644 --- a/env/include/string.inc +++ b/env/include/string.inc @@ -45,53 +45,53 @@ /** * Calculates the length of a string. * - * @param str String to check. - * @return Number of valid character bytes in the string. + * @param str String to check. + * @return Number of valid character bytes in the string. */ native int strlen(const char[] str); /** * Tests whether a string is found inside another string. * - * @param str String to search in. - * @param substr Substring to find inside the original string. - * @param caseSensitive If true (default), search is case sensitive. - * If false, search is case insensitive. - * @return -1 on failure (no match found). Any other value - * indicates a position in the string where the match starts. + * @param str String to search in. + * @param substr Substring to find inside the original string. + * @param caseSensitive If true (default), search is case sensitive. + * If false, search is case insensitive. + * @return -1 on failure (no match found). Any other value + * indicates a position in the string where the match starts. */ native int StrContains(const char[] str, const char[] substr, bool caseSensitive=true); /** * Compares two strings lexographically. * - * @param str1 First string (left). - * @param str2 Second string (right). - * @param caseSensitive If true (default), comparison is case sensitive. - * If false, comparison is case insensitive. - * @return -1 if str1 < str2 - * 0 if str1 == str2 - * 1 if str1 > str2 + * @param str1 First string (left). + * @param str2 Second string (right). + * @param caseSensitive If true (default), comparison is case sensitive. + * If false, comparison is case insensitive. + * @return -1 if str1 < str2 + * 0 if str1 == str2 + * 1 if str1 > str2 */ native int strcmp(const char[] str1, const char[] str2, bool caseSensitive=true); /** * Compares two strings parts lexographically. * - * @param str1 First string (left). - * @param str2 Second string (right). - * @param num Number of characters to compare. - * @param caseSensitive If true (default), comparison is case sensitive. - * If false, comparison is case insensitive. - * @return -1 if str1 < str2 - * 0 if str1 == str2 - * 1 if str1 > str2 + * @param str1 First string (left). + * @param str2 Second string (right). + * @param num Number of characters to compare. + * @param caseSensitive If true (default), comparison is case sensitive. + * If false, comparison is case insensitive. + * @return -1 if str1 < str2 + * 0 if str1 == str2 + * 1 if str1 > str2 */ native int strncmp(const char[] str1, const char[] str2, int num, bool caseSensitive=true); /** * Backwards compatible stock - StrCompare is now strcmp - * @deprecated Renamed to strcmp + * @deprecated Renamed to strcmp */ #pragma deprecated Use strcmp() instead stock int StrCompare(const char[] str1, const char[] str2, bool caseSensitive=true) @@ -102,11 +102,11 @@ stock int StrCompare(const char[] str1, const char[] str2, bool caseSensitive=tr /** * Returns whether two strings are equal. * - * @param str1 First string (left). - * @param str2 Second string (right). - * @param caseSensitive If true (default), comparison is case sensitive. - * If false, comparison is case insensitive. - * @return True if equal, false otherwise. + * @param str1 First string (left). + * @param str2 Second string (right). + * @param caseSensitive If true (default), comparison is case sensitive. + * If false, comparison is case insensitive. + * @return True if equal, false otherwise. */ stock bool StrEqual(const char[] str1, const char[] str2, bool caseSensitive=true) { @@ -118,16 +118,16 @@ stock bool StrEqual(const char[] str1, const char[] str2, bool caseSensitive=tru * @note If the destination buffer is too small to hold the source string, the * destination will be truncated. * - * @param dest Destination string buffer to copy to. - * @param destLen Destination buffer length (includes null terminator). - * @param source Source string buffer to copy from. - * @return Number of cells written. + * @param dest Destination string buffer to copy to. + * @param destLen Destination buffer length (includes null terminator). + * @param source Source string buffer to copy from. + * @return Number of cells written. */ native int strcopy(char[] dest, int destLen, const char[] source); /** * Backwards compatibility stock - use strcopy - * @deprecated Renamed to strcopy + * @deprecated Renamed to strcopy */ #pragma deprecated Use strcopy() instead stock int StrCopy(char[] dest, int destLen, const char[] source) @@ -138,11 +138,11 @@ stock int StrCopy(char[] dest, int destLen, const char[] source) /** * Formats a string according to the SourceMod format rules (see documentation). * - * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @return Number of cells written. + * @param buffer Destination string buffer. + * @param maxlength Maximum length of output string buffer. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @return Number of cells written. */ native int Format(char[] buffer, int maxlength, const char[] format, any ...); @@ -152,11 +152,11 @@ native int Format(char[] buffer, int maxlength, const char[] format, any ...); * overlap the same memory as the output buffer. Since this security * check is removed, it is slightly faster. * - * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @return Number of cells written. + * @param buffer Destination string buffer. + * @param maxlength Maximum length of output string buffer. + * @param format Formatting rules. + * @param ... Variable number of format parameters. + * @return Number of cells written. */ native int FormatEx(char[] buffer, int maxlength, const char[] format, any ...); @@ -166,68 +166,68 @@ native int FormatEx(char[] buffer, int maxlength, const char[] format, any ...); * parent parameter stack, rather than a local. This is useful for * implementing your own variable argument functions. * - * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. - * @param format Formatting rules. - * @param varpos Argument number which contains the '...' symbol. - * Note: Arguments start at 1. - * @return Number of bytes written. + * @param buffer Destination string buffer. + * @param maxlength Maximum length of output string buffer. + * @param format Formatting rules. + * @param varpos Argument number which contains the '...' symbol. + * Note: Arguments start at 1. + * @return Number of bytes written. */ native int VFormat(char[] buffer, int maxlength, const char[] format, int varpos); /** * Converts a string to an integer. * - * @param str String to convert. - * @param nBase Numerical base to use. 10 is default. - * @return Integer conversion of string, or 0 on failure. + * @param str String to convert. + * @param nBase Numerical base to use. 10 is default. + * @return Integer conversion of string, or 0 on failure. */ native int StringToInt(const char[] str, int nBase=10); /** * Converts a string to an integer with some more options. * - * @param str String to convert. - * @param result Variable to store the result in. - * @param nBase Numerical base to use. 10 is default. - * @return Number of characters consumed. + * @param str String to convert. + * @param result Variable to store the result in. + * @param nBase Numerical base to use. 10 is default. + * @return Number of characters consumed. */ native int StringToIntEx(const char[] str, int &result, int nBase=10); /** * Converts an integer to a string. * - * @param num Integer to convert. - * @param str Buffer to store string in. - * @param maxlength Maximum length of string buffer. - * @return Number of cells written to buffer. + * @param num Integer to convert. + * @param str Buffer to store string in. + * @param maxlength Maximum length of string buffer. + * @return Number of cells written to buffer. */ native int IntToString(int num, char[] str, int maxlength); /** * Converts a string to a floating point number. * - * @param str String to convert to a float. - * @return Floating point result, or 0.0 on error. + * @param str String to convert to a float. + * @return Floating point result, or 0.0 on error. */ native float StringToFloat(const char[] str); /** * Converts a string to a floating point number with some more options. * - * @param str String to convert to a float. - * @param result Variable to store result in. - * @return Number of characters consumed. + * @param str String to convert to a float. + * @param result Variable to store result in. + * @return Number of characters consumed. */ native int StringToFloatEx(const char[] str, float &result); /** * Converts a floating point number to a string. * - * @param num Floating point number to convert. - * @param str Buffer to store string in. - * @param maxlength Maximum length of string buffer. - * @return Number of cells written to buffer. + * @param num Floating point number to convert. + * @param str Buffer to store string in. + * @param maxlength Maximum length of string buffer. + * @return Number of cells written to buffer. */ native int FloatToString(float num, char[] str, int maxlength); @@ -238,16 +238,16 @@ native int FloatToString(float num, char[] str, int maxlength); * of the string is reached. If nothing remains, -1 is returned. * Otherwise, the index to the first character is returned. * - * @param source Source input string. - * @param arg Stores argument read from string. - * @param argLen Maximum length of argument buffer. - * @return Index to next piece of string, or -1 if none. + * @param source Source input string. + * @param arg Stores argument read from string. + * @param argLen Maximum length of argument buffer. + * @return Index to next piece of string, or -1 if none. */ native int BreakString(const char[] source, char[] arg, int argLen); /** * Backwards compatibility stock - use BreakString - * @deprecated Renamed to BreakString. + * @deprecated Renamed to BreakString. */ #pragma deprecated Use BreakString() instead stock int StrBreak(const char[] source, char[] arg, int argLen) @@ -258,21 +258,21 @@ stock int StrBreak(const char[] source, char[] arg, int argLen) /** * Removes whitespace characters from the beginning and end of a string. * - * @param str The string to trim. - * @return Number of bytes written (UTF-8 safe). + * @param str The string to trim. + * @return Number of bytes written (UTF-8 safe). */ native int TrimString(char[] str); /** * Returns text in a string up until a certain character sequence is reached. * - * @param source Source input string. - * @param split A string which specifies a search point to break at. - * @param part Buffer to store string part. - * @param partLen Maximum length of the string part buffer. - * @return -1 if no match was found; otherwise, an index into source - * marking the first index after the searched text. The - * index is always relative to the start of the input string. + * @param source Source input string. + * @param split A string which specifies a search point to break at. + * @param part Buffer to store string part. + * @param partLen Maximum length of the string part buffer. + * @return -1 if no match was found; otherwise, an index into source + * marking the first index after the searched text. The + * index is always relative to the start of the input string. */ native int SplitString(const char[] source, const char[] split, char[] part, int partLen); @@ -280,12 +280,12 @@ native int SplitString(const char[] source, const char[] split, char[] part, int * Given a string, replaces all occurrences of a search string with a * replacement string. * - * @param text String to perform search and replacements on. - * @param maxlength Maximum length of the string buffer. - * @param search String to search for. - * @param replace String to replace the search string with. - * @param caseSensitive If true (default), search is case sensitive. - * @return Number of replacements that were performed. + * @param text String to perform search and replacements on. + * @param maxlength Maximum length of the string buffer. + * @param search String to search for. + * @param replace String to replace the search string with. + * @param caseSensitive If true (default), search is case sensitive. + * @return Number of replacements that were performed. */ native int ReplaceString(char[] text, int maxlength, const char[] search, const char[] replace, bool caseSensitive=true); @@ -293,18 +293,18 @@ native int ReplaceString(char[] text, int maxlength, const char[] search, const * Given a string, replaces the first occurrence of a search string with a * replacement string. * - * @param text String to perform search and replacements on. - * @param maxlength Maximum length of the string buffer. - * @param search String to search for. - * @param replace String to replace the search string with. - * @param searchLen If higher than -1, its value will be used instead of - * a strlen() call on the search parameter. - * @param replaceLen If higher than -1, its value will be used instead of - * a strlen() call on the replace parameter. - * @param caseSensitive If true (default), search is case sensitive. - * @return Index into the buffer (relative to the start) from where - * the last replacement ended, or -1 if no replacements were - * made. + * @param text String to perform search and replacements on. + * @param maxlength Maximum length of the string buffer. + * @param search String to search for. + * @param replace String to replace the search string with. + * @param searchLen If higher than -1, its value will be used instead of + * a strlen() call on the search parameter. + * @param replaceLen If higher than -1, its value will be used instead of + * a strlen() call on the replace parameter. + * @param caseSensitive If true (default), search is case sensitive. + * @return Index into the buffer (relative to the start) from where + * the last replacement ended, or -1 if no replacements were + * made. */ native int ReplaceStringEx(char[] text, int maxlength, const char[] search, const char[] replace, int searchLen=-1, int replaceLen=-1, bool caseSensitive=true); @@ -313,8 +313,8 @@ native int ReplaceStringEx(char[] text, int maxlength, const char[] search, cons * for multi-byte characters (UTF-8). For normal ASCII characters, * this will return 1. * - * @param source Source input string. - * @return Number of bytes the current character uses. + * @param source Source input string. + * @return Number of bytes the current character uses. */ native int GetCharBytes(const char[] source); @@ -323,8 +323,8 @@ native int GetCharBytes(const char[] source); * * @note Multi-byte characters will always return false. * - * @param chr Character to test. - * @return True if character is alphabetical, otherwise false. + * @param chr Character to test. + * @return True if character is alphabetical, otherwise false. */ native bool IsCharAlpha(int chr); @@ -333,8 +333,8 @@ native bool IsCharAlpha(int chr); * * @note Multi-byte characters will always return false. * - * @param chr Character to test. - * @return True if character is numeric, otherwise false. + * @param chr Character to test. + * @return True if character is numeric, otherwise false. */ native bool IsCharNumeric(int chr); @@ -343,17 +343,17 @@ native bool IsCharNumeric(int chr); * * @note Multi-byte characters will always return false. * - * @param chr Character to test. - * @return True if character is whitespace, otherwise false. + * @param chr Character to test. + * @return True if character is whitespace, otherwise false. */ native bool IsCharSpace(int chr); /** * Returns if a character is multi-byte or not. * - * @param chr Character to test. - * @return 0 for a normal 7-bit ASCII character, - * otherwise number of bytes in multi-byte character. + * @param chr Character to test. + * @return 0 for a normal 7-bit ASCII character, + * otherwise number of bytes in multi-byte character. */ native int IsCharMB(int chr); @@ -362,8 +362,8 @@ native int IsCharMB(int chr); * * @note Multi-byte characters will always return false. * - * @param chr Character to test. - * @return True if character is uppercase, otherwise false. + * @param chr Character to test. + * @return True if character is uppercase, otherwise false. */ native bool IsCharUpper(int chr); @@ -372,8 +372,8 @@ native bool IsCharUpper(int chr); * * @note Multi-byte characters will always return false. * - * @param chr Character to test. - * @return True if character is lowercase, otherwise false. + * @param chr Character to test. + * @return True if character is lowercase, otherwise false. */ native bool IsCharLower(int chr); @@ -385,18 +385,18 @@ native bool IsCharLower(int chr); * exist. Otherwise, the string is left unmodified. This function should * be considered O(k) (all characters get shifted down). * - * @param text String to modify (in place). - * @return True if string was modified, false if there was no - * set of quotes. + * @param text String to modify (in place). + * @return True if string was modified, false if there was no + * set of quotes. */ native bool StripQuotes(char[] text); /** - * Returns an uppercase character to a lowercase character. + * Converts a lowercase character to its uppercase counterpart. * - * @param chr Character to convert. - * @return Lowercase character on success, - * no change on failure. + * @param chr Character to convert. + * @return Uppercase character on success, + * no change on failure. */ stock int CharToUpper(int chr) { @@ -404,15 +404,16 @@ stock int CharToUpper(int chr) { return (chr & ~(1<<5)); } + return chr; } /** - * Returns a lowercase character to an uppercase character. + * Converts an uppercase character to its lowercase counterpart. * - * @param chr Character to convert. - * @return Uppercase character on success, - * no change on failure. + * @param chr Character to convert. + * @return Lowercase character on success, + * no change on failure. */ stock int CharToLower(int chr) { @@ -420,32 +421,42 @@ stock int CharToLower(int chr) { return (chr | (1<<5)); } + return chr; } /** * Finds the first occurrence of a character in a string. * - * @param str String. - * @param c Character to search for. - * @param reverse False (default) to search forward, true to search - * backward. - * @return The index of the first occurrence of the character - * in the string, or -1 if the character was not found. + * @param str String. + * @param c Character to search for. + * @param reverse False (default) to search forward, true to search + * backward. + * @return The index of the first occurrence of the character + * in the string, or -1 if the character was not found. */ stock int FindCharInString(const char[] str, char c, bool reverse = false) { int len = strlen(str); - if (!reverse) { - for (int i = 0; i < len; i++) { + if (!reverse) + { + for (int i = 0; i < len; i++) + { if (str[i] == c) + { return i; + } } - } else { - for (int i = len - 1; i >= 0; i--) { + } + else + { + for (int i = len - 1; i >= 0; i--) + { if (str[i] == c) + { return i; + } } } @@ -455,10 +466,10 @@ stock int FindCharInString(const char[] str, char c, bool reverse = false) /** * Concatenates one string onto another. * - * @param buffer String to append to. - * @param maxlength Maximum length of entire buffer. - * @param source Source string to concatenate. - * @return Number of bytes written. + * @param buffer String to append to. + * @param maxlength Maximum length of entire buffer. + * @param source Source string to concatenate. + * @return Number of bytes written. */ stock int StrCat(char[] buffer, int maxlength, const char[] source) { @@ -474,14 +485,14 @@ stock int StrCat(char[] buffer, int maxlength, const char[] source) /** * Breaks a string into pieces and stores each piece into an array of buffers. * - * @param text The string to split. - * @param split The string to use as a split delimiter. - * @param buffers An array of string buffers (2D array). - * @param maxStrings Number of string buffers (first dimension size). - * @param maxStringLength Maximum length of each string buffer. - * @param copyRemainder False (default) discard excess pieces, true to ignore - * delimiters after last piece. - * @return Number of strings retrieved. + * @param text The string to split. + * @param split The string to use as a split delimiter. + * @param buffers An array of string buffers (2D array). + * @param maxStrings Number of string buffers (first dimension size). + * @param maxStringLength Maximum length of each string buffer. + * @param copyRemainder False (default) discard excess pieces, true to ignore + * delimiters after last piece. + * @return Number of strings retrieved. */ stock int ExplodeString(const char[] text, const char[] split, char[][] buffers, int maxStrings, int maxStringLength, bool copyRemainder = false) @@ -515,12 +526,12 @@ stock int ExplodeString(const char[] text, const char[] split, char[][] buffers, * Joins an array of strings into one string, with a "join" string inserted in * between each given string. This function complements ExplodeString. * - * @param strings An array of strings. - * @param numStrings Number of strings in the array. - * @param join The join string to insert between each string. - * @param buffer Output buffer to write the joined string to. - * @param maxLength Maximum length of the output buffer. - * @return Number of bytes written to the output buffer. + * @param strings An array of strings. + * @param numStrings Number of strings in the array. + * @param join The join string to insert between each string. + * @param buffer Output buffer to write the joined string to. + * @param maxLength Maximum length of the output buffer. + * @return Number of bytes written to the output buffer. */ stock int ImplodeStrings(const char[][] strings, int numStrings, const char[] join, char[] buffer, int maxLength) { diff --git a/env/include/testing.inc b/env/include/testing.inc index 561f068..8673379 100644 --- a/env/include/testing.inc +++ b/env/include/testing.inc @@ -41,9 +41,12 @@ stock void SetTestContext(const char[] context) stock void AssertEq(const char[] text, int cell1, int cell2) { TestNumber++; - if (cell1 == cell2) { + if (cell1 == cell2) + { PrintToServer("[%d] %s: %s == %d OK", TestNumber, TestContext, text, cell2); - } else { + } + else + { PrintToServer("[%d] %s FAIL: %s should be %d, got %d", TestNumber, TestContext, text, cell2, cell1); ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); } @@ -52,9 +55,12 @@ stock void AssertEq(const char[] text, int cell1, int cell2) stock void AssertFalse(const char[] text, bool value) { TestNumber++; - if (!value) { + if (!value) + { PrintToServer("[%d] %s: %s == false OK", TestNumber, TestContext, text, value); - } else { + } + else + { PrintToServer("[%d] %s FAIL: %s should be false, got true", TestNumber, TestContext, text); ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); } @@ -63,9 +69,12 @@ stock void AssertFalse(const char[] text, bool value) stock void AssertTrue(const char[] text, bool value) { TestNumber++; - if (value) { + if (value) + { PrintToServer("[%d] %s: %s == true OK", TestNumber, TestContext, text, value); - } else { + } + else + { PrintToServer("[%d] %s FAIL: %s should be true, got false", TestNumber, TestContext, text); ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); } diff --git a/env/include/textparse.inc b/env/include/textparse.inc index d5c59b3..34e99e4 100644 --- a/env/include/textparse.inc +++ b/env/include/textparse.inc @@ -47,9 +47,9 @@ */ enum SMCResult { - SMCParse_Continue, /**< Continue parsing */ - SMCParse_Halt, /**< Stop parsing here */ - SMCParse_HaltFail /**< Stop parsing and return failure */ + SMCParse_Continue, /**< Continue parsing */ + SMCParse_Halt, /**< Stop parsing here */ + SMCParse_HaltFail /**< Stop parsing and return failure */ }; /** @@ -57,66 +57,77 @@ enum SMCResult */ enum SMCError { - SMCError_Okay = 0, /**< No error */ - SMCError_StreamOpen, /**< Stream failed to open */ - SMCError_StreamError, /**< The stream died... somehow */ - SMCError_Custom, /**< A custom handler threw an error */ - SMCError_InvalidSection1, /**< A section was declared without quotes, and had extra tokens */ - SMCError_InvalidSection2, /**< A section was declared without any header */ - SMCError_InvalidSection3, /**< A section ending was declared with too many unknown tokens */ - SMCError_InvalidSection4, /**< A section ending has no matching beginning */ - SMCError_InvalidSection5, /**< A section beginning has no matching ending */ - SMCError_InvalidTokens, /**< There were too many unidentifiable strings on one line */ - SMCError_TokenOverflow, /**< The token buffer overflowed */ - SMCError_InvalidProperty1, /**< A property was declared outside of any section */ + SMCError_Okay = 0, /**< No error */ + SMCError_StreamOpen, /**< Stream failed to open */ + SMCError_StreamError, /**< The stream died... somehow */ + SMCError_Custom, /**< A custom handler threw an error */ + SMCError_InvalidSection1, /**< A section was declared without quotes, and had extra tokens */ + SMCError_InvalidSection2, /**< A section was declared without any header */ + SMCError_InvalidSection3, /**< A section ending was declared with too many unknown tokens */ + SMCError_InvalidSection4, /**< A section ending has no matching beginning */ + SMCError_InvalidSection5, /**< A section beginning has no matching ending */ + SMCError_InvalidTokens, /**< There were too many unidentifiable strings on one line */ + SMCError_TokenOverflow, /**< The token buffer overflowed */ + SMCError_InvalidProperty1 /**< A property was declared outside of any section */ }; -// Called when parsing is started. -// -// @param smc The SMC Parse Handle. +/** + * Called when parsing is started. + * + * @param smc The SMC Parse Handle. + */ typedef SMC_ParseStart = function void (SMCParser smc); -// Called when the parser is entering a new section or sub-section. -// -// Note: Enclosing quotes are always stripped. -// -// @param smc The SMC Parser. -// @param name String containing section name. -// @param opt_quotes True if the section name was quote-enclosed in the file. -// @return An SMCResult action to take. +/** + * Called when the parser is entering a new section or sub-section. + * + * Note: Enclosing quotes are always stripped. + * + * @param smc The SMC Parser. + * @param name String containing section name. + * @param opt_quotes True if the section name was quote-enclosed in the file. + * @return An SMCResult action to take. + */ typedef SMC_NewSection = function SMCResult (SMCParser smc, const char[] name, bool opt_quotes); -// Called when the parser finds a new key/value pair. -// -// Note: Enclosing quotes are always stripped. -// -// @param smc The SMCParser. -// @param key String containing key name. -// @param value String containing value name. -// @param key_quotes Whether or not the key was enclosed in quotes. -// @param value_quotes Whether or not the value was enclosed in quotes. -// @return An SMCResult action to take. +/** + * Called when the parser finds a new key/value pair. + * + * Note: Enclosing quotes are always stripped. + * + * @param smc The SMCParser. + * @param key String containing key name. + * @param value String containing value name. + * @param key_quotes Whether or not the key was enclosed in quotes. + * @param value_quotes Whether or not the value was enclosed in quotes. + * @return An SMCResult action to take. + */ typedef SMC_KeyValue = function SMCResult (SMCParser smc, const char[] key, const char[] value, bool key_quotes, bool value_quotes); -// Called when the parser finds the end of the current section. -// -// @param smc The SMCParser. -// @return An SMCResult action to take. +/** Called when the parser finds the end of the current section. + * + * @param smc The SMCParser. + * @return An SMCResult action to take. + */ typedef SMC_EndSection = function SMCResult (SMCParser smc); -// Called when parsing is halted. -// -// @param smc The SMCParser. -// @param halted True if abnormally halted, false otherwise. -// @param failed True if parsing failed, false otherwise. +/** + * Called when parsing is halted. + * + * @param smc The SMCParser. + * @param halted True if abnormally halted, false otherwise. + * @param failed True if parsing failed, false otherwise. + */ typedef SMC_ParseEnd = function void (SMCParser smc, bool halted, bool failed); -// Callback for whenever a new line of text is about to be parsed. -// -// @param smc The SMCParser. -// @param line A string containing the raw line from the file. -// @param lineno The line number it occurs on. -// @return An SMCResult action to take. +/** + * Callback for whenever a new line of text is about to be parsed. + * + * @param smc The SMCParser. + * @param line A string containing the raw line from the file. + * @param lineno The line number it occurs on. + * @return An SMCResult action to take. + */ typedef SMC_RawLine = function SMCResult (SMCParser smc, const char[] line, int lineno); // An SMCParser is a callback-driven parser for SourceMod configuration files. @@ -130,10 +141,10 @@ methodmap SMCParser < Handle // Parses an SMC file. // - // @param file A string containing the file path. - // @param line An optional variable to store the last line number read. - // @param col An optional variable to store the last column number read. - // @return An SMCParseError result. + // @param file A string containing the file path. + // @param line An optional variable to store the last line number read. + // @param col An optional variable to store the last column number read. + // @return An SMCParseError result. public native SMCError ParseFile(const char[] file, int &line = 0, int &col = 0); // Sets the callback for receiving SMC_ParseStart events. @@ -168,76 +179,77 @@ methodmap SMCParser < Handle // Gets an error string for an SMCError code. // - // @param error The SMCParseError code. - // @param buffer A string buffer for the error (contents undefined on failure). - // @param buf_max The maximum size of the buffer. - // @return The number of characters written to buffer. + // @param error The SMCParseError code. + // @param buffer A string buffer for the error (contents undefined on failure). + // @param buf_max The maximum size of the buffer. + // @return The number of characters written to buffer. public native void GetErrorString(SMCError error, char[] buffer, int buf_max); }; /** * Creates a new SMC file format parser. This is used to set parse hooks. * - * @return A new Handle to an SMC Parse structure. + * @return A new Handle to an SMC Parse structure. */ native SMCParser SMC_CreateParser(); /** * Parses an SMC file. * - * @param smc A Handle to an SMC Parse structure. - * @param file A string containing the file path. - * @param line An optional by reference cell to store the last line number read. - * @param col An optional by reference cell to store the last column number read. - * @return An SMCParseError result. - * @error Invalid or corrupt Handle. + * @param smc A Handle to an SMC Parse structure. + * @param file A string containing the file path. + * @param line An optional by reference cell to store the last line number read. + * @param col An optional by reference cell to store the last column number read. + * @return An SMCParseError result. + * @error Invalid or corrupt Handle. */ native SMCError SMC_ParseFile(Handle smc, const char[] file, int &line=0, int &col=0); /** * Gets an error string for an SMCError code. + * * @note SMCError_Okay returns false. * @note SMCError_Custom (which is thrown on SMCParse_HaltFail) returns false. * - * @param error The SMCParseError code. - * @param buffer A string buffer for the error (contents undefined on failure). - * @param buf_max The maximum size of the buffer. - * @return True on success, false otherwise. + * @param error The SMCParseError code. + * @param buffer A string buffer for the error (contents undefined on failure). + * @param buf_max The maximum size of the buffer. + * @return True on success, false otherwise. */ native bool SMC_GetErrorString(SMCError error, char[] buffer, int buf_max); /** * Sets the SMC_ParseStart function of a parse Handle. * - * @param smc Handle to an SMC Parse. - * @param func SMC_ParseStart function. - * @error Invalid or corrupt Handle. + * @param smc Handle to an SMC Parse. + * @param func SMC_ParseStart function. + * @error Invalid or corrupt Handle. */ native void SMC_SetParseStart(Handle smc, SMC_ParseStart func); /** * Sets the SMC_ParseEnd of a parse handle. * - * @param smc Handle to an SMC Parse. - * @param func SMC_ParseEnd function. - * @error Invalid or corrupt Handle. + * @param smc Handle to an SMC Parse. + * @param func SMC_ParseEnd function. + * @error Invalid or corrupt Handle. */ native void SMC_SetParseEnd(Handle smc, SMC_ParseEnd func); /** * Sets the three main reader functions. * - * @param smc An SMC parse Handle. - * @param ns An SMC_NewSection function pointer. - * @param kv An SMC_KeyValue function pointer. - * @param es An SMC_EndSection function pointer. + * @param smc An SMC parse Handle. + * @param ns An SMC_NewSection function pointer. + * @param kv An SMC_KeyValue function pointer. + * @param es An SMC_EndSection function pointer. */ native void SMC_SetReaders(Handle smc, SMC_NewSection ns, SMC_KeyValue kv, SMC_EndSection es); /** * Sets a raw line reader on an SMC parser Handle. * - * @param smc Handle to an SMC Parse. - * @param func SMC_RawLine function. + * @param smc Handle to an SMC Parse. + * @param func SMC_RawLine function. */ native void SMC_SetRawLine(Handle smc, SMC_RawLine func); diff --git a/env/include/tf2.inc b/env/include/tf2.inc index 7c5bbc4..6b8a535 100644 --- a/env/include/tf2.inc +++ b/env/include/tf2.inc @@ -35,13 +35,14 @@ #endif #define _tf2_included -#define TF_STUNFLAG_SLOWDOWN (1 << 0) /**< activates slowdown modifier */ -#define TF_STUNFLAG_BONKSTUCK (1 << 1) /**< bonk sound, stuck */ -#define TF_STUNFLAG_LIMITMOVEMENT (1 << 2) /**< disable forward/backward movement */ -#define TF_STUNFLAG_CHEERSOUND (1 << 3) /**< cheering sound */ -#define TF_STUNFLAG_NOSOUNDOREFFECT (1 << 5) /**< no sound or particle */ -#define TF_STUNFLAG_THIRDPERSON (1 << 6) /**< panic animation */ -#define TF_STUNFLAG_GHOSTEFFECT (1 << 7) /**< ghost particles */ +#define TF_STUNFLAG_SLOWDOWN (1 << 0) /**< activates slowdown modifier */ +#define TF_STUNFLAG_BONKSTUCK (1 << 1) /**< bonk sound, stuck */ +#define TF_STUNFLAG_LIMITMOVEMENT (1 << 2) /**< disable forward/backward movement */ +#define TF_STUNFLAG_CHEERSOUND (1 << 3) /**< cheering sound */ +#define TF_STUNFLAG_NOSOUNDOREFFECT (1 << 5) /**< no sound or particle */ +#define TF_STUNFLAG_THIRDPERSON (1 << 6) /**< panic animation */ +#define TF_STUNFLAG_GHOSTEFFECT (1 << 7) /**< ghost particles */ +#define TF_STUNFLAG_SOUND (1 << 8) /**< sound */ #define TF_STUNFLAGS_LOSERSTATE TF_STUNFLAG_SLOWDOWN|TF_STUNFLAG_NOSOUNDOREFFECT|TF_STUNFLAG_THIRDPERSON #define TF_STUNFLAGS_GHOSTSCARE TF_STUNFLAG_GHOSTEFFECT|TF_STUNFLAG_THIRDPERSON @@ -68,134 +69,144 @@ enum TFTeam TFTeam_Unassigned = 0, TFTeam_Spectator = 1, TFTeam_Red = 2, - TFTeam_Blue = 3 + TFTeam_Blue = 3 }; enum TFCond { - TFCond_Slowed = 0, - TFCond_Zoomed, - TFCond_Disguising, - TFCond_Disguised, - TFCond_Cloaked, - TFCond_Ubercharged, - TFCond_TeleportedGlow, - TFCond_Taunting, - TFCond_UberchargeFading, + TFCond_Slowed = 0, //0: Revving Minigun, Sniper Rifle. Gives zoomed/revved pose + TFCond_Zoomed, //1: Sniper Rifle zooming + TFCond_Disguising, //2: Disguise smoke + TFCond_Disguised, //3: Disguise + TFCond_Cloaked, //4: Cloak effect + TFCond_Ubercharged, //5: Invulnerability, removed when being healed or by another Uber effect + TFCond_TeleportedGlow, //6: Teleport trail effect + TFCond_Taunting, //7: Used for taunting, can remove to stop taunting + TFCond_UberchargeFading, //8: Invulnerability expiration effect TFCond_Unknown1, //9 - TFCond_CloakFlicker = 9, - TFCond_Teleporting, - TFCond_Kritzkrieged, + TFCond_CloakFlicker = 9, //9: Cloak flickering effect + TFCond_Teleporting, //10: Used for teleporting, does nothing applying + TFCond_Kritzkrieged, //11: Crit boost, removed when being healed or another Uber effect TFCond_Unknown2, //12 - TFCond_TmpDamageBonus = 12, - TFCond_DeadRingered, - TFCond_Bonked, - TFCond_Dazed, - TFCond_Buffed, - TFCond_Charging, - TFCond_DemoBuff, - TFCond_CritCola, - TFCond_InHealRadius, - TFCond_Healing, - TFCond_OnFire, - TFCond_Overhealed, - TFCond_Jarated, - TFCond_Bleeding, - TFCond_DefenseBuffed, - TFCond_Milked, - TFCond_MegaHeal, - TFCond_RegenBuffed, - TFCond_MarkedForDeath, - TFCond_NoHealingDamageBuff, - TFCond_SpeedBuffAlly, // 32 - TFCond_HalloweenCritCandy, - TFCond_CritCanteen, - TFCond_CritDemoCharge, - TFCond_CritHype, - TFCond_CritOnFirstBlood, - TFCond_CritOnWin, - TFCond_CritOnFlagCapture, - TFCond_CritOnKill, - TFCond_RestrictToMelee, - TFCond_DefenseBuffNoCritBlock, - TFCond_Reprogrammed, - TFCond_CritMmmph, - TFCond_DefenseBuffMmmph, - TFCond_FocusBuff, - TFCond_DisguiseRemoved, - TFCond_MarkedForDeathSilent, - TFCond_DisguisedAsDispenser, - TFCond_Sapped, - TFCond_UberchargedHidden, - TFCond_UberchargedCanteen, - TFCond_HalloweenBombHead, - TFCond_HalloweenThriller, - TFCond_RadiusHealOnDamage, - TFCond_CritOnDamage, - TFCond_UberchargedOnTakeDamage, - TFCond_UberBulletResist, - TFCond_UberBlastResist, - TFCond_UberFireResist, - TFCond_SmallBulletResist, - TFCond_SmallBlastResist, - TFCond_SmallFireResist, - TFCond_Stealthed, // 64 - TFCond_MedigunDebuff, - TFCond_StealthedUserBuffFade, - TFCond_BulletImmune, - TFCond_BlastImmune, - TFCond_FireImmune, - TFCond_PreventDeath, - TFCond_MVMBotRadiowave, - TFCond_HalloweenSpeedBoost, - TFCond_HalloweenQuickHeal, - TFCond_HalloweenGiant, - TFCond_HalloweenTiny, - TFCond_HalloweenInHell, - TFCond_HalloweenGhostMode, - TFCond_MiniCritOnKill, + TFCond_TmpDamageBonus = 12, //12: Temporary damage buff, something along with attribute 19 + TFCond_DeadRingered, //13: Dead Ringer damage resistance, gives TFCond_Cloaked + TFCond_Bonked, //14: Bonk! Atomic Punch effect + TFCond_Dazed, //15: Slow effect, can remove to remove stun effects + TFCond_Buffed, //16: Buff Banner mini-crits, icon, and glow + TFCond_Charging, //17: Forced forward, charge effect + TFCond_DemoBuff, //18: Eyelander eye glow + TFCond_CritCola, //19: Mini-crit effect + TFCond_InHealRadius, //20: Ring effect, rings disappear after a taunt ends + TFCond_Healing, //21: Used for healing, does nothing applying + TFCond_OnFire, //22: Ignite sound and vocals, can remove to remove afterburn + TFCond_Overhealed, //23: Used for overheal, does nothing applying + TFCond_Jarated, //24: Jarate effect + TFCond_Bleeding, //25: Bleed effect + TFCond_DefenseBuffed, //26: Battalion's Backup's defense, icon, and glow + TFCond_Milked, //27: Mad Milk effect + TFCond_MegaHeal, //28: Quick-Fix Ubercharge's knockback/stun immunity and visual effect + TFCond_RegenBuffed, //29: Concheror's speed boost, heal on hit, icon, and glow + TFCond_MarkedForDeath, //30: Fan o' War marked-for-death effect + TFCond_NoHealingDamageBuff, //31: Mini-crits, blocks healing, glow, no weapon mini-crit effects + TFCond_SpeedBuffAlly, //32: Disciplinary Action speed boost + TFCond_HalloweenCritCandy, //33: Halloween pumpkin crit-boost + TFCond_CritCanteen, //34: Crit-boost and doubles Sentry Gun fire-rate + TFCond_CritDemoCharge, //35: Crit glow, adds TFCond_Charging when charge meter is below 75% + TFCond_CritHype, //36: Soda Popper multi-jump effect + TFCond_CritOnFirstBlood, //37: Arena first blood crit-boost + TFCond_CritOnWin, //38: End-of-round crit-boost (May not remove correctly?) + TFCond_CritOnFlagCapture, //39: Intelligence capture crit-boost + TFCond_CritOnKill, //40: Crit-boost from crit-on-kill weapons + TFCond_RestrictToMelee, //41: Prevents switching once melee is out + TFCond_DefenseBuffNoCritBlock, //42: MvM Bomb Carrier defense buff (TFCond_DefenseBuffed without crit resistance) + TFCond_Reprogrammed, //43: No longer functions + TFCond_CritMmmph, //44: Phlogistinator crit-boost + TFCond_DefenseBuffMmmph, //45: Old Phlogistinator defense buff + TFCond_FocusBuff, //46: Hitman's Heatmaker no-unscope and faster Sniper charge + TFCond_DisguiseRemoved, //47: Enforcer damage bonus removed + TFCond_MarkedForDeathSilent, //48: Marked-for-death without sound effect + TFCond_DisguisedAsDispenser, //49: Dispenser disguise when crouching, max movement speed, sentries ignore player + TFCond_Sapped, //50: Sapper sparkle effect in MvM + TFCond_UberchargedHidden, //51: Out-of-bounds robot invulnerability effect + TFCond_UberchargedCanteen, //52: Invulnerability effect and Sentry Gun damage resistance + TFCond_HalloweenBombHead, //53: Bomb head effect (does not explode) + TFCond_HalloweenThriller, //54: Forced Thriller taunting + TFCond_RadiusHealOnDamage, //55: Radius healing, adds TFCond_InHealRadius, TFCond_Healing. Removed when a taunt ends, but this condition stays but does nothing + TFCond_CritOnDamage, //56: Miscellaneous crit-boost + TFCond_UberchargedOnTakeDamage, //57: Miscellaneous invulnerability + TFCond_UberBulletResist, //58: Vaccinator Uber bullet resistance + TFCond_UberBlastResist, //59: Vaccinator Uber blast resistance + TFCond_UberFireResist, //60: Vaccinator Uber fire resistance + TFCond_SmallBulletResist, //61: Vaccinator healing bullet resistance + TFCond_SmallBlastResist, //62: Vaccinator healing blast resistance + TFCond_SmallFireResist, //63: Vaccinator healing fire resistance + TFCond_Stealthed, //64: Cloaked until next attack + TFCond_MedigunDebuff, //65: Unknown + TFCond_StealthedUserBuffFade, //66: Cloaked, will appear for a few seconds on attack and cloak again + TFCond_BulletImmune, //67: Full bullet immunity + TFCond_BlastImmune, //68: Full blast immunity + TFCond_FireImmune, //69: Full fire immunity + TFCond_PreventDeath, //70: Survive to 1 health, then the condition is removed + TFCond_MVMBotRadiowave, //71: Stuns bots and applies radio effect + TFCond_HalloweenSpeedBoost, //72: Speed boost, non-melee fire rate and reload, infinite air jumps + TFCond_HalloweenQuickHeal, //73: Healing effect, adds TFCond_Healing along with TFCond_MegaHeal temporarily + TFCond_HalloweenGiant, //74: Double size, x10 max health increase, ammo regeneration, and forced thirdperson + TFCond_HalloweenTiny, //75: Half size and increased head size + TFCond_HalloweenInHell, //76: Applies TFCond_HalloweenGhostMode when the player dies + TFCond_HalloweenGhostMode, //77: Becomes a ghost unable to attack but can fly + TFCond_MiniCritOnKill, //78: Mini-crits effect TFCond_DodgeChance, //79 - TFCond_ObscuredSmoke = 79, - TFCond_Parachute, - TFCond_BlastJumping, - TFCond_HalloweenKart, - TFCond_HalloweenKartDash, - TFCond_BalloonHead, - TFCond_MeleeOnly, - TFCond_SwimmingCurse, + TFCond_ObscuredSmoke = 79, //79: 75% chance to dodge an attack + TFCond_Parachute, //80: Parachute effect, removed when touching the ground + TFCond_BlastJumping, //81: Player is blast jumping + TFCond_HalloweenKart, //82: Player forced into a Halloween kart + TFCond_HalloweenKartDash, //83: Forced forward if in TFCond_HalloweenKart, zoom in effect, and dash animations + TFCond_BalloonHead, //84: Big head and lowered gravity + TFCond_MeleeOnly, //85: Forced melee, along with TFCond_SpeedBuffAlly and TFCond_HalloweenTiny + TFCond_SwimmingCurse, //86: Swim in the air with Jarate overlay TFCond_HalloweenKartNoTurn, //87 - TFCond_FreezeInput = 87, - TFCond_HalloweenKartCage, - TFCond_HasRune, - TFCond_RuneStrength, - TFCond_RuneHaste, - TFCond_RuneRegen, - TFCond_RuneResist, - TFCond_RuneVampire, - TFCond_RuneWarlock, - TFCond_RunePrecision, // 96 - TFCond_RuneAgility, - TFCond_GrapplingHook, - TFCond_GrapplingHookSafeFall, - TFCond_GrapplingHookLatched, - TFCond_GrapplingHookBleeding, - TFCond_AfterburnImmune, - TFCond_RuneKnockout, - TFCond_RuneImbalance, - TFCond_CritRuneTemp, - TFCond_PasstimeInterception, - TFCond_SwimmingNoEffects, - TFCond_EyeaductUnderworld, - TFCond_KingRune, - TFCond_PlagueRune, - TFCond_SupernovaRune, - TFCond_Plague, - TFCond_KingAura, - TFCond_SpawnOutline, //114 - TFCond_KnockedIntoAir, - TFCond_CompetitiveWinner, - TFCond_CompetitiveLoser, - TFCond_NoTaunting, + TFCond_FreezeInput = 87, //87: Prevents player from using controls + TFCond_HalloweenKartCage, //88: Puts a cage around the player if in TFCond_HalloweenKart, otherwise crashes + TFCond_HasRune, //89: Has a powerup + TFCond_RuneStrength, //90: Double damage and no damage falloff + TFCond_RuneHaste, //91: Double fire rate, reload speed, clip and ammo size, and 30% faster movement speed + TFCond_RuneRegen, //92: Regen ammo, health, and metal + TFCond_RuneResist, //93: Takes 1/2 damage and critical immunity + TFCond_RuneVampire, //94: Takes 3/4 damage, gain health on damage, and 40% increase in max health + TFCond_RuneWarlock, //95: Attacker takes damage and knockback on hitting the player and 50% increase in max health + TFCond_RunePrecision, //96: Less bullet spread, no damage falloff, 250% faster projectiles, and double damage, faster charge, and faster re-zoom for Sniper Rifles + TFCond_RuneAgility, //97: Increased movement speed, grappling hook speed, jump height, and instant weapon switch + TFCond_GrapplingHook, //98: Used when a player fires their grappling hook, no effect applying or removing + TFCond_GrapplingHookSafeFall, //99: Used when a player is pulled by their grappling hook, no effect applying or removing + TFCond_GrapplingHookLatched, //100: Used when a player latches onto a wall, no effect applying or removing + TFCond_GrapplingHookBleeding, //101: Used when a player is hit by attacker's grappling hook + TFCond_AfterburnImmune, //102: Deadringer afterburn immunity + TFCond_RuneKnockout, //103: Melee and grappling hook only, increased max health, knockback immunity, x4 more damage against buildings, and knockbacks a powerup off a victim on hit + TFCond_RuneImbalance, //104: Prevents gaining a crit-boost or Uber powerups + TFCond_CritRuneTemp, //105: Crit-boost effect + TFCond_PasstimeInterception, //106: Used when a player intercepts the Jack/Ball + TFCond_SwimmingNoEffects, //107: Swimming in the air without animations or overlay + TFCond_EyeaductUnderworld, //108: Refills max health, short Uber, escaped the underworld message on removal + TFCond_KingRune, //109: Increased max health and applies TFCond_KingAura + TFCond_PlagueRune, //110: Radius health kit stealing, increased max health, TFCond_Plague on touching a victim + TFCond_SupernovaRune, //111: Charge meter passively increasing, when charged activiated causes radius Bonk stun + TFCond_Plague, //112: Plague sound effect and message, blocks King powerup health regen + TFCond_KingAura, //113: Increased fire rate, reload speed, and health regen to players in a radius + TFCond_SpawnOutline, //114: Outline and health meter of teammates (and disguised spies) + TFCond_KnockedIntoAir, //115: Used when a player is airblasted + TFCond_CompetitiveWinner, //116: Unknown + TFCond_CompetitiveLoser, //117: Unknown + TFCond_NoTaunting_DEPRECATED, //118 + TFCond_HealingDebuff = 118, //118: Healing debuff from Medics and dispensers + TFCond_PasstimePenaltyDebuff, //119: Marked-for-death effect + TFCond_GrappledToPlayer, //120: Prevents taunting and some Grappling Hook actions + TFCond_GrappledByPlayer, //121: Unknown + TFCond_ParachuteDeployed, //122: Parachute deployed, prevents reopening it + TFCond_Gas, //123: Gas Passer effect + TFCond_BurningPyro, //124: Dragon's Fury afterburn on Pyros + TFCond_RocketPack, //125: Thermal Thruster launched effects, prevents reusing + TFCond_LostFooting, //126: Less ground friction + TFCond_AirCurrent //127: Reduced air control and friction }; const float TFCondDuration_Infinite = -1.0; @@ -234,57 +245,60 @@ enum TFObjectMode }; /** - * Sets a client on fire for 10 seconds. + * Sets a client on fire. * - * @param client Player's index. - * @param attacker Attacker's index. - * @error Invalid client index, client not in game, or no mod support. + * @note Fire duration is capped to 10 seconds. + * + * @param client Player's index. + * @param attacker Attacker's index. + * @param duration Duration of fire (in seconds). + * @error Invalid client index, client not in game, or no mod support. */ -native void TF2_IgnitePlayer(int client, int attacker); +native void TF2_IgnitePlayer(int client, int attacker, float duration=10.0); /** * Respawns a client * - * @param client Player's index. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @error Invalid client index, client not in game, or no mod support. */ native void TF2_RespawnPlayer(int client); /** * Regenerates a client's health and ammunition * - * @param client Player's index. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @error Invalid client index, client not in game, or no mod support. */ native void TF2_RegeneratePlayer(int client); /** * Adds a condition to a player * - * @param client Player's index. - * @param condition Integer identifier of condition to apply. - * @param duration Duration of condition (does not apply to all conditions). + * @param client Player's index. + * @param condition Integer identifier of condition to apply. + * @param duration Duration of condition (does not apply to all conditions). * Pass TFCondDuration_Infinite to apply until manually removed. - * @param inflictor Condition inflictor's index (0 for no inflictor). - * @error Invalid client index, client not in game, or no mod support. + * @param inflictor Condition inflictor's index (0 for no inflictor). + * @error Invalid client index, client not in game, or no mod support. */ native void TF2_AddCondition(int client, TFCond condition, float duration=TFCondDuration_Infinite, int inflictor=0); /** * Removes a condition from a player * - * @param client Player's index. - * @param condition Integer identifier of condition to remove. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param condition Integer identifier of condition to remove. + * @error Invalid client index, client not in game, or no mod support. */ native void TF2_RemoveCondition(int client, TFCond condition); /** * Enables/disables PowerPlay mode on a player. * - * @param client Player's index. - * @param enabled Whether to enable or disable PowerPlay on player. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param enabled Whether to enable or disable PowerPlay on player. + * @error Invalid client index, client not in game, or no mod support. */ native void TF2_SetPlayerPowerPlay(int client, bool enabled); @@ -293,47 +307,48 @@ native void TF2_SetPlayerPowerPlay(int client, bool enabled); * * Note: This only starts the disguise process and a delay occurs before the spy is fully disguised * - * @param client Player's index. - * @param team Team to disguise the player as (only TFTeam_Red and TFTeam_Blue have an effect) - * @param classType TFClassType class to disguise the player as - * @param target Specific target player to disguise as (0 for any) - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @param team Team to disguise the player as (only TFTeam_Red and TFTeam_Blue have an effect) + * @param classType TFClassType class to disguise the player as + * @param target Specific target player to disguise as (0 for any) + * @error Invalid client index, client not in game, or no mod support. */ native void TF2_DisguisePlayer(int client, TFTeam team, TFClassType classType, int target=0); /** * Removes the current disguise from a client. Only has an effect on spies. * - * @param client Player's index. - * @error Invalid client index, client not in game, or no mod support. + * @param client Player's index. + * @error Invalid client index, client not in game, or no mod support. */ native void TF2_RemovePlayerDisguise(int client); /** * Stuns a client * - * @param client Player's index. - * @param duration Duration of stun. - * @param slowdown Slowdown percent (as decimal, 0.00-1.00) - * Ignored if TF_STUNFLAG_SLOWDOWN is not set. - * @param stunflags Stun flags. - * @param attacker Attacker's index (0 is allowed for world). + * @param client Player's index. + * @param duration Duration of stun. + * @param slowdown Slowdown percent (as decimal, 0.00-1.00) + * Ignored if TF_STUNFLAG_SLOWDOWN is not set. + * @param stunflags Stun flags. + * @param attacker Attacker's index (0 is allowed for world). */ native void TF2_StunPlayer(int client, float duration, float slowdown=0.0, int stunflags, int attacker=0); /** * Induces the bleed effect on a client * - * @param client Player's index. - * @param attacker Attacker's index. - * @param duration Duration of bleeding (in seconds). + * @param client Player's index. + * @param attacker Attacker's index. + * @param duration Duration of bleeding (in seconds). */ native void TF2_MakeBleed(int client, int attacker, float duration); /** * Retrieves the entity index of the CPlayerResource entity * - * @return The current resource entity index. + * @return The current resource entity index. + * @deprecated Use GetPlayerResourceEntity instead */ #pragma deprecated Use GetPlayerResourceEntity instead native int TF2_GetResourceEntity(); @@ -341,8 +356,8 @@ native int TF2_GetResourceEntity(); /** * Finds the TFClassType for a given class name. * - * @param classname A classname string such as "sniper" or "demoman" - * @return A TFClassType constant. + * @param classname A classname string such as "sniper" or "demoman" + * @return A TFClassType constant. */ native TFClassType TF2_GetClass(const char[] classname); @@ -352,19 +367,19 @@ native TFClassType TF2_GetClass(const char[] classname); * action to override the decision with the value of 'result' * * @note Since critical shots are also calculated client side any changes made with - * this will not show for the shooter. Projectile weapons such as the rocketlauncher - * and demoman weapons will show a critical bullet but no critical sound effect. - * Bullet hits should appear as expected. + * this will not show for the shooter. Projectile weapons such as the rocketlauncher + * and demoman weapons will show a critical bullet but no critical sound effect. + * Bullet hits should appear as expected. * - * @param client Client Index. - * @param weapon Weapon entity Index. - * @param weaponname Classname of the weapon. - * @param result Buffer param for the result of the decision. + * @param client Client Index. + * @param weapon Weapon entity Index. + * @param weaponname Classname of the weapon. + * @param result Buffer param for the result of the decision. */ forward Action TF2_CalcIsAttackCritical(int client, int weapon, char[] weaponname, bool &result); /** - * @deprecated No longer called. Use TF2_OnIsHolidayActive. + * @deprecated No longer called. Use TF2_OnIsHolidayActive. */ #pragma deprecated No longer called. Use TF2_OnIsHolidayActive. forward Action TF2_OnGetHoliday(TFHoliday &holiday); @@ -374,17 +389,17 @@ forward Action TF2_OnGetHoliday(TFHoliday &holiday); * Return Plugin_Continue to let the original calculation or return a higher * action to override the decision with the value of 'result' * - * @param holiday Holiday being checked. - * @param result Buffer param for the result of the decision. - * @return Plugin_Continue for original calculation, higher value to use 'result'. + * @param holiday Holiday being checked. + * @param result Buffer param for the result of the decision. + * @return Plugin_Continue for original calculation, higher value to use 'result'. */ forward Action TF2_OnIsHolidayActive(TFHoliday holiday, bool &result); /** * Returns whether or not a holiday is active * - * @param holiday Holiday being checked. - * @return Boolean of whether or not the holiday is active. + * @param holiday Holiday being checked. + * @return Boolean of whether or not the holiday is active. */ native bool TF2_IsHolidayActive(TFHoliday holiday); @@ -392,7 +407,7 @@ native bool TF2_IsHolidayActive(TFHoliday holiday); * Returns whether or not a client (Player) is in a duel. * * @param client Client Index. - * @return Boolean of whether or not the client/player is dueling. + * @return Boolean of whether or not the client/player is dueling. */ native bool TF2_IsPlayerInDuel(int client); @@ -400,16 +415,16 @@ native bool TF2_IsPlayerInDuel(int client); * Removes an econ wearable (hat, misc, etc) from a player. * This also deletes the wearable entity. * - * @param client Client index. - * @param wearable Index of the wearable entity. - * @error Invalid client index, client not in game, invalid wearable entity, or no mod support. + * @param client Client index. + * @param wearable Index of the wearable entity. + * @error Invalid client index, client not in game, invalid wearable entity, or no mod support. */ native void TF2_RemoveWearable(int client, int wearable); /** * Called after a condition is added to a player * - * @param client Index of the client to which the condition is being added. + * @param client Index of the client to which the condition is being added. * @param condition Condition that is being added. */ forward void TF2_OnConditionAdded(int client, TFCond condition); @@ -417,8 +432,8 @@ forward void TF2_OnConditionAdded(int client, TFCond condition); /** * Called after a condition is removed from a player * - * @param client Index of the client to which the condition is being removed. - * @param condition Condition that is being removed. + * @param client Index of the client to which the condition is being removed. + * @param condition Condition that is being removed. */ forward void TF2_OnConditionRemoved(int client, TFCond condition); @@ -437,11 +452,11 @@ forward void TF2_OnWaitingForPlayersEnd(); * Return Plugin_Continue to let the original calculation or return a higher * action to override the decision with the value of 'result' * - * @param client Client index. - * @param teleporter Teleporter entity index. - * @param result Buffer param for the result of the decision. - * This is prepopulated with the game's original decision to let a player teleport. - * @return Plugin_Continue for original calculation, higher value to use 'result'. + * @param client Client index. + * @param teleporter Teleporter entity index. + * @param result Buffer param for the result of the decision. + * This is prepopulated with the game's original decision to let a player teleport. + * @return Plugin_Continue for original calculation, higher value to use 'result'. */ forward Action TF2_OnPlayerTeleport(int client, int teleporter, bool &result); diff --git a/env/include/tf2_stocks.inc b/env/include/tf2_stocks.inc index adc70c9..02c0054 100644 --- a/env/include/tf2_stocks.inc +++ b/env/include/tf2_stocks.inc @@ -79,6 +79,8 @@ #define TF_DEATHFLAG_INTERRUPTED (1 << 6) #define TF_DEATHFLAG_GIBBED (1 << 7) #define TF_DEATHFLAG_PURGATORY (1 << 8) +#define TF_DEATHFLAG_MINIBOSS (1 << 9) +#define TF_DEATHFLAG_AUSTRALIUM (1 << 10) // Custom kill identifiers for the customkill property on the player_death event enum { @@ -159,6 +161,12 @@ enum { TF_CUSTOM_KART, TF_CUSTOM_GIANT_HAMMER, TF_CUSTOM_RUNE_REFLECT, + TF_CUSTOM_DRAGONS_FURY_IGNITE, + TF_CUSTOM_DRAGONS_FURY_BONUS_BURNING, + TF_CUSTOM_SLAP_KILL, + TF_CUSTOM_CROC, + TF_CUSTOM_TAUNTATK_GASBLAST, + TF_CUSTOM_AXTINGUISHER_BOOSTED }; // Weapon codes as used in some events, such as player_death @@ -268,6 +276,12 @@ enum { TF_WEAPON_GRAPPLINGHOOK, TF_WEAPON_PASSTIME_GUN, TF_WEAPON_CHARGED_SMG, + TF_WEAPON_BREAKABLE_SIGN, + TF_WEAPON_ROCKETPACK, + TF_WEAPON_SLAP, + TF_WEAPON_JAR_GAS, + TF_WEAPON_GRENADE_JAR_GAS, + TF_WEAPON_FLAME_BALL }; // TF2 Weapon Loadout Slots @@ -339,9 +353,9 @@ static const char TFResourceNames[TFResourceType][] = /** * Gets a client's current team. * - * @param client Client index. - * @return Current TFTeam of client. - * @error Invalid client index. + * @param client Client index. + * @return Current TFTeam of client. + * @error Invalid client index. */ stock TFTeam TF2_GetClientTeam(int client) { @@ -363,9 +377,9 @@ stock void TF2_ChangeClientTeam(int client, TFTeam team) /** * Gets a client's current class. * - * @param client Player's index. - * @return Current TFClassType of player. - * @error Invalid client index. + * @param client Player's index. + * @return Current TFClassType of player. + * @error Invalid client index. */ stock TFClassType TF2_GetPlayerClass(int client) { @@ -377,11 +391,11 @@ stock TFClassType TF2_GetPlayerClass(int client) * * Note: If setting player class in a player spawn hook weapons should be set to false. * - * @param client Player's index. - * @param classType TFClassType class symbol. - * @param weapons This parameter is ignored. - * @param persistent If true, changes the player's desired class so the change stays after death. - * @error Invalid client index. + * @param client Player's index. + * @param classType TFClassType class symbol. + * @param weapons This parameter is ignored. + * @param persistent If true, changes the player's desired class so the change stays after death. + * @error Invalid client index. */ stock void TF2_SetPlayerClass(int client, TFClassType classType, bool weapons=true, bool persistent=true) { @@ -400,6 +414,7 @@ stock void TF2_SetPlayerClass(int client, TFClassType classType, bool weapons=tr * @param type ResourceType constant * @return Value or -1 on failure. * @error Invalid client index, client not in game or failed to find resource entity. + * @deprecated Use GetPlayerResourceEntity and GetEntProp instead. */ #pragma deprecated Use GetPlayerResourceEntity and GetEntProp instead stock int TF2_GetPlayerResourceData(int client, TFResourceType type) @@ -431,11 +446,12 @@ stock int TF2_GetPlayerResourceData(int client, TFResourceType type) * * Note: The game overwrites these values every frame, so changing them will have very little effect. * - * @param client Player's index. - * @param type ResourceType constant - * @param value Value to set. - * @return Value or -1 on failure. - * @error Invalid client index, client not in game or failed to find resource entity. + * @param client Player's index. + * @param type ResourceType constant + * @param value Value to set. + * @return Value or -1 on failure. + * @error Invalid client index, client not in game or failed to find resource entity. + * @deprecated Use GetPlayerResourceEntity and SetEntProp instead. */ #pragma deprecated Use GetPlayerResourceEntity and SetEntProp instead stock bool TF2_SetPlayerResourceData(int client, TFResourceType type, any value) @@ -467,9 +483,9 @@ stock bool TF2_SetPlayerResourceData(int client, TFResourceType type, any value) /** * Removes all weapons from a client's weapon slot * - * @param client Player's index. - * @param slot Slot index (0-5) - * @error Invalid client, invalid slot or lack of mod support + * @param client Player's index. + * @param slot Slot index (0-5) + * @error Invalid client, invalid slot or lack of mod support */ stock void TF2_RemoveWeaponSlot(int client, int slot) { @@ -498,7 +514,7 @@ stock void TF2_RemoveWeaponSlot(int client, int slot) /** * Removes all weapons from a client * - * @param client Player's index. + * @param client Player's index. */ stock void TF2_RemoveAllWeapons(int client) { @@ -511,8 +527,9 @@ stock void TF2_RemoveAllWeapons(int client) /** * Gets a player's condition bits * - * @param client Player's index. - * @return Player's condition bits + * @param client Player's index. + * @return Player's condition bits + * @deprecated Use TF2_IsPlayerInCondition instead. */ #pragma deprecated Use TF2_IsPlayerInCondition instead. stock int TF2_GetPlayerConditionFlags(int client) @@ -523,9 +540,9 @@ stock int TF2_GetPlayerConditionFlags(int client) /** * Check whether or not a condition is set on a player * - * @param client Player's index. - * @param cond TFCond constant - * @return True if set, false otherwise + * @param client Player's index. + * @param cond TFCond constant + * @return True if set, false otherwise */ stock bool TF2_IsPlayerInCondition(int client, TFCond cond) { @@ -533,7 +550,7 @@ stock bool TF2_IsPlayerInCondition(int client, TFCond cond) int iCond = view_as(cond); switch (iCond / 32) { - case 0: + case 0: { int bit = 1 << iCond; if ((GetEntProp(client, Prop_Send, "m_nPlayerCond") & bit) == bit) @@ -546,7 +563,7 @@ stock bool TF2_IsPlayerInCondition(int client, TFCond cond) return true; } } - case 1: + case 1: { int bit = (1 << (iCond - 32)); if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx") & bit) == bit) @@ -554,7 +571,7 @@ stock bool TF2_IsPlayerInCondition(int client, TFCond cond) return true; } } - case 2: + case 2: { int bit = (1 << (iCond - 64)); if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx2") & bit) == bit) @@ -562,7 +579,7 @@ stock bool TF2_IsPlayerInCondition(int client, TFCond cond) return true; } } - case 3: + case 3: { int bit = (1 << (iCond - 96)); if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx3") & bit) == bit) @@ -570,8 +587,18 @@ stock bool TF2_IsPlayerInCondition(int client, TFCond cond) return true; } } - default: - ThrowError("Invalid TFCond value %d", iCond); + case 4: + { + int bit = (1 << (iCond - 128)); + if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx4") & bit) == bit) + { + return true; + } + } + default: + { + ThrowError("Invalid TFCond value %d", iCond); + } } return false; @@ -580,9 +607,9 @@ stock bool TF2_IsPlayerInCondition(int client, TFCond cond) /** * Gets an entity's object type. * - * @param entity Entity index. - * @return Current TFObjectType of entity. - * @error Invalid entity index. + * @param entity Entity index. + * @return Current TFObjectType of entity. + * @error Invalid entity index. */ stock TFObjectType TF2_GetObjectType(int entity) { @@ -599,9 +626,9 @@ stock TFObjectType TF2_GetObjectType(int entity) /** * Gets an entity's object mode. * - * @param entity Entity index. - * @return Current TFObjectMode of entity. - * @error Invalid entity index. + * @param entity Entity index. + * @return Current TFObjectMode of entity. + * @error Invalid entity index. */ stock TFObjectMode TF2_GetObjectMode(int entity) { diff --git a/env/include/timers.inc b/env/include/timers.inc index 880bd07..2fb74d9 100644 --- a/env/include/timers.inc +++ b/env/include/timers.inc @@ -9,7 +9,7 @@ * 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 @@ -37,10 +37,10 @@ #include -#define TIMER_REPEAT (1<<0) /**< Timer will repeat until it returns Plugin_Stop */ -#define TIMER_FLAG_NO_MAPCHANGE (1<<1) /**< Timer will not carry over mapchanges */ -#define TIMER_HNDL_CLOSE (1<<9) /**< Deprecated define, replaced by below */ -#define TIMER_DATA_HNDL_CLOSE (1<<9) /**< Timer will automatically call CloseHandle() on its data when finished */ +#define TIMER_REPEAT (1<<0) /**< Timer will repeat until it returns Plugin_Stop */ +#define TIMER_FLAG_NO_MAPCHANGE (1<<1) /**< Timer will not carry over mapchanges */ +#define TIMER_HNDL_CLOSE (1<<9) /**< Deprecated define, replaced by below */ +#define TIMER_DATA_HNDL_CLOSE (1<<9) /**< Timer will automatically call CloseHandle() on its data when finished */ /** * Any of the following prototypes will work for a timed function. @@ -48,108 +48,108 @@ typeset Timer { /** - * Called when the timer interval has elapsed. - * - * @param timer Handle to the timer object. - * @param hndl Handle passed to CreateTimer() when timer was created. - * @return Plugin_Stop to stop a repeating timer, any other value for - * default behavior. - */ + * Called when the timer interval has elapsed. + * + * @param timer Handle to the timer object. + * @param hndl Handle passed to CreateTimer() when timer was created. + * @return Plugin_Stop to stop a repeating timer, any other value for + * default behavior. + */ function Action(Handle timer, Handle hndl); - + /** - * Called when the timer interval has elapsed. - * - * @param timer Handle to the timer object. - * @param data Data passed to CreateTimer() when timer was created. - * @return Plugin_Stop to stop a repeating timer, any other value for - * default behavior. - */ + * Called when the timer interval has elapsed. + * + * @param timer Handle to the timer object. + * @param data Data passed to CreateTimer() when timer was created. + * @return Plugin_Stop to stop a repeating timer, any other value for + * default behavior. + */ function Action(Handle timer, any data); - + /** - * Called when the timer interval has elapsed. - * - * @param timer Handle to the timer object. - * @return Plugin_Stop to stop a repeating timer, any other value for - * default behavior. - */ + * Called when the timer interval has elapsed. + * + * @param timer Handle to the timer object. + * @return Plugin_Stop to stop a repeating timer, any other value for + * default behavior. + */ function Action(Handle timer); }; /** * Creates a basic timer. Calling CloseHandle() on a timer will end the timer. * - * @param interval Interval from the current game time to execute the given function. - * @param func Function to execute once the given interval has elapsed. - * @param data Handle or value to pass through to the timer callback function. - * @param flags Flags to set (such as repeatability or auto-Handle closing). - * @return Handle to the timer object. You do not need to call CloseHandle(). - * If the timer could not be created, INVALID_HANDLE will be returned. + * @param interval Interval from the current game time to execute the given function. + * @param func Function to execute once the given interval has elapsed. + * @param data Handle or value to pass through to the timer callback function. + * @param flags Flags to set (such as repeatability or auto-Handle closing). + * @return Handle to the timer object. You do not need to call CloseHandle(). + * If the timer could not be created, INVALID_HANDLE will be returned. */ native Handle CreateTimer(float interval, Timer func, any data=INVALID_HANDLE, int flags=0); /** * Kills a timer. Use this instead of CloseHandle() if you need more options. * - * @param timer Timer Handle to kill. - * @param autoClose If autoClose is true, the data that was passed to CreateTimer() will - * be closed as a handle if TIMER_DATA_HNDL_CLOSE was not specified. - * @error Invalid handles will cause a run time error. + * @param timer Timer Handle to kill. + * @param autoClose If autoClose is true, the data that was passed to CreateTimer() will + * be closed as a handle if TIMER_DATA_HNDL_CLOSE was not specified. + * @error Invalid handles will cause a run time error. */ native void KillTimer(Handle timer, bool autoClose=false); /** * Manually triggers a timer so its function will be called. * - * @param timer Timer Handle to trigger. - * @param reset If reset is true, the elapsed time counter is reset - * so the full interval must pass again. + * @param timer Timer Handle to trigger. + * @param reset If reset is true, the elapsed time counter is reset + * so the full interval must pass again. */ native void TriggerTimer(Handle timer, bool reset=false); /** - * Returns the simulated game time. + * Returns the simulated game time. * - * This time is internally maintained by SourceMod and is based on the game - * tick count and tick rate. Unlike GetGameTime(), it will increment past - * map changes and while no players are connected. Unlike GetEngineTime(), - * it will not increment based on the system clock (i.e. it is still bound + * This time is internally maintained by SourceMod and is based on the game + * tick count and tick rate. Unlike GetGameTime(), it will increment past + * map changes and while no players are connected. Unlike GetEngineTime(), + * it will not increment based on the system clock (i.e. it is still bound * to the ticking process). * - * @return Time based on the game tick count. + * @return Time based on the game tick count. */ native float GetTickedTime(); /** - * Returns an estimate of the time left before the map ends. If the server - * has not processed any frames yet (i.e. no players have joined the map yet), + * Returns an estimate of the time left before the map ends. If the server + * has not processed any frames yet (i.e. no players have joined the map yet), * then the time left returned will always be infinite. * - * @param timeleft Variable to store the time, in seconds. If the - * value is less than 0, the time limit is infinite. - * @return True if the operation is supported, false otherwise. + * @param timeleft Variable to store the time, in seconds. If the + * value is less than 0, the time limit is infinite. + * @return True if the operation is supported, false otherwise. */ native bool GetMapTimeLeft(int &timeleft); /** - * Retrieves the current map time limit. If the server has not processed any - * frames yet (i.e. no players have joined the map yet), then the time limit + * Retrieves the current map time limit. If the server has not processed any + * frames yet (i.e. no players have joined the map yet), then the time limit * returned will always be 0. * - * @param time Set to the number of total seconds in the map time - * limit, or 0 if there is no time limit set. - * @return True on success, false if operation is not supported. + * @param time Set to the number of total seconds in the map time + * limit, or 0 if there is no time limit set. + * @return True on success, false if operation is not supported. */ native bool GetMapTimeLimit(int &time); /** * Extends the map time limit in a way that will notify all plugins. * - * @param time Number of seconds to extend map time limit by. - * The number can be negative to decrease the time limit. - * If 0, the map will be set to have no time limit. - * @return True on success, false if operation is not supported. + * @param time Number of seconds to extend map time limit by. + * The number can be negative to decrease the time limit. + * If 0, the map will be set to have no time limit. + * @return True on success, false if operation is not supported. */ native bool ExtendMapTimeLimit(int time); @@ -158,34 +158,34 @@ native bool ExtendMapTimeLimit(int time); * * Note: A tick, in this context, is a frame. * - * @return Number of seconds in between ticks. + * @return Number of seconds in between ticks. */ native float GetTickInterval(); /** - * Notification that the map's time left has changed via a change in the time - * limit or a change in the game rules (such as mp_restartgame). This is useful + * Notification that the map's time left has changed via a change in the time + * limit or a change in the game rules (such as mp_restartgame). This is useful * for plugins trying to create timers based on the time left in the map. * - * Calling ExtendMapTimeLimit() from here, without proper precaution, will + * Calling ExtendMapTimeLimit() from here, without proper precaution, will * cause infinite recursion. * * If the operation is not supported, this will never be called. - * If the server has not yet processed any frames (i.e. no players have joined - * the map yet), then this will be called once the server begins ticking, even + * If the server has not yet processed any frames (i.e. no players have joined + * the map yet), then this will be called once the server begins ticking, even * if there is no time limit set. */ forward void OnMapTimeLeftChanged(); /** - * Returns whether or not the server is processing frames or not. + * Returns whether or not the server is processing frames or not. * - * The server does not process frames until at least one client joins the game. - * Once the first player has in, even if that player, leaves, the server's + * The server does not process frames until at least one client joins the game. + * Once the first player has in, even if that player, leaves, the server's * timers and entities will work. * - * @return True if the server is ticking, false otherwise. + * @return True if the server is ticking, false otherwise. */ native bool IsServerProcessing(); @@ -194,12 +194,12 @@ native bool IsServerProcessing(); * @note The datapack is automatically freed when the timer ends. * @note The position of the datapack is not reset or changed for the timer function. * - * @param interval Interval from the current game time to execute the given function. - * @param func Function to execute once the given interval has elapsed. - * @param datapack The newly created datapack is passed though this by-reference - * parameter to the timer callback function. - * @param flags Timer flags. - * @return Handle to the timer object. You do not need to call CloseHandle(). + * @param interval Interval from the current game time to execute the given function. + * @param func Function to execute once the given interval has elapsed. + * @param datapack The newly created datapack is passed though this by-reference + * parameter to the timer callback function. + * @param flags Timer flags. + * @return Handle to the timer object. You do not need to call CloseHandle(). */ stock Handle CreateDataTimer(float interval, Timer func, Handle &datapack, int flags=0) { diff --git a/env/include/topmenus.inc b/env/include/topmenus.inc index d29cd78..bd1c6da 100644 --- a/env/include/topmenus.inc +++ b/env/include/topmenus.inc @@ -9,7 +9,7 @@ * 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 @@ -29,7 +29,7 @@ * * Version: $Id$ */ - + #if defined _topmenus_included #endinput #endif @@ -49,18 +49,18 @@ enum TopMenuAction * OUTPUT: Buffer for rendering, maxlength of buffer. */ TopMenuAction_DisplayOption = 0, - + /** * The title of a menu is being drawn for a given topobj. * - * Note: The Object ID will be INVALID_TOPMENUOBJECT if drawing the + * Note: The Object ID will be INVALID_TOPMENUOBJECT if drawing the * root title. Otherwise, the Object ID is a category. * * INPUT : TopMenu Handle, topobj ID, client index. * OUTPUT: Buffer for rendering, maxlength of buffer. */ TopMenuAction_DisplayTitle = 1, - + /** * A menu option has been selected. * @@ -74,19 +74,19 @@ enum TopMenuAction * A menu option is being drawn and its flags can be overridden. * * INPUT : TopMenu Handle, topobj ID, client index. - * OUTPUT: The first byte of the 'buffer' string should be set - * to the desired flags. By default, it will contain - * ITEMDRAW_DEFAULT. + * OUTPUT: The first byte of the 'buffer' string should be set + * to the desired flags. By default, it will contain + * ITEMDRAW_DEFAULT. */ TopMenuAction_DrawOption = 3, - + /** * Called when an topobj is being removed from the menu. * This can be used to clean up data stored in the info string. * * INPUT : TopMenu Handle, topobj ID. */ - TopMenuAction_RemoveObject = 4, + TopMenuAction_RemoveObject = 4 }; /** @@ -94,8 +94,8 @@ enum TopMenuAction */ enum TopMenuObjectType { - TopMenuObject_Category = 0, /**< Category (sub-menu branching from root) */ - TopMenuObject_Item = 1 /**< Item on a sub-menu */ + TopMenuObject_Category = 0, /**< Category (sub-menu branching from root) */ + TopMenuObject_Item = 1 /**< Item on a sub-menu */ }; /** @@ -103,9 +103,9 @@ enum TopMenuObjectType */ enum TopMenuPosition { - TopMenuPosition_Start = 0, /**< Start/root of the menu */ - TopMenuPosition_LastRoot = 1, /**< Last position in the root menu */ - TopMenuPosition_LastCategory = 3, /**< Last position in their last category */ + TopMenuPosition_Start = 0, /**< Start/root of the menu */ + TopMenuPosition_LastRoot = 1, /**< Last position in the root menu */ + TopMenuPosition_LastCategory = 3 /**< Last position in their last category */ }; /** @@ -113,21 +113,21 @@ enum TopMenuPosition */ enum TopMenuObject { - INVALID_TOPMENUOBJECT = 0, + INVALID_TOPMENUOBJECT = 0 }; /** * TopMenu callback prototype. * - * @param topmenu Handle to the TopMenu. - * @param action TopMenuAction being performed. - * @param topobj_id The topobj ID (if used). - * @param param Extra parameter (if used). - * @param buffer Output buffer (if used). - * @param maxlength Output buffer (if used). + * @param topmenu Handle to the TopMenu. + * @param action TopMenuAction being performed. + * @param topobj_id The topobj ID (if used). + * @param param Extra parameter (if used). + * @param buffer Output buffer (if used). + * @param maxlength Output buffer (if used). */ typedef TopMenuHandler = function void ( - TopMenu topmenu, + TopMenu topmenu, TopMenuAction action, TopMenuObject topobj_id, int param, @@ -152,18 +152,18 @@ methodmap TopMenu < Handle // Re-sorts the items in a TopMenu via a configuration file. // - // The format of the configuration file should be a Valve Key-Values - // formatted file that SourceMod can parse. There should be one root - // section, and one sub-section for each category. Each sub-section's + // The format of the configuration file should be a Valve Key-Values + // formatted file that SourceMod can parse. There should be one root + // section, and one sub-section for each category. Each sub-section's // name should match the category name. // // Each sub-section may only contain key/value pairs in the form of: // key: "item" // value: Name of the item as passed to AddToTopMenu(). // - // The TopMenu will draw items in the order declared in the configuration - // file. If items do not appear in the configuration file, they are sorted - // per-player based on how the handler function renders for that player. + // The TopMenu will draw items in the order declared in the configuration + // file. If items do not appear in the configuration file, they are sorted + // per-player based on how the handler function renders for that player. // These items appear after the configuration sorted items. // // @param topmenu TopMenu Handle. @@ -172,79 +172,79 @@ methodmap TopMenu < Handle // @param maxlength Maximum size of the error buffer. Error buffer // will be filled with a zero-terminated string if // false is returned. - // @return True on success, false on failure. + // @return True on success, false on failure. public native bool LoadConfig(const char[] file, char[] error, int maxlength); // Adds a category to a TopMenu. - // + // // @param name Object name (MUST be unique). // @param handler Handler for topobj. // @param cmdname Command name (for access overrides). // @param flags Default access flags. // @param info_string Arbitrary storage (max 255 bytes). - // @return A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on failure. + // @return A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on failure. public native TopMenuObject AddCategory(const char[] name, TopMenuHandler handler, const char[] cmdname = "", int flags = 0, const char[] info_string = ""); // Adds an item to a TopMenu category. - // + // // @param name Object name (MUST be unique). // @param handler Handler for topobj. // @param category The object of the parent category for the item. // @param cmdname Command name (for access overrides). // @param flags Default access flags. // @param info_string Arbitrary storage (max 255 bytes). - // @return A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on failure. + // @return A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on failure. public native TopMenuObject AddItem(const char[] name, TopMenuHandler handler, TopMenuObject parent, const char[] cmdname = "", int flags = 0, const char[] info_string = ""); // Retrieves the info string of a top menu item. - // + // // @param parent TopMenuObject ID. // @param buffer Buffer to store info string. // @param maxlength Maximum size of info string. - // @return Number of bytes written, not including the null terminator. + // @return Number of bytes written, not including the null terminator. public native int GetInfoString(TopMenuObject parent, char[] buffer, int maxlength); // Retrieves the name string of a top menu item. - // + // // @param topobj TopMenuObject ID. // @param buffer Buffer to store info string. // @param maxlength Maximum size of info string. - // @return Number of bytes written, not including the null terminator. + // @return Number of bytes written, not including the null terminator. public native int GetObjName(TopMenuObject topobj, char[] buffer, int maxlength); // Removes an topobj from a TopMenu. - // - // Plugins' topobjs are automatically removed all TopMenus when the given + // + // Plugins' topobjs are automatically removed all TopMenus when the given // plugin unloads or pauses. In the case of unpausing, all items are restored. - // + // // @param topobj TopMenuObject ID. public native void Remove(TopMenuObject topobj); // Displays a TopMenu to a client. - // + // // @param client Client index. // @param position Position to display from. - // @return True on success, false on failure. + // @return True on success, false on failure. public native bool Display(int client, TopMenuPosition position); // Displays a TopMenu category to a client. - // + // // @param category Category topobj id. // @param client Client index. - // @return True on success, false on failure. + // @return True on success, false on failure. public native bool DisplayCategory(TopMenuObject category, int client); // Finds a category's topobj ID in a TopMenu. - // + // // @param name Object's unique name. - // @return TopMenuObject ID on success, or + // @return TopMenuObject ID on success, or // INVALID_TOPMENUOBJECT on failure. public native TopMenuObject FindCategory(const char[] name); - + // Set the menu title caching behavior of the TopMenu. By default titles // are cached to reduce overhead. If you need dynamic menu titles which // change each time the menu is displayed to a user, set this to false. @@ -256,56 +256,56 @@ methodmap TopMenu < Handle /** * Creates a TopMenu. * - * @param handler Handler to use for drawing the root title. - * @return A new TopMenu Handle, or INVALID_HANDLE on failure. - */ + * @param handler Handler to use for drawing the root title. + * @return A new TopMenu Handle, or INVALID_HANDLE on failure. + */ native TopMenu CreateTopMenu(TopMenuHandler handler); /** * Re-sorts the items in a TopMenu via a configuration file. * - * The format of the configuration file should be a Valve Key-Values - * formatted file that SourceMod can parse. There should be one root - * section, and one sub-section for each category. Each sub-section's + * The format of the configuration file should be a Valve Key-Values + * formatted file that SourceMod can parse. There should be one root + * section, and one sub-section for each category. Each sub-section's * name should match the category name. * * Each sub-section may only contain key/value pairs in the form of: * key: "item" * value: Name of the item as passed to AddToTopMenu(). * - * The TopMenu will draw items in the order declared in the configuration - * file. If items do not appear in the configuration file, they are sorted - * per-player based on how the handler function renders for that player. + * The TopMenu will draw items in the order declared in the configuration + * file. If items do not appear in the configuration file, they are sorted + * per-player based on how the handler function renders for that player. * These items appear after the configuration sorted items. * - * @param topmenu TopMenu Handle. - * @param file File path. - * @param error Error buffer. - * @param maxlength Maximum size of the error buffer. - * Error buffer will be filled with a - * zero-terminated string if false is - * returned. - * @return True on success, false on failure. - * @error Invalid TopMenu Handle. + * @param topmenu TopMenu Handle. + * @param file File path. + * @param error Error buffer. + * @param maxlength Maximum size of the error buffer. + * Error buffer will be filled with a + * zero-terminated string if false is + * returned. + * @return True on success, false on failure. + * @error Invalid TopMenu Handle. */ native bool LoadTopMenuConfig(Handle topmenu, const char[] file, char[] error, int maxlength); /** * Adds an topobj to a TopMenu. * - * @param topmenu TopMenu Handle. - * @param name Object name (MUST be unique). - * @param type Object type. - * @param handler Handler for topobj. - * @param parent Parent topobj ID, or INVALID_TOPMENUOBJECT for none. - * Items must have a category parent. - * Categories must not have a parent. - * @param cmdname Command name (for access overrides). - * @param flags Default access flags. - * @param info_string Arbitrary storage (max 255 bytes). - * @return A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on - * failure. - * @error Invalid TopMenu Handle. + * @param topmenu TopMenu Handle. + * @param name Object name (MUST be unique). + * @param type Object type. + * @param handler Handler for topobj. + * @param parent Parent topobj ID, or INVALID_TOPMENUOBJECT for none. + * Items must have a category parent. + * Categories must not have a parent. + * @param cmdname Command name (for access overrides). + * @param flags Default access flags. + * @param info_string Arbitrary storage (max 255 bytes). + * @return A new TopMenuObject ID, or INVALID_TOPMENUOBJECT on + * failure. + * @error Invalid TopMenu Handle. */ native TopMenuObject AddToTopMenu(Handle topmenu, const char[] name, @@ -315,75 +315,75 @@ native TopMenuObject AddToTopMenu(Handle topmenu, const char[] cmdname="", int flags=0, const char[] info_string=""); - + /** * Retrieves the info string of a top menu item. * - * @param topmenu TopMenu Handle. - * @param parent TopMenuObject ID. - * @param buffer Buffer to store info string. - * @param maxlength Maximum size of info string. - * @return Number of bytes written, not including the - * null terminator. - * @error Invalid TopMenu Handle or TopMenuObject ID. + * @param topmenu TopMenu Handle. + * @param parent TopMenuObject ID. + * @param buffer Buffer to store info string. + * @param maxlength Maximum size of info string. + * @return Number of bytes written, not including the + * null terminator. + * @error Invalid TopMenu Handle or TopMenuObject ID. */ native int GetTopMenuInfoString(Handle topmenu, TopMenuObject parent, char[] buffer, int maxlength); /** * Retrieves the name string of a top menu item. * - * @param topmenu TopMenu Handle. - * @param topobj TopMenuObject ID. - * @param buffer Buffer to store info string. - * @param maxlength Maximum size of info string. - * @return Number of bytes written, not including the - * null terminator. - * @error Invalid TopMenu Handle or TopMenuObject ID. + * @param topmenu TopMenu Handle. + * @param topobj TopMenuObject ID. + * @param buffer Buffer to store info string. + * @param maxlength Maximum size of info string. + * @return Number of bytes written, not including the + * null terminator. + * @error Invalid TopMenu Handle or TopMenuObject ID. */ native int GetTopMenuObjName(Handle topmenu, TopMenuObject topobj, char[] buffer, int maxlength); /** * Removes an topobj from a TopMenu. * - * Plugins' topobjs are automatically removed all TopMenus when the given + * Plugins' topobjs are automatically removed all TopMenus when the given * plugin unloads or pauses. In the case of unpausing, all items are restored. * - * @param topmenu TopMenu Handle. - * @param topobj TopMenuObject ID. - * @error Invalid TopMenu Handle. + * @param topmenu TopMenu Handle. + * @param topobj TopMenuObject ID. + * @error Invalid TopMenu Handle. */ native void RemoveFromTopMenu(Handle topmenu, TopMenuObject topobj); /** * Displays a TopMenu to a client. * - * @param topmenu TopMenu Handle. - * @param client Client index. - * @param position Position to display from. - * @return True on success, false on failure. - * @error Invalid TopMenu Handle or client not in game. + * @param topmenu TopMenu Handle. + * @param client Client index. + * @param position Position to display from. + * @return True on success, false on failure. + * @error Invalid TopMenu Handle or client not in game. */ native bool DisplayTopMenu(Handle topmenu, int client, TopMenuPosition position); /** * Displays a TopMenu category to a client. * - * @param topmenu TopMenu Handle. - * @param category Category topobj id. - * @param client Client index. - * @return True on success, false on failure. - * @error Invalid TopMenu Handle or client not in game. + * @param topmenu TopMenu Handle. + * @param category Category topobj id. + * @param client Client index. + * @return True on success, false on failure. + * @error Invalid TopMenu Handle or client not in game. */ native bool DisplayTopMenuCategory(Handle topmenu, TopMenuObject category, int client); /** * Finds a category's topobj ID in a TopMenu. * - * @param topmenu TopMenu Handle. - * @param name Object's unique name. - * @return TopMenuObject ID on success, or - * INVALID_TOPMENUOBJECT on failure. - * @error Invalid TopMenu Handle. + * @param topmenu TopMenu Handle. + * @param name Object's unique name. + * @return TopMenuObject ID on success, or + * INVALID_TOPMENUOBJECT on failure. + * @error Invalid TopMenu Handle. */ native TopMenuObject FindTopMenuCategory(Handle topmenu, const char[] name); @@ -403,7 +403,7 @@ native void SetTopMenuTitleCaching(Handle topmenu, bool cache_titles); /** * Do not edit below this line! */ -public Extension __ext_topmenus = +public Extension __ext_topmenus = { name = "TopMenus", file = "topmenus.ext", @@ -430,5 +430,17 @@ public void __ext_topmenus_SetNTVOptional() MarkNativeAsOptional("DisplayTopMenuCategory"); MarkNativeAsOptional("FindTopMenuCategory"); MarkNativeAsOptional("SetTopMenuTitleCaching"); + MarkNativeAsOptional("TopMenu.TopMenu"); + MarkNativeAsOptional("TopMenu.FromHandle"); + MarkNativeAsOptional("TopMenu.LoadConfig"); + MarkNativeAsOptional("TopMenu.AddCategory"); + MarkNativeAsOptional("TopMenu.AddItem"); + MarkNativeAsOptional("TopMenu.GetInfoString"); + MarkNativeAsOptional("TopMenu.GetObjName"); + MarkNativeAsOptional("TopMenu.Remove"); + MarkNativeAsOptional("TopMenu.Display"); + MarkNativeAsOptional("TopMenu.DisplayCategory"); + MarkNativeAsOptional("TopMenu.FindCategory"); + MarkNativeAsOptional("TopMenu.CacheTitles.set"); } #endif diff --git a/env/include/usermessages.inc b/env/include/usermessages.inc index 024b506..0a43f3f 100644 --- a/env/include/usermessages.inc +++ b/env/include/usermessages.inc @@ -9,7 +9,7 @@ * 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 @@ -29,7 +29,7 @@ * * Version: $Id$ */ - + #if defined _eventsmsgs_included #endinput #endif @@ -40,7 +40,7 @@ */ enum UserMsg { - INVALID_MESSAGE_ID = -1, + INVALID_MESSAGE_ID = -1 }; /** @@ -49,15 +49,15 @@ enum UserMsg enum UserMessageType { UM_BitBuf = 0, - UM_Protobuf, + UM_Protobuf }; /** * @section Message Flags. */ -#define USERMSG_RELIABLE (1<<2) /**< Message will be set on the reliable stream */ -#define USERMSG_INITMSG (1<<3) /**< Message will be considered to be an initmsg */ -#define USERMSG_BLOCKHOOKS (1<<7) /**< Prevents the message from triggering SourceMod and Metamod hooks */ +#define USERMSG_RELIABLE (1<<2) /**< Message will be set on the reliable stream */ +#define USERMSG_INITMSG (1<<3) /**< Message will be considered to be an initmsg */ +#define USERMSG_BLOCKHOOKS (1<<7) /**< Prevents the message from triggering SourceMod and Metamod hooks */ /** * @endsection @@ -66,14 +66,17 @@ enum UserMessageType /** * Returns usermessage serialization type used for the current engine * - * @return The supported usermessage type. + * @return The supported usermessage type. */ native UserMessageType GetUserMessageType(); stock Protobuf UserMessageToProtobuf(Handle msg) { if (GetUserMessageType() != UM_Protobuf) + { return null; + } + return view_as(msg); } @@ -81,67 +84,75 @@ stock Protobuf UserMessageToProtobuf(Handle msg) stock BfWrite UserMessageToBfWrite(Handle msg) { if (GetUserMessageType() == UM_Protobuf) + { return null; + } + return view_as(msg); } // Make sure to only call this on readable buffers (eg from a message hook). -stock BfWrite UserMessageToBfRead(Handle msg) +stock BfRead UserMessageToBfRead(Handle msg) { if (GetUserMessageType() == UM_Protobuf) + { return null; + } + return view_as(msg); } /** * Returns the ID of a given message, or -1 on failure. * - * @param msg String containing message name (case sensitive). - * @return A message index, or INVALID_MESSAGE_ID on failure. + * @param msg String containing message name (case sensitive). + * @return A message index, or INVALID_MESSAGE_ID on failure. */ native UserMsg GetUserMessageId(const char[] msg); /** * Retrieves the name of a message by ID. * - * @param msg_id Message index. - * @param msg Buffer to store the name of the message. - * @param maxlength Maximum length of string buffer. - * @return True if message index is valid, false otherwise. + * @param msg_id Message index. + * @param msg Buffer to store the name of the message. + * @param maxlength Maximum length of string buffer. + * @return True if message index is valid, false otherwise. */ native bool GetUserMessageName(UserMsg msg_id, char[] msg, int maxlength); /** * Starts a usermessage (network message). + * * @note Only one message can be active at a time. * @note It is illegal to send any message while a non-intercept hook is in progress. * - * @param msgname Message name to start. - * @param clients Array containing player indexes to broadcast to. - * @param numClients Number of players in the array. - * @param flags Optional flags to set. - * @return A handle to a bf_write bit packing structure, or - * INVALID_HANDLE on failure. - * @error Invalid message name, unable to start a message, invalid client, - * or client not connected. + * @param msgname Message name to start. + * @param clients Array containing player indexes to broadcast to. + * @param numClients Number of players in the array. + * @param flags Optional flags to set. + * @return A handle to a bf_write bit packing structure, or + * INVALID_HANDLE on failure. + * @error Invalid message name, unable to start a message, invalid client, + * or client not connected. */ -native Handle StartMessage(char[] msgname, int[] clients, int numClients, int flags=0); +native Handle StartMessage(const char[] msgname, const int[] clients, int numClients, int flags=0); /** * Starts a usermessage (network message). + * * @note Only one message can be active at a time. * @note It is illegal to send any message while a non-intercept hook is in progress. * - * @param msg Message index to start. - * @param clients Array containing player indexes to broadcast to. - * @param numClients Number of players in the array. - * @param flags Optional flags to set. - * @return A handle to a bf_write bit packing structure, or - * INVALID_HANDLE on failure. - * @error Invalid message name, unable to start a message, invalid client, - * or client not connected. + * @param msg Message index to start. + * @param clients Array containing player indexes to broadcast to. + * @param numClients Number of players in the array. + * @param flags Optional flags to set. + * @return A handle to a bf_write bit packing structure, or + * INVALID_HANDLE on failure. + * @error Invalid message name, unable to start a message, invalid client, + * or client not connected. */ -native Handle StartMessageEx(UserMsg msg, int[] clients, int numClients, int flags=0); +native Handle StartMessageEx(UserMsg msg, const int[] clients, int numClients, int flags=0); /** * Ends a previously started user message (network message). @@ -156,29 +167,29 @@ typeset MsgHook /** * Called when a bit buffer based usermessage is hooked * - * @param msg_id Message index. - * @param msg Handle to the input bit buffer. - * @param players Array containing player indexes. - * @param playersNum Number of players in the array. - * @param reliable True if message is reliable, false otherwise. - * @param init True if message is an initmsg, false otherwise. - * @return Ignored for normal hooks. For intercept hooks, Plugin_Handled - * blocks the message from being sent, and Plugin_Continue - * resumes normal functionality. + * @param msg_id Message index. + * @param msg Handle to the input bit buffer. + * @param players Array containing player indexes. + * @param playersNum Number of players in the array. + * @param reliable True if message is reliable, false otherwise. + * @param init True if message is an initmsg, false otherwise. + * @return Ignored for normal hooks. For intercept hooks, Plugin_Handled + * blocks the message from being sent, and Plugin_Continue + * resumes normal functionality. */ function Action (UserMsg msg_id, BfRead msg, const int[] players, int playersNum, bool reliable, bool init); /** * Called when a protobuf based usermessage is hooked * - * @param msg_id Message index. - * @param msg Handle to the input protobuf. - * @param players Array containing player indexes. - * @param playersNum Number of players in the array. - * @param reliable True if message is reliable, false otherwise. - * @param init True if message is an initmsg, false otherwise. - * @return Ignored for normal hooks. For intercept hooks, Plugin_Handled - * blocks the message from being sent, and Plugin_Continue - * resumes normal functionality. + * @param msg_id Message index. + * @param msg Handle to the input protobuf. + * @param players Array containing player indexes. + * @param playersNum Number of players in the array. + * @param reliable True if message is reliable, false otherwise. + * @param init True if message is an initmsg, false otherwise. + * @return Ignored for normal hooks. For intercept hooks, Plugin_Handled + * blocks the message from being sent, and Plugin_Continue + * resumes normal functionality. */ function Action (UserMsg msg_id, Protobuf msg, const int[] players, int playersNum, bool reliable, bool init); }; @@ -186,72 +197,74 @@ typeset MsgHook /** * Called when a message hook has completed. * - * @param msg_id Message index. - * @param sent True if message was sent, false if blocked. + * @param msg_id Message index. + * @param sent True if message was sent, false if blocked. */ typedef MsgPostHook = function void (UserMsg msg_id, bool sent); /** * Hooks a user message. * - * @param msg_id Message index. - * @param hook Function to use as a hook. - * @param intercept If intercept is true, message will be fully intercepted, - * allowing the user to block the message. Otherwise, - * the hook is normal and ignores the return value. - * @param post Notification function. - * @error Invalid message index. + * @param msg_id Message index. + * @param hook Function to use as a hook. + * @param intercept If intercept is true, message will be fully intercepted, + * allowing the user to block the message. Otherwise, + * the hook is normal and ignores the return value. + * @param post Notification function. + * @error Invalid message index. */ native void HookUserMessage(UserMsg msg_id, MsgHook hook, bool intercept=false, MsgPostHook post=INVALID_FUNCTION); /** * Removes one usermessage hook. * - * @param msg_id Message index. - * @param hook Function used for the hook. - * @param intercept Specifies whether the hook was an intercept hook or not. - * @error Invalid message index. + * @param msg_id Message index. + * @param hook Function used for the hook. + * @param intercept Specifies whether the hook was an intercept hook or not. + * @error Invalid message index. */ native void UnhookUserMessage(UserMsg msg_id, MsgHook hook, bool intercept=false); /** * Starts a usermessage (network message) that broadcasts to all clients. + * * @note See StartMessage or StartMessageEx(). * - * @param msgname Message name to start. - * @param flags Optional flags to set. - * @return A handle to a bf_write bit packing structure, or - * INVALID_HANDLE on failure. + * @param msgname Message name to start. + * @param flags Optional flags to set. + * @return A handle to a bf_write bit packing structure, or + * INVALID_HANDLE on failure. */ -stock Handle StartMessageAll(char[] msgname, int flags=0) +stock Handle StartMessageAll(const char[] msgname, int flags=0) { int total = 0; int[] clients = new int[MaxClients]; - for (int i=1; i<=MaxClients; i++) + for (int i = 1; i <= MaxClients; i++) { if (IsClientConnected(i)) { clients[total++] = i; } } + return StartMessage(msgname, clients, total, flags); } /** * Starts a simpler usermessage (network message) for one client. + * * @note See StartMessage or StartMessageEx(). * - * @param msgname Message name to start. - * @param client Client to send to. - * @param flags Optional flags to set. - * @return A handle to a bf_write bit packing structure, or - * INVALID_HANDLE on failure. + * @param msgname Message name to start. + * @param client Client to send to. + * @param flags Optional flags to set. + * @return A handle to a bf_write bit packing structure, or + * INVALID_HANDLE on failure. */ -stock Handle StartMessageOne(char[] msgname, int client, int flags=0) +stock Handle StartMessageOne(const char[] msgname, int client, int flags=0) { int players[1]; - players[0] = client; - + return StartMessage(msgname, players, 1, flags); } diff --git a/env/include/vector.inc b/env/include/vector.inc index 067754c..3cfe21c 100644 --- a/env/include/vector.inc +++ b/env/include/vector.inc @@ -9,7 +9,7 @@ * 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 @@ -38,84 +38,84 @@ /** * Calculates a vector's length. * - * @param vec Vector. - * @param squared If true, the result will be squared (for optimization). - * @return Vector length (magnitude). + * @param vec Vector. + * @param squared If true, the result will be squared (for optimization). + * @return Vector length (magnitude). */ native float GetVectorLength(const float vec[3], bool squared=false); /** * Calculates the distance between two vectors. * - * @param vec1 First vector. - * @param vec2 Second vector. - * @param squared If true, the result will be squared (for optimization). - * @return Vector distance. + * @param vec1 First vector. + * @param vec2 Second vector. + * @param squared If true, the result will be squared (for optimization). + * @return Vector distance. */ native float GetVectorDistance(const float vec1[3], const float vec2[3], bool squared=false); /** * Calculates the dot product of two vectors. * - * @param vec1 First vector. - * @param vec2 Second vector. - * @return Dot product of the two vectors. + * @param vec1 First vector. + * @param vec2 Second vector. + * @return Dot product of the two vectors. */ native float GetVectorDotProduct(const float vec1[3], const float vec2[3]); /** - * Computes the cross product of two vectors. Any input array can be the same + * Computes the cross product of two vectors. Any input array can be the same * as the output array. * - * @param vec1 First vector. - * @param vec2 Second vector. - * @param result Resultant vector. + * @param vec1 First vector. + * @param vec2 Second vector. + * @param result Resultant vector. */ native void GetVectorCrossProduct(const float vec1[3], const float vec2[3], float result[3]); /** * Normalizes a vector. The input array can be the same as the output array. * - * @param vec Vector. - * @param result Resultant vector. - * @return Vector length. + * @param vec Vector. + * @param result Resultant vector. + * @return Vector length. */ native float NormalizeVector(const float vec[3], float result[3]); /** * Returns vectors in the direction of an angle. * - * @param angle Angle. - * @param fwd Forward vector buffer or NULL_VECTOR. - * @param right Right vector buffer or NULL_VECTOR. - * @param up Up vector buffer or NULL_VECTOR. + * @param angle Angle. + * @param fwd Forward vector buffer or NULL_VECTOR. + * @param right Right vector buffer or NULL_VECTOR. + * @param up Up vector buffer or NULL_VECTOR. */ native void GetAngleVectors(const float angle[3], float fwd[3], float right[3], float up[3]); /** * Returns angles from a vector. * - * @param vec Vector. - * @param angle Angle buffer. + * @param vec Vector. + * @param angle Angle buffer. */ native void GetVectorAngles(const float vec[3], float angle[3]); /** * Returns direction vectors from a vector. * - * @param vec Vector. - * @param right Right vector buffer or NULL_VECTOR. - * @param up Up vector buffer or NULL_VECTOR. + * @param vec Vector. + * @param right Right vector buffer or NULL_VECTOR. + * @param up Up vector buffer or NULL_VECTOR. */ native void GetVectorVectors(const float vec[3], float right[3], float up[3]); /** - * Adds two vectors. It is safe to use either input buffer as an output + * Adds two vectors. It is safe to use either input buffer as an output * buffer. - * - * @param vec1 First vector. - * @param vec2 Second vector. - * @param result Result buffer. + * + * @param vec1 First vector. + * @param vec2 Second vector. + * @param result Result buffer. */ stock void AddVectors(const float vec1[3], const float vec2[3], float result[3]) { @@ -125,12 +125,12 @@ stock void AddVectors(const float vec1[3], const float vec2[3], float result[3]) } /** - * Subtracts a vector from another vector. It is safe to use either input + * Subtracts a vector from another vector. It is safe to use either input * buffer as an output buffer. - * - * @param vec1 First vector. - * @param vec2 Second vector to subtract from first. - * @param result Result buffer. + * + * @param vec1 First vector. + * @param vec2 Second vector to subtract from first. + * @param result Result buffer. */ stock void SubtractVectors(const float vec1[3], const float vec2[3], float result[3]) { @@ -142,8 +142,8 @@ stock void SubtractVectors(const float vec1[3], const float vec2[3], float resul /** * Scales a vector. * - * @param vec Vector. - * @param scale Scale value. + * @param vec Vector. + * @param scale Scale value. */ stock void ScaleVector(float vec[3], float scale) { @@ -155,7 +155,7 @@ stock void ScaleVector(float vec[3], float scale) /** * Negatives a vector. * - * @param vec Vector. + * @param vec Vector. */ stock void NegateVector(float vec[3]) { @@ -167,9 +167,9 @@ stock void NegateVector(float vec[3]) /** * Builds a vector from two points by subtracting the points. * - * @param pt1 First point (to be subtracted from the second). - * @param pt2 Second point. - * @param output Output vector buffer. + * @param pt1 First point (to be subtracted from the second). + * @param pt2 Second point. + * @param output Output vector buffer. */ stock void MakeVectorFromPoints(const float pt1[3], const float pt2[3], float output[3]) { diff --git a/env/include/version.inc b/env/include/version.inc index c0e4020..a86dfb9 100644 --- a/env/include/version.inc +++ b/env/include/version.inc @@ -9,7 +9,7 @@ * 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 @@ -29,7 +29,7 @@ * * Version: $Id$ */ - + #if defined _version_included #endinput #endif @@ -38,12 +38,12 @@ #tryinclude #if !defined _auto_version_included -#define SOURCEMOD_V_TAG "manual" -#define SOURCEMOD_V_REV 0 -#define SOURCEMOD_V_CSET "0" -#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */ -#define SOURCEMOD_V_MINOR 8 /**< SourceMod Minor version */ -#define SOURCEMOD_V_RELEASE 0 /**< SourceMod Release version */ + #define SOURCEMOD_V_TAG "manual" + #define SOURCEMOD_V_REV 0 + #define SOURCEMOD_V_CSET "0" + #define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */ + #define SOURCEMOD_V_MINOR 10 /**< SourceMod Minor version */ + #define SOURCEMOD_V_RELEASE 0 /**< SourceMod Release version */ -#define SOURCEMOD_VERSION "1.8.0-manual" /**< SourceMod version string (major.minor.release-tag) */ + #define SOURCEMOD_VERSION "1.10.0-manual" /**< SourceMod version string (major.minor.release-tag) */ #endif diff --git a/env/include/version_auto.inc b/env/include/version_auto.inc index 3e6917b..fe4a667 100644 --- a/env/include/version_auto.inc +++ b/env/include/version_auto.inc @@ -5,11 +5,11 @@ #define _auto_version_included #define SOURCEMOD_V_TAG "" -#define SOURCEMOD_V_CSET "19b0d34" +#define SOURCEMOD_V_CSET "72a4b127" #define SOURCEMOD_V_MAJOR 1 -#define SOURCEMOD_V_MINOR 9 +#define SOURCEMOD_V_MINOR 10 #define SOURCEMOD_V_RELEASE 0 -#define SOURCEMOD_V_REV 5970 +#define SOURCEMOD_V_REV 6457 -#define SOURCEMOD_VERSION "1.9.0.5970" +#define SOURCEMOD_VERSION "1.10.0.6457" \ No newline at end of file diff --git a/env/linux/bin/spcomp b/env/linux/bin/spcomp index 19aa5e03ead34af6d1415d645b45b0a9c65a9785..904e34699c09473aa382b1c9041c1d7e68b71f2c 100755 GIT binary patch literal 331440 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 literal 271484 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≷MVlZ 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

>qVgi`-v9p~`W~qNbC7@i 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 z zF!1klb8LRVaqtCmK(AX(!2hy}|79ir%L-mdD1h{cG}jd{@VC5V02LdK9Hso-ZWWNi zj}g+^bjtv_UKKRwUja!wVF534)_~IvG=}O_7#Ln20Uw^)dVs$VG};5|IDotrzzp`% zf0IVIUV}CN{<}9H5#Zl{+}bUp<~r06OOPS;pmSQ8N_9c*%P@tO$NS&H%43L9NRixp zgy#jT3IoGyziu}dkn0LM!DGuW9_WD@lc4Mmsm#h;{%->fq-HU^XypKTSpj0qi{r`+ z46g+sWk*)b3l3+HBu95I=u($%aH-X>7ZlnI#~46|RPwtXgiQ88?xBGk?++exVh6#n9< z0muo+1DxS6468uNm7{qts7nNDj556N(+4SIfrKbxx;)^;(bb?)WYDm5z>A%$|NUPW z1G@9?2nRE`Sq16R^%gKTRPnIzyMA!{=FX*1%IL;y3hq|$zPawk(0Z~&x!V)g!LTe~ zsg+v@67TkaiFFpRyynW{dU4Yc?1(JJ7w2Dtnt`CsQS%X&|GY1bxiKsTn}~cxYd3f> zld%dim?^-JHo>{Zkzrb`Bg29^M~21qjtto~jtoniK<7L$u`)v@q2Y7Rp!JIXGn^6q zYsly)biNrh^qB&h>tX2heUYW{VqO6#$iOYq6$}gv3qadjj=SCgQ5~+II$R$dV+FAx zYkZ-z&BtA@Fx+ut=y3hq;d%qI&X=(}mc#fPXfkI)x9^MK7t>Gw|DUDP{lo1A=(<*L zlehF)mgWonLQqrg#gBZDtsKq&80+{!OOJzJlz|sMuo(aEa{UZm5!~haX%Wa~w1Hmm zFair`)eU5=^pgOT6BCcSfv*2$NIUMv!@zLd4ZP&*#i|^zZMG4hE4*?SGF)+CSPUA} zU%+z3g&~9EiVMS{FQ760po;(hyCGYuOSv*Y1?9^npaaCjy1Y0${CK*ZL^|C#8h)~X z)(r=}_yTq@$ID5K3=H4{Yf;w1L){5pD#qXH32G_SzS#w`wfnsG^)AL)` z&*3kAmV+D!iiB3st{l*U-(xVL5}i&q{%sy$2Y85d`f+r5aDp1~tRRQ9gPLX8P=|0b zg2rUtyvQ#951XnescWd`cg_wso^E%L z&t8JgoB8I>#aPMtc)vmPKIYES+{;NY=kreNmPB z|9{wvBRn9(KuZmTvt(bC*@1>?vKU_QYJr4#(3UPkqXRx3rvjc2c+%x});S^5Q%&Rzt(Xa=eA1)Yo<{y$U#G^W_;Dgzp&d-K2a#S7QH zAbUBQYyU8mcz`5JouCG_-Y$`7tmOf%-7ghyu4iE=m2Ul3DsFtB)19T;ou$+D%WFB1 zaLL=&ZzV6mNvRVe%nr?P;Hif@0WTPNLBm3zx$JMH9H7BhcTn}^&I6t0*Ty%1DgYfo z^|b}Nv-Mj^MC8hQjKVCC;m;L}xUPy$$c%%$c$^sg*?=Jn)e1zpC zXzms4H_(o~a+Vhhz^l19kW`!ljr-i@Zvh!T{NJ_#$sE zsCHH9bcckz^8eB&-L7B$mp(Y=&cgxPcE5Hv$PugOt>QM&!FscYg?f5q%7_ zTZ1D@6SPO`#oz4z|6jAd_?87OBEU`N|K%Jn+L##`{+Ip%^SeL1C}(D5=)TeICJ_fZ zSW$q#Wge*45e!{2$=?E+WNrM#z`y`nHVIOqfU;`R!Wy)|@egQd$Q`taC?1+$zzIsN z+X3cy>8!{XJUG;Xjb|*i=w=2F9JU?+9ZZ%L|Kg4n)NBsW0t#0SnAus3|I0Z*i$_<3 zX5NqRbi4jRRRE2F(C#;lZ$JlQLu;^3*FW8^GR7ynLj{7nV(tpZFHam zJer%<*$WyR?&#G9jUoImm2IvSVJu;3y;Ld;xtbSzncuu3a20#l_+)df2vcV-Xr#8Y z7t~QIt!VvLYPbUwQfZxF6I*YWh;=#h*szwc*szsyLpFv$b%4ftU(NQ1Ijur}!h zP2`nuI5z(jEc*C5t6QXZg_0XX?_SU_v-YnprrsdN4i|B7+2765`$5T#p}Ur+6WrH$ zZQOF8)WZ0rwMnmwvKs@~5SF5kuT{HwdQFtw7<#9I4Y`O?fpmuobb;N77;8q1KZBMo zfXeEi|D__mU{yh&^=5klUL?=^_rKS5&+%3X=m2%V3xh&P)gjaRzcjYnR{(OwM9WD~ zrvAp?a_}Fh;Qh@8%2A-&ss%KXjbw0O0QlN1E@Xp2jiLw`CF<$m-TLU=W01n z!Lov*G_V`XByex5&VSH)8NKp`uE{pL+u`H3XfxXWc{NkWII5b{F zf>sIo{sC7-@o~myqhFNdLvjjae-G$<15m!R{#?o#2UZmwdpI0=&fJ@S3=CnAa_Ps5 z`~Mig+a5WrO~FgSz_r#sP}$@t0m@tgkYUd5aCk`tS{4s3N)$>ZtPholWPo?)PKS)| zgBC+a#~$wX75H|Lv4perTPdq$IZsJ}wJB&&p(Mjv7EC9Aj8-UB3ut{0mUmm|xKK%?t7S3=F-#e_rUbGBSYnwu9Kk2S8hG zN_as07iBWwpwD7_vF1K#M=z+lZTQJi%F`Xn(R!(b6|{?!sXLSh!v4_7)Ez1SVZZ2P z0?%CVgU#{dg6ZxKm1wQWo~{UYdj-XZyWOs5PRCBj0 zXrKf%wa(Fcsg&FLApE$0WH*I&zX7F1{_q2!31NOgwlw~0ZUQfknt}q9d0^n${4L}u}dLZ_&?E#ROK)0)ar7K6b zuL%FVLkfbihixCA3D1QHGaPVaC`D2|2O_M1COjV^JYk&f@Iomk==z}bU_R*hg;F6<%TEB5 zPgTGJ4m`1kZ9%6olnP}rf&#IW;{`WNB1`r~KX?iNeANRaHG=1pyInaTr(QwV0z+2@ zryX|y^#UEhy+CkU1L*Wo8h ztsw27^w8}J)vsp@@>GesEhxfD6u@y*A_-ZvBLt4)5^iwJL#zNNeN@xH?r(mh)9d;J zyqxAwz>D9ppr#)5-a8M_f}ER~klK?4v|f$}G=^Qu(e3Y$#SjSEW+E-i0N!%a?JknV z6yE8^(P{TWJriVx0NBEK&`zquwxGU3sV-) z8zg^1^?-)DOO?T!Y5ssF+TB=QtVQTRHXU?mZmBkk%4UR0@a{1*vq7ghm)a~$xb4Qk z?E2^6113;k)?Ws6-~@Qzv+JK@jy%lT;Db6l9a$EF>W}zNM~M5tUTXeP&ENW$fq?;h z77$sZbOA8`CHeZ%ikdgDbb*i0Uf5cpo_zmNf@ z*8i2P-L-dK^MTUyo$wdeet;r?C+x-9WY9>+3$u6-p93_;8Vj1vs(qo701{z|2JM&( zc=0R_%tH$f2WePvfWiXoO>Ngd@tuw=;IIdW0(9pG{LnZ!1DsmVoI&S<%1hAkW-k_l zhM`IYx_`WwIRV_r>i*FBzr5FYlwl;gz?Jy3{)_d20x4^V#l z<|@DfI$#xa%yV}bN4GymiHtQbD7}_&So0Qux>Y>g2fI&oU+6yG{jd8&w>zY9Q7UEW zCQ%|9AJ-Ww(CN!_+?4|~VH^AM=fD5|twq85v>;6d&Ui?G#vTrQ(cS;=e?SK4W|bET z$nLTh1=(0?3eq7^at=hXl=4Da4Q$}mrMm)O_<=P~0d?^ngO@ErJq1!NP$Jh@2U>wG zP>Sp((7N;3m#H8(@uoPrG4QwK|NsC0o2vjLiqk=7Ud6t&12t*EhOm^1b-RIDEc})p zEc`9jprz8FDcp}p-UTi9jeW`W4{|aUBtd}6zfg{DU!JgTqi)7drcOiDI*%B6SB`E0 z(CNmY`WbcwkF_Ycf6LW+vXt$c0}D&Zb4V=>GS8I4L zchE|zfQ*Zv{BamOQYQc!F**A}I2qExXg4^W7J|-!eYU?|Gs7Q1>bR z^@p{8lyG++H$Gg;+Uxb7`FC@z00Y14`S`f*gOGM9$Sx2Dk3WFcg`@gEl&ATCKv?hA zlK=nzhiiZ6;^=i??C@dx-*U3_bMIb|s6XVqwJvwY-g?HC1Et^67M6gD)=z1j>|IPw zpi9{x3bn8KceyiyE)e_Ced^##rq4^ePc=Ve{=B5ab#rek$f$r9&w9aQOQ0)-&&J2S zc#;SY8L<0ifNDY53c5d__HcNY8&7u~>U}~;qvIT~(QzC85}B-=7iOBE5|{*MNcsaU2}cfp9!OjpbhbwP|Np;pYY1qV z=Ua&oWE&Oe93^(}e0H4>=$DoH%9(e z1JFSU)iMnHEow{*3^4B>ivsx$+MqO?pBZ~V1I-12EXeG zs5+3(Z-9sBd5*dButtN9B850e9_pZmYEI5lwQjIiKuVxPlbsS97^CCkAZkCyLmc1j z>;PIQ0ctKW2E0%Z2E`i3iw@Az)H)A_ZfA*3@Ggl`x8Bwm@Bm6L=*ILTEZxu+axd7K zoxLE(cApD)@s0zu6#&FToSNI)3)1>R8FZ2XXaU{-0FLet5c7fqUhDy11;o+o#}e>j z0xJUpRP|NRnjb%o-l?GU+U>^DUDENV*NZW20yL>>Uxb85P{2+e1viElQyu>Q|GyQq zqodQ!1)QL|TS2kd<-pP5#_?j=I|kTxrEZ9igpa#}=XQ>}iGaG*oo*7Zc{|-XI^9H$ zyMdyPq1#)b^<=+%9oY>nkg&m#Xj&@4-0s~-wVMoXd)|RjR*D9!$7yUfp%-ZSRM+J0j;j* zD=p|||6j_{U11ac!T_{$0W>4g`mIz0G)v$v5RjGmB2yLAY~=`l;Q-qCEwVqw?say*BRtq&_w-|h36TmbfGbG-;?V6}uZ{DlNJD4(!|zc~L96pk#%+7yB(DlD(K_lus;H`{xyda-R#6`!xT+9y|&iHTqf(yLth9eGA zkAd3z@P#X-JfP;bc(7lJA8!*g}?0(3x4_tN2@~0Vv`FfF>`b>b{|BV(gfug_<#hOI4ISC(#so;ECJ{o(u-4(pp)T1w@89+ zhxyTZvP2!U?VE#NknuR9z*QFp=(a5AX(q=V!Bo$bm zRk6qw6bE51yd%MJ0KEVsyxX$%e~EHfuRqHR(Ap8u28tzz85yz!!jH3`x$MI5LK>`| zCoUcwPu-3(NDChhgX(wCk>4QgpvwS3+EWjMEMS3X2OXYX!kr}${^D{3NEo~?3F#QA z?t@@sVctIjIwsfnn`JRenR+j-t)w@47)G;!YsPpf01Ml{f1FeMR1}(K0Ip)U55O=uSjRn5ezQhc)tXmkSmJ6g- zv-t&EsZkcgi$X}T3Z1{$3~m_kKo;m=npAo&i}A&NZcrKZ!U9AwzAyyq=Xt#k9(fS= zb+>`)gVqBjtlbVGafiFxK(zvRS zpve?&1*Cik>;4$tZ2`?eejbR%PiLJ+Jj$8;FQh@6Kpk$mFuZV_&A^Zm0b-fYW?*P$ zO}XvH02-@83E_nx(Qe)+W^N2KzyEB#RO0#qR8wLI>p|ClX0+UJVR-Ru76SuV38)|d zYi>TkvKV9(*pSkj;0nd~(!mEz-#@lqDhYT2I_!7pp*eLE~s(>EMTeKZ0TWyzUCte z$63L)F)%PJ23Z4k3OJ6T?%{6%4VXaO#Dwmqyo?r*WrZNKJ3y>-gxLWvxWE>NfFvh? zB)w)bFo1&}G8hT2cb|oWLc{>12JARBgaL5JF=09mGJn==TXNftfuTerV+zRpS2I9< z?zrv7@S-1V?9CalfIdG19MB8zn7J{mU@GMT&qNrnU@XzkSOC(x9;_7{Tp?hs^Wa*i zK(sAGuGU4Vfb&l2jqs;pw)Aw98liejDP<#wjg9d+l`u! zNT8bcMh9AhcDnw78Lk5}Tp833biIB-)pcNBW0-(m*Wq^hrMIfCVzFA|2mGwcC z9e3rpaLa`u_GR642Gs4Wp!%oVm81CuLrD;*aIjVTuvAlNGQj2|E+d!~VUrQmUt7aPFJ1v37CBof>5y0EKsB3<6;ln zu$Ag(uz=(&r-7E6zIYS@3Iv^Lu*9ka)*=AW!U5L8RBDkS0Mf!Xje+5RnZt{9U_C#k z!t}hG%D@2Hn_d?1|9|rl31q#zrBeUP1zx-XR}!EmJNt2W@Kg@S3<}{>Q(&QWU$x1Bk<#;d9l6;l)wtW#?rMFS5WEY?%ZLxK)!F7(jOl z8TtPI4-GwtizZG2xrpb5C0Ii+VFD zw=PeFcq`iH|No2zkm7?AA^yn(tK1A%xe{y$)IS24{sGN3fO4o7D6{2)FW)N_&)5Jm zG7qd3=DE1o!x?)(t^>_^f);5)LckM45jY5pCW3(m z0%Y&E39tqvOY;#Ha6t?S{xca@K=Rjc%7=Epf!0^jAnzz=yaB0S22u~t-?4`?9)LtA zpoxO40M(~IK$681K%vR;LK^IW)CsU~j|OXkc>r5_MYUf5)CN@pYl4Mi?BNU+kf;Ef zDAayX{wrb6khumf7j!@>pY=o1K`Fboum&Cnbs{pm5Knvm&_*+&ofKH+W+1KC4z|igP0_sqLE?dXY?Ybx6g*UjN z2)edd7QB2<+Y?lHgNC|!!Sg%ppuG?Lu0J47;Dn5Be|XIbc3Id9ojwMJj0%utN`0UJ z=6P|-2NVna z1IUIIy`Y@92qb(&0vdWHhWz{30$yx~-2K{mpj5Go%_hD?+KLr)J#>k1Mh8e|9$04v zSSLqD4@fAw7quP5VGNpaDe{0g_e{nFkRmgX4xH(221to8*!3JQc6)<@gB9-j-#wr- zfG@peECA`h+ynAG$BSyP{-ZrG-|xn+KVuC@^E8n1|NsBjzpw#oZv*kcP1PEZcCgDi znvV#8$6qpbfV3n-?c)Y(2!(6#25G>ZKOlWjwH~DQB)FHNlW_uMDlgR3tzMu|_}>ll z#aHn4=vYDlT;Fprl;~t!0O>#54GD!(u>SpU{abPA&$t27HVq^V_9c3Gkil{t)c)-T zRW2{&!KP-yO^pY!ct8q5K`aRn%NuT#K=Tm^(E7d%6_B_w)Md9lK|WIjsRswJG+aFg z#4av~U7Nw`{&vAa;4_E?whOd(A_HvKeefOQ8jzY<09-y~7=SE029f~#2eeT9FsLAf z;tU6n{4$*K$ZA1a5aAmD(wN%?313mL>*7If0{bEqWFWR!2bHHEKtXH_)p^?k?0>jU zXq9{Ku*3#5x042{nHONOT)WeglZL23>v!NOT%V{s4&8gD!spBw7X+#cU8)Owa)d zgR2ZB5bF*|fdq*40>t8jDBTWL$_Nq$EB)Tgz>x6;q~I-x#c|u-X=oI9P2J zh~)xOQ2@452V$j6Toa70;I+VtOh({@zD|FVQY|futA1kDOk@0+SS7d z?*x!3Y+$9ZZUe}3u<*_RNk4C5V8|!|vF?Ic4ItKK5UU5oI@tsc?;^1EdqBcq>oPk^K%K#Hz_Sbj~A@c!li z^11^^9BiN&i1h@dLI=e90AeXY)t&;Y6#hqnkw&7DS& zv%ulq2sY?+Bdl^d2$sSO?+h7`#>I`0mW(%8*HpN!Zm=#aElqIs3L5{-Pyy*rhU(`A z>kozN_a>+xGzxXq9uz?GV6`0JYM&P}SHc4pLJYt|YR7L4c-lW8?WOD)J-5N30;ru6{7$3g33MI6Um%>Og=y8Q=@@`8MTVP1DFN3W|$ z0L;J`6a#-RA!HzEe)oSVZ2JAbDQMm$>;Heq$_ReYe6A};^AQpFv^r!z{U*eEfgJ(@ z3=A*6Ix{lBd+Z+|XJLMU?5qc`f|uxx6FA=b<~`($Imj*Mom-#02OXUL;{E^s$DP3| z@IjmGYI(X{MWD+8AX-4{P&(~8{a8BPI9g9ua0k9f1NWg>Ub8N=xdB?H&(rvSI|Bnl zjdJ6E&?IM#P=jqBcp^mTxEts|V}{oP$K51Ai(y`~A9s@gO+_`=Nr1Lzvawo#mI|L} zdL60R|csA3a;;aTR(h{{@DU7kpgU!r#vY!adEAi!gr$!=GAJE)M43T?q>o34 z^wIoA2AVJs>q$UYh=ZrWZUnrj207C81~kG0UU-A|?Z0@zZ2_9#7eU#%4o`)koB+WP z`&d`N&rif|pFlvjE64u=gZ~9Oy{FhaBV5_r|tix-p3K^Dv4uoz;W28w-Q z7#{2fosKII0J5r#<-Zx&zC)k`Bi&d!T_5zi-UxvD_eBiURv9d|f|jYk+HDZug8OUG z@kT+=c&FHLR-5B)44@nmdl(luZz;cd2E z0Lm@=Eg*wHNm}*4O6!|bjtu`y)(z@MPn*TF)f|aH%2C0iLVRwW` zHveR<;fp)&$^qJi8T-=i@BjaCv4>xPPB%}R@aU8y!@HA?4Bwy_6bGR4-It^BCpa5} zcV0DuPl{;%sa5;2`{2yxN9^Dt1EoCK#CYjZw=YlgONJ7)=9i2mLd`E3OO*^JfJznc zPK(&X-!3U2b2*SXAbVjLEzGq~l}cntaJqs5ExH&SP600>BtdzaVdo{s?5jqql{0G{@xXqX6-~$$Jm@7ab z0m0Dy37|11et8!LhOWaZ^&PJK&A;o*Sa}*cT=}yYyU)G&76m%@vxL8!kJ*o~Ao>Wc;lQ-A!B&H}T6mFkpAr6Kw7}kIh}X zTECSrf4}6!{HwuI8|3M}?ogiY<8iH*N|-vi;-RSk680bx(q7~M5B`fS2Nw{n2TFwa z_xUlp1-@W`iIl$UJ_hcwbq8`-2C@_jbUU&%Sa6kaJ9Ij-SRX3-V0_^4e@B*XPZsM_ z(g&0giwwiMKX$vZSi5l)dxGPm+l_^PA49;4Rm-4ub-S^Y2!V{!1np|DcH=0zV|*a) zaD#<)sbsewhxNf?0niFN3$79lu!4giyAZ3?5aw&5nC}HMzf=&c-MWMmtQ};2w;K!G z0PuVgXbm^Cjt1?B?7kTm-Z>YvGT-=rcQFe%Y<_{7-k`HcOHF&{R{a0}U;7@|zAm=j zGR6)Ut>1Z?53mIMH+V50+&JS%TMSx228mi|e1>N+cH4EIe=)cE|NoW) zB_iGaEZywAJRPkkL7U?RIvM}FvoyQ0u)w+vprioCp#0;?6CBojfF&Gch0Wjp|GP^; zV?W(DKqh7}zVO6jCP)d$+$_cyN)Tm&5UW`_S`U;kbxOePg)FxQ^(R5=NqCx%v4n^H zH+ymB&;S2n|INB@ya2a{KsF0>y7GX`&0>6Ut_rtzKuVxiFNY|@v>HiGGeiwEWWdg2 z?e^vAdURteB~D|X%ILH?OQz zy$(@>)vZWIZNRGR53-j~>M~G-gZjH~I8c1(`5P7m_7E1xhbA!QpBI{-Z4w~QDs;O3 z09l{K_`(#$YMh?sgDAu6*;f_d03qbr!&sF;JPUFZG%3u%s_X~OFad`L4@!7g{(^;v zK7<7d4;2{m&kIQy^T!K5(1s0A&}ekJegU~6i}8gNiVJWC&F6BkxA6wed59W9L9+s@ zGK`>U#HtJuG$6M_Lof=fvM)G75LBOoX5x8z%UMA6SvQ-tI|qL=XlpIFyzFKJ7yqjl zz>0r1Na>&M&wNP~rS325h5U|7J5T|fT+?~VnPK%jC!y8Cn%(*|6Q0>9j%?7Gn*g@tWEcygC9+dE*80_BeQc(E=Dt>%_ zfa4kz!%iT3Z!{kfXuVxx23qn5alg4YxJBXua{+jd0J00*Seo5gSXytFUO~4DWF@G4 z_2mf;3xClBy4RXQ4>}!H(h9)NL>9RZ8A&c=v1Vkl1Yd~HDV_0~0p9_Dn;K%>}y?!j+ zHv<0~zWDqN-0A3aVV5n8=_7mvzcIfp3_58}Yz+M;X_7muKL zt=~@{ zjTfK3KwS#1KOs)-gBUFcaVpr`;BaR7U&_<$&cf1t{>AAOs7t}o396r)->5X(PSJN` zVBl}%0j=(5P+(v<&bk03!USSXfU;ifn#jliJra_?1$3(NP6m(yPeV+vMy1vo=6tELyL1*cU z7xQyLMZue9YsONJ|GYEw-56ebHiDh@|Nnn>u(Fcsg<#dLKVCd60EeS{x9bl}R*+zc z%>U94y{>n_3Ikp=mj3_WEz#}3(i!`v)AhrDR*)aNT|aa(_d0{t^YC^1e(B`s_WjdY zz|!f#@!$1N^KpU3{~%TTJzoF+{|AkHJ&ipKHtxk@&j0^k%;N-aDuDzYm;~1+pp$FB zsz4Q{D^I8EpI+A=0if-QFL*%5*|~BwTQHWh8G}2V-3~lRwKQ121ULzHmvVsh3xq=l zhdNzf9Crns^~Qj7-z2!P&EE{VB@0~sLfhL`v!MlUi4?d!%*Efr#K^z^YZKpi3A*XL zyN;#7-nvu;)b9St-~13Xyz2&P=kvFKj;{wRK3MbyJfHzOTm^Lb8~;A`fEO0?z@|6< z$SGBAsAtqGmG5-yt0NAnM+QqaLq|INb!y4`vHUjW@?cJc=<^UZ>0=he;+cx638^gjF(3r2xaqHhDGN5sUaF%ZK=HndQ91B6- z?Pi(K$+FS4Sz1r>yB_S~ zu;MC}YB^aV)aAiwBm}j$Xfv7rR;i|KACcg7oJhd!l+Bc)*2QmO^J($qO|_a9ZwkK)V7UPSC;a1RaDE!cm?}$f(pV3UZgw02e%V^5Kgd1b%Jc`{}OYgqR9r~gySjy z|MQ0*IL>YX_Ok-G+;vw0QT&4L0uX-(;I=dXW~t1JQ_?8@mP51D17T@U%K!hz**(BE zf{Hu_)KU>*X$WphLlBmRqFO4CW@!k*(!0q-SQ>%b(g>KP8ZRD5q4-n*Ert^imS%t~ zg>3dh_2Y4NT*Yn-ZYRVboDhrZ1VuC_6d;`NGzn)qj{wI2tnv|sXSD>}PDnsF;g%#y zC@7&hp#kB9B+{Lbg1!1pfm)9?&5gO)AJRX}`k#@A)E)}P)*!n1!dQxdp}SZEG-6TB zq5ZSd_d~avgtnWA_3>h{@LoTG7e$VsIgV1cV{S5xuZ6pPKZFPVFB5rTtp{pM@G#bi zbQf!Y2KPbj(OM4h5aay-kd_h&q#*;&P6Mc-|L!cU-%9wJ-9XD=y4gTo)&BzB#X3;w zEXMBhFXoY90L*-_0kLElVA5I20d)k(S9}M%@Fw9dW!Mq4)VgV2&?k@H4oSuh;cU_xXVTe zUg>sEv5pWa(d;gd$zlW*!Tt_l2TOGOiFCUO^s=02Jx~H30OIJ3VEOMR0_n=5T$l~^ zKSyx)P5$r$VW3&JVuLjPYpy>)#yLRzFAX)0=S1tt67Fu-ADxV#)B7DkCPJh@%Ykf8 zbaVeNb9rHH3A&Q}bf^1|7Y{f<2QK|Vu@!8eKyX<1N6_#Qco@kq<3*SO=!~Nu%@&Mh z+}#cwanKm*b~EYq%LwnT5CJKCaR79yqAzIc8gIAjkLCj`C9ItsofRzIjQrsTS`UB+ zCHMthKk&Pr2<+y|03SRivyXwHyUZkuvD5Vf$WLn^K_uGkCjyE)KY-L5>ax~c=Tfu_3wG;jPLbaI>P9njLa1)QKGa_4hDwi<1E(y zO5b!l+kn$@ckPF62Z3IbAD~cY0FAAk2<+yDgu2Ua28K?yUT>CO*E<0(#I}G68F1K( zSAp7FEZ8nm0$uG63GY+L;q8H~!3P=vgQVyu0ia={EjpkOe*#L;V(2Lv(y;7ybLjQU z=ynhRuK;`!@Iuf7w6hYFT?M*bpFq-d=z~s<&Hxt3p{7irbFyDEcRR{-^YMot2;diV zT?6)Arz^*CSI{Al3@>7KF)(!3Idr;i09|Ir*y}Fy{T2tiTba-|a5a%X1Wz z#I;X!y9+?(U&QzYT-WdmGVq5VNaMfeAaL9PJec&~U8LKU!}z~tg-e+OzdS>CnG2-s zyle+HOrhINq?e}wTzq=89w_03=x0a+pE3?ABV0M$yGuVkt@T?9j?>yBPGj!xG-{8L?zbi1*1 zx*j<03R-B#aNP9_$oa=zFMz0C*B!9*)9ZSo`+UHQG)@MFZvI|3i2!i;yl~sez|dWL zrqlIW^M96dL*sA82U`D^$QhrU&>eb$f13!C!{tZK2RXPuSsyQY+xYMQ|Ns2u+}*Vw z4nAY)EWPzwqPzA(uj`2b&?#KEH!?6Be8AFtg0a)}R=2xLcj=4I{B^EZj=O>mqWa(M zA&}PXdMAzl8jE3Cr;8!S|I!mLHiK3^`o3vC20Ad_vH1u~r|+B2(iheqF8od0pykG{ z4^T2bB!PglJS6?SMM;0y%hS%-552w|fxW&r0zpNpu@)!+-T);)>_sXI=$bIdiOY;7 zkm2+?nQmtfP$>XPlutm*QeV_S>NJ6F*Bg)&>HDP9pwok;n+=@hS`R?;HK?X{Jpn3n zufX%%h3%j&kVmKMm2PJraH;{P#Rr|PH@e*&I$dA9;IjrNA|-GlasVeH(7F+RaENyM zzDVQ0#sHd%aTDowSLk$o(G40M3+*n3nD(L{qFoV9J1BF2bb^y00|O`#x{2_IAL!)) zS&_zn&86eZahDG8d3D|Pt^Z5cb-TXkmgtOq13InI3Y0WmAN1Nd9DL5yS^J{5m<4^du4{T- zA9T8I=nUO*%ykC?*2D}>YHI>|T~EN$bocoe(?Exf@`phZbLBQ@V%`Hv%qGyptk@lU z!uaF_{%s=6NQwDFckCNjdIl%v1Kp(`UQ2X?=EY6~^!l;9;9ieN&j-5Qe7b$_bk~BD z^qy`9fo@L+Xu<}iXp2rC3vhyd1YVEJ(kL&jPFA^9jvwK(~!yOeu8wen72_kGq2J3+b-qFuDy58R%qKw?A~A+(DrEfJ2u+ z%cT+v@B%yIlW7wgesS|}yWKSbv^J}^0Yvh<+;eQXRQjyb_f6x^{|pQaWn5XhFG4PY z;*KSYvDf#(i*h4yvJ~qMebDXug!y6#N4M*n4yJD3Cyt%IPg-u5C_&WuL)3|MgYxea z=7S|{#~2Ess=CW_TECUVHP08{QJ0y$o_l(XAS0d$DgYv%uD3caom z0$!ZB2AT%_(ChjDR41PPUnUapqJ@cp;k7}xJM8YMG>8>@4Z$u)aZv%xir5eEpehh( zsB>W8Z&?KDsnun4$GLRIaKp6#ee$^pp`v^2y-F-96nl%G-GCRv=#@AZVYm8Yo3%r(t zCTo_>e6NM9S(n^)V<=_W%=4P9^+2h{W;W1nAkd-;7O=(qEug~*yWK#YN2U&m|86XC z(Xod(7{UX8`#lpm!XaZ zn+CdVK%vyG8+@aYZ~*8Yr0&x%K!>V=mTVm209A~jl<*=SVyqFwLCnV(1pm9Sz|@=u z=>r+XSjzK4l?k$n;t&VJibr#RPkbxM9NGYH}uI^gUC6myA z;_P;Z<^OVpuotHLAn1BReH z;QWFOB90a+?i?Q0H%i62*`XoB12T+d2Dor!>vm`PZ!#n7#cFWD&Cv~3T%yoW&%;mx z$&?#)z}`j}TKwOQ#o0QZgTE*3|Ns9;D%-KC{BPdv`zP#$^j~mnf|_K|^p2cge9?7+ z5+3OM+w(6DLGlYX#C@PZ#-g7WUB4SVzcE3Q?&%BQ_(#&;{DuR3U&O(%aM1dYY8Fs4 zzyh?;y!C&He7CgmN&amt#%`A%fLgQ{tiKn1=#J%R`~_~*^2Hx~#1hwi2wE+7yZ#97 z^{@??axaJd#P$^L2g2Zpu{|sZ~`Z@(#S$DdA0AI=j-PhOYdj*t^K_v}K zc&F=y|K=~^FZ}->{@=XQb;FC03;+Ljn|HdN;NQm=_+m~4sQ4CvtUPyPbPIUV1r`C_ zSNhJa)4a3v2zYsQ2~4y^2D)B@e;-(RG)$uOU1#Z$EQPR6^B0NQj11ucovtf7*Gt zy5S7i4GmzWpyQ`S`Q<^EZi9j+8!QO6zt@d1JfM^P1rtb@?~QKrPM6*Xj-cS`^u6)I z39JyLTO7Q85o*6SSQxAyY=3Eccj*~$nHu&Yasr}`=K)3iophGUXK|AThk2$h1y%ue~ z#6R;uFN-Uv3E$z!@|xwCBMU>f>y>Wb6`4_LXYf!^x)tBfbMfIvQ$Cc_zRtm ztlh3lIvqK?T^DpZ@^)4VqBKMXJCMpERYNb9`92K4huK_-+i;Q_K)$m7caxX zw*mIg}({uTq!CAW;t2bnrtUv&Duv2o*X0o@5`<5MDS z6U^T#$OsyvdeMD4;D2$#3%x)8|G)ePYV%cxzz1-0t&>)#RNW9x$q}S#I==LbkEzAvP{{QcE{{iC`o&l9q0-f%EUV?7>1PKSehye?7 zbh>`AK3)>r`mH3ayE+1H^#hRAo{(lSy44RrRzHDS4R#fz|I=%80yLcJ{-c}wMczvA zh-tU$7tlKV(l?-7@WLL_IcYsmB9aEnf7&oHPE{Luc!Of1r3~ z>D+qZ-~a!hOU+xqm6$`XOzZXI$nfBFWjM|TUZb?n<^TWVY#E>#VaRRc&{IR9cT&9O zF#guL6=YuL)(A*EF#mUB$&xwd`iJSo`QH%xj-c7cjAma5!ahH+ec&|!xa|X(*SR$W z%|4bF@lg9tpxMWYW?urrzI)Cf{}HecWM1di03`cVj=BC}d-47k#DAb*1dR!8-2(|v z_SSDD_DJEGgRn0TY+r?dD`=SRxEnax9Crh+uK?fch!UCAlVCA|Hbj59BMDf zI8rqKRaOdf>&}JcLOi#;}>)jfI0yZogia7w|XF13tDi+ z^@8CS_~eStR;YE{tp`f@GHN)%3+0|lffofG=xn_KPJS*R?U1#E0lmE^{(=)4&x^e4 z|Nk2wINrMAALQVG&ek(v_rDvgtmQz7ST|T(FUtn-z9kDchymc?p|jn4K^ig??m9ALv4n-cDDP%u z=;hhod_t#7T?qPL=+N5=x{^Gj1+)blw4piR1@B$ZwqFs5 zL_lvZ$gUSZ1poa9g$gKCU#wOJxv3<&dn+hVyL&-`y)0$DJdK^bS0D*Ru=Qk#cy}wv zDV>bHVD|e=EpHw_~n<_&c|PBWEkfoEJVnz_I@lbb)PmD@X{U5)y+T z~KodQ! zTR_DX1Go=aqKI6F33h|!IvKlLcYqRvBMWFm8(f|Anw;qF1w~soBlwD?AKi@Iy`bdx zzrf|i5?Rm;!5>H*f+M&201Gsh!6}%(RS}f5z<$h_07@A=VgI*+LhD6DC#bO~aJ&^1 zUZB=d>o@+ESD;!KoN&AMf=VE;ap1(`@Tb>b0CcGZ*cv4N6hN9Yr1%GH1UPj-y##hE zER{gK2N^{)UIg}FH&{paR*+Mfzcrs@1Yac3?ZEQ?!vC$Hz=7nx&H|1XjF0~R?*^xV zZm_A2%?EfOX#$d`t$RW7&EEvNR2)41W@#F7+l`^dE{ky|Xo>U-250aBebsK>0ML4B zkQij{f#)~_s7(hEckBd9yIF&E*B$D1<>_pV`S<_-@mA2$>!9#F-kJl=8OK`-pe*om zvKMc;{{8Rn1*z_Kg1q=+YIY3j+CqPS+zy%kqAqLAMTYvloZQ&7kQK|-Zks@Ti zx)xPIQA)dpEeO24$dRDNtbmN>Ypm+ku$Sy8WR@n=xM-Dz<>IOG6vKTwv1&+Ckuq>=`as!RHZ#w}#D1qPgVn?`W zTBo}hZ1J;+K! z36iY2J1zdZvp~chJHgV;?x3wV-RBXjzyG_jK+MWweDNQW4zL;p9w!2u0W%7;(2J-0 z9KxvXt)PMhzVHKL?2AMQXlgGw%%JU%7r(B9 zu4V(ZkD&p)b1o>QgGz=Mr=l4d{%-}93@`SBnV=Hu#g=GB21xTF;Kd3M8(e9Cb{c*w zQSaUhsxz98vp~js|C_&1{0Ocpd+T|c-!YcH>jsBEv}(zW230LAkSz5gUKp0$L03b8 z_Z6^pGiEXV7w85zCc%-((G6QU*9&S9BCBfsU&05D8jfyu&;rB%0^PmfBy_Tb2U%Tr zFQ^DZx5N0Gif;Yi3Qjr8AXi3V=?&|GE*yM{+Jyn_ zFYJ!x2+x?n>Bvq-P+4QAI5 zozCpXoY@#(RP%x6c~5|*?W#pUQ>3mBv=4&%PmqPCzBgWQih~9u?z9{zWjp5jgz>d# z`2W%ufiEsGGct7h-f2FRCF@@8W;l)yB&^;+2)@o2nt{O$)IkPcrnd(&X@=!|j=-?)QUT)wovwdczm@2KhUP(5LdTDLMGm)K zD>oIo`?D?Q@)^(~HHS)Af(_v7)E((O3@j0-ZlWOY>AQ+}GTCsf4wgr@fO4>aaJ+ z4gs|bU7{>eBmUdgaw&LOaBe_@HYnC&K%xd%K=LtJPy4g{jHZu1U~cEv2>^LUt{X_ z>E`J4;s6KVv7&p(u>qb>L`iSdHqR8peGR=L{;iivgh1}|2DvY-+sB(D4dKE&$Sy>W zUndOnpbO6+zLw+{VCm);Wctis=h7{Z#(&L8pxdWgqSH$P>izS`hC}LS6#ozQ_|``A zfA_&G@(ZM&2RT2BSb)mY zE*^;voaHIHeh!rSf^d0Eq5jeK&+uyh1cvyMCP%j`M;v5$3F+hsNPz>Mf8+q2Q*bdjEWBHy`>-kKsKL(AKL>vZ z7$5G8{n5*F0CdD4`gwzyA9hxn&ujfw!rJ_gv6Q*_7*jV>_rGp09*<5}9^*^O$9h>D zdRZE~K_@>NHveQS2>7*b;>e8=b{F@01X;;8$bf` zzxj*IhoGJyN2mFV_=gM(-Rz*zKz9~akXq0++J}$1^DtoaU{E%fKplo;$CdQ{Sy?F&@lV}buKg*Es>pQ{z3`t z#1Eb3FC;)tL=VQ}7{Q2=h9T}DF8n_9R z?vRN%cko2qad*h+8t&lJH8L2O!K0v{<1~)D3xKE>++OgrElQMjf`rm0KvFO4Jd4h7 z8PJ{{(2@ie2GHF6-b4TXgR&JI|1acu@x%jh9_&ldfmLwXGqC%mjmuQRjsJu83pn#M z+gLD`@%%5bV0qzo4>T;m;?{gzz}mRzas2;co)^{5O2T zcn@}&(iyOQ;l}?ht69oq!;HVBP3UI+Ut+-W;_h7r2KU}Fp5`Mg*3~RUFXR3jztDwP z6c4coY}%PKpp8|20xw)a^ABb(mfZ!r4}MxCSpI)m$%~Kfj11j=DWGx{%LyLcehJuI z-R&2HT{r@}a0qtc0PMm(*o8rtHDipyb^EzsSM7jZ*ao|>1$JQ*?7{}vg>|qCYhV-Z z^%Hrq>hJ&m|I1ijaNS{G=;mua!V-r~B`k%!TrGuih3)@Bj^m8rg8kHOP_p@7$nxR< zm<34y;PW#-{x9Qzu2@)d8=L~5*Q#rTy{G{TaDa|O1(nt4>Px`VEKv12VK02Z0yx#X zfTdyTRl;7#fCVtr3%roJ4Z2$b<}MzHGN?TYVK1KC0yz|}58@ke`!=lm&7j~|U z354GS-UuorJ`qWBx!Uf~Jv{@DxO`|>3aRBD-j2W>?70^0k+ z)$PCm8h$v$!T=t*=q@+tEdA5%&EnYltwf^rWQhp>-ecgyrw@V;pAH2bJ`FnAC;((o zoe+3Fg16iC3uyNXYo|nK0cekazsd_{X0Vh{x4%X=Xl4ntZv}L=nmc&Qzv~}IMt_4i z@W{s@7KV&7{H_dHOfOD|gUh;r7f1Jk=HWSBtaL^k{R)l(uzv)=D{8~RRYWgK8EC=l z3qKcl;mzN&mVtqx^;?NR_c_$^yZd}MV|OG^XY7YgSB}m=o=(H#j^F{U)&nIO-Je0_ zv0Z2Fm*)SBWxm~#-PgN4c{+W6^g91nJ`QSa@icZbwjL;v?XLaN{DZMX$O$BK2rSbM zk|}-JUHhfeviTrO2{&jz7Gt*?N2eo8x9^|kV?52d9E_z4x??{Czc}m!_T~mg$e7t7 z76#Dz@jalbBn-6D+`RdpK$(1ZI7jy}=5UsSFPN+^6boE@XI(B(WD@q`CwPtX;qG(Y z$1c7&_>zhFM7KK!vpb9R!7{P#^Ns&jty;xZEZECp7VzR6L}~m6#<;^T1VI)wSBfz3 zPdNZ94$c@Mn6U5-4DP-OIz;avr$`C`l;y z@)&g=)OP)2eY{9Ku>16j!-C-W=Z=rt09!KK`mID6v;-HHqK<=86!-{q?)W&P1K{Q= z3qvo9UH9pL7fpiTCF78~7VI_<0cszBg2^UIz~_`hQug6aq%+Q24wP6if3v<;ekbh3FGog(?i{y{rj&d=Tf4*rxK;NT}J{eX7^gVIkkQu-+* z!~JeB_k+V<`xv-j{c4Bl3$xc?U;KtlB4Wt|OSgl4F>gD>7oeOA!RYyyKKTLcpMV!y zSiI5=i4X&vUb(dm?3K&gz+ORjKeUQO%Fo4hpz@~@mX6ZV;(>_r#}*O|*~df!UX8^JyxCjHaQ{aRSuFZ~pp0Ss`u|JDYu z`!8=8c=u55VsKV1mp2v(|y#KY85%x*ysf(8A*W-}k`oH^AxsTWi7Yzr1z;-488)vP`gq z|6Q>A3yg7vzZAs%!h^v5tBf(-fBO#D{TqyMxj$+RIQ)ax3}E;})6Xj-O!sF)^6v*j zT<)K>8tnebt6}a3Pgq|L>oyGUuH@-;`>%W$F@jPe4jou=`>%{Tu;R)QAJ-Yd(#Zkd zq7H4%g4=_T8LaMFj_!}$?9CR8rL6z`I9^*e*0F#_LP}h_-wYnT)>NT&>1rvo&2D)@7-BIrv~tMyR*c{buz-oE?!(-1$KY8qe}Au0r>FA znQljo<^v+ge1+x%Jji?zZATRKA_pHZqsSk8z=XnwpFPye(hFK+jgUNZ=1jMvNH5D# zgmAW_h$ym!-Hsv-y(|uJGr{T`dRbhdTDl!Y4nAN(=;(GdKr^31+Y#wTaZr5?8W;@k z{@M8Z|NsB>WnA&_k(zFI7H#&hPFIdz*FV7lFD8ICK$QMzKEl!Zt(3*+_G|V3r5yjw z!(O!CVqo}h{vzWjbe>g!`Bn0G;%>+IflMS@zn}wmc@CW3 zyF)p;9Yw+pK49)P3iw|r(0!_#?f(TV@=Vy}q0!lWItz5F0%+O4yG*w*B2=S6Hg$)K zbe|6EHtuBs-E_d9eF!ub@V{IDY*jp12{=SS;o1EW97E@`c)Hz0I^9%y-DJAO5$1ti z*6juk?t>4Q13(^Pf<+Fo`axTkLE($48yp^CB-jth8t8_AeF7nfbq~}(y(|sP2k;mN zYOj;xK2S#)J$$+yd9)ol!g>o?KyNw7y$F5&V#Y$^pF)R@;|@ z`QvLA|JRJ}-M)X^TK|_W?EVQi<2p<0?K+YFCHMb$|2Mh+Lis;3v>BfK^r%_d6$^EF@zf*=>FXa-cMzHi@&*;k%7VZo24Otiy3JD zr#wTiOj$R}%mxdFQXz;vjQlOqj0_AfIY1lrdqG=R1ABWxd!GUWg2G??Wdo&kk=6tJ zEw>pM7tT>Dsfz>DXvK(6BH-a6+W==LG-4$trxjh7i1w6}un{tp&m+zJY>7uz%# z86aWPd_Mh5=Yv!Hmp-dn`j#pDFK zCrJC66Z0>KQtMy*O$$NNU<10rQPg^XzrPwR2HI2;Z+)v+y&LR`;Qtr8Pd6W7>4o1; z+zpOL?NiRoH?8j#-S77O6K8xj`o+q<43LfZ(EJJ7e*#)>2d)9+8~-r`Ffi2dX6#~M zV0fX>3QD3Z-L5>1$3Pb!g>@Qqv$q~7;SP9lOdXU-IbL(Tn5F?@v2=fE{ZS0avZe3twc89MJ?D2mgB4-A<%@uan_9EZXgE3!W@Vy^?(=Q zFjXKSkmPaJ0;sCvtR+wu+;~uV-E13i+l_&t#JXG5=aw6TwJ6Bc8kt@v#()eEGXrGb z3uaK85v-v32oKm*UA`P0JOck&L7LzjEy>ox^Br}+m{jYvZc z+kb{q-i8{se_SPO9*aTppwMivXW(y{#lXN2Yz=mCO{s(N?bdIdu7CKa9JU3Avlt|t zcQpV14>j-zOSkJER#0Fs2Kf?nP&0SfiwHGP7=uDv0}>j@pF9rymOGMyJsg@y4S|A*PYQC zoM38{dfl0jqgDg7;0mk^5&Fy)0b80WWr+2bG1lKo>aiI4~bu46+QILc4iE zHnxJce*f$ZXN0a_?_zfcyYJU)CgcCTGUmO`Fk5AMol$Jv1X@W2Hlz6n56C{yjqfa$ z0WUnygG-av+jTnNbkXur;_QVWZ!jMW=w&escyR)B(;rw>^AV0tQ;<~iFDCw0 z(8lxD10~wsyr6gnM{$ONs}lqB!GORQmw$qi5f36yfmc!ncgup(v+=jq+jZXI-L@c& zAZt~6ScoJh!TjdUKaCS55`X4Kd>sy^^Y6#2kXx@d*h?g?17d>;PxOa zB?xr8a)6_!+m&Z=%566WP&xv&e?VaYI>M;imjmqYPR4Fuo`oP4os0`Xk|2dp6CwMh z7K21v50r#A+k#2}hU4H&4k}IRMY0%?N`<$-z@Y$1ech+RdJAE22EIzv}<#x6O=z;MjLf#FyK=+-8NV-4VwiH(50uoBuoTH}`?;cHPqLyXN2nHs%w@Tx|C+^t$e8uw*E41-A#g z1g!*0rCKhP2z3QAS_Oda>pIBPe1NItQt1=p1Fu=74>X@(1T_zY89`aX_&{{G?;qo{ zFCKyp34I!SxHoi<_K7a04i-UB{rT-B==!)UfnL`g0lkil0WVf)GctU?5%9uv7s!&unLd>D_Eex&bn08`g5@$v^;6B<0|0; z$$V?Dt-M|0;-MW2uIClE(0LOHzJg8|9x}rOFNw@DG?a%R@M#g6$C3f_S z4WI+OpT-`3;k=W9A#DP`mlK1bmlMMe4=08#o=yynUQP@Qj4UiHOe_$<3`xSE_Ca?n z2c(Jc`#9+41BM1`h7#xQSRRmjyVz|MOSEiMOIZH1y;gM(f5D>#3O|-!kN*cBvN4}V zG)S~hG4j1;Zf0Y4Z?I=5J>DJ5@!#x4gaTM~rz;2Oro6257i(%j8IZ;J0Juy(#=zNI zz}Usya-bv^l772RH2hR7aclUgTEf!7_S(-m_{A(uMuzTC9*=_$*t-8QgHFuqKBfH& z8s1%uy`GF6F8u#n4wQcG^@6vvE;4_5EtGbgjf~@vVJ|57^A|DX^VjpM)@8NLmO2Pl765WTjj|T_5Xng<{hN)6RsDcDLoCKF&JjRzmjtC1k z{$~6ie13~W7qfHgw-T|g6Acd!H2iGfZ&?6dGR5BtIwrg20DmWl2FX5X_<5jI0DN8r z|F#RwkK}vn>R%rO$$V(|`JhyYf7^w9pfYAZ0|x^`^CSM(OF?o!8h(C&$bs(m*w4Vg z$k6o z;pz}@=n`RTxm5b`7z2a$@woWd!^Q_7ch`g3Pj3VoY%4%5*;1bj1}@MIq&v*q7(k`_ zan==3)(bt*9bKTr-Fk_?1+>rwd}$wieX|JozP?V;EoN>E$5=t8F@naKkZZ7B*B_ms zKeW$*w_yAJ3D^lT`^9d4&^G7~am|*DW&EIPQxEdIIDYEy|87v>>dFIF6aczz0dz~{ zi?iI2?gLo(Mg3Ipm?}76p#<1JJTU*T89}Z94dsEH7of zmi4@#0meU|%@FKH2f#7c?Z5*)`G?>2LN}!CJvCg1V%H3+&>TwW16RNVPGzy%Cnh@#2CsBSSanf`Zm>rCeF* zFH|eQ#Smzlb~<=wf~C_9bh;o&juRpWDGL`iKzb^?od(^OCZWC(j_2g6=XJK=mcaPs6UkTKVt^+{spZ2{Tpm6 z!6`5*gJA(E1)c#75wL(*d!VcrYe2VWK~i8T*G`b|i@M4G{_kX9VPHsu)u*uani|mb zcmkXrL1r@^cLg1Oi~Usa9>@!^OyzVJArOi}T0-{)e5zUCIO62?J`!gA;zq>Hq(;7`i1O{(BL-j)CES z>4(nP7cYX=F))A*Q12{#6Z|6fFsNLYImTkl(ChjFbW8#0)Ms#D1-w`Q$~>hHdR>nM zG}|$jsrLHuyoligonLq+px002MF5z6C7{<&=7kF%14Cz>%4^YH*B21&;6tg;axgG- z$G!-Dac3>a0aspJ0n=w*oB`8EUL08qa)1EFwiZ~T2j@@l{k@47PcJ@{fHDnF zcc?(?r4sROH=geE;7ckxxw_pzLp-iOI;&VfEIR@a{hBs%|t zRHNsAF>wAD!;=3&s!{VlB#$tb2>mbR$mlul#_-}e3n-8{K(!F8oPjwITt0ymbrbDA zkZLsdEfNK}Z;mJy_kmQSx(`(T28f}C|I#8*QUZtnb6t=rNa5cJk%NZ+43zK(@xb9f z1seWP0hsqdhAEsFgc7Yzq1+G`1 z)=ywUvOWQ79nAUwC?9Mqf(QkTKTkm$e+CU;Fo9Zi{H;<2P7Vtv;`rrTj``x$#`1iSSfCx@_uz}7a`(MTq@V`u?xAhO`td=r|j0mtN zGJF61?{ed8K4M_QT*6|*Qd$(=yBDOypI@G#%bl^ep0VXX>9>U?My?E<>=50(0gTZ8 z24wX8f0=^zq26AQuK#5c%m*_nz((`+{`=oumIFTOsPrh*RD_Xf3mc4F8PYo0U;;&M7`s2bh!O%Pt4=o_6j_Mvf&UA5 zUa*74=8tg1fx`ami)+gv2?64AXk3AAcxr|#*$h=zLLLt^Zv9pw6FvdbzDWX`7lUqITpIs1W_Z^C zoXDW%w}238`H`9jEkAf(EY}3N3aR|?gvfQfazKg@@MYp9T%CrU1uWgiK&6KPj0GvL zT{*zJdIh^fc_t8QuYt->wEh8le_^oko8Jg@hk~!XW9t40x)#m%N4FD8r|Xw)SAqWq zFK)g4_aC%4<6QWQ|JgF}dfoh>Z8ECeuJ9w2K{vrUa&)`?Iqv!c)U@h!gxxQ; znel(=j~ALtLB$74*I~#k)gc}RNc?C0&$x};KE--pO7~CDd=(R9IIPq40@#IDjyr+6 zpbXum0==#`!n$Es%5=K&yqJ9W|NmY$@OI{aUf%~Vn!$X~L8D9oy}mDA6d(TozuQfs z`+RpPM_8xphZmc;;GPre<^y?-6Le|Eiz;RY29O6{yvSGrYI8k!kpQM|yodnP7hVJ` z0eMWI3(IC=uphw*6-t21W6=I{<4d3^+ya(v3*!TjtvNEF@f2L0QKY`;&z(Poqg(%% zu!80&nVXL@b(j9>zTeH}(dqg_`8fEpDjv|;pPcJgo=#ryOWGP%6>w`omfIFvv95Kiv*6154L~Mn*af zAUE=HFo4Pr(E6S3SkU~e@ug1RKjGcQEZx?i+)Rmou6Ne*pnIvK8{{Q7keAe~kC!TS zJF{53ag<60{4ZnqZ~Q_L)dzB*1mpU{N%>G`C=Zf9z^0V$Lh}bSdLaG*Wd_hC2OnRo zWoKZ>`~lke586e99Oi7sx4XkYoBzLbpI1KKS^K9m^hYmCL$Appuq&OR<4?^$Kqmp* zE|u%P_gc#Oc&S*oFHf%4l>la7mgPp#A5Jr?90ky$dTW|Bb ze(rV!-D?<+6z-_*?REtX5ru_!7qE2S1gEIjFRkB7q(J9`V;|hWo1U1vuX})e1WQlO zJjSWhMJ_xo$#sYR>4wI{ zA8<^30jDTPOsvQ2P0;vHcPIzw0#2q*Mo9Jt<$XsMSl)Ny=yc>b?gZK)#?bA=11fc# zK#Qdqx}5|%9R-d%fiKJMb`t4y6gln$Iy{r1+exC+QR280_y)LcCz(!1nd462o#)+7 z3Z0G$-3Q^j*1+~33^)GY>H5dgqRcKh%=mV90T1(MP!CQG)DsC>0NTeY^1=&D^Sl6^ zLkil@YqbC}m~lkFz4@?)wMEg1xM)!24Z0hy`3MVW!`Wf*{_Zg2ZdzHXl^7 zfcBG%!1t58ae)GtB@VL98@d_x?0k?TI9?nD(Pl69f%WmkLFSKwK_gV%H^HYT{AoQ< z;?-^M0PXF~-ShuH{D=qR7i}Qzr5v5cFKXt4j!*a#7XBZ6d_wCMq~jC155pIE{WpFQ z1h$I>a#jQUTm{%Fu+Z)|Vcp=BFC3QTET!4qoI5}r$<~wI7x-N-cJqVojy%}>j-^N( z(%$Oku;wZiXghfT;@?tDiYX0}HM6}C; z$;ykVRJ8fu{}PTa2WBfLX2eRec%uX0rAx4^0;a*`FJy8Bw*Pe7!3WF%FV1ly?LWN_ z9!y2ve+n7Tz_b69zhxR|a_)0CYy)Z)#s<`eUY>*9pbe-h-L*duac|mWP>iA z@Il|F3#!aIVf%F5ctAyg8zlF;34n?M$T9h#u;cz;#`9w798efRcJzus!YCUSMsL}$ zgwdP^)Gz|AXX-Y`yT5lP_(mPv`+JRzjhUhQd-EVlL1Q9^Ul@X{BEtMg$fjVN`-jug z(%7Kp>p_%4%)eOw?>{Jh1B1i6e;VJmlrM_`pXwLZUCzV&0Te{w@~mk#BzaYVX`UBF zV4CGc)@)dL<_u{!Hy_Xdo%APPv_I~+JGl6T9`^yx`-eN@IXdH6AZ&2f0~4U~6mGu@ zn*DsBC}M)y!veQQ1Y*y1BJ6>*zr(`!fl8U~3Kq!G;2*%_{r^iOC-Cp%F~S(^zh3kL zQ6I)<9%O_L_CwmI*w#D4aw^(-XP9v5OHlIy$9iWR=7Cc-rg>mtyyk)0Uy%LY=0GFQ}pr$Km^NZBWVs+h>N~zVD!UN&@yN z!|e;?-|NZ&y8q-UeEtR8AJYIeX+cAc^89-bg7=R@_OtVV_HVL-C*C0=TpJh>qg;^m z(R!dn9x`1c!N2zaSTE#w1n_2d7NY~PhoPE4=@oR{E=TiE#xiBFjm^Knd(WX(BJVv1 zjcaaT1d-sh4kDoXL2XvWZeJddDUxt23Fw9D59==FY5i8pYJ4Cr7IXrzNOvtq7Q_Ei zfw1rwv1|YS@8E}+iiaW@YT z)%vYOwL6p}d_PF8!HS_oSo>P@d(e~*3s(oDV}lJBXv&9?A-?+0y;LIB?fS>~TPG7l(y!Uhj zqlB;d7>o7y(lhaK#s{Kf4|lVH=lr1&2c;0}4|qV=9S6VY1}}T%XgyHE2GQ2*$`c;& z!US|wxGT?2DNrNqNAnSu&r7?#T@F5E>hwtH_IBy?Na^)<$YOjEBgMcF-*TWtvD@3F z+t~pU+C1I9JjMq)x&Ax5yyot9%T*#ereV?dqIgq#n?u?~JdTp*Uy%D^*Pj|4#8Vd*aY02tO&{ z-+k^ylo+VvTq4u$$I{IPv5*%OR~(S3xlXSCZY*HAxNet@KZuealAs{rqlXBe#y22W zzz4`b1fyISRm;)an)3hu|A5ZDG5`Pnf5BS-T1Ujvy%i+b?JfchwN5tZy+X&`APpgC z8x(ePZ-hXmg9zw?4Ccd~tqK4C|F^zTQrvtvBW*%M^$muSq;5Zs?4K#j|3J&h-8hcB z3xH;?x}EQIx{Gu(ce;mkGlRBo^g2HX=yi_>c=3H10|Wm)=Nq6C58X5P_c`BeJPb0u z`2ojq_X1FsJ@|sT(>sV+^i?c2R*>gZ?jf2+U|Pa%IQ>?Vk>K zap~v(|Gi+DfEUaDf`(INx^HAL_I86};>8saa4g7ocZ06w>~01L_VRRqFKYnBKI8vp zkVM7=9#9mEPlQA<`Usit2jjCZ#3n+H0lErRp_F3>Xt7LO>|qd>sgz>}XnhPq z{abmcdIsnS8)$a)#r1x0s%bq?!U1lU#DUr+kP11p`wiT?2f&(3nPLzBFW`6)1X>z) z1ilae>H$c3)BJy-j0h8=T^Tp3~y?^pt%)o!i7!@s)bGr zR!A7?oip9M2S5{eCriV!7_fSi(Jl zxqzkl0EhL#(r^EZzPvc~oq+-3=H?@yxst%cz{MN@3x-~nsh|Qj;DwMYs7z#m=z}^F9Jfoqft~&z>=op=1*Lg#{DRy9 zj$e>Hq{r_KUT_E#7r$UvK%Lj^a^eGWV-8XtE(AFztheC5^@rjJkZZ!b{~de|y|1Mk z92S-`mUY&kD+P=%b^BOyKoSQZsQrs2V17FP|L@m)gr)htfVC;e?4n)q(U8&(Jf9W_ z$qvE2k^il47Uy(dKKO_wtTXfvczsj1Ehx=*yK*r9vShFG?RMvYILrb%Ue@i-(rojA zp;V;XKgr z_YBxPQ2vFP2l5Wsygp>}Kq|oIffz9JKx}mLAnlbnM0+I=+ifkqt^xtQt~}rsJmAJ% zE4bhhXs+d9fi_V}^+4U&QqbwSB3&LFEhkHuJN!7h95`DJlrVR=afbab6@b)vk}?bo zuLa=TTcAEl>4$Cyj-4mKy_QZlmKRe&EA@EKKsqk+3qcZ)rWj8*sP<>-2Fp2if+?^x zw3}jW{NJ)Jq)d??c3+rVKn7^*7O2DWu>;m&2`PI1zbxQI^k)W!tdy`9H#$H$iU-SS zy`b_Jv`BC3M$l?cmgXP-OTl#z^gi`C30MPyrSwI&gG?+)Jt&EXg~QTQaX`0o2&CC= z0Xjd>m8YAJ*ba;cqyuxhTe|gj=~k?5c5s-zSjGWruY-aM6xYZp5L6yedA=AlpXUL!5_JkHpn5A{6D@W|hMEn2X@lW*mcX<2DKn$K*O2DZIoMOP)8cu-hqjG$qyN6PK zV7IG4u<`BASkPQgMp!s#GdgGnbY|(MS;tvGBk>HKjNPsR-6peIzm-@*GNlYC z{ktLZV`3{>emwmik{>-U^Z@8G>x8+7MPKz0tOJ&k%_Pk1=!7Wq&P@S#%77fOt}c`QIz=U9NQ z&gu5C;OO+?==QPT>Ga|`?qUIH>AF}zdX+8~;I=OKsA>Cm$hY^bgINj+f6xka@W?uq z?&|?(Yh&dw#~t(Qs^ zyM0AK15SqBz5@RZyHEW$c;WRLv|XJ8bpAi62nH=v0$By!wF?=4&+>tp*VPEB8d*AB zf3zMb5%2cp`ES^L;>EI8_{@Mt1(<@E7nYR)Gtd&`K+sBfNZ>eU1@!ts7fNL@1VV>7 zUVH^l(trcV4KiBl76WqSaX0X2>2bFd5RY*1fb&OK_s1;8&eA_G>>+C+*r7wY-C-=C zRWQXX1> z_4CBX9fqBEupL~QD5g#5ZU+?@(3HI41z!UsC0m0P6g~XE9VGpt2)yAObmjple{>%N z72mFZEF)OTlET8f8M;kow0-xFcKF{qRdDU(DF5<8fEb-DB_Q4E?x}VVblA!S|8k~>W^OAu9{j}k~Kf$L%O?m-x zumF~WR&A2Nrz@EzfoIpi?ID8aW76z=y;CnReXtthgA31b`JgHh?1SP&un$1-ODO!Q z?|#sZR)&BVTv*)y`a3uV1aP{4R|44mn-d1!{a(*8!~gUTu=@j^;R^p>@nH9VjvsjU zcRj;&fA&|f`zJib<$f!O`;7;I`%gW^biX#l{TH6#a(`7EIQ)y_20r|`u(;p)8#w$0 zaJqk2EZF^5wae_lBF zip}_t^+#MQLO|tPSeD2Op$d2#@=xox5<~v*1N?$)$05s&APq@qTM2ba=(w8zXg%U< zCgX1zpb0`K|2P{+^o8eR&<<44Qqz+qGR6n^n&iM06Ple*iO);?EyhAx+DJm@Al;Y??e;mbo~Qz2WU9! zg%D^nh^s&xXg4UEF=QX90}H50jPMP(zNECjjIKYh+ZD6`xZ9%pW@qdl&^qLBm&Q-v z1pQ0EINYU|=MuIAjpc$c*FW9Yx~024ctH0|9D}X?Qv)pq;j}(h%4%K7QXLwee5S~Bt_J1YvAkSFr zR|4AD4_$AFa$iXz$TCR$gVsl2SuY0C30^N&_8;&1wB=#{{&y2tFZMYM>@`sNJi^zD zf$mG>057R}AqTq4#FeMhjidY6ambp4V{QTr$KAlo;E%h37r-BP1226CmD#9g4T920 zw)Bc%~&D@qL@l}K@>}=+KxX)t_+8Fd;ya$z$AyUE5l)sv_Od~h*BtF z+u;Hd>vjaquxmH(0QHU;%h+~EfJ8GCj9nRCTxJJVJv&v5T^V*67`rm?yPWDiczA~e zNW~5T5D9Y5nZ`#rn!ZLh}T^YJRzDQawrx^h4&QkfVSFr^Bd+&~Mk{8-|8 zMLMhxmGGxc=;mlXz;et{fYJI;>F2{|&U6cQJFw)g$CG5xDK?8RV=turS?E?+jpxeiY-#*az9`sBnE8G@A%~u628$|OD z6AtsC>#cuwn|Hgj^vbkZe=c!B%i+Ep#Ab0fP!|7Ox*xnb=Le+m3u>7E33wq0-sQ{F zeLjov#aBj9=~$u-IiD50&Pp7zM3nKrJIiY^@Y+dGOOb`4yYvr82(&&FtQxxLPUyec zi{;r23|R_cFFLY80nY=v3KO&d6uCSJ?S9iu;rtfre1}aqsB{F)KW%6|S;EuJvgtU> zCQu8hld;=oQ|tc{q5tMD_`nVefAKyG>@e^R*Pn}yA&u+7(mP~6ydNs!g1FRAjXT#ECz;d(1K9V1+A{&ON3khmw0vi3UnJnhRe^t_`d1if6x}Y zat=r;WH{z7z;N6hQb~dnEW>fg&7_?cC?{)xDg?v;z3-QlPF|3uk%&`=KzFejf3qxR zDN~26Z(#1W*#PymL>4GI!e9K%g!tOJn5F1`Jal6h)We|m%z%xj?Ye?F9wH6eTW|j2 zz-5q|v5jbE`GUt2l6_(AF;M(p4DYRA1g#f=_W!!Mw2ue;FXd=G2|nG2-}Pe9i^Mk| zBYD2xkUroL4=sMqK&s(xSoIF7UqRy&pm7PvmBrxQmJ$IkF2_UH*p&+YXKy~n0unEM z5pN7yG#?LMk_KLa0$NWD9uP48*5&Wea*Wc*9Tb65H<6X%mRew-Rod$3ROi znU8mQfX?UL7a!Mr;(v7PVbDr+^!33!-M$>H2kN*%^^0eYN9%$5AKi{Btp`e(yB!r! zi+o7_3rlOR&|v5;P^gpnUy$3rSP!4Erk3UQE#ZHL7 zA?6(iP11lv3POOxOD4?tTb4#=>6;h5Fk?z2Ao~$P0apPNEdAJ7`UVnqF9Kc!MuA+w z0SP#f|D}JjL|(krMGm`QP=NhP{r4X{EzlYJrS*2H1W4={Sgh0a3uvh4Hh;@a(9wd< zoHiW%t)QUHQh%`oY!FMAGiNyXa3dS$5)K;{{#MXQjakvq!p->qi#stON3eiSNPG&a z!%DyWFOz_*<4OGb|9@izsJdk=73x0sVx#B3{{dO~FFe6Ub3n~#z0KbOO33{Coi(g~ zl-6W`(!q;Xn6V|<-Odu7u1_E}(~E!?(y{;kgLd;fr-Cfz0pG`6YWTnOM^?aVa~sZ5 z_AHN=cK`qX|K`la$lq!Mx_7wrPnO_|%R11Ii3Ue!x9<~c50MgHkjCg2+aQuzu`hU_ zVST%VxjQ;1E86|VFK`kC`LI-H+@T0pHlsyDM?wtv-4(49)*8anwRO*lnO}VYNOVvRF z{73>~Ae#kW{LupY9d0uy+Do2vIdgVbi*(lhfS$NA1(ak#M{_cC|AsD1dZ7f)KA?DQ zIm`e$MI5|;#MI3(qsjs%4g z=sZ%lZg+`J*9V~WaJ{Zi0$wCWfl}^=7oDIfw-2DT^QCWEzm>B8Fa3}e@S3;V^?|h; zI7NQQihiL2v8KE9OIGZQa;Q`PmoRtN=eT7>cb0y6kp#1dzttU_E?@BP_tpSytjCMo7Us5;}VWK>HGUTO&Z!izA^RZ$lG@!hi7oge;L4u@L)=4}ea7Is0ODB4nw3 z7(~H~IMCc3XtKZcTPaLT3rWlgq7IUX6hDFz5r2z1BW#%zBY&$Ds3QYfIM3h04`w<* zPo;5yTGizSF4pdXwr{AvII98jKTB|U7E{=Zh6L!rJRCO6B|J7PB^);V{H>Rm7#NIi zcmKG8DFG4@-C)bCokdCn zphiW%SP4;^75m~p)Nzn>_aE%|tmqdn!a#8i3Xs0XRs{!(|k}&As^6 zlhORH2ce$a2$RKfyi``n3sbN~9P!bhRu9;?2B-#5aw`?-c5{G-R~l4?f4`qbH#kll ztq<0jbz?JG=EZGQkQX?>wNCeOxFL#ALrQsDZ1lXfl-Lfdi?(C43sM*5sDc_-pgVlJj~kzjkB)n>Jr)vTkQxZopBUirQBeDxqWML% z{%O|#jMK>dK^`nS-auE4zv--f0qHaJx_*Ezcgg@wS_QnAR*7^BhWU&77zXg^j^-~) zV;C5^**o1?SV0Oq-8qiA^DrED{R3*Y9(M=L*%XGVQXuGpC|6nXu$ztq2 z|3bP2JX9`z%$2>93KB5r-Y65~_eL8?J=sNn^53aGzH>39fX{ov_FgYH`B7RK%fmTp&p@NNdsIabw> zHE|+gMz>!)j|7zfkQ20G5AiT`vo{}LDdFw*<>@pq{sy{T&4VLsGvkZ>XzD-_55?gA zB~SAk@OeSt_VBhB?=o*J-8pi@o$m-4*e1s^HM(Q=?v3VIMy=@&=kkDb0C zBbYydbeA5&cR&!h|Hcyxnv(9m*?p`t_7CU^rWXuHAQ_AWG&y$)R408a5$Zmd20t$u zlE1o7cQbZJ@^r?2>2&4j4CLuFJPuh#2x^jnrsumqhl6J5el-7QEK38;(1B)hkAt?P zIr4Oa4)B%juKfer{w4&Oo&(9agJnQxxcun#VCl4IJy{|Fo}+^<2=yYW1b^{$& z0y=er8fTEO$`MaBt zLqKqz7xMrAe|G5n-8zU;$ax_Pts&=yK*u|=&)=~VGk^Dd8R7XmV~}m&{!w=*=(u^F zZZ8&VKb8_!BhUy=w@|lP^GlW@!EPpNwo(Dm;Xub&nqPv>2m1M^#Hx$Qimg<=`RCsf z{Vpd)D>uecspg;mN|d^sn5^8GN_m@q{x1>ja$>e}V=m!6?h0N_-Q~&=7kl`)E9hb( z1_%c-pM&MR36jo>0F8HnlEz3npMs+Le2}dd0-YOoC@j4DV{Zj~y-K$)hxYM+pci*d z|NRf>KKCNE>i>VxR0U#T1}HN^(hp?FH{7yVqs(wZx3dcPMXtAS^B2+K#5;Bd$-Aq&Qj3w2WHUbd$#U#(B{?u0FLg^6O69+otVRTn%!9b zcZPz_Xax0)O1Zn)y3b`X{uk&DJ>hH}&r-CbyYzmy?~yKd7UoZkp>KLaZ*;gm2kizr z0J1AfBB-NQ>5RS5&9kAK5#$`-BfX(#I$f`1@dUxlDB07^-tBvWIrfTUH_HaMZU-Lb6P>;% ztjk%74jA9IjAtpcMXa}Ghny_LGNaprr`v%8binn8Zr3B-0^s;O5)cNt-IBj0<^TWx zV1J!~+<&Ll9eX5gLN|Lb*eTr(ETCxTZ?Of99e^&y13S+RWa;ef#8Nb z@@x&HyhLjc6K-#y-d_-iykA5Wv^x&8B?G!Yu2-bF^->9IH&1&fmjmb+rej5KK%E%S zSv;U532slInn%d~tpDI^F9iOV@_@GPae?}dM??_o0h`}gfSW(HJe{s5x?M#&UC(s8 za%5R_x?bsK&&V+c9q%sD>3XBr^+dpN*B79nXXt1UbV&0>IQVD_fz|`1ZehKyC$d-q zUV!!^fDZWQX#U4oA_vm?;v(q6iz6&MK-Z$Se&cuf(0wcpbZ*PxZr3}V>|iD9AW9&@ zAn$_PgP|PVhYr5r>psPN=-^AqgRgj)4>lj-Wj+M*0w{lmfo3N_!w$)yv&+k6TEFqP zM1YvCJk38?`P+R!rq=T?@V8ijSoRF1T+Q_?4E(LyAVq#GjX!5GF));JHveGZZxshA zsTW`<6<*jA;>ytJE&+BhWQM6bOrz7TGxSfVn?`W+Pc8n|C7||HodgqqD`>_riva{* zSm-b?bh;aWF2iyY>GtC|#={#Nk3s~bm$2s237 z52T?(gppWw8)#s;J4~ec2WKg3ugA~V;?4U&mrya)a)Pc-V=+GYnsp~=-n`q5ql1SD zZtO7@M(+P^BFEiW3KfhbiUX<{%0c0=u-iLWiM5DCmC~$NzGJ z7wKA{HX%=^yTNfc1#tRzV{rwA)KXAE=x1>7Ay4B=h6)A-Sa7R!PXk3o^Dm|v$>v{d zwUE=XUh^9tX#T~O4FbYmoCQk@fRbSr z!wY>ikYbR#o9kFy`CCtboa-h73JCs|Ees%C4kF!tBAvb*mTn5gIiUHnI1%eOo>HrB zkTM;H5^3w3W#XU?<;`H`g8`txh|+`^8vdeBnSr4@P6Tu~!Rbz44(m9c5_L$_cLxY` zyD4+JABHdvk)?qxQ=3sHK7cN7*a5;$iFxU&z z;l_u*IIYCM0Ln5)Sh{anhw+qXfZXY)(Cr|@zm0_hbXPOD-Ovg005sFIo-CdHnjPAb zh1ml3$Kf(@?ZaSyKrGUOThv_3!GP?AXowf0`CCDg^I$_%82DS}fntalFI-WFg;4kl z4qRSPp@J8(;TD0tz<%6~B^~1S^wLBUuZ&%YX%j{vB%vsK&_c* z&_pw6<^@!ccgOOSf^L8{KG6J=WfvzXUHc#E72z~KsePgOH_Hx)$cbJSY3+m7hw5dT zf3uW`gG={lwBkLMr`wIi7F-)hflMxu!ln!)Q!3e9SHe,TdZRf%9t{4Jni_wF`O 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 R;R{0nBMr<8&B)xF3;-fjcL)Fg literal 345600 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⋘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