diff options
| author | aura <nw@moneybot.cc> | 2026-02-17 23:42:09 +0100 |
|---|---|---|
| committer | aura <nw@moneybot.cc> | 2026-02-17 23:42:09 +0100 |
| commit | 5e2eb7d67ae933b7566f1944d0bb7744da03d586 (patch) | |
| tree | 054acff1113270a9cd07933df760f3768c1b6853 /sourcemod-1.5-dev/scripting/include/smlib/general.inc | |
| parent | 341db13a008dc12bb22ceb50452d93d01476308c (diff) | |
move source stuff to its own folder
Diffstat (limited to 'sourcemod-1.5-dev/scripting/include/smlib/general.inc')
| -rw-r--r-- | sourcemod-1.5-dev/scripting/include/smlib/general.inc | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/sourcemod-1.5-dev/scripting/include/smlib/general.inc b/sourcemod-1.5-dev/scripting/include/smlib/general.inc deleted file mode 100644 index a7d004c..0000000 --- a/sourcemod-1.5-dev/scripting/include/smlib/general.inc +++ /dev/null @@ -1,251 +0,0 @@ -#if defined _smlib_general_included - #endinput -#endif -#define _smlib_general_included - -#include <sourcemod> -#include <sdktools_stringtables> -#include <smlib/math> - -#define TIME_TO_TICKS(%1) ( (int)( 0.5 + (float)(%1) / GetTickInterval() ) ) -#define TICKS_TO_TIME(%1) ( GetTickInterval() * %1 ) -#define ROUND_TO_TICKS(%1) ( TICK_INTERVAL * TIME_TO_TICKS( %1 ) ) - -/* - * Precaches the given model. - * It's best to call this OnMapStart(). - * - * @param material Path of the material to precache. - * @return Returns the material index, INVALID_STRING_INDEX on error. - */ -stock PrecacheMaterial(const String:material[]) -{ - static materialNames = INVALID_STRING_TABLE; - - if (materialNames == INVALID_STRING_TABLE) { - if ((materialNames = FindStringTable("Materials")) == INVALID_STRING_TABLE) { - return INVALID_STRING_INDEX; - } - } - - new index = FindStringIndex2(materialNames, material); - if (index == INVALID_STRING_INDEX) { - new numStrings = GetStringTableNumStrings(materialNames); - if (numStrings >= GetStringTableMaxStrings(materialNames)) { - return INVALID_STRING_INDEX; - } - - AddToStringTable(materialNames, material); - index = numStrings; - } - - return index; -} - -/* - * Checks if the material is precached. - * - * @param material Path of the material. - * @return True if it is precached, false otherwise. - */ -stock bool:IsMaterialPrecached(const String:material[]) -{ - static materialNames = INVALID_STRING_TABLE; - - if (materialNames == INVALID_STRING_TABLE) { - if ((materialNames = FindStringTable("Materials")) == INVALID_STRING_TABLE) { - return false; - } - } - - return (FindStringIndex2(materialNames, material) != INVALID_STRING_INDEX); -} - -/* - * Precaches the given particle system. - * It's best to call this OnMapStart(). - * Code based on Rochellecrab's, thanks. - * - * @param particleSystem Name of the particle system to precache. - * @return Returns the particle system index, INVALID_STRING_INDEX on error. - */ -stock PrecacheParticleSystem(const String:particleSystem[]) -{ - static particleEffectNames = INVALID_STRING_TABLE; - - if (particleEffectNames == INVALID_STRING_TABLE) { - if ((particleEffectNames = FindStringTable("ParticleEffectNames")) == INVALID_STRING_TABLE) { - return INVALID_STRING_INDEX; - } - } - - new index = FindStringIndex2(particleEffectNames, particleSystem); - if (index == INVALID_STRING_INDEX) { - new numStrings = GetStringTableNumStrings(particleEffectNames); - if (numStrings >= GetStringTableMaxStrings(particleEffectNames)) { - return INVALID_STRING_INDEX; - } - - AddToStringTable(particleEffectNames, particleSystem); - index = numStrings; - } - - return index; -} - -/* - * Checks if the particle system is precached. - * - * @param material Name of the particle system - * @return True if it is precached, false otherwise. - */ -stock bool:IsParticleSystemPrecached(const String:particleSystem[]) -{ - static particleEffectNames = INVALID_STRING_TABLE; - - if (particleEffectNames == INVALID_STRING_TABLE) { - if ((particleEffectNames = FindStringTable("ParticleEffectNames")) == INVALID_STRING_TABLE) { - return false; - } - } - - return (FindStringIndex2(particleEffectNames, particleSystem) != INVALID_STRING_INDEX); -} - -/* - * Searches for the index of a given string in a string table. - * - * @param table String table name. - * @param str String to find. - * @return String index if found, INVALID_STRING_INDEX otherwise. - */ -stock FindStringIndexByTableName(const String:table[], const String:str[]) -{ - new tableIndex = INVALID_STRING_TABLE; - if ((tableIndex = FindStringTable("ParticleEffectNames")) == INVALID_STRING_TABLE) { - return INVALID_STRING_INDEX; - } - - return FindStringIndex2(tableIndex, str); -} - -/* - * Rewrite of FindStringIndex, because in my tests - * FindStringIndex failed to work correctly. - * Searches for the index of a given string in a string table. - * - * @param tableidx A string table index. - * @param str String to find. - * @return String index if found, INVALID_STRING_INDEX otherwise. - */ -stock FindStringIndex2(tableidx, const String:str[]) -{ - decl String:buf[1024]; - - new numStrings = GetStringTableNumStrings(tableidx); - for (new i=0; i < numStrings; i++) { - ReadStringTable(tableidx, i, buf, sizeof(buf)); - - if (StrEqual(buf, str)) { - return i; - } - } - - return INVALID_STRING_INDEX; -} - -/* - * Converts a long IP to a dotted format String. - * - * @param ip IP Long - * @param buffer String Buffer (size = 16) - * @param size String Buffer size - * @noreturn - */ -stock LongToIP(ip, String:buffer[], size) -{ - Format( - buffer, size, - "%d.%d.%d.%d", - (ip >> 24) & 0xFF, - (ip >> 16) & 0xFF, - (ip >> 8 ) & 0xFF, - ip & 0xFF - ); -} - -/* - * Converts a dotted format String IP to a long. - * - * @param ip IP String - * @return Long IP - */ -stock IPToLong(const String:ip[]) -{ - decl String:pieces[4][4]; - - if (ExplodeString(ip, ".", pieces, sizeof(pieces), sizeof(pieces[])) != 4) { - return 0; - } - - return ( - StringToInt(pieces[0]) << 24 | - StringToInt(pieces[1]) << 16 | - StringToInt(pieces[2]) << 8 | - StringToInt(pieces[3]) - ); -} - -static localIPRanges[] = -{ - 10 << 24, // 10. - 127 << 24 | 1 , // 127.0.0.1 - 127 << 24 | 16 << 16, // 127.16. - 192 << 24 | 168 << 16, // 192.168. -}; - -/* - * Checks whether an IP is a private/internal IP - * - * @param ip IP Long - * @return True if the IP is local, false otherwise. - */ -stock bool:IsIPLocal(ip) -{ - new range, bits, move, bool:matches; - - for (new i=0; i < sizeof(localIPRanges); i++) { - - range = localIPRanges[i]; - matches = true; - - for (new j=0; j < 4; j++) { - move = j * 8; - bits = (range >> move) & 0xFF; - - if (bits && bits != ((ip >> move) & 0xFF)) { - matches = false; - } - } - - if (matches) { - return true; - } - } - - return false; -} - -/* - * Closes the given hindle and sets it to INVALID_HANDLE. - * - * @param handle handle - * @noreturn - */ -stock ClearHandle(&Handle:handle) -{ - if (handle != INVALID_HANDLE) { - CloseHandle(handle); - handle = INVALID_HANDLE; - } -} |
