commit
96d5670b18
10
.gitattributes
vendored
Normal file
10
.gitattributes
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
*.sp text eol=native
|
||||
*.inc text eol=native
|
||||
|
||||
*.txt text eol=crlf
|
||||
*.cfg text eol=crlf
|
||||
|
||||
*.sh text eol=lf
|
||||
*.bat text eol=crlf
|
||||
|
||||
Makefile text eol=lf
|
4
Makefile
4
Makefile
@ -4,8 +4,8 @@
|
||||
SOURCEDIR=src
|
||||
SMINCLUDES=env/include
|
||||
BUILDDIR=build
|
||||
SPCOMP_LINUX=env/linux/bin/spcomp-1.4.1
|
||||
SPCOMP_DARWIN=env/darwin/bin/spcomp-1.4.1
|
||||
SPCOMP_LINUX=env/linux/bin/spcomp-1.6.0
|
||||
SPCOMP_DARWIN=env/darwin/bin/spcomp-1.6.0
|
||||
DOS2UNIX_LINUX=dos2unix -p
|
||||
DOS2UNIX_DARWIN=env/darwin/bin/dos2unix -p
|
||||
VERSIONDUMP=./updateversion.sh
|
||||
|
6
build.sh
6
build.sh
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
VERSION="zombiereloaded-3.1"
|
||||
REVISION=$(hg id -n)
|
||||
REVISION=$(git rev-parse --short HEAD)
|
||||
|
||||
SYNTAX="Usage: $0 [--patch <base rev>]"
|
||||
|
||||
@ -18,7 +18,7 @@ SOURCE_DEST=$RELEASEDIR/addons/sourcemod/scripting
|
||||
DOCS_DEST=$RELEASEDIR/zrdocs
|
||||
PLUGINDIR=$RELEASEDIR/addons/sourcemod/plugins
|
||||
EXTENSIONDIR=$RELEASEDIR/addons/sourcemod/extensions
|
||||
ZIPFILE=$VERSION-r$REVISION.zip
|
||||
ZIPFILE=$VERSION-$REVISION.zip
|
||||
|
||||
MAKEPATCH=false
|
||||
|
||||
@ -47,7 +47,7 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ZIPFILE=$VERSION-patch-r$PATCHREV-r$REVISION.zip
|
||||
ZIPFILE=$VERSION-patch-$PATCHREV-$REVISION.zip
|
||||
else
|
||||
echo "Missing base revision number. $SYNTAX"
|
||||
exit 1
|
||||
|
@ -3,7 +3,7 @@
|
||||
set SOURCEDIR=src
|
||||
set SMINCLUDES=env\include
|
||||
set BUILDDIR=build
|
||||
set SPCOMP=env\win32\bin\spcomp-1.4.1.exe
|
||||
set SPCOMP=env\win32\bin\spcomp-1.6.0.exe
|
||||
set VERSIONDUMP=updateversion.bat
|
||||
|
||||
:: Dump version and revision information first.
|
||||
|
23
docs/codestyle.txt
Normal file
23
docs/codestyle.txt
Normal file
@ -0,0 +1,23 @@
|
||||
Zombie:Reloaded Code Guidelines
|
||||
===============================
|
||||
|
||||
This is a draft of coding guidelines for Zombie:Reloaded. If something is not
|
||||
mentioned here, study the existing code to ensure consistency.
|
||||
|
||||
Most of the code was written before we decided on the code style, so we may even
|
||||
break our own rules according to this document.
|
||||
|
||||
Highly recommended book:
|
||||
Clean Code: A Handbook of Agile Software Craftsmanship (2008)
|
||||
Robert C. Martin
|
||||
|
||||
* Curly braces on separate lines.
|
||||
* Indent with 4 spaces instead of tabs (configure your editor).
|
||||
* Unix line endings.
|
||||
* Always use curly braces with control statements (if, for, while, do).
|
||||
* UTF-8 file encoding without BOM.
|
||||
* Extract code into multiple functions if code is too complex. ZR is still bad
|
||||
at following this rule.
|
||||
* If the code needs comments, it should be refactored/renamed to better explain
|
||||
what it's doing. ZR has a lot of unnecessary comments, mostly because it's not
|
||||
following the single purpose-function rule above.
|
BIN
env/darwin/bin/spcomp-1.6.0
vendored
Executable file
BIN
env/darwin/bin/spcomp-1.6.0
vendored
Executable file
Binary file not shown.
18
env/include/admin.inc
vendored
18
env/include/admin.inc
vendored
@ -138,7 +138,7 @@ enum ImmunityType
|
||||
*/
|
||||
enum GroupId
|
||||
{
|
||||
INVALID_GROUP_ID = -1, /**< An invalid/nonexistant group */
|
||||
INVALID_GROUP_ID = -1, /**< An invalid/non-existent group */
|
||||
};
|
||||
|
||||
/**
|
||||
@ -146,7 +146,7 @@ enum GroupId
|
||||
*/
|
||||
enum AdminId
|
||||
{
|
||||
INVALID_ADMIN_ID = -1, /**< An invalid/nonexistant admin */
|
||||
INVALID_ADMIN_ID = -1, /**< An invalid/non-existent admin */
|
||||
};
|
||||
|
||||
/**
|
||||
@ -169,7 +169,7 @@ enum AdminCachePart
|
||||
};
|
||||
|
||||
/**
|
||||
* Called when part of the cache which needs to be rebuilt.
|
||||
* Called when part of the cache needs to be rebuilt.
|
||||
*
|
||||
* @param part Part of the admin cache to rebuild.
|
||||
*/
|
||||
@ -324,7 +324,7 @@ native bool:GetAdmGroupCmdOverride(GroupId:id, const String:name[], OverrideType
|
||||
* Registers an authentication identity type. You normally never need to call this except for
|
||||
* very specific systems.
|
||||
*
|
||||
* @param codename Codename to use for your authentication type.
|
||||
* @param name Codename to use for your authentication type.
|
||||
* @noreturn
|
||||
*/
|
||||
native RegisterAuthIdentType(const String:name[]);
|
||||
@ -347,7 +347,7 @@ native AdminId:CreateAdmin(const String:name[]="");
|
||||
* @param maxlength Maximum size of string buffer.
|
||||
* @return Number of bytes written.
|
||||
*/
|
||||
native GetAdminUsername(AdminId:id, const String:name[], maxlength);
|
||||
native GetAdminUsername(AdminId:id, String:name[], maxlength);
|
||||
|
||||
/**
|
||||
* Binds an admin to an identity for fast lookup later on. The bind must be unique.
|
||||
@ -425,7 +425,7 @@ native GroupId:GetAdminGroup(AdminId:id, index, const String:name[], maxlength);
|
||||
* Sets a password on an admin.
|
||||
*
|
||||
* @param id AdminId index of the admin.
|
||||
* @param passwd String containing the password.
|
||||
* @param password String containing the password.
|
||||
* @noreturn
|
||||
*/
|
||||
native SetAdminPassword(AdminId:id, const String:password[]);
|
||||
@ -434,12 +434,12 @@ native SetAdminPassword(AdminId:id, const String:password[]);
|
||||
* Gets an admin's password.
|
||||
*
|
||||
* @param id AdminId index of the admin.
|
||||
* @param name Optional buffer to store the admin's password.
|
||||
* @param buffer Optional buffer to store the admin's password.
|
||||
* @param maxlength Maximum size of the output name buffer.
|
||||
* Note: This will safely chop UTF-8 strings.
|
||||
* @return True if there was a password set, false otherwise.
|
||||
*/
|
||||
native bool:GetAdminPassword(AdminId:id, const String:buffer[]="", maxlength=0);
|
||||
native bool:GetAdminPassword(AdminId:id, String:buffer[]="", maxlength=0);
|
||||
|
||||
/**
|
||||
* Attempts to find an admin by an auth method and an identity.
|
||||
@ -537,7 +537,7 @@ native ReadFlagString(const String:flags[], &numchars=0);
|
||||
/**
|
||||
* Tests whether one admin can target another.
|
||||
*
|
||||
* The hueristics for this check are as follows:
|
||||
* The heuristics for this check are as follows:
|
||||
* 0. If the targeting AdminId is INVALID_ADMIN_ID, targeting fails.
|
||||
* 1. If the targeted AdminId is INVALID_ADMIN_ID, targeting succeeds.
|
||||
* 2. If the targeted AdminId is the same as the targeting AdminId,
|
||||
|
4
env/include/adt_array.inc
vendored
4
env/include/adt_array.inc
vendored
@ -210,14 +210,14 @@ native SetArrayCell(Handle:array, index, any:value, block=0, bool:asChar=false);
|
||||
* @return Number of characters copied.
|
||||
* @error Invalid Handle or invalid index.
|
||||
*/
|
||||
native SetArrayString(Handle:array, index, const String:buffer[]);
|
||||
native SetArrayString(Handle:array, index, const String:value[]);
|
||||
|
||||
/**
|
||||
* Sets an array of cells in an array.
|
||||
*
|
||||
* @param array Array Handle.
|
||||
* @param index Index in the array.
|
||||
* @param buffer Array to copy.
|
||||
* @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.
|
||||
|
79
env/include/adt_trie.inc
vendored
79
env/include/adt_trie.inc
vendored
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* vim: set ts=4 :
|
||||
* vim: set ts=4 sw=4 tw=99 noet :
|
||||
* =============================================================================
|
||||
* SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved.
|
||||
* =============================================================================
|
||||
@ -36,35 +36,37 @@
|
||||
#define _adt_trie_included
|
||||
|
||||
/**
|
||||
* Creates a Trie structure. A trie is a data storage object that maps any value to a
|
||||
* string of text. It features very fast lookup and deletion, but grows very slow for
|
||||
* insertion once tens of thousands of items are added.
|
||||
* Creates a hash map. A hash map is a container that can map strings (called
|
||||
* "keys") to arbitrary values (cells, arrays, or strings). Keys in a hash map
|
||||
* are unique. That is, there is at most one entry in the map for a given key.
|
||||
*
|
||||
* Keys in Tries are unique. That is, each key may only have one value. Unlike arrays,
|
||||
* Tries cannot be iterated right now. Since the contents are known to be unique, to
|
||||
* work around this, you can use ADT Arrays to store a list of keys known to be in a
|
||||
* Trie.
|
||||
* Insertion, deletion, and lookup in a hash map are all considered to be fast
|
||||
* operations, amortized to O(1), or constant time.
|
||||
*
|
||||
* @return New Trie Handle, which must be freed via CloseHandle().
|
||||
* The word "Trie" in this API is historical. As of SourceMod 1.6, tries have
|
||||
* been internally replaced with hash tables, which have O(1) insertion time
|
||||
* instead of O(n).
|
||||
*
|
||||
* @return New Map Handle, which must be freed via CloseHandle().
|
||||
*/
|
||||
native Handle:CreateTrie();
|
||||
|
||||
/**
|
||||
* Sets a value in a Trie, either inserting a new entry or replacing an old one.
|
||||
* Sets a value in a hash map, either inserting a new entry or replacing an old one.
|
||||
*
|
||||
* @param trie Trie 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:trie, const String:key[], any:value, bool:replace=true);
|
||||
native bool:SetTrieValue(Handle:map, const String:key[], any:value, bool:replace=true);
|
||||
|
||||
/**
|
||||
* Sets an array value in a Trie, either inserting a new entry or replacing an old one.
|
||||
* Sets an array value in a Map, either inserting a new entry or replacing an old one.
|
||||
*
|
||||
* @param trie Trie Handle.
|
||||
* @param map Map Handle.
|
||||
* @param key Key string.
|
||||
* @param array Array to store.
|
||||
* @param num_items Number of items in the array.
|
||||
@ -72,36 +74,36 @@ native bool:SetTrieValue(Handle:trie, const String:key[], any:value, bool:replac
|
||||
* @return True on success, false on failure.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native bool:SetTrieArray(Handle:trie, const String:key[], const any:array[], num_items, bool:replace=true);
|
||||
native bool:SetTrieArray(Handle:map, const String:key[], const any:array[], num_items, bool:replace=true);
|
||||
|
||||
/**
|
||||
* Sets a string value in a Trie, either inserting a new entry or replacing an old one.
|
||||
* Sets a string value in a Map, either inserting a new entry or replacing an old one.
|
||||
*
|
||||
* @param trie Trie 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:trie, const String:key[], const String:value[], bool:replace=true);
|
||||
native bool:SetTrieString(Handle:map, const String:key[], const String:value[], bool:replace=true);
|
||||
|
||||
/**
|
||||
* Retrieves a value in a Trie.
|
||||
* Retrieves a value in a Map.
|
||||
*
|
||||
* @param trie Trie Handle.
|
||||
* @param map Map Handle.
|
||||
* @param key Key string.
|
||||
* @param val Variable to store value.
|
||||
* @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:trie, const String:key[], &any:value);
|
||||
native bool:GetTrieValue(Handle:map, const String:key[], &any:value);
|
||||
|
||||
/**
|
||||
* Retrieves an array in a Trie.
|
||||
* Retrieves an array in a Map.
|
||||
*
|
||||
* @param trie Trie Handle.
|
||||
* @param map Map Handle.
|
||||
* @param key Key string.
|
||||
* @param array Buffer to store array.
|
||||
* @param max_size Maximum size of array buffer.
|
||||
@ -110,12 +112,12 @@ native bool:GetTrieValue(Handle:trie, const String:key[], &any:value);
|
||||
* as a value or string (not an array).
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native bool:GetTrieArray(Handle:trie, const String:key[], any:array[], max_size, &size=0);
|
||||
native bool:GetTrieArray(Handle:map, const String:key[], any:array[], max_size, &size=0);
|
||||
|
||||
/**
|
||||
* Retrieves a string in a Trie.
|
||||
* Retrieves a string in a Map.
|
||||
*
|
||||
* @param trie Trie Handle.
|
||||
* @param map Map Handle.
|
||||
* @param key Key string.
|
||||
* @param value Buffer to store value.
|
||||
* @param max_size Maximum size of string buffer.
|
||||
@ -124,34 +126,31 @@ native bool:GetTrieArray(Handle:trie, const String:key[], any:array[], max_size,
|
||||
* as a value or array (not a string).
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native bool:GetTrieString(Handle:trie, const String:key[], String:value[], max_size, &size=0);
|
||||
native bool:GetTrieString(Handle:map, const String:key[], String:value[], max_size, &size=0);
|
||||
|
||||
/**
|
||||
* Removes a key entry from a Trie.
|
||||
* Removes a key entry from a Map.
|
||||
*
|
||||
* @param trie Trie Handle.
|
||||
* @param map Map Handle.
|
||||
* @param key Key string.
|
||||
* @return True on success, false if the value was never set.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native RemoveFromTrie(Handle:trie, const String:key[]);
|
||||
native RemoveFromTrie(Handle:map, const String:key[]);
|
||||
|
||||
/**
|
||||
* Clears all entries from a Trie.
|
||||
* Clears all entries from a Map.
|
||||
*
|
||||
* @param trie Trie Handle.
|
||||
* @param map Map Handle.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native ClearTrie(Handle:trie);
|
||||
native ClearTrie(Handle:map);
|
||||
|
||||
/**
|
||||
* Retrieves the number of elements in a trie.
|
||||
* Retrieves the number of elements in a map.
|
||||
*
|
||||
* Note that trie items are not enumerable/iteratable. If you need to
|
||||
* retrieve the elements in a trie, store its keys in an ADT Array.
|
||||
*
|
||||
* @param trie Trie Handle.
|
||||
* @param map Map Handle.
|
||||
* @return Number of elements in the trie.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native GetTrieSize(Handle:trie);
|
||||
native GetTrieSize(Handle:map);
|
||||
|
16
env/include/basecomm.inc
vendored
16
env/include/basecomm.inc
vendored
@ -35,6 +35,22 @@
|
||||
#endif
|
||||
#define _basecomm_included
|
||||
|
||||
/**
|
||||
* Called when a client is muted or unmuted
|
||||
*
|
||||
* @param client Client index
|
||||
* @param muteState True if client was muted, false otherwise
|
||||
*/
|
||||
forward BaseComm_OnClientMute(client, bool:muteState);
|
||||
|
||||
/**
|
||||
* Called when a client is gagged or ungagged
|
||||
*
|
||||
* @param client Client index
|
||||
* @param gagState True if client was gaged, false otherwise
|
||||
*/
|
||||
forward BaseComm_OnClientGag(client, bool:gagState);
|
||||
|
||||
/**
|
||||
* Returns whether or not a client is gagged
|
||||
*
|
||||
|
5
env/include/clientprefs.inc
vendored
5
env/include/clientprefs.inc
vendored
@ -162,8 +162,8 @@ forward OnClientCookiesCached(client);
|
||||
* Cookie Menu Callback prototype
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param action CookeMenuAction being performed.
|
||||
* @param data Info data passed.
|
||||
* @param action CookieMenuAction being performed.
|
||||
* @param info Info data passed.
|
||||
* @param buffer Outbut buffer.
|
||||
* @param maxlen Max length of the output buffer.
|
||||
*/
|
||||
@ -221,7 +221,6 @@ native Handle:GetCookieIterator();
|
||||
* @param access Access level of the cookie.
|
||||
* @param desc Cookie description buffer.
|
||||
* @param descLen Cookie description buffer size.
|
||||
* @param
|
||||
* @return True on success, false if there are no more commands.
|
||||
*/
|
||||
native bool:ReadCookieIterator(Handle:iter,
|
||||
|
54
env/include/clients.inc
vendored
54
env/include/clients.inc
vendored
@ -209,6 +209,21 @@ forward OnClientPostAdminCheck(client);
|
||||
*/
|
||||
native GetMaxClients();
|
||||
|
||||
/**
|
||||
* Returns the maximum number of human players allowed on the server. This is
|
||||
* a game-specific function used on newer games to limit the number of humans
|
||||
* that can join a game and can be lower than MaxClients. It is the number often
|
||||
* reflected in the server browser or when viewing the output of the status command.
|
||||
* On unsupported games or modes without overrides, it will return the same value
|
||||
* as MaxClients.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
native GetMaxHumanPlayers();
|
||||
|
||||
/**
|
||||
* Returns the client count put in the server.
|
||||
*
|
||||
@ -232,7 +247,7 @@ native bool:GetClientName(client, String:name[], maxlen);
|
||||
* Retrieves a client's IP address.
|
||||
*
|
||||
* @param client Player index.
|
||||
* @param name Buffer to store the client's ip address.
|
||||
* @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.
|
||||
@ -246,10 +261,25 @@ native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
|
||||
* @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.
|
||||
*/
|
||||
native bool:GetClientAuthString(client, String:auth[], maxlen);
|
||||
native bool:GetClientAuthString(client, String:auth[], maxlen, bool:validate=true);
|
||||
|
||||
/**
|
||||
* Returns the client's Steam account ID.
|
||||
*
|
||||
* @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 GetSteamAccountID(client, bool:validate=true);
|
||||
|
||||
/**
|
||||
* Retrieves a client's user id, which is an index incremented for every client
|
||||
@ -590,7 +620,7 @@ native GetClientFrags(client);
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @return Data rate.
|
||||
* @error Invalid client index, client not in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native GetClientDataRate(client);
|
||||
|
||||
@ -599,7 +629,7 @@ native GetClientDataRate(client);
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @return True if client is timing out, false otherwise.
|
||||
* @error Invalid client index, client not in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native bool:IsClientTimingOut(client);
|
||||
|
||||
@ -608,7 +638,7 @@ native bool:IsClientTimingOut(client);
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @return Connection time.
|
||||
* @error Invalid client index, client not in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native Float:GetClientTime(client);
|
||||
|
||||
@ -618,7 +648,7 @@ native Float:GetClientTime(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 in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native Float:GetClientLatency(client, NetFlow:flow);
|
||||
|
||||
@ -628,7 +658,7 @@ native Float:GetClientLatency(client, NetFlow:flow);
|
||||
* @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 in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native Float:GetClientAvgLatency(client, NetFlow:flow);
|
||||
|
||||
@ -638,7 +668,7 @@ native Float:GetClientAvgLatency(client, NetFlow:flow);
|
||||
* @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 in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native Float:GetClientAvgLoss(client, NetFlow:flow);
|
||||
|
||||
@ -648,7 +678,7 @@ native Float:GetClientAvgLoss(client, NetFlow:flow);
|
||||
* @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 in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native Float:GetClientAvgChoke(client, NetFlow:flow);
|
||||
|
||||
@ -658,7 +688,7 @@ native Float:GetClientAvgChoke(client, NetFlow:flow);
|
||||
* @param client Player's index.
|
||||
* @param flow Traffic flowing direction.
|
||||
* @return Data flow.
|
||||
* @error Invalid client index, client not in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native Float:GetClientAvgData(client, NetFlow:flow);
|
||||
|
||||
@ -668,7 +698,7 @@ native Float:GetClientAvgData(client, NetFlow:flow);
|
||||
* @param client Player's index.
|
||||
* @param flow Traffic flowing direction.
|
||||
* @return Packet frequency.
|
||||
* @error Invalid client index, client not in game, or fake client.
|
||||
* @error Invalid client index, client not connected, or fake client.
|
||||
*/
|
||||
native Float:GetClientAvgPackets(client, NetFlow:flow);
|
||||
|
||||
@ -733,6 +763,7 @@ native ChangeClientTeam(client, team);
|
||||
/**
|
||||
* Returns the clients unique serial identifier.
|
||||
*
|
||||
* @param client Client index.
|
||||
* @return Serial number.
|
||||
*/
|
||||
native GetClientSerial(client);
|
||||
@ -740,6 +771,7 @@ native GetClientSerial(client);
|
||||
/**
|
||||
* Returns the client index by its serial number.
|
||||
*
|
||||
* @param serial Serial number.
|
||||
* @return Client index, or 0 for invalid serial.
|
||||
*/
|
||||
native GetClientFromSerial(serial);
|
||||
|
39
env/include/console.inc
vendored
39
env/include/console.inc
vendored
@ -160,7 +160,7 @@ native ServerExecute();
|
||||
*
|
||||
* @param client Index of the client.
|
||||
* @param fmt Format of the client command.
|
||||
* @param ... Format parameters/
|
||||
* @param ... Format parameters
|
||||
* @noreturn
|
||||
* @error Invalid client index, or client not connected.
|
||||
*/
|
||||
@ -324,7 +324,7 @@ native FormatActivitySource(client, target, const String:namebuf[], maxlength);
|
||||
/**
|
||||
* Called when a server-only command is invoked.
|
||||
*
|
||||
* @params args Number of arguments that were in the argument string.
|
||||
* @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."
|
||||
*/
|
||||
@ -358,7 +358,7 @@ functag public Action:ConCmd(client, args);
|
||||
* Creates a console command, or hooks an already existing one.
|
||||
*
|
||||
* Console commands are case sensitive. However, if the command already exists in the game,
|
||||
* the a client may enter the command in any case. SourceMod corrects for this automatically,
|
||||
* 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.
|
||||
@ -703,7 +703,7 @@ funcenum ConVarQueryFinished
|
||||
* Starts a query to retrieve the value of a client's console variable.
|
||||
*
|
||||
* @param client Player index.
|
||||
* @param name Name of client convar to query.
|
||||
* @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.
|
||||
@ -938,3 +938,34 @@ native bool:AddCommandListener(CommandListener:callback, const String:command[]=
|
||||
*/
|
||||
native RemoveCommandListener(CommandListener:callback, const String:command[]="");
|
||||
|
||||
/**
|
||||
* Returns true if the supplied command exists.
|
||||
*
|
||||
* @param command Command to find.
|
||||
* @return True if command is found, false otherwise.
|
||||
*/
|
||||
stock bool:CommandExists(const String:command[])
|
||||
{
|
||||
return (GetCommandFlags(command) != INVALID_FCVAR_FLAGS);
|
||||
}
|
||||
/**
|
||||
* Global listener for the chat commands.
|
||||
*
|
||||
* @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.
|
||||
*/
|
||||
forward Action:OnClientSayCommand(client, const String:command[], const String:sArgs[]);
|
||||
|
||||
/**
|
||||
* Global post listener for the chat commands.
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param command Command name.
|
||||
* @param sArgs Chat argument string.
|
||||
*
|
||||
*/
|
||||
forward OnClientSayCommand_Post(client, const String:command[], const String:sArgs[]);
|
||||
|
61
env/include/core.inc
vendored
61
env/include/core.inc
vendored
@ -167,6 +167,67 @@ public __ext_core_SetNTVOptional()
|
||||
MarkNativeAsOptional("RequireFeature");
|
||||
MarkNativeAsOptional("AddCommandListener");
|
||||
MarkNativeAsOptional("RemoveCommandListener");
|
||||
|
||||
MarkNativeAsOptional("BfWriteBool");
|
||||
MarkNativeAsOptional("BfWriteByte");
|
||||
MarkNativeAsOptional("BfWriteChar");
|
||||
MarkNativeAsOptional("BfWriteShort");
|
||||
MarkNativeAsOptional("BfWriteWord");
|
||||
MarkNativeAsOptional("BfWriteNum");
|
||||
MarkNativeAsOptional("BfWriteFloat");
|
||||
MarkNativeAsOptional("BfWriteString");
|
||||
MarkNativeAsOptional("BfWriteEntity");
|
||||
MarkNativeAsOptional("BfWriteAngle");
|
||||
MarkNativeAsOptional("BfWriteCoord");
|
||||
MarkNativeAsOptional("BfWriteVecCoord");
|
||||
MarkNativeAsOptional("BfWriteVecNormal");
|
||||
MarkNativeAsOptional("BfWriteAngles");
|
||||
MarkNativeAsOptional("BfReadBool");
|
||||
MarkNativeAsOptional("BfReadByte");
|
||||
MarkNativeAsOptional("BfReadChar");
|
||||
MarkNativeAsOptional("BfReadShort");
|
||||
MarkNativeAsOptional("BfReadWord");
|
||||
MarkNativeAsOptional("BfReadNum");
|
||||
MarkNativeAsOptional("BfReadFloat");
|
||||
MarkNativeAsOptional("BfReadString");
|
||||
MarkNativeAsOptional("BfReadEntity");
|
||||
MarkNativeAsOptional("BfReadAngle");
|
||||
MarkNativeAsOptional("BfReadCoord");
|
||||
MarkNativeAsOptional("BfReadVecCoord");
|
||||
MarkNativeAsOptional("BfReadVecNormal");
|
||||
MarkNativeAsOptional("BfReadAngles");
|
||||
MarkNativeAsOptional("BfGetNumBytesLeft");
|
||||
|
||||
MarkNativeAsOptional("PbReadInt");
|
||||
MarkNativeAsOptional("PbReadFloat");
|
||||
MarkNativeAsOptional("PbReadBool");
|
||||
MarkNativeAsOptional("PbReadString");
|
||||
MarkNativeAsOptional("PbReadColor");
|
||||
MarkNativeAsOptional("PbReadAngle");
|
||||
MarkNativeAsOptional("PbReadVector");
|
||||
MarkNativeAsOptional("PbReadVector2D");
|
||||
MarkNativeAsOptional("PbGetRepeatedFieldCount");
|
||||
MarkNativeAsOptional("PbSetInt");
|
||||
MarkNativeAsOptional("PbSetFloat");
|
||||
MarkNativeAsOptional("PbSetBool");
|
||||
MarkNativeAsOptional("PbSetString");
|
||||
MarkNativeAsOptional("PbSetColor");
|
||||
MarkNativeAsOptional("PbSetAngle");
|
||||
MarkNativeAsOptional("PbSetVector");
|
||||
MarkNativeAsOptional("PbSetVector2D");
|
||||
MarkNativeAsOptional("PbAddInt");
|
||||
MarkNativeAsOptional("PbAddFloat");
|
||||
MarkNativeAsOptional("PbAddBool");
|
||||
MarkNativeAsOptional("PbAddString");
|
||||
MarkNativeAsOptional("PbAddColor");
|
||||
MarkNativeAsOptional("PbAddAngle");
|
||||
MarkNativeAsOptional("PbAddVector");
|
||||
MarkNativeAsOptional("PbAddVector2D");
|
||||
MarkNativeAsOptional("PbRemoveRepeatedFieldValue");
|
||||
MarkNativeAsOptional("PbReadMessage");
|
||||
MarkNativeAsOptional("PbReadRepeatedMessage");
|
||||
MarkNativeAsOptional("PbAddMessage");
|
||||
|
||||
VerifyCoreVersion();
|
||||
}
|
||||
|
||||
|
192
env/include/cstrike.inc
vendored
192
env/include/cstrike.inc
vendored
@ -42,32 +42,39 @@
|
||||
|
||||
#define CS_SLOT_PRIMARY 0 /**< Primary weapon slot. */
|
||||
#define CS_SLOT_SECONDARY 1 /**< Secondary weapon slot. */
|
||||
#define CS_SLOT_KNIFE 2 /**< Knife slot. */
|
||||
#define CS_SLOT_GRENADE 3 /**< Grenade slot (will only return one grenade). */
|
||||
#define CS_SLOT_C4 4 /**< C4 slot. */
|
||||
|
||||
#define CS_DMG_HEADSHOT (1 << 30) /**< Headshot */
|
||||
|
||||
enum CSRoundEndReason
|
||||
{
|
||||
CSRoundEnd_TargetBombed = 0, // Target Successfully Bombed!
|
||||
CSRoundEnd_VIPEscaped, // The VIP has escaped!
|
||||
CSRoundEnd_VIPKilled, // VIP has been assassinated!
|
||||
CSRoundEnd_TerroristsEscaped, // The terrorists have escaped!
|
||||
CSRoundEnd_CTStoppedEscape, // The CTs have prevented most of the terrorists from escaping!
|
||||
CSRoundEnd_TerroristsStopped, // Escaping terrorists have all been neutralized!
|
||||
CSRoundEnd_BombDefused, // The bomb has been defused!
|
||||
CSRoundEnd_CTWin, // Counter-Terrorists Win!
|
||||
CSRoundEnd_TerroristWin, // Terrorists Win!
|
||||
CSRoundEnd_Draw, // Round Draw!
|
||||
CSRoundEnd_HostagesRescued, // All Hostages have been rescued!
|
||||
CSRoundEnd_TargetSaved, // Target has been saved!
|
||||
CSRoundEnd_HostagesNotRescued, // Hostages have not been rescued!
|
||||
CSRoundEnd_TerroristsNotEscaped, // Terrorists have not escaped!
|
||||
CSRoundEnd_VIPNotEscaped, // VIP has not escaped!
|
||||
CSRoundEnd_GameStart // Game Commencing!
|
||||
CSRoundEnd_TargetBombed = 0, /**< Target Successfully Bombed! */
|
||||
CSRoundEnd_VIPEscaped, /**< The VIP has escaped! */
|
||||
CSRoundEnd_VIPKilled, /**< VIP has been assassinated! */
|
||||
CSRoundEnd_TerroristsEscaped, /**< The terrorists have escaped! */
|
||||
CSRoundEnd_CTStoppedEscape, /**< The CTs have prevented most of the terrorists from escaping! */
|
||||
CSRoundEnd_TerroristsStopped, /**< Escaping terrorists have all been neutralized! */
|
||||
CSRoundEnd_BombDefused, /**< The bomb has been defused! */
|
||||
CSRoundEnd_CTWin, /**< Counter-Terrorists Win! */
|
||||
CSRoundEnd_TerroristWin, /**< Terrorists Win! */
|
||||
CSRoundEnd_Draw, /**< Round Draw! */
|
||||
CSRoundEnd_HostagesRescued, /**< All Hostages have been rescued! */
|
||||
CSRoundEnd_TargetSaved, /**< Target has been saved! */
|
||||
CSRoundEnd_HostagesNotRescued, /**< Hostages have not been rescued! */
|
||||
CSRoundEnd_TerroristsNotEscaped, /**< Terrorists have not escaped! */
|
||||
CSRoundEnd_VIPNotEscaped, /**< VIP has not escaped! */
|
||||
CSRoundEnd_GameStart, /**< Game Commencing! */
|
||||
|
||||
// The below only exist on CS:GO
|
||||
CSRoundEnd_TerroristsSurrender, /**< Terrorists Surrender */
|
||||
CSRoundEnd_CTSurrender, /**< CTs Surrender */
|
||||
};
|
||||
|
||||
enum CSWeaponID
|
||||
{
|
||||
CSWeapon_NONE,
|
||||
CSWeapon_NONE = 0,
|
||||
CSWeapon_P228,
|
||||
CSWeapon_GLOCK,
|
||||
CSWeapon_SCOUT,
|
||||
@ -100,8 +107,30 @@ enum CSWeaponID
|
||||
CSWeapon_SHIELD,
|
||||
CSWeapon_KEVLAR,
|
||||
CSWeapon_ASSAULTSUIT,
|
||||
CSWeapon_NIGHTVISION
|
||||
CSWeapon_NIGHTVISION,
|
||||
CSWeapon_GALILAR,
|
||||
CSWeapon_BIZON,
|
||||
CSWeapon_MAG7,
|
||||
CSWeapon_NEGEV,
|
||||
CSWeapon_SAWEDOFF,
|
||||
CSWeapon_TEC9,
|
||||
CSWeapon_TASER,
|
||||
CSWeapon_HKP2000,
|
||||
CSWeapon_MP7,
|
||||
CSWeapon_MP9,
|
||||
CSWeapon_NOVA,
|
||||
CSWeapon_P250,
|
||||
CSWeapon_SCAR17,
|
||||
CSWeapon_SCAR20,
|
||||
CSWeapon_SG556,
|
||||
CSWeapon_SSG08,
|
||||
CSWeapon_KNIFE_GG,
|
||||
CSWeapon_MOLOTOV,
|
||||
CSWeapon_DECOY,
|
||||
CSWeapon_INCGRENADE,
|
||||
CSWeapon_DEFUSER
|
||||
};
|
||||
|
||||
/**
|
||||
* Called when a player attempts to purchase an item.
|
||||
* Return Plugin_Continue to allow the purchase or return a
|
||||
@ -118,7 +147,7 @@ forward Action:CS_OnBuyCommand(client, const String:weapon[]);
|
||||
* higher action to deny.
|
||||
*
|
||||
* @param client Client index
|
||||
* @param weapon Weapon index
|
||||
* @param weaponIndex Weapon index
|
||||
*/
|
||||
forward Action:CS_OnCSWeaponDrop(client, weaponIndex);
|
||||
|
||||
@ -237,6 +266,119 @@ native CS_GetClientClanTag(client, String:buffer[], size);
|
||||
*/
|
||||
native CS_SetClientClanTag(client, const String:tag[]);
|
||||
|
||||
/**
|
||||
* Gets a team's score
|
||||
* @param team Team index to get score for.
|
||||
* @return Returns the internal team score.
|
||||
*
|
||||
* @error Invalid team index.
|
||||
*/
|
||||
native CS_GetTeamScore(team);
|
||||
|
||||
/**
|
||||
* Sets a team's score
|
||||
* @param team Team index to set score for.
|
||||
* @param value Value to set teams score as.
|
||||
* @noreturn
|
||||
*
|
||||
* @error Invalid team index.
|
||||
* @note This will update the scoreboard only after the scoreboard update function is called. Use SetTeamScore plus this to update the scoreboard instantly and save values correctly.
|
||||
*/
|
||||
native CS_SetTeamScore(team, value);
|
||||
|
||||
/**
|
||||
* Gets a client's mvp count
|
||||
* @param client Client index to get mvp count of.
|
||||
* @return Returns the client's internal MVP count.
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_GetMVPCount(client);
|
||||
|
||||
/**
|
||||
* Sets a client's mvp count
|
||||
* @param client Client index to set mvp count for.
|
||||
* @param value Value to set client's mvp count as.
|
||||
* @noreturn
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_SetMVPCount(client, value);
|
||||
|
||||
/**
|
||||
* Gets a client's contribution score (CS:GO only)
|
||||
* @param client Client index to get score of.
|
||||
* @return Returns the client's score.
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_GetClientContributionScore(client);
|
||||
|
||||
/**
|
||||
* Sets a client's contribution score (CS:GO only)
|
||||
* @param client Client index to set score for.
|
||||
* @param value Value to set client's score as.
|
||||
* @noreturn
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_SetClientContributionScore(client, value);
|
||||
|
||||
/**
|
||||
* Gets a client's assists (CS:GO only)
|
||||
* @param client Client index to get assists of.
|
||||
* @return Returns the client's assists.
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_GetClientAssists(client);
|
||||
|
||||
/**
|
||||
* Sets a client's assists (CS:GO only)
|
||||
* @param client Client index to set assists for.
|
||||
* @param value Value to set client's assists as.
|
||||
* @noreturn
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_SetClientAssists(client, value);
|
||||
|
||||
/**
|
||||
* Gets a weaponID from a alias
|
||||
* @param alias Weapon alias to attempt to get an id for.
|
||||
* @return Returns a weapon id or 0 if failed to find a match.
|
||||
*
|
||||
* @note For best results use CS_GetTranslatedWeaponAlias on the weapon name before passing it.
|
||||
*/
|
||||
native CSWeaponID:CS_AliasToWeaponID(const String:alias[]);
|
||||
|
||||
/**
|
||||
* Gets a alias from a weaponID
|
||||
* @param weaponID WeaponID to get alias for.
|
||||
* @param destination Destination string to hold the weapon alias.
|
||||
* @param len Length of the destination array.
|
||||
* @return Returns number of cells written.
|
||||
*/
|
||||
native CS_WeaponIDToAlias(CSWeaponID:weaponID, String:destination[], len);
|
||||
|
||||
/**
|
||||
* Returns weather a WeaponID is valid on the current mod (css or csgo)
|
||||
* @param weaponID WeaponID to check
|
||||
* @return Returns true if its a valid WeaponID false otherwise.
|
||||
*
|
||||
* @note This will return false always for CSWeapon_NONE
|
||||
*/
|
||||
native bool:CS_IsValidWeaponID(CSWeaponID:id);
|
||||
|
||||
/**
|
||||
* Sets a player's model based on their current class
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @noreturn
|
||||
* @error Invalid client index, client not in game.
|
||||
*/
|
||||
native CS_UpdateClientModel(client);
|
||||
|
||||
/**
|
||||
* Do not edit below this line!
|
||||
*/
|
||||
@ -263,6 +405,18 @@ public __ext_cstrike_SetNTVOptional()
|
||||
MarkNativeAsOptional("CS_GetWeaponPrice");
|
||||
MarkNativeAsOptional("CS_GetClientClanTag");
|
||||
MarkNativeAsOptional("CS_SetClientClanTag");
|
||||
MarkNativeAsOptional("CS_GetTeamScore");
|
||||
MarkNativeAsOptional("CS_SetTeamScore");
|
||||
MarkNativeAsOptional("CS_GetMVPCount");
|
||||
MarkNativeAsOptional("CS_SetMVPCount");
|
||||
MarkNativeAsOptional("CS_GetClientContributionScore");
|
||||
MarkNativeAsOptional("CS_SetClientContributionScore");
|
||||
MarkNativeAsOptional("CS_GetClientAssists");
|
||||
MarkNativeAsOptional("CS_SetClientAssists");
|
||||
MarkNativeAsOptional("CS_AliasToWeaponID");
|
||||
MarkNativeAsOptional("CS_WeaponIDToAlias");
|
||||
MarkNativeAsOptional("CS_IsValidWeaponID");
|
||||
MarkNativeAsOptional("CS_UpdateClientModel");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
4
env/include/datapack.inc
vendored
4
env/include/datapack.inc
vendored
@ -50,7 +50,7 @@ native Handle:CreateDataPack();
|
||||
* @noreturn
|
||||
* @error Invalid handle.
|
||||
*/
|
||||
native WritePackCell(Handle:pack, cell);
|
||||
native WritePackCell(Handle:pack, any:cell);
|
||||
|
||||
/**
|
||||
* Packs a float into a data pack.
|
||||
@ -79,7 +79,7 @@ native WritePackString(Handle:pack, const String:str[]);
|
||||
* @return Cell value.
|
||||
* @error Invalid handle, or bounds error.
|
||||
*/
|
||||
native ReadPackCell(Handle:pack);
|
||||
native any:ReadPackCell(Handle:pack);
|
||||
|
||||
/**
|
||||
* Reads a float from a data pack.
|
||||
|
87
env/include/dbi.inc
vendored
87
env/include/dbi.inc
vendored
@ -137,6 +137,8 @@ stock Handle:SQL_DefConnect(String:error[], maxlength, bool:persistent=true)
|
||||
* @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.
|
||||
@ -249,6 +251,18 @@ native SQL_GetDriverIdent(Handle:driver, String:ident[], maxlength);
|
||||
*/
|
||||
native SQL_GetDriverProduct(Handle:driver, String:product[], maxlength);
|
||||
|
||||
/**
|
||||
* Sets the character set of the current connection.
|
||||
* Like SET NAMES .. in mysql, but stays after connection problems.
|
||||
*
|
||||
* Example: "utf8", "latin1"
|
||||
*
|
||||
* @param database Database Handle.
|
||||
* @param characterset The character set string to change to.
|
||||
* @return True, if character set was changed, false otherwise.
|
||||
*/
|
||||
native bool:SQL_SetCharset(Handle:database, const String:charset[]);
|
||||
|
||||
/**
|
||||
* Returns the number of affected rows from the last query.
|
||||
*
|
||||
@ -292,7 +306,7 @@ native bool:SQL_GetError(Handle:hndl, String:error[], maxlength);
|
||||
* encloses the string in ''. While drivers tend to allow " instead, the string
|
||||
* may be not be escaped (for example, on SQLite)!
|
||||
*
|
||||
* @param hndl A database 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.
|
||||
@ -557,7 +571,7 @@ native SQL_BindParamInt(Handle:statement, param, number, bool:signed=true);
|
||||
*
|
||||
* @param statement A statement (prepared query) Handle.
|
||||
* @param param The parameter index (starting from 0).
|
||||
* @param float The float number to bind.
|
||||
* @param value The float number to bind.
|
||||
* @noreturn
|
||||
* @error Invalid statement Handle or parameter index, or
|
||||
* SQL error.
|
||||
@ -621,7 +635,7 @@ native SQL_UnlockDatabase(Handle:database);
|
||||
/**
|
||||
* General callback for threaded SQL stuff.
|
||||
*
|
||||
* @param db Parent object of the Handle (or INVALID_HANDLE if none).
|
||||
* @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
|
||||
@ -654,6 +668,7 @@ native bool:SQL_IsSameConnection(Handle:hndl1, Handle:hndl2);
|
||||
* @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.
|
||||
* @noreturn
|
||||
*/
|
||||
native SQL_TConnect(SQLTCallback:callback, const String:name[]="default", any:data=0);
|
||||
@ -679,3 +694,69 @@ native SQL_TConnect(SQLTCallback:callback, const String:name[]="default", any:da
|
||||
* @error Invalid database Handle.
|
||||
*/
|
||||
native SQL_TQuery(Handle:database, SQLTCallback:callback, const String:query[], any:data=0, DBPriority:prio=DBPrio_Normal);
|
||||
|
||||
/**
|
||||
* Creates a new transaction object. A transaction object is a list of queries
|
||||
* that can be sent to the database thread and executed as a single transaction.
|
||||
*
|
||||
* @return A transaction handle.
|
||||
*/
|
||||
native Handle:SQL_CreateTransaction();
|
||||
|
||||
/**
|
||||
* Adds a query to a transaction object.
|
||||
*
|
||||
* @param txn A transaction handle.
|
||||
* @param query Query string.
|
||||
* @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.
|
||||
*/
|
||||
native SQL_AddQuery(Handle:txn, const String:query[], any:data=0);
|
||||
|
||||
/**
|
||||
* Callback for a successful transaction.
|
||||
*
|
||||
* @param db Database handle.
|
||||
* @param data Data value passed to SQL_ExecuteTransaction().
|
||||
* @param numQueries Number of queries executed in the transaction.
|
||||
* @param results An array of Query handle results, one for each of numQueries. They are closed automatically.
|
||||
* @param queryData An array of each data value passed to SQL_AddQuery().
|
||||
* @noreturn
|
||||
*/
|
||||
functag public SQLTxnSuccess(Handle:db, any:data, numQueries, Handle: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().
|
||||
* @noreturn
|
||||
*/
|
||||
functag public SQLTxnFailure(Handle:db, any:data, numQueries, const String:error[], failIndex, any:queryData[]);
|
||||
|
||||
/**
|
||||
* Sends a transaction to the database thread. The transaction handle is
|
||||
* automatically closed. When the transaction completes, the optional
|
||||
* callback is invoked.
|
||||
*
|
||||
* @param db A database handle.
|
||||
* @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.
|
||||
* @noreturn
|
||||
* @error An invalid handle.
|
||||
*/
|
||||
native SQL_ExecuteTransaction(
|
||||
Handle:db,
|
||||
Handle:txn,
|
||||
SQLTxnSuccess:onSuccess=SQLTxnSuccess:-1,
|
||||
SQLTxnFailure:onError=SQLTxnFailure:-1,
|
||||
any:data=0,
|
||||
DBPriority:priority=DBPrio_Normal);
|
||||
|
35
env/include/entity.inc
vendored
35
env/include/entity.inc
vendored
@ -226,6 +226,7 @@ native GetEntData(entity, offset, size=4);
|
||||
*
|
||||
* @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.
|
||||
* @return Value at the given memory location.
|
||||
@ -251,6 +252,7 @@ native Float:GetEntDataFloat(entity, 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.
|
||||
* @return Value at the given memory location.
|
||||
* @error Invalid entity or offset out of reasonable bounds.
|
||||
@ -281,7 +283,7 @@ native GetEntDataEnt(entity, offset);
|
||||
* reasons explained in the notes.
|
||||
*
|
||||
* Note: This function uses 0 as an indicator to unset data, but
|
||||
* 0 is also the world entity index. Thus, the a property cannot
|
||||
* 0 is also the world entity index. Thus, a property cannot
|
||||
* be set to the world entity using this native.
|
||||
*
|
||||
* @param entity Edict index.
|
||||
@ -448,6 +450,26 @@ native FindDataMapOffs(entity,
|
||||
&PropFieldType:type=PropFieldType:0,
|
||||
&num_bits=0);
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
native FindDataMapInfo(entity,
|
||||
const String:prop[],
|
||||
&PropFieldType:type=PropFieldType:0,
|
||||
&num_bits=0,
|
||||
&local_offset=0);
|
||||
|
||||
/**
|
||||
* Wrapper function for finding a send property for a particular entity.
|
||||
*
|
||||
@ -691,12 +713,21 @@ stock SetEntDataArray(entity, offset, const array[], arraySize, dataSize=4, bool
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the memory address of an entity.
|
||||
*
|
||||
* @param entity Entity index.
|
||||
* @return Address of the entity.
|
||||
* @error Invalid entity.
|
||||
*/
|
||||
native Address:GetEntityAddress(entity);
|
||||
|
||||
/**
|
||||
* Retrieves the classname of an entity.
|
||||
* This is like GetEdictClassname(), except it works for ALL
|
||||
* entities, not just edicts.
|
||||
*
|
||||
* @param edict Index of the entity.
|
||||
* @param entity 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.
|
||||
|
73
env/include/entity_prop_stocks.inc
vendored
73
env/include/entity_prop_stocks.inc
vendored
@ -113,55 +113,56 @@ enum RenderFx
|
||||
#define IN_RELOAD (1 << 13)
|
||||
#define IN_ALT1 (1 << 14)
|
||||
#define IN_ALT2 (1 << 15)
|
||||
#define IN_SCORE (1 << 16) // Used by client.dll for when scoreboard is held down
|
||||
#define IN_SPEED (1 << 17) // Player is holding the speed key
|
||||
#define IN_WALK (1 << 18) // Player holding walk key
|
||||
#define IN_ZOOM (1 << 19) // Zoom key for HUD zoom
|
||||
#define IN_WEAPON1 (1 << 20) // weapon defines these bits
|
||||
#define IN_WEAPON2 (1 << 21) // weapon defines these bits
|
||||
#define IN_SCORE (1 << 16) /**< Used by client.dll for when scoreboard is held down */
|
||||
#define IN_SPEED (1 << 17) /**< Player is holding the speed key */
|
||||
#define IN_WALK (1 << 18) /**< Player holding walk key */
|
||||
#define IN_ZOOM (1 << 19) /**< Zoom key for HUD zoom */
|
||||
#define IN_WEAPON1 (1 << 20) /**< weapon defines these bits */
|
||||
#define IN_WEAPON2 (1 << 21) /**< weapon defines these bits */
|
||||
#define IN_BULLRUSH (1 << 22)
|
||||
#define IN_GRENADE1 (1 << 23) // grenade 1
|
||||
#define IN_GRENADE2 (1 << 24) // grenade 2
|
||||
#define IN_GRENADE1 (1 << 23) /**< grenade 1 */
|
||||
#define IN_GRENADE2 (1 << 24) /**< grenade 2 */
|
||||
#define IN_ATTACK3 (1 << 25)
|
||||
|
||||
// Note: these are only for use with GetEntityFlags and SetEntityFlags
|
||||
// and may not match the game's actual, internal m_fFlags values.
|
||||
// PLAYER SPECIFIC FLAGS FIRST BECAUSE WE USE ONLY A FEW BITS OF NETWORK PRECISION
|
||||
#define FL_ONGROUND (1 << 0) // At rest / on the ground
|
||||
#define FL_DUCKING (1 << 1) // Player flag -- Player is fully crouched
|
||||
#define FL_WATERJUMP (1 << 2) // player jumping out of water
|
||||
#define FL_ONTRAIN (1 << 3) // Player is _controlling_ a train, so movement commands should be ignored on client during prediction.
|
||||
#define FL_INRAIN (1 << 4) // Indicates the entity is standing in rain
|
||||
#define FL_FROZEN (1 << 5) // Player is frozen for 3rd person camera
|
||||
#define FL_ATCONTROLS (1 << 6) // Player can't move, but keeps key inputs for controlling another entity
|
||||
#define FL_CLIENT (1 << 7) // Is a player
|
||||
#define FL_FAKECLIENT (1 << 8) // Fake client, simulated server side; don't send network messages to them
|
||||
#define FL_ONGROUND (1 << 0) /**< At rest / on the ground */
|
||||
#define FL_DUCKING (1 << 1) /**< Player flag -- Player is fully crouched */
|
||||
#define FL_WATERJUMP (1 << 2) /**< player jumping out of water */
|
||||
#define FL_ONTRAIN (1 << 3) /**< Player is _controlling_ a train, so movement commands should be ignored on client during prediction. */
|
||||
#define FL_INRAIN (1 << 4) /**< Indicates the entity is standing in rain */
|
||||
#define FL_FROZEN (1 << 5) /**< Player is frozen for 3rd person camera */
|
||||
#define FL_ATCONTROLS (1 << 6) /**< Player can't move, but keeps key inputs for controlling another entity */
|
||||
#define FL_CLIENT (1 << 7) /**< Is a player */
|
||||
#define FL_FAKECLIENT (1 << 8) /**< Fake client, simulated server side; don't send network messages to them */
|
||||
// NOTE if you move things up, make sure to change this value
|
||||
#define PLAYER_FLAG_BITS 9
|
||||
// NON-PLAYER SPECIFIC (i.e., not used by GameMovement or the client .dll ) -- Can still be applied to players, though
|
||||
#define FL_INWATER (1 << 9) // In water
|
||||
#define FL_FLY (1 << 10) // Changes the SV_Movestep() behavior to not need to be on ground
|
||||
#define FL_SWIM (1 << 11) // Changes the SV_Movestep() behavior to not need to be on ground (but stay in water)
|
||||
#define FL_INWATER (1 << 9) /**< In water */
|
||||
#define FL_FLY (1 << 10) /**< Changes the SV_Movestep() behavior to not need to be on ground */
|
||||
#define FL_SWIM (1 << 11) /**< Changes the SV_Movestep() behavior to not need to be on ground (but stay in water) */
|
||||
#define FL_CONVEYOR (1 << 12)
|
||||
#define FL_NPC (1 << 13)
|
||||
#define FL_GODMODE (1 << 14)
|
||||
#define FL_NOTARGET (1 << 15)
|
||||
#define FL_AIMTARGET (1 << 16) // set if the crosshair needs to aim onto the entity
|
||||
#define FL_PARTIALGROUND (1 << 17) // not all corners are valid
|
||||
#define FL_STATICPROP (1 << 18) // Eetsa static prop!
|
||||
#define FL_GRAPHED (1 << 19) // worldgraph has this ent listed as something that blocks a connection
|
||||
#define FL_AIMTARGET (1 << 16) /**< set if the crosshair needs to aim onto the entity */
|
||||
#define FL_PARTIALGROUND (1 << 17) /**< not all corners are valid */
|
||||
#define FL_STATICPROP (1 << 18) /**< Eetsa static prop! */
|
||||
#define FL_GRAPHED (1 << 19) /**< worldgraph has this ent listed as something that blocks a connection */
|
||||
#define FL_GRENADE (1 << 20)
|
||||
#define FL_STEPMOVEMENT (1 << 21) // Changes the SV_Movestep() behavior to not do any processing
|
||||
#define FL_DONTTOUCH (1 << 22) // Doesn't generate touch functions, generates Untouch() for anything it was touching when this flag was set
|
||||
#define FL_BASEVELOCITY (1 << 23) // Base velocity has been applied this frame (used to convert base velocity into momentum)
|
||||
#define FL_WORLDBRUSH (1 << 24) // Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something)
|
||||
#define FL_OBJECT (1 << 25) // Terrible name. This is an object that NPCs should see. Missiles, for example.
|
||||
#define FL_KILLME (1 << 26) // This entity is marked for death -- will be freed by game DLL
|
||||
#define FL_ONFIRE (1 << 27) // You know...
|
||||
#define FL_DISSOLVING (1 << 28) // We're dissolving!
|
||||
#define FL_TRANSRAGDOLL (1 << 29) // In the process of turning into a client side ragdoll.
|
||||
#define FL_UNBLOCKABLE_BY_PLAYER (1 << 30) // pusher that can't be blocked by the player
|
||||
#define FL_FREEZING (1 << 31) // We're becoming frozen!
|
||||
#define FL_EP2V_UNKNOWN1 (1 << 31) // Unknown
|
||||
#define FL_STEPMOVEMENT (1 << 21) /**< Changes the SV_Movestep() behavior to not do any processing */
|
||||
#define FL_DONTTOUCH (1 << 22) /**< Doesn't generate touch functions, generates Untouch() for anything it was touching when this flag was set */
|
||||
#define FL_BASEVELOCITY (1 << 23) /**< Base velocity has been applied this frame (used to convert base velocity into momentum) */
|
||||
#define FL_WORLDBRUSH (1 << 24) /**< Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something) */
|
||||
#define FL_OBJECT (1 << 25) /**< Terrible name. This is an object that NPCs should see. Missiles, for example. */
|
||||
#define FL_KILLME (1 << 26) /**< This entity is marked for death -- will be freed by game DLL */
|
||||
#define FL_ONFIRE (1 << 27) /**< You know... */
|
||||
#define FL_DISSOLVING (1 << 28) /**< We're dissolving! */
|
||||
#define FL_TRANSRAGDOLL (1 << 29) /**< In the process of turning into a client side ragdoll. */
|
||||
#define FL_UNBLOCKABLE_BY_PLAYER (1 << 30) /**< pusher that can't be blocked by the player */
|
||||
#define FL_FREEZING (1 << 31) /**< We're becoming frozen! */
|
||||
#define FL_EP2V_UNKNOWN1 (1 << 31) /**< Unknown */
|
||||
// END entity flag #defines
|
||||
|
||||
/**
|
||||
|
2
env/include/events.inc
vendored
2
env/include/events.inc
vendored
@ -235,7 +235,7 @@ native SetEventString(Handle:event, const String:key[], const String:value[]);
|
||||
* Retrieves the name of a game event.
|
||||
*
|
||||
* @param event Handle to the event.
|
||||
* @param value Buffer to store the name of the event.
|
||||
* @param name Buffer to store the name of the event.
|
||||
* @param maxlength Maximum length of string buffer.
|
||||
* @noreturn
|
||||
* @error Invalid or corrupt Handle.
|
||||
|
12
env/include/files.inc
vendored
12
env/include/files.inc
vendored
@ -303,9 +303,9 @@ native FilePosition(Handle:file);
|
||||
*
|
||||
* @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 check for the existance of files
|
||||
* inside GCFs or the game cache, rather than solely files
|
||||
* that are on disk.
|
||||
* This can be used to find files existing in any of
|
||||
* the GAME search paths, rather than solely files
|
||||
* existing directly in the gamedir.
|
||||
* @return True if the file exists, false otherwise.
|
||||
*/
|
||||
native bool:FileExists(const String:path[], bool:use_valve_fs=false);
|
||||
@ -331,9 +331,13 @@ native bool:DirExists(const String:path[]);
|
||||
* 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 GAME search paths, rather than solely files
|
||||
* existing directly in the gamedir.
|
||||
* @return File size in bytes, -1 if file not found.
|
||||
*/
|
||||
native FileSize(const String:path[]);
|
||||
native FileSize(const String:path[], bool:use_valve_fs=false);
|
||||
|
||||
/**
|
||||
* Flushes a file's buffered output; any buffered output
|
||||
|
73
env/include/float.inc
vendored
73
env/include/float.inc
vendored
@ -246,10 +246,25 @@ stock RoundFloat(Float:value)
|
||||
*/
|
||||
#pragma rational Float
|
||||
|
||||
native bool:__FLOAT_GT__(Float:a, Float:b);
|
||||
native bool:__FLOAT_GE__(Float:a, Float:b);
|
||||
native bool:__FLOAT_LT__(Float:a, Float:b);
|
||||
native bool:__FLOAT_LE__(Float:a, Float:b);
|
||||
native bool:__FLOAT_EQ__(Float:a, Float:b);
|
||||
native bool:__FLOAT_NE__(Float:a, Float:b);
|
||||
native bool:__FLOAT_NOT__(Float:a);
|
||||
|
||||
native Float:operator*(Float:oper1, Float:oper2) = FloatMul;
|
||||
native Float:operator/(Float:oper1, Float:oper2) = FloatDiv;
|
||||
native Float:operator+(Float:oper1, Float:oper2) = FloatAdd;
|
||||
native Float:operator-(Float:oper1, Float:oper2) = FloatSub;
|
||||
native bool:operator!(Float:oper1) = __FLOAT_NOT__;
|
||||
native bool:operator>(Float:oper1, Float:oper2) = __FLOAT_GT__;
|
||||
native bool:operator>=(Float:oper1, Float:oper2) = __FLOAT_GE__;
|
||||
native bool:operator<(Float:oper1, Float:oper2) = __FLOAT_LT__;
|
||||
native bool:operator<=(Float:oper1, Float:oper2) = __FLOAT_LE__;
|
||||
native bool:operator!=(Float:oper1, Float:oper2) = __FLOAT_NE__;
|
||||
native bool:operator==(Float:oper1, Float:oper2) = __FLOAT_EQ__;
|
||||
|
||||
stock Float:operator++(Float:oper)
|
||||
{
|
||||
@ -263,7 +278,7 @@ stock Float:operator--(Float:oper)
|
||||
|
||||
stock Float:operator-(Float:oper)
|
||||
{
|
||||
return oper^Float:((-1)^((-1)/2)); /* IEEE values are sign/magnitude */
|
||||
return oper^Float:cellmin; /* IEEE values are sign/magnitude */
|
||||
}
|
||||
|
||||
stock Float:operator*(Float:oper1, oper2)
|
||||
@ -296,90 +311,54 @@ stock Float:operator-(oper1, Float:oper2)
|
||||
return FloatSub(float(oper1), oper2);
|
||||
}
|
||||
|
||||
stock bool:operator==(Float:oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(oper1, oper2) == 0;
|
||||
}
|
||||
|
||||
stock bool:operator==(Float:oper1, oper2)
|
||||
{
|
||||
return FloatCompare(oper1, float(oper2)) == 0; /* "==" is commutative */
|
||||
}
|
||||
|
||||
stock bool:operator!=(Float:oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(oper1, oper2) != 0;
|
||||
return __FLOAT_EQ__(oper1, float(oper2));
|
||||
}
|
||||
|
||||
stock bool:operator!=(Float:oper1, oper2)
|
||||
{
|
||||
return FloatCompare(oper1, float(oper2)) != 0; /* "==" is commutative */
|
||||
}
|
||||
|
||||
stock bool:operator>(Float:oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(oper1, oper2) > 0;
|
||||
return __FLOAT_NE__(oper1, float(oper2));
|
||||
}
|
||||
|
||||
stock bool:operator>(Float:oper1, oper2)
|
||||
{
|
||||
return FloatCompare(oper1, float(oper2)) > 0;
|
||||
return __FLOAT_GT__(oper1, float(oper2));
|
||||
}
|
||||
|
||||
stock bool:operator>(oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(float(oper1), oper2) > 0;
|
||||
}
|
||||
|
||||
stock bool:operator>=(Float:oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(oper1, oper2) >= 0;
|
||||
return __FLOAT_GT__(float(oper1), oper2);
|
||||
}
|
||||
|
||||
stock bool:operator>=(Float:oper1, oper2)
|
||||
{
|
||||
return FloatCompare(oper1, float(oper2)) >= 0;
|
||||
return __FLOAT_GE__(oper1, float(oper2));
|
||||
}
|
||||
|
||||
stock bool:operator>=(oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(float(oper1), oper2) >= 0;
|
||||
}
|
||||
|
||||
stock bool:operator<(Float:oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(oper1, oper2) < 0;
|
||||
return __FLOAT_GE__(float(oper1), oper2);
|
||||
}
|
||||
|
||||
stock bool:operator<(Float:oper1, oper2)
|
||||
{
|
||||
return FloatCompare(oper1, float(oper2)) < 0;
|
||||
return __FLOAT_LT__(oper1, float(oper2));
|
||||
}
|
||||
|
||||
stock bool:operator<(oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(float(oper1), oper2) < 0;
|
||||
}
|
||||
|
||||
stock bool:operator<=(Float:oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(oper1, oper2) <= 0;
|
||||
return __FLOAT_LT__(float(oper1), oper2);
|
||||
}
|
||||
|
||||
stock bool:operator<=(Float:oper1, oper2)
|
||||
{
|
||||
return FloatCompare(oper1, float(oper2)) <= 0;
|
||||
return __FLOAT_LE__(oper1, float(oper2));
|
||||
}
|
||||
|
||||
stock bool:operator<=(oper1, Float:oper2)
|
||||
{
|
||||
return FloatCompare(float(oper1), oper2) <= 0;
|
||||
}
|
||||
|
||||
stock bool:operator!(Float:oper)
|
||||
{
|
||||
return (_:oper & ((-1)/2)) == 0; /* -1 = all bits to 1; /2 = remove most significant bit (sign)
|
||||
works on both 32bit and 64bit systems; no constant required */
|
||||
return __FLOAT_LE__(float(oper1), oper2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
17
env/include/functions.inc
vendored
17
env/include/functions.inc
vendored
@ -492,3 +492,20 @@ native FormatNativeString(out_param,
|
||||
&written=0,
|
||||
String:out_string[]="",
|
||||
const String:fmt_string[]="");
|
||||
|
||||
/**
|
||||
* Defines a RequestFrame Callback.
|
||||
*
|
||||
* @param data Data passed to the RequestFrame native.
|
||||
* @noreturn
|
||||
*/
|
||||
functag public RequestFrameCallback(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.
|
||||
* @noreturn
|
||||
*/
|
||||
native RequestFrame(RequestFrameCallback:Function, any:data=0);
|
||||
|
4
env/include/geoip.inc
vendored
4
env/include/geoip.inc
vendored
@ -63,8 +63,8 @@ native bool:GeoipCode3(const String:ip[], String:ccode[4]);
|
||||
* Gets the full country name. (max length of output string is 45)
|
||||
*
|
||||
* @param ip Ip to determine the country code.
|
||||
* @param ccode Destination string buffer to store the country name.
|
||||
* @param len Maximum length of output string buffer.
|
||||
* @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 String:ip[], String:name[], maxlength);
|
||||
|
62
env/include/halflife.inc
vendored
62
env/include/halflife.inc
vendored
@ -42,10 +42,13 @@
|
||||
#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_EPISODE2VALVE 35 /**< SDK+Engine released after Episode 2/Orange Box */
|
||||
#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 */
|
||||
@ -61,6 +64,32 @@ enum DialogType
|
||||
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 */
|
||||
};
|
||||
|
||||
#define INVALID_ENT_REFERENCE 0xFFFFFFFF
|
||||
|
||||
/**
|
||||
@ -101,7 +130,7 @@ native GetRandomInt(nmin, nmax);
|
||||
/**
|
||||
* Returns whether a map is valid or not.
|
||||
*
|
||||
* @param Map name, excluding .bsp extension.
|
||||
* @param map Map name, excluding .bsp extension.
|
||||
* @return True if valid, false otherwise.
|
||||
*/
|
||||
native bool:IsMapValid(const String:map[]);
|
||||
@ -127,6 +156,13 @@ native Float:GetEngineTime();
|
||||
*/
|
||||
native Float:GetGameTime();
|
||||
|
||||
/**
|
||||
* Returns the game's internal tick count.
|
||||
*
|
||||
* @return Game tick count.
|
||||
*/
|
||||
native GetGameTickCount();
|
||||
|
||||
/**
|
||||
* Returns the game description from the mod.
|
||||
*
|
||||
@ -212,7 +248,7 @@ native bool:IsDecalPrecached(const String:decal[]);
|
||||
/**
|
||||
* Returns if a given generic file is precached.
|
||||
*
|
||||
* @param decal Name of the generic file to check.
|
||||
* @param generic Name of the generic file to check.
|
||||
* @return True if precached, false otherwise.
|
||||
*/
|
||||
native bool:IsGenericPrecached(const String:generic[]);
|
||||
@ -254,8 +290,19 @@ native CreateDialog(client, Handle:kv, DialogType:type);
|
||||
*
|
||||
* @return SOURCE_SDK version code.
|
||||
*/
|
||||
#pragma deprecated See GetEngineVersion()
|
||||
native GuessSDKVersion();
|
||||
|
||||
/**
|
||||
* Gets the engine version that the currently-loaded SM core was compiled against.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
native EngineVersion:GetEngineVersion();
|
||||
|
||||
/**
|
||||
* Prints a message to a specific client in the chat area.
|
||||
*
|
||||
@ -537,14 +584,17 @@ stock ShowMOTDPanel(client, const String:title[], const String:msg[], type=MOTDP
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param time Duration to hold the panel on the client's screen.
|
||||
* @param ip Destionation IP.
|
||||
* @param ip Destination IP.
|
||||
* @param password Password to connect to the destination IP. The client will be able to see this.
|
||||
* @noreturn
|
||||
*/
|
||||
stock DisplayAskConnectBox(client, Float:time, const String:ip[])
|
||||
stock DisplayAskConnectBox(client, Float:time, const String:ip[], const String:password[] = "")
|
||||
{
|
||||
decl String:destination[288];
|
||||
FormatEx(destination, sizeof(destination), "%s/%s", ip, password);
|
||||
new Handle:Kv = CreateKeyValues("data");
|
||||
KvSetFloat(Kv, "time", time);
|
||||
KvSetString(Kv, "title", ip);
|
||||
KvSetString(Kv, "title", destination);
|
||||
CreateDialog(client, Kv, DialogType_AskConnect);
|
||||
CloseHandle(Kv);
|
||||
}
|
||||
|
2
env/include/keyvalues.inc
vendored
2
env/include/keyvalues.inc
vendored
@ -60,7 +60,7 @@ enum KvDataTypes
|
||||
* @param firstValue If firstKey is non-empty, specifies the first key's value.
|
||||
* @return A Handle to a new KeyValues structure.
|
||||
*/
|
||||
native Handle:CreateKeyValues(const String:name[], const String:firstkey[]="", const String:firstValue[]="");
|
||||
native Handle:CreateKeyValues(const String:name[], const String:firstKey[]="", const String:firstValue[]="");
|
||||
|
||||
/**
|
||||
* Sets a string value of a KeyValues key.
|
||||
|
2
env/include/lang.inc
vendored
2
env/include/lang.inc
vendored
@ -41,7 +41,7 @@
|
||||
* Loads a translation file for the plugin calling this native.
|
||||
* If no extension is specified, .txt is assumed.
|
||||
*
|
||||
* @param path Translation file.
|
||||
* @param file Translation file.
|
||||
* @noreturn
|
||||
*/
|
||||
native LoadTranslations(const String:file[]);
|
||||
|
11
env/include/logging.inc
vendored
11
env/include/logging.inc
vendored
@ -45,17 +45,6 @@
|
||||
*/
|
||||
native LogMessage(const String:format[], any:...);
|
||||
|
||||
/**
|
||||
* Logs a message to the SourceMod logs without any plugin logtag. This is
|
||||
* useful for re-routing messages from other plugins, for example, messages
|
||||
* from LogAction().
|
||||
*
|
||||
* @param format String format.
|
||||
* @param ... Format arguments.
|
||||
* @noreturn
|
||||
*/
|
||||
native LogMessageEx(const String:format[], any:...);
|
||||
|
||||
/**
|
||||
* Logs a message to any file. The log message will be in the normal
|
||||
* SourceMod format, with the plugin logtag prepended.
|
||||
|
22
env/include/menus.inc
vendored
22
env/include/menus.inc
vendored
@ -345,6 +345,7 @@ native GetMenuTitle(Handle:menu, String:buffer[], 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.
|
||||
*/
|
||||
@ -404,6 +405,16 @@ native bool:GetMenuExitBackButton(Handle:menu);
|
||||
*/
|
||||
native 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.
|
||||
*/
|
||||
native bool:SetMenuNoVoteButton(Handle:menu, bool:button);
|
||||
|
||||
/**
|
||||
* Cancels a menu from displaying on all clients. While the
|
||||
@ -489,14 +500,14 @@ native bool:VoteMenu(Handle:menu, clients[], numClients, time, flags=0);
|
||||
* in progress.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
stock VoteMenuToAll(Handle:menu, time, flags=0)
|
||||
stock bool:VoteMenuToAll(Handle:menu, time, flags=0)
|
||||
{
|
||||
new total;
|
||||
decl players[MaxClients];
|
||||
|
||||
for (new i=1; i<=MaxClients; i++)
|
||||
{
|
||||
if (!IsClientInGame(i))
|
||||
if (!IsClientInGame(i) || IsFakeClient(i))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -590,7 +601,7 @@ native Handle:CreatePanel(Handle:hStyle=INVALID_HANDLE);
|
||||
* Creates a Menu from a MenuStyle. The Handle must be closed with
|
||||
* CloseHandle().
|
||||
*
|
||||
* @parma hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style.
|
||||
* @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
|
||||
@ -614,7 +625,7 @@ native MenuSource:GetClientMenu(client, Handle:hStyle=INVALID_HANDLE);
|
||||
/**
|
||||
* 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 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.
|
||||
@ -644,7 +655,7 @@ native Handle:GetPanelStyle(Handle:panel);
|
||||
* Sets the panel's title.
|
||||
*
|
||||
* @param panel A MenuPanel Handle.
|
||||
* @param title Text to set as the title.
|
||||
* @param text Text to set as the title.
|
||||
* @param onlyIfEmpty If true, the title will only be set if no title is set.
|
||||
* @noreturn
|
||||
* @error Invalid Handle.
|
||||
@ -691,6 +702,7 @@ native CanPanelDrawFlags(Handle:panel, style);
|
||||
* Sets the selectable key map of a panel. This is not supported by
|
||||
* 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.
|
||||
|
368
env/include/protobuf.inc
vendored
Normal file
368
env/include/protobuf.inc
vendored
Normal file
@ -0,0 +1,368 @@
|
||||
/**
|
||||
* vim: set ts=4 :
|
||||
* =============================================================================
|
||||
* SourceMod (C)2013 AlliedModders LLC. All rights reserved.
|
||||
* =============================================================================
|
||||
*
|
||||
* This file is part of the SourceMod/SourcePawn SDK.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 3.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* As a special exception, AlliedModders LLC gives you permission to link the
|
||||
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
||||
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
||||
* by the Valve Corporation. You must obey the GNU General Public License in
|
||||
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
||||
* this exception to all derivative works. AlliedModders LLC defines further
|
||||
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
||||
* or <http://www.sourcemod.net/license.php>.
|
||||
*
|
||||
* Version: $Id$
|
||||
*/
|
||||
|
||||
#if defined _protobuf_included
|
||||
#endinput
|
||||
#endif
|
||||
#define _protobuf_included
|
||||
|
||||
#define PB_FIELD_NOT_REPEATED -1
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
native PbReadInt(Handle:pb, const String:field[], 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.
|
||||
*/
|
||||
native Float:PbReadFloat(Handle:pb, const String:field[], 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.
|
||||
*/
|
||||
native bool:PbReadBool(Handle:pb, const String:field[], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbReadString(Handle:pb, const String:field[], String:buffer[], maxlength, 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbReadColor(Handle:pb, const String:field[], buffer[4], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbReadAngle(Handle:pb, const String:field[], Float:buffer[3], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbReadVector(Handle:pb, const String:field[], Float:buffer[3], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbReadVector2D(Handle:pb, const String:field[], Float:buffer[2], 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.
|
||||
*/
|
||||
native PbGetRepeatedFieldCount(Handle:pb, const String: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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetInt(Handle:pb, const String:field[], value, 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetFloat(Handle:pb, const String:field[], Float:value, 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetBool(Handle:pb, const String:field[], bool:value, 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetString(Handle:pb, const String:field[], const String:value[], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetColor(Handle:pb, const String:field[], const color[4], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetAngle(Handle:pb, const String:field[], const Float:angle[3], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetVector(Handle:pb, const String:field[], const Float:vec[3], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbSetVector2D(Handle:pb, const String:field[], const Float:vec[2], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddInt(Handle:pb, const String:field[], 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddFloat(Handle:pb, const String: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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddBool(Handle:pb, const String: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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddString(Handle:pb, const String:field[], const String: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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddColor(Handle:pb, const String:field[], const 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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddAngle(Handle:pb, const String: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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddVector(Handle:pb, const String: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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbAddVector2D(Handle:pb, const String: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.
|
||||
* @noreturn
|
||||
* @error Invalid or incorrect Handle, non-existent field, or incorrect field type.
|
||||
*/
|
||||
native PbRemoveRepeatedFieldValue(Handle:pb, const String:field[], 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.
|
||||
*/
|
||||
native Handle:PbReadMessage(Handle:pb, const String: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.
|
||||
*/
|
||||
native Handle:PbReadRepeatedMessage(Handle:pb, const String:field[], 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.
|
||||
*/
|
||||
native Handle:PbAddMessage(Handle:pb, const String:field[]);
|
17
env/include/regex.inc
vendored
17
env/include/regex.inc
vendored
@ -43,9 +43,13 @@
|
||||
#define PCRE_MULTILINE 0x00000002 /* Multilines (affects ^ and $ so that they match the start/end of a line rather than matching the start/end of the string). */
|
||||
#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_UNGREEDY 0x00000200 /* Invert greediness of quantifiers */
|
||||
#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. */
|
||||
|
||||
|
||||
/**
|
||||
@ -76,7 +80,16 @@ enum RegexError
|
||||
REGEX_ERROR_DFA_RECURSE = -20,
|
||||
REGEX_ERROR_RECURSIONLIMIT = -21,
|
||||
REGEX_ERROR_NULLWSLIMIT = -22, /* No longer actually used */
|
||||
REGEX_ERROR_BADNEWLINE = -23
|
||||
REGEX_ERROR_BADNEWLINE = -23,
|
||||
REGEX_ERROR_BADOFFSET = -24,
|
||||
REGEX_ERROR_SHORTUTF8 = -25,
|
||||
REGEX_ERROR_RECURSELOOP = -26,
|
||||
REGEX_ERROR_JIT_STACKLIMIT = -27,
|
||||
REGEX_ERROR_BADMODE = -28,
|
||||
REGEX_ERROR_BADENDIANNESS = -29,
|
||||
REGEX_ERROR_DFA_BADRESTART = -30,
|
||||
REGEX_ERROR_JIT_BADOPTION = -31,
|
||||
REGEX_ERROR_BADLENGTH = -32,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -114,7 +127,7 @@ native MatchRegex(Handle:regex, const String:str[], &RegexError:ret = REGEX_ERRO
|
||||
* @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.
|
||||
* @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, str_id, String:buffer[], maxlen);
|
||||
|
304
env/include/sdkhooks.inc
vendored
304
env/include/sdkhooks.inc
vendored
@ -1,43 +1,80 @@
|
||||
/**
|
||||
* vim: set ts=4 :
|
||||
* =============================================================================
|
||||
* SourceMod (C)2009-2013 AlliedModders LLC. All rights reserved.
|
||||
* =============================================================================
|
||||
*
|
||||
* This file is part of the SourceMod/SourcePawn SDK.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 3.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* As a special exception, AlliedModders LLC gives you permission to link the
|
||||
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
||||
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
||||
* by the Valve Corporation. You must obey the GNU General Public License in
|
||||
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
||||
* this exception to all derivative works. AlliedModders LLC defines further
|
||||
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
||||
* or <http://www.sourcemod.net/license.php>.
|
||||
*/
|
||||
|
||||
#if defined _sdkhooks_included
|
||||
#endinput
|
||||
#endif
|
||||
#define _sdkhooks_included
|
||||
|
||||
#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
|
||||
// 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_BUCKSHOT (1 << 29) /**< not quite a bullet. Little, rounder, different. */
|
||||
#endif
|
||||
|
||||
#if !defined DMG_CRIT
|
||||
// TF2 crits and minicrits
|
||||
#define DMG_CRIT DMG_ACID
|
||||
#endif
|
||||
|
||||
enum SDKHookType
|
||||
{
|
||||
@ -62,68 +99,183 @@ enum SDKHookType
|
||||
SDKHook_ShouldCollide,
|
||||
SDKHook_PreThinkPost,
|
||||
SDKHook_PostThinkPost,
|
||||
SDKHook_ThinkPost
|
||||
SDKHook_ThinkPost,
|
||||
SDKHook_EndTouchPost,
|
||||
SDKHook_GroundEntChangedPost,
|
||||
SDKHook_SpawnPost,
|
||||
SDKHook_StartTouchPost,
|
||||
SDKHook_TouchPost,
|
||||
SDKHook_VPhysicsUpdate,
|
||||
SDKHook_VPhysicsUpdatePost,
|
||||
SDKHook_WeaponCanSwitchToPost,
|
||||
SDKHook_WeaponCanUsePost,
|
||||
SDKHook_WeaponDropPost,
|
||||
SDKHook_WeaponEquipPost,
|
||||
SDKHook_WeaponSwitchPost,
|
||||
SDKHook_Use,
|
||||
SDKHook_UsePost,
|
||||
SDKHook_Reload,
|
||||
SDKHook_ReloadPost,
|
||||
SDKHook_GetMaxHealth, /**< ep2v and later */
|
||||
};
|
||||
|
||||
/*
|
||||
Alphabetized for easy readability
|
||||
|
||||
SDKHook_EndTouch
|
||||
SDKHook_FireBulletsPost
|
||||
SDKHook_OnTakeDamage
|
||||
SDKHook_OnTakeDamagePost
|
||||
SDKHook_PreThink
|
||||
SDKHook_PreThinkPost
|
||||
SDKHook_PostThink
|
||||
SDKHook_PostThinkPost
|
||||
SDKHook_SetTransmit
|
||||
SDKHook_ShouldCollide
|
||||
SDKHook_Spawn
|
||||
SDKHook_StartTouch
|
||||
SDKHook_Think
|
||||
SDKHook_ThinkPost
|
||||
SDKHook_Touch
|
||||
SDKHook_TraceAttack
|
||||
SDKHook_TraceAttackPost
|
||||
SDKHook_WeaponCanSwitchTo
|
||||
SDKHook_WeaponCanUse
|
||||
SDKHook_WeaponDrop
|
||||
SDKHook_WeaponEquip
|
||||
SDKHook_WeaponSwitch
|
||||
SDKHook_EndTouch,
|
||||
SDKHook_EndTouchPost,
|
||||
|
||||
SDKHook_FireBulletsPost,
|
||||
|
||||
SDKHook_GetMaxHealth, (ep2v and later)
|
||||
|
||||
SDKHook_GroundEntChangedPost,
|
||||
|
||||
SDKHook_OnTakeDamage,
|
||||
SDKHook_OnTakeDamagePost,
|
||||
|
||||
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
|
||||
*/
|
||||
|
||||
enum UseType
|
||||
{
|
||||
Use_Off,
|
||||
Use_On,
|
||||
Use_Set,
|
||||
Use_Toggle
|
||||
};
|
||||
|
||||
funcenum SDKHookCB
|
||||
{
|
||||
// PreThink/Post
|
||||
// PostThink/Post
|
||||
public(client),
|
||||
|
||||
// Spawn
|
||||
Action:public(entity),
|
||||
|
||||
// GroundEntChanged
|
||||
// SpawnPost
|
||||
// Think/Post
|
||||
// VPhysicsUpdate/Post
|
||||
public(entity),
|
||||
|
||||
// EndTouch
|
||||
// StartTouch
|
||||
// Touch
|
||||
Action:public(entity, other),
|
||||
|
||||
// EndTouchPost
|
||||
// StartTouchPost
|
||||
// TouchPost
|
||||
public(entity, other),
|
||||
|
||||
// SetTransmit
|
||||
Action:public(entity, client),
|
||||
|
||||
// WeaponCanSwitchTo
|
||||
// WeaponCanUse
|
||||
// WeaponDrop
|
||||
// WeaponEquip
|
||||
// WeaponSwitch
|
||||
Action:public(client, weapon),
|
||||
|
||||
// WeaponCanSwitchToPost
|
||||
// WeaponCanUsePost
|
||||
// WeaponDropPost
|
||||
// WeaponEquipPost
|
||||
// WeaponSwitchPost
|
||||
public(client, weapon),
|
||||
|
||||
// GetMaxHealth (ep2v and later)
|
||||
Action:public(entity, &maxhealth),
|
||||
|
||||
// OnTakeDamage
|
||||
// Note: The weapon parameter is not used by all games and damage sources.
|
||||
// Note: Force application is dependent on game and damage type(s)
|
||||
// SDKHooks 1.0+
|
||||
Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype),
|
||||
// SDKHooks 2.0+
|
||||
Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3]),
|
||||
// SDKHooks 2.1+ (can check for support at runtime using GetFeatureStatus on SDKHook_DmgCustomInOTD capability.
|
||||
// DON'T attempt to access 'damagecustom' var if feature status != available
|
||||
Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon,
|
||||
Float:damageForce[3], Float:damagePosition[3], damagecustom),
|
||||
|
||||
// OnTakeDamagePost
|
||||
public(victim, attacker, inflictor, Float:damage, damagetype),
|
||||
// FireBullets
|
||||
public(victim, attacker, inflictor, Float:damage, damagetype, weapon, const Float:damageForce[3], const Float:damagePosition[3]),
|
||||
|
||||
// FireBulletsPost
|
||||
public(client, shots, const String:weaponname[]),
|
||||
|
||||
// TraceAttack
|
||||
Action:public(victim, &attacker, &inflictor, &Float:damage, &damagetype, &ammotype, hitbox, hitgroup),
|
||||
|
||||
// TraceAttackPost
|
||||
public(victim, attacker, inflictor, Float:damage, damagetype, ammotype, hitbox, hitgroup),
|
||||
|
||||
// ShouldCollide
|
||||
Action:public(entity, &collisiongroup, &contentsmask, &bool:result)
|
||||
bool:public(entity, collisiongroup, contentsmask, bool:originalResult),
|
||||
|
||||
// Use
|
||||
Action:public(entity, activator, caller, UseType:type, Float:value),
|
||||
|
||||
// UsePost
|
||||
public(entity, activator, caller, UseType:type, Float:value),
|
||||
|
||||
// Reload
|
||||
Action:public(weapon),
|
||||
|
||||
// Reload post
|
||||
public(weapon, bool:bSuccessful)
|
||||
};
|
||||
|
||||
|
||||
@ -147,6 +299,8 @@ forward OnEntityDestroyed(entity);
|
||||
/**
|
||||
* @brief When the game description is retrieved
|
||||
*
|
||||
* @note Not supported on ep2v.
|
||||
*
|
||||
* @param gameDesc Game description
|
||||
* @noreturn
|
||||
*/
|
||||
@ -191,11 +345,41 @@ native bool:SDKHookEx(entity, SDKHookType:type, SDKHookCB:callback);
|
||||
*/
|
||||
native SDKUnhook(entity, SDKHookType:type, SDKHookCB:callback);
|
||||
|
||||
/** Do Not Edit Below This Line **/
|
||||
/**
|
||||
* @brief 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
|
||||
* @noreturn
|
||||
*/
|
||||
native SDKHooks_TakeDamage(entity, inflictor, attacker, Float:damage, damageType=DMG_GENERIC, weapon=-1, const Float:damageForce[3]=NULL_VECTOR, const Float:damagePosition[3]=NULL_VECTOR);
|
||||
|
||||
/**
|
||||
* @brief 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.
|
||||
* @noreturn
|
||||
* @error Invalid client or weapon entity, weapon not owned by client.
|
||||
*/
|
||||
native SDKHooks_DropWeapon(client, weapon, const Float:vecTarget[3]=NULL_VECTOR, const Float:vecVelocity[3]=NULL_VECTOR);
|
||||
|
||||
/**
|
||||
* Do not edit below this line!
|
||||
*/
|
||||
public Extension:__ext_sdkhooks =
|
||||
{
|
||||
name = "sdkhooks",
|
||||
name = "SDKHooks",
|
||||
file = "sdkhooks.ext",
|
||||
#if defined AUTOLOAD_EXTENSIONS
|
||||
autoload = 1,
|
||||
|
16
env/include/sdktools.inc
vendored
16
env/include/sdktools.inc
vendored
@ -72,6 +72,7 @@ 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 */
|
||||
};
|
||||
|
||||
enum SDKType
|
||||
@ -130,6 +131,14 @@ native PrepSDKCall_SetVirtual(vtblidx);
|
||||
*/
|
||||
native bool:PrepSDKCall_SetSignature(SDKLibrary:lib, const String:signature[], bytes);
|
||||
|
||||
/**
|
||||
* Uses the given function address for the SDK call.
|
||||
*
|
||||
* @param addr Address of function to use.
|
||||
* @return True on success, false on failure.
|
||||
*/
|
||||
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.
|
||||
@ -194,6 +203,13 @@ native Handle:EndPrepSDKCall();
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
native GetPlayerResourceEntity();
|
||||
|
||||
#include <sdktools_stocks>
|
||||
|
||||
/**
|
||||
|
2
env/include/sdktools_entinput.inc
vendored
2
env/include/sdktools_entinput.inc
vendored
@ -109,7 +109,7 @@ native SetVariantColor(const color[4]);
|
||||
/**
|
||||
* Sets an entity in the global variant object.
|
||||
*
|
||||
* @param Entity index.
|
||||
* @param entity Entity index.
|
||||
* @noreturn
|
||||
* @error Invalid entity index.
|
||||
*/
|
||||
|
34
env/include/sdktools_functions.inc
vendored
34
env/include/sdktools_functions.inc
vendored
@ -81,13 +81,13 @@ native GetPlayerWeaponSlot(client, slot);
|
||||
native IgniteEntity(entity, Float:time, bool:npc=false, Float:size=0.0, bool:level=false);
|
||||
|
||||
/**
|
||||
* Extinguishes a player that is on fire.
|
||||
* Extinguishes an entity that is on fire.
|
||||
*
|
||||
* @param entity Entity index.
|
||||
* @noreturn
|
||||
* @error Invalid entity or client not in game, or lack of mod support.
|
||||
*/
|
||||
native ExtinguishEntity(client);
|
||||
native ExtinguishEntity(entity);
|
||||
|
||||
/**
|
||||
* Teleports an entity.
|
||||
@ -194,7 +194,7 @@ native bool:DispatchKeyValueFloat(entity, const String:keyName[], Float:value);
|
||||
* @return True on success, false otherwise.
|
||||
* @error Invalid entity index, or no mod support.
|
||||
*/
|
||||
native bool:DispatchKeyValueVector(entity, const String:keyName[], const Float:vector[3]);
|
||||
native bool:DispatchKeyValueVector(entity, const String:keyName[], const Float:vec[3]);
|
||||
|
||||
/**
|
||||
* Returns the entity a client is aiming at.
|
||||
@ -270,7 +270,7 @@ native GetTeamClientCount(index);
|
||||
native SetEntityModel(entity, const String:model[]);
|
||||
|
||||
/**
|
||||
* Retrieves the decal file name associated to a given client.
|
||||
* Retrieves the decal file name associated with a given client.
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @param hex Buffer to store the logo filename.
|
||||
@ -280,6 +280,17 @@ native SetEntityModel(entity, const String:model[]);
|
||||
*/
|
||||
native bool:GetPlayerDecalFile(client, String:hex[], 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.
|
||||
*/
|
||||
native bool:GetPlayerJingleFile(client, String:hex[], maxlength);
|
||||
|
||||
/**
|
||||
* Returns the average server network traffic in bytes/sec.
|
||||
*
|
||||
@ -293,7 +304,7 @@ native GetServerNetStats(&Float:in, &Float:out);
|
||||
* Equip's a player's weapon.
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param item CBaseCombatWeapon entity index.
|
||||
* @param weapon CBaseCombatWeapon entity index.
|
||||
* @noreturn
|
||||
* @error Invalid client or entity, lack of mod support, or client not in
|
||||
* game.
|
||||
@ -320,3 +331,16 @@ native ActivateEntity(entity);
|
||||
* @error Invalid client index, or client not connected.
|
||||
*/
|
||||
native SetClientInfo(client, const String:key[], const String:value[]);
|
||||
|
||||
/**
|
||||
* Gives ammo of a certain type to a player.
|
||||
* This natives obeys the maximum amount of ammo a player can carry per ammo type.
|
||||
*
|
||||
* @param client The client index.
|
||||
* @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.
|
||||
*/
|
||||
native GivePlayerAmmo(client, amount, ammotype, bool:suppressSound=false);
|
8
env/include/sdktools_gamerules.inc
vendored
8
env/include/sdktools_gamerules.inc
vendored
@ -66,6 +66,9 @@ enum RoundState {
|
||||
|
||||
//Game is over, doing bonus round stuff
|
||||
RoundState_Bonus,
|
||||
|
||||
//Between rounds
|
||||
RoundState_BetweenRounds,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -90,6 +93,7 @@ native GameRules_GetProp(const String:prop[], size=4, element=0);
|
||||
* 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 If true, change will be sent over the network.
|
||||
* @error Not supported.
|
||||
* @noreturn
|
||||
*/
|
||||
@ -111,6 +115,7 @@ native Float:GameRules_GetPropFloat(const String:prop[], element=0);
|
||||
* @param prop Property name.
|
||||
* @param value Value to set.
|
||||
* @param element Element # (starting from 0) if property is an array.
|
||||
* @param changeState If true, change will be sent over the network.
|
||||
* @noreturn
|
||||
* @error Not supported.
|
||||
*/
|
||||
@ -134,6 +139,7 @@ native GameRules_GetPropEnt(const String:prop[], element=0);
|
||||
* @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 If true, change will be sent over the network.
|
||||
* @noreturn
|
||||
* @error Not supported.
|
||||
*/
|
||||
@ -156,6 +162,7 @@ native GameRules_GetPropVector(const String:prop[], Float:vec[3], element=0);
|
||||
* @param prop Property name.
|
||||
* @param vec Vector to set.
|
||||
* @param element Element # (starting from 0) if property is an array.
|
||||
* @param changeState If true, change will be sent over the network.
|
||||
* @noreturn
|
||||
* @error Not supported.
|
||||
*/
|
||||
@ -177,6 +184,7 @@ native GameRules_GetPropString(const String:prop[], String:buffer[], maxlen);
|
||||
*
|
||||
* @param prop Property to use.
|
||||
* @param buffer String to set.
|
||||
* @param changeState If true, change will be sent over the network.
|
||||
* @return Number of non-null bytes written.
|
||||
* @error Not supported.
|
||||
*/
|
||||
|
12
env/include/sdktools_hooks.inc
vendored
12
env/include/sdktools_hooks.inc
vendored
@ -35,6 +35,8 @@
|
||||
#endif
|
||||
#define _sdktools_hooks_included
|
||||
|
||||
#define FEATURECAP_PLAYERRUNCMD_11PARAMS "SDKTools PlayerRunCmd 11Params"
|
||||
|
||||
/**
|
||||
* @brief Called when a clients movement buttons are being processed
|
||||
*
|
||||
@ -44,6 +46,14 @@
|
||||
* @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 avaliable, use FeatureType_Capability and
|
||||
* FEATURECAP_PLAYERRUNCMD_11PARAMS.
|
||||
*/
|
||||
forward Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon);
|
||||
forward Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon, &subtype, &cmdnum, &tickcount, &seed, mouse[2]);
|
2
env/include/sdktools_sound.inc
vendored
2
env/include/sdktools_sound.inc
vendored
@ -127,7 +127,7 @@ enum
|
||||
* @param name Sound file name relative to the "sounds" folder.
|
||||
* @noreturn
|
||||
*/
|
||||
native PrefetchSound(const String:nane[]);
|
||||
native PrefetchSound(const String:name[]);
|
||||
|
||||
/**
|
||||
* This function is not known to work, and may crash. You should
|
||||
|
12
env/include/sdktools_stringtables.inc
vendored
12
env/include/sdktools_stringtables.inc
vendored
@ -86,7 +86,7 @@ native GetStringTableName(tableidx, String:name[], maxlength);
|
||||
* Searches for the index of a given string in a string table.
|
||||
*
|
||||
* @param tableidx A string table index.
|
||||
* @param string String to find.
|
||||
* @param str String to find.
|
||||
* @return String index if found, INVALID_STRING_INDEX otherwise.
|
||||
* @error Invalid string table index.
|
||||
*/
|
||||
@ -97,12 +97,12 @@ native FindStringIndex(tableidx, const String:str[]);
|
||||
*
|
||||
* @param tableidx A string table index.
|
||||
* @param stringidx A string index.
|
||||
* @param name Buffer to store the string value.
|
||||
* @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 ReadStringTable(tableidx, stringIdx, String:str[], maxlength);
|
||||
native ReadStringTable(tableidx, stringidx, String:str[], maxlength);
|
||||
|
||||
/**
|
||||
* Returns the length of the user data associated with a given string index.
|
||||
@ -124,7 +124,7 @@ native GetStringTableDataLength(tableidx, stringidx);
|
||||
* @return Number of bytes written to the buffer (UTF-8 safe).
|
||||
* @error Invalid string table index or string index.
|
||||
*/
|
||||
native GetStringTableData(tableidx, stringIdx, String:userdata[], maxlength);
|
||||
native GetStringTableData(tableidx, stringidx, String:userdata[], maxlength);
|
||||
|
||||
/**
|
||||
* Sets the user data associated with a given string index.
|
||||
@ -136,13 +136,13 @@ native GetStringTableData(tableidx, stringIdx, String:userdata[], maxlength);
|
||||
* @return Number of bytes written to the buffer (UTF-8 safe).
|
||||
* @error Invalid string table index or string index.
|
||||
*/
|
||||
native SetStringTableData(tableidx, stringIdx, const String:userdata[], length);
|
||||
native SetStringTableData(tableidx, stringidx, const String:userdata[], length);
|
||||
|
||||
/**
|
||||
* Adds a string to a given string table.
|
||||
*
|
||||
* @param tableidx A string table index.
|
||||
* @param string String to add.
|
||||
* @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
|
||||
|
12
env/include/sdktools_tempents_stocks.inc
vendored
12
env/include/sdktools_tempents_stocks.inc
vendored
@ -100,7 +100,7 @@ stock TE_SetupSparks(const Float:pos[3], const Float:dir[3], Magnitude, TrailLen
|
||||
* @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 FrameRate Frame rate of the smoke.
|
||||
* @noreturn
|
||||
*/
|
||||
stock TE_SetupSmoke(const Float:pos[3], Model, Float:Scale, FrameRate)
|
||||
@ -278,7 +278,7 @@ stock TE_SetupBloodSprite(const Float:pos[3], const Float:dir[3], const color[4]
|
||||
* @param Life Time duration of the ring.
|
||||
* @param Width Beam width.
|
||||
* @param Amplitude Beam amplitude.
|
||||
* @param color Color array (r, g, b, a).
|
||||
* @param Color Color array (r, g, b, a).
|
||||
* @param Speed Speed of the beam.
|
||||
* @param Flags Beam flags.
|
||||
* @noreturn
|
||||
@ -321,7 +321,7 @@ stock TE_SetupBeamRingPoint(const Float:center[3], Float:Start_Radius, Float:End
|
||||
* @param EndWidth Final beam width.
|
||||
* @param FadeLength Beam fade time duration.
|
||||
* @param Amplitude Beam amplitude.
|
||||
* @param color Color array (r, g, b, a).
|
||||
* @param Color Color array (r, g, b, a).
|
||||
* @param Speed Speed of the beam.
|
||||
* @noreturn
|
||||
*/
|
||||
@ -361,7 +361,7 @@ stock TE_SetupBeamPoints(const Float:start[3], const Float:end[3], ModelIndex, H
|
||||
* @param EndWidth Final beam width.
|
||||
* @param FadeLength Beam fade time duration.
|
||||
* @param Amplitude Beam amplitude.
|
||||
* @param color Color array (r, g, b, a).
|
||||
* @param Color Color array (r, g, b, a).
|
||||
* @param Speed Speed of the beam.
|
||||
* @noreturn
|
||||
*/
|
||||
@ -399,7 +399,7 @@ stock TE_SetupBeamLaser(StartEntity, EndEntity, ModelIndex, HaloIndex, StartFram
|
||||
* @param Life Time duration of the ring.
|
||||
* @param Width Beam width.
|
||||
* @param Amplitude Beam amplitude.
|
||||
* @param color Color array (r, g, b, a).
|
||||
* @param Color Color array (r, g, b, a).
|
||||
* @param Speed Speed of the beam.
|
||||
* @param Flags Beam flags.
|
||||
* @noreturn
|
||||
@ -436,7 +436,7 @@ stock TE_SetupBeamRing(StartEntity, EndEntity, ModelIndex, HaloIndex, StartFrame
|
||||
* @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 Color Color array (r, g, b, a).
|
||||
* @noreturn
|
||||
*/
|
||||
stock TE_SetupBeamFollow(EntIndex, ModelIndex, HaloIndex, Float:Life, Float:Width, Float:EndWidth, FadeLength, const Color[4])
|
||||
|
3
env/include/sdktools_voice.inc
vendored
3
env/include/sdktools_voice.inc
vendored
@ -78,6 +78,7 @@ native GetClientListeningFlags(client);
|
||||
*
|
||||
* @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.
|
||||
*/
|
||||
#pragma deprecated Use SetListenOverride() instead
|
||||
@ -98,7 +99,7 @@ native bool:GetClientListening(iReceiver, iSender);
|
||||
*
|
||||
* @param iReceiver The listener index.
|
||||
* @param iSender The sender index.
|
||||
* @param override
|
||||
* @param override The override of the receiver's ability to listen to the sender.
|
||||
* @return True if successful otherwise false.
|
||||
*/
|
||||
native bool:SetListenOverride(iReceiver, iSender, ListenOverride:override);
|
||||
|
6
env/include/sorting.inc
vendored
6
env/include/sorting.inc
vendored
@ -84,7 +84,7 @@ native SortFloats(Float:array[], array_size, SortOrder:order = Sort_Ascending);
|
||||
* @param order Sorting order to use.
|
||||
* @noreturn
|
||||
*/
|
||||
native SortStrings(String:array[][], num_strings, SortOrder:order = Sort_Ascending);
|
||||
native SortStrings(String:array[][], array_size, SortOrder:order = Sort_Ascending);
|
||||
|
||||
/**
|
||||
* Sort comparison function for 1D array elements.
|
||||
@ -125,8 +125,8 @@ native SortCustom1D(array[], array_size, SortFunc1D:sortfunc, Handle:hndl=INVALI
|
||||
*/
|
||||
funcenum SortFunc2D
|
||||
{
|
||||
public(array[], array[], const array[][], Handle:hndl),
|
||||
public(String:array[], String:array[], const String:array[][], Handle:hndl),
|
||||
public(elem1[], elem2[], const array[][], Handle:hndl),
|
||||
public(String:elem1[], String:elem2[], const String:array[][], Handle:hndl),
|
||||
};
|
||||
|
||||
/**
|
||||
|
7
env/include/sourcemod.inc
vendored
7
env/include/sourcemod.inc
vendored
@ -66,6 +66,7 @@ struct Plugin
|
||||
#include <console>
|
||||
#include <events>
|
||||
#include <bitbuffer>
|
||||
#include <protobuf>
|
||||
#include <usermessages>
|
||||
#include <menus>
|
||||
#include <halflife>
|
||||
@ -277,7 +278,7 @@ native GetPluginFilename(Handle:plugin, String:buffer[], maxlength);
|
||||
* @return True if being debugged, false otherwise.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native bool:IsPluginDebugging(Handle:hndl);
|
||||
native bool:IsPluginDebugging(Handle:plugin);
|
||||
|
||||
/**
|
||||
* Retrieves a plugin's public info.
|
||||
@ -327,7 +328,7 @@ native SetFailState(const String:string[], any:...);
|
||||
* Aborts the current callback and throws an error. This function
|
||||
* does not return in that no code is executed following it.
|
||||
*
|
||||
* @param format String format.
|
||||
* @param fmt String format.
|
||||
* @param ... Format arguments.
|
||||
* @noreturn
|
||||
* @error Always!
|
||||
@ -386,7 +387,7 @@ native GameConfGetOffset(Handle:gc, const String:key[]);
|
||||
*/
|
||||
native bool:GameConfGetKeyValue(Handle:gc, const String:key[], String:buffer[], maxlen);
|
||||
|
||||
/*
|
||||
/**
|
||||
* Finds an address calculation in a GameConfig file,
|
||||
* performs LoadFromAddress on it as appropriate, then returns the final address.
|
||||
*
|
||||
|
14
env/include/string.inc
vendored
14
env/include/string.inc
vendored
@ -119,7 +119,7 @@ stock bool:StrEqual(const String:str1[], const String:str2[], bool:caseSensitive
|
||||
* destination will be truncated.
|
||||
*
|
||||
* @param dest Destination string buffer to copy to.
|
||||
* @param destlen Destination buffer length (includes null terminator).
|
||||
* @param destLen Destination buffer length (includes null terminator).
|
||||
* @param source Source string buffer to copy from.
|
||||
* @return Number of cells written.
|
||||
*/
|
||||
@ -323,7 +323,7 @@ native GetCharBytes(const String:source[]);
|
||||
*
|
||||
* @note Multi-byte characters will always return false.
|
||||
*
|
||||
* @param char Character to test.
|
||||
* @param chr Character to test.
|
||||
* @return True if character is alphabetical, otherwise false.
|
||||
*/
|
||||
native bool:IsCharAlpha(chr);
|
||||
@ -333,7 +333,7 @@ native bool:IsCharAlpha(chr);
|
||||
*
|
||||
* @note Multi-byte characters will always return false.
|
||||
*
|
||||
* @param char Character to test.
|
||||
* @param chr Character to test.
|
||||
* @return True if character is numeric, otherwise false.
|
||||
*/
|
||||
native bool:IsCharNumeric(chr);
|
||||
@ -343,7 +343,7 @@ native bool:IsCharNumeric(chr);
|
||||
*
|
||||
* @note Multi-byte characters will always return false.
|
||||
*
|
||||
* @param char Character to test.
|
||||
* @param chr Character to test.
|
||||
* @return True if character is whitespace, otherwise false.
|
||||
*/
|
||||
native bool:IsCharSpace(chr);
|
||||
@ -351,7 +351,7 @@ native bool:IsCharSpace(chr);
|
||||
/**
|
||||
* Returns if a character is multi-byte or not.
|
||||
*
|
||||
* @param char Character to test.
|
||||
* @param chr Character to test.
|
||||
* @return 0 for a normal 7-bit ASCII character,
|
||||
* otherwise number of bytes in multi-byte character.
|
||||
*/
|
||||
@ -362,7 +362,7 @@ native IsCharMB(chr);
|
||||
*
|
||||
* @note Multi-byte characters will always return false.
|
||||
*
|
||||
* @param char Character to test.
|
||||
* @param chr Character to test.
|
||||
* @return True if character is uppercase, otherwise false.
|
||||
*/
|
||||
native bool:IsCharUpper(chr);
|
||||
@ -372,7 +372,7 @@ native bool:IsCharUpper(chr);
|
||||
*
|
||||
* @note Multi-byte characters will always return false.
|
||||
*
|
||||
* @param char Character to test.
|
||||
* @param chr Character to test.
|
||||
* @return True if character is lowercase, otherwise false.
|
||||
*/
|
||||
native bool:IsCharLower(chr);
|
||||
|
72
env/include/testing.inc
vendored
Normal file
72
env/include/testing.inc
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
/**
|
||||
* vim: set ts=4 sw=4 tw=99 noet :
|
||||
* =============================================================================
|
||||
* SourceMod (C)2004-2014 AlliedModders LLC. All rights reserved.
|
||||
* =============================================================================
|
||||
*
|
||||
* This file is part of the SourceMod/SourcePawn SDK.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 3.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* As a special exception, AlliedModders LLC gives you permission to link the
|
||||
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
||||
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
||||
* by the Valve Corporation. You must obey the GNU General Public License in
|
||||
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
||||
* this exception to all derivative works. AlliedModders LLC defines further
|
||||
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
||||
* or <http://www.sourcemod.net/license.php>.
|
||||
*
|
||||
* Version: $Id$
|
||||
*/
|
||||
|
||||
static TestNumber = 0;
|
||||
static String:TestContext[255];
|
||||
|
||||
SetTestContext(const String:context[])
|
||||
{
|
||||
strcopy(TestContext, sizeof(TestContext), context);
|
||||
}
|
||||
|
||||
AssertEq(const String:text[], cell1, cell2)
|
||||
{
|
||||
TestNumber++;
|
||||
if (cell1 == cell2) {
|
||||
PrintToServer("[%d] %s: %s == %d OK", TestNumber, TestContext, text, cell2);
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
AssertFalse(const String:text[], bool:value)
|
||||
{
|
||||
TestNumber++;
|
||||
if (!value) {
|
||||
PrintToServer("[%d] %s: %s == false OK", TestNumber, TestContext, text, value);
|
||||
} else {
|
||||
PrintToServer("[%d] %s FAIL: %s should be false, got true", TestNumber, TestContext, text);
|
||||
ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext);
|
||||
}
|
||||
}
|
||||
|
||||
AssertTrue(const String:text[], bool:value)
|
||||
{
|
||||
TestNumber++;
|
||||
if (value) {
|
||||
PrintToServer("[%d] %s: %s == true OK", TestNumber, TestContext, text, value);
|
||||
} else {
|
||||
PrintToServer("[%d] %s FAIL: %s should be true, got false", TestNumber, TestContext, text);
|
||||
ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext);
|
||||
}
|
||||
}
|
106
env/include/tf2.inc
vendored
106
env/include/tf2.inc
vendored
@ -35,13 +35,13 @@
|
||||
#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_STUNFLAGS_LOSERSTATE TF_STUNFLAG_SLOWDOWN|TF_STUNFLAG_NOSOUNDOREFFECT|TF_STUNFLAG_THIRDPERSON
|
||||
#define TF_STUNFLAGS_GHOSTSCARE TF_STUNFLAG_GHOSTEFFECT|TF_STUNFLAG_THIRDPERSON
|
||||
@ -107,23 +107,67 @@ enum TFCond
|
||||
TFCond_RegenBuffed,
|
||||
TFCond_MarkedForDeath,
|
||||
TFCond_NoHealingDamageBuff,
|
||||
TFCond_SpeedBuffAlly,
|
||||
TFCond_SpeedBuffAlly, //32
|
||||
TFCond_HalloweenCritCandy,
|
||||
|
||||
TFCond_CritHype = 36,
|
||||
TFCond_CritCanteen,
|
||||
TFCond_CritDemoCharge,
|
||||
TFCond_CritHype,
|
||||
TFCond_CritOnFirstBlood,
|
||||
TFCond_CritOnWin,
|
||||
TFCond_CritOnFlagCapture,
|
||||
TFCond_CritOnKill,
|
||||
TFCond_RestrictToMelee
|
||||
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,
|
||||
};
|
||||
|
||||
const Float:TFCondDuration_Infinite = -1.0;
|
||||
|
||||
enum TFHoliday
|
||||
{
|
||||
TFHoliday_Birthday = 1,
|
||||
TFHoliday_Halloween,
|
||||
TFHoliday_Christmas,
|
||||
TFHoliday_ValentinesDay,
|
||||
TFHoliday_MeetThePyro,
|
||||
TFHoliday_FullMoon,
|
||||
TFHoliday_HalloweenOrFullMoon,
|
||||
TFHoliday_HalloweenOrFullMoonOrValentines,
|
||||
TFHoliday_AprilFools,
|
||||
};
|
||||
|
||||
enum TFObjectType
|
||||
@ -146,10 +190,11 @@ enum TFObjectMode
|
||||
* Sets a client on fire for 10 seconds.
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @param attacker Attacker's index.
|
||||
* @noreturn
|
||||
* @error Invalid client index, client not in game, or no mod support.
|
||||
*/
|
||||
native TF2_IgnitePlayer(client, target);
|
||||
native TF2_IgnitePlayer(client, attacker);
|
||||
|
||||
/**
|
||||
* Respawns a client
|
||||
@ -175,10 +220,12 @@ native TF2_RegeneratePlayer(client);
|
||||
* @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).
|
||||
* @noreturn
|
||||
* @error Invalid client index, client not in game, or no mod support.
|
||||
*/
|
||||
native TF2_AddCondition(client, TFCond:condition, Float:duration);
|
||||
native TF2_AddCondition(client, TFCond:condition, Float:duration=TFCondDuration_Infinite, inflictor=0);
|
||||
|
||||
/**
|
||||
* Removes a condition from a player
|
||||
@ -227,10 +274,10 @@ native TF2_RemovePlayerDisguise(client);
|
||||
* Stuns a client
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @param float Duration of stun.
|
||||
* @param float Slowdown percent (as decimal, 0.00-1.00)
|
||||
* (ignored if TF_STUNFLAG_SLOWDOWN is not set.
|
||||
* @param int Stun flags.
|
||||
* @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).
|
||||
* @noreturn
|
||||
*/
|
||||
@ -241,7 +288,7 @@ native TF2_StunPlayer(client, Float:duration, Float:slowdown=0.0, stunflags, att
|
||||
*
|
||||
* @param client Player's index.
|
||||
* @param attacker Attacker's index.
|
||||
* @param float Duration of bleeding (in seconds).
|
||||
* @param duration Duration of bleeding (in seconds).
|
||||
* @noreturn
|
||||
*/
|
||||
native TF2_MakeBleed(client, attacker, Float:duration);
|
||||
@ -251,6 +298,7 @@ native TF2_MakeBleed(client, attacker, Float:duration);
|
||||
*
|
||||
* @return The current resource entity index.
|
||||
*/
|
||||
#pragma deprecated Use GetPlayerResourceEntity instead
|
||||
native TF2_GetResourceEntity();
|
||||
|
||||
/**
|
||||
@ -295,6 +343,14 @@ forward Action:TF2_OnGetHoliday(&TFHoliday:holiday);
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
native bool:TF2_IsHolidayActive(TFHoliday:holiday);
|
||||
|
||||
/**
|
||||
* Returns whether or not a client (Player) is in a duel.
|
||||
*
|
||||
@ -335,6 +391,19 @@ forward TF2_OnWaitingForPlayersStart();
|
||||
*/
|
||||
forward TF2_OnWaitingForPlayersEnd();
|
||||
|
||||
/**
|
||||
* Called when a player attempts to use a teleporter to decide if the player should be allowed to teleport.
|
||||
* 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'.
|
||||
*/
|
||||
forward Action:TF2_OnPlayerTeleport(client, teleporter, &bool:result);
|
||||
|
||||
/**
|
||||
* Do not edit below this line!
|
||||
*/
|
||||
@ -366,5 +435,6 @@ public __ext_tf2_SetNTVOptional()
|
||||
MarkNativeAsOptional("TF2_GetResourceEntity");
|
||||
MarkNativeAsOptional("TF2_GetClass");
|
||||
MarkNativeAsOptional("TF2_IsPlayerInDuel");
|
||||
MarkNativeAsOptional("TF2_IsHolidayActive");
|
||||
}
|
||||
#endif
|
||||
|
48
env/include/tf2_stocks.inc
vendored
48
env/include/tf2_stocks.inc
vendored
@ -132,6 +132,18 @@ enum {
|
||||
TF_CUSTOM_PLASMA_GIB,
|
||||
TF_CUSTOM_PRACTICE_STICKY,
|
||||
TF_CUSTOM_EYEBALL_ROCKET,
|
||||
TF_CUSTOM_HEADSHOT_DECAPITATION,
|
||||
TF_CUSTOM_TAUNT_ARMAGEDDON,
|
||||
TF_CUSTOM_FLARE_PELLET,
|
||||
TF_CUSTOM_CLEAVER,
|
||||
TF_CUSTOM_CLEAVER_CRIT,
|
||||
TF_CUSTOM_SAPPER_RECORDER_DEATH,
|
||||
TF_CUSTOM_MERASMUS_PLAYER_BOMB,
|
||||
TF_CUSTOM_MERASMUS_GRENADE,
|
||||
TF_CUSTOM_MERASMUS_ZAP,
|
||||
TF_CUSTOM_MERASMUS_DECAPITATION,
|
||||
TF_CUSTOM_CANNONBALL_PUSH,
|
||||
TF_CUSTOM_TAUNT_ALLCLASS_GUITAR_RIFF,
|
||||
};
|
||||
|
||||
// Weapon codes as used in some events, such as player_death
|
||||
@ -218,9 +230,28 @@ enum {
|
||||
TF_WEAPON_RAYGUN,
|
||||
TF_WEAPON_PARTICLE_CANNON,
|
||||
TF_WEAPON_MECHANICAL_ARM,
|
||||
TF_WEAPON_DRG_POMSON,
|
||||
TF_WEAPON_BAT_GIFTWRAP,
|
||||
TF_WEAPON_GRENADE_ORNAMENT,
|
||||
TF_WEAPON_RAYGUN_REVENGE,
|
||||
TF_WEAPON_PEP_BRAWLER_BLASTER,
|
||||
TF_WEAPON_CLEAVER,
|
||||
TF_WEAPON_GRENADE_CLEAVER,
|
||||
TF_WEAPON_STICKY_BALL_LAUNCHER,
|
||||
TF_WEAPON_GRENADE_STICKY_BALL,
|
||||
TF_WEAPON_SHOTGUN_BUILDING_RESCUE,
|
||||
TF_WEAPON_CANNON,
|
||||
TF_WEAPON_THROWABLE,
|
||||
TF_WEAPON_GRENADE_THROWABLE,
|
||||
TF_WEAPON_PDA_SPY_BUILD,
|
||||
TF_WEAPON_GRENADE_WATERBALLOON,
|
||||
TF_WEAPON_HARVESTER_SAW,
|
||||
TF_WEAPON_SPELLBOOK,
|
||||
TF_WEAPON_SPELLBOOK_PROJECTILE,
|
||||
TF_WEAPON_SNIPERRIFLE_CLASSIC,
|
||||
};
|
||||
|
||||
// TF2 Weapon Slots for GetPlayerWeaponSlot
|
||||
// TF2 Weapon Loadout Slots
|
||||
enum
|
||||
{
|
||||
TFWeaponSlot_Primary,
|
||||
@ -328,6 +359,7 @@ stock TF2_SetPlayerClass(client, TFClassType:class, bool:weapons=true, bool:pers
|
||||
* @return Value or -1 on failure.
|
||||
* @error Invalid client index, client not in game or failed to find resource entity.
|
||||
*/
|
||||
#pragma deprecated Use GetPlayerResourceEntity and GetEntProp instead
|
||||
stock TF2_GetPlayerResourceData(client, TFResourceType:type)
|
||||
{
|
||||
if (!IsClientConnected(client))
|
||||
@ -363,6 +395,7 @@ stock TF2_GetPlayerResourceData(client, TFResourceType:type)
|
||||
* @return Value or -1 on failure.
|
||||
* @error Invalid client index, client not in game or failed to find resource entity.
|
||||
*/
|
||||
#pragma deprecated Use GetPlayerResourceEntity and SetEntProp instead
|
||||
stock bool:TF2_SetPlayerResourceData(client, TFResourceType:type, any:value)
|
||||
{
|
||||
if (!IsClientConnected(client))
|
||||
@ -403,7 +436,7 @@ stock TF2_RemoveWeaponSlot(client, slot)
|
||||
while ((weaponIndex = GetPlayerWeaponSlot(client, slot)) != -1)
|
||||
{
|
||||
RemovePlayerItem(client, weaponIndex);
|
||||
RemoveEdict(weaponIndex);
|
||||
AcceptEntityInput(weaponIndex, "Kill");
|
||||
}
|
||||
}
|
||||
|
||||
@ -437,6 +470,7 @@ stock TF2_GetPlayerConditionFlags(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
|
||||
*/
|
||||
stock bool:TF2_IsPlayerInCondition(client, TFCond:cond)
|
||||
@ -455,7 +489,7 @@ stock bool:TF2_IsPlayerInCondition(client, TFCond:cond)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (_:cond < 64)
|
||||
{
|
||||
new bit = (1 << (_:cond - 32));
|
||||
if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx") & bit) == bit)
|
||||
@ -463,6 +497,14 @@ stock bool:TF2_IsPlayerInCondition(client, TFCond:cond)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
new bit = (1 << (_:cond - 64));
|
||||
if ((GetEntProp(client, Prop_Send, "m_nPlayerCondEx2") & bit) == bit)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
1
env/include/timers.inc
vendored
1
env/include/timers.inc
vendored
@ -92,6 +92,7 @@ native Handle:CreateTimer(Float:interval, Timer:func, any:data=INVALID_HANDLE, f
|
||||
/**
|
||||
* 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.
|
||||
* @noreturn
|
||||
|
30
env/include/topmenus.inc
vendored
30
env/include/topmenus.inc
vendored
@ -178,11 +178,11 @@ native bool:LoadTopMenuConfig(Handle:topmenu, const String:file[], String:error[
|
||||
* @param name Object name (MUST be unique).
|
||||
* @param type Object type.
|
||||
* @param handler Handler for object.
|
||||
* @param cmdname Command name (for access overrides).
|
||||
* @param flags Default access flags.
|
||||
* @param parent Parent object 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.
|
||||
@ -201,7 +201,7 @@ native TopMenuObject:AddToTopMenu(Handle:topmenu,
|
||||
* Retrieves the info string of a top menu item.
|
||||
*
|
||||
* @param topmenu TopMenu Handle.
|
||||
* @param object TopMenuObject ID.
|
||||
* @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
|
||||
@ -247,6 +247,17 @@ native RemoveFromTopMenu(Handle:topmenu, TopMenuObject:object);
|
||||
*/
|
||||
native bool:DisplayTopMenu(Handle:topmenu, client, TopMenuPosition:position);
|
||||
|
||||
/**
|
||||
* Displays a TopMenu category to a client.
|
||||
*
|
||||
* @param topmenu TopMenu Handle.
|
||||
* @param category Category object 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, client);
|
||||
|
||||
/**
|
||||
* Finds a category's object ID in a TopMenu.
|
||||
*
|
||||
@ -258,6 +269,17 @@ native bool:DisplayTopMenu(Handle:topmenu, client, TopMenuPosition:position);
|
||||
*/
|
||||
native TopMenuObject:FindTopMenuCategory(Handle:topmenu, const String:name[]);
|
||||
|
||||
/**
|
||||
* Change the menu title caching behaviour of the TopMenu. By default the titles are cached to reduce overhead.
|
||||
* If you need dynamic menu titles, which can change everytime the menu is displayed to a user, set this to false.
|
||||
*
|
||||
* @param topmenu TopMenu Handle.
|
||||
* @param cache_titles Cache the menu titles and don't call the handler with TopMenuAction_DisplayTitle everytime the menu is drawn?
|
||||
* @noreturn
|
||||
* @error Invalid TopMenu Handle
|
||||
*/
|
||||
native SetTopMenuTitleCaching(Handle:topmenu, bool:cache_titles);
|
||||
|
||||
/**
|
||||
* Do not edit below this line!
|
||||
*/
|
||||
@ -285,6 +307,8 @@ public __ext_topmenus_SetNTVOptional()
|
||||
MarkNativeAsOptional("AddToTopMenu");
|
||||
MarkNativeAsOptional("RemoveFromTopMenu");
|
||||
MarkNativeAsOptional("DisplayTopMenu");
|
||||
MarkNativeAsOptional("DisplayTopMenuCategory");
|
||||
MarkNativeAsOptional("FindTopMenuCategory");
|
||||
MarkNativeAsOptional("SetTopMenuTitleCaching");
|
||||
}
|
||||
#endif
|
||||
|
22
env/include/usermessages.inc
vendored
22
env/include/usermessages.inc
vendored
@ -43,6 +43,15 @@ enum UserMsg
|
||||
INVALID_MESSAGE_ID = -1,
|
||||
};
|
||||
|
||||
/**
|
||||
* UserMsg message serialization formats
|
||||
*/
|
||||
enum UserMessageType
|
||||
{
|
||||
UM_BitBuf = 0,
|
||||
UM_Protobuf,
|
||||
};
|
||||
|
||||
/**
|
||||
* @section Message Flags.
|
||||
*/
|
||||
@ -54,6 +63,13 @@ enum UserMsg
|
||||
* @endsection
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns usermessage serialization type used for the current engine
|
||||
*
|
||||
* @return The supported usermessage type.
|
||||
*/
|
||||
native UserMessageType:GetUserMessageType();
|
||||
|
||||
/**
|
||||
* Returns the ID of a given message, or -1 on failure.
|
||||
*
|
||||
@ -115,7 +131,7 @@ native EndMessage();
|
||||
* Called when a message is hooked
|
||||
*
|
||||
* @param msg_id Message index.
|
||||
* @param bf Handle to the input bit buffer of the message.
|
||||
* @param msg Handle to the input bit buffer or protobuf.
|
||||
* @param players Array containing player indexes.
|
||||
* @param playersNum Number of players in the array.
|
||||
* @param reliable True if message is reliable, false otherwise.
|
||||
@ -124,7 +140,7 @@ native EndMessage();
|
||||
* blocks the message from being sent, and Plugin_Continue
|
||||
* resumes normal functionality.
|
||||
*/
|
||||
functag public Action:MsgHook(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init);
|
||||
functag public Action:MsgHook(UserMsg:msg_id, Handle:msg, const players[], playersNum, bool:reliable, bool:init);
|
||||
|
||||
/**
|
||||
* Called when a message hook has completed.
|
||||
@ -142,7 +158,7 @@ functag public MsgPostHook(UserMsg:msg_id, bool:sent);
|
||||
* @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 notify Notification function.
|
||||
* @param post Notification function.
|
||||
* @noreturn
|
||||
* @error Invalid message index.
|
||||
*/
|
||||
|
15
env/include/version.inc
vendored
15
env/include/version.inc
vendored
@ -35,8 +35,15 @@
|
||||
#endif
|
||||
#define _version_included
|
||||
|
||||
#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */
|
||||
#define SOURCEMOD_V_MINOR 4 /**< SourceMod Minor version */
|
||||
#define SOURCEMOD_V_RELEASE 1 /**< SourceMod Release version */
|
||||
#tryinclude <version_auto>
|
||||
|
||||
#define SOURCEMOD_VERSION "1.4.1" /**< SourceMod version string (major.minor.release.build) */
|
||||
#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 6 /**< SourceMod Minor version */
|
||||
#define SOURCEMOD_V_RELEASE 0 /**< SourceMod Release version */
|
||||
|
||||
#define SOURCEMOD_VERSION "1.6.0-manual" /**< SourceMod version string (major.minor.release-tag) */
|
||||
#endif
|
||||
|
15
env/include/version_auto.inc
vendored
Normal file
15
env/include/version_auto.inc
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
#if defined _auto_version_included
|
||||
#endinput
|
||||
#endif
|
||||
#define _auto_version_included
|
||||
|
||||
#define SOURCEMOD_V_TAG ""
|
||||
#define SOURCEMOD_V_CSET "95ab81f"
|
||||
#define SOURCEMOD_V_MAJOR 1
|
||||
#define SOURCEMOD_V_MINOR 6
|
||||
#define SOURCEMOD_V_RELEASE 0
|
||||
#define SOURCEMOD_V_REV 4525
|
||||
|
||||
#define SOURCEMOD_VERSION "1.6.0"
|
||||
|
BIN
env/linux/bin/spcomp-1.6.0
vendored
Executable file
BIN
env/linux/bin/spcomp-1.6.0
vendored
Executable file
Binary file not shown.
BIN
env/win32/bin/spcomp-1.6.0.exe
vendored
Normal file
BIN
env/win32/bin/spcomp-1.6.0.exe
vendored
Normal file
Binary file not shown.
@ -185,6 +185,7 @@ AmbientSoundsRestart()
|
||||
if (tAmbientSounds != INVALID_HANDLE)
|
||||
{
|
||||
KillTimer(tAmbientSounds);
|
||||
tAmbientSounds = INVALID_HANDLE;
|
||||
}
|
||||
|
||||
// If ambience is disabled, then stop.
|
||||
|
Loading…
Reference in New Issue
Block a user