From da518fdc0f32839730ccdee8098b59c6f842d93f Mon Sep 17 00:00:00 2001 From: navewindre Date: Mon, 13 Nov 2023 14:28:08 +0100 Subject: ya --- .../scripting/include/smlib/arrays.inc | 158 +++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 sourcemod-1.5-dev/scripting/include/smlib/arrays.inc (limited to 'sourcemod-1.5-dev/scripting/include/smlib/arrays.inc') diff --git a/sourcemod-1.5-dev/scripting/include/smlib/arrays.inc b/sourcemod-1.5-dev/scripting/include/smlib/arrays.inc new file mode 100644 index 0000000..8faaa4e --- /dev/null +++ b/sourcemod-1.5-dev/scripting/include/smlib/arrays.inc @@ -0,0 +1,158 @@ +#if defined _smlib_array_included + #endinput +#endif +#define _smlib_array_included + +#include + +/** + * Returns the index for the first occurance of the given value. + * If the value cannot be found, -1 will be returned. + * + * @param array Static Array. + * @param size Size of the Array. + * @param value Value to search for. + * @param start Optional: Offset where to start (0 - (size-1)). + * @return Array index, or -1 if the value couldn't be found. + */ +stock Array_FindValue(any:array[], size, any:value, start=0) +{ + if (start < 0) { + start = 0; + } + + for (new i=start; i < size; i++) { + + if (array[i] == value) { + return i; + } + } + + return -1; +} + +/** + * Searchs for the first occurance of a string in the array. + * If the value cannot be located, -1 will be returned. + * + * @param array Static Array. + * @param size Size of the Array. + * @param value String to search for. + * @param start Optional: Offset where to start(0 - (size-1)). + * @return Array index, or -1 if the value couldn't be found. + */ +stock Array_FindString(const String:array[][], size, const String:str[], bool:caseSensitive=true, start=0) +{ + if (start < 0) { + start = 0; + } + + for (new i=start; i < size; i++) { + + if (StrEqual(array[i], str, caseSensitive)) { + return i; + } + } + + return -1; +} + +/** + * Returns the Index of the Lowest value in the array + * + * @param array Static Array. + * @param size Size of the Array. + * @param start Optional: Offset where to start (0 - (size-1)). + * @return Array index. + */ +stock Array_FindLowestValue(any:array[], size, start=0) +{ + if (start < 0) { + start = 0; + } + + new any:value = array[start]; + new any:tempValue; + new x = start; + + for (new i=start; i < size; i++) { + + tempValue = array[i]; + + if (tempValue < value) { + value = tempValue; + x = i; + } + + } + + return x; +} + +/** + * Returns the Index of the Highest value in the array + * + * @param array Static Array. + * @param size Size of the Array. + * @param start Optional: Offset where to start (0 - (size-1)). + * @return Array index. + */ +stock Array_FindHighestValue(any:array[], size, start=0) +{ + if (start < 0) { + start = 0; + } + + new any:value = array[start]; + new any:tempValue; + new x = start; + + for (new i=start; i < size; i++) { + + tempValue = array[i]; + + if (tempValue > value) { + value = tempValue; + x = i; + } + + } + + return x; +} + +/** + * Fills an array with a given value in a 1 dimensional static array. + * You can specify the amount of cells to be written. + * + * @param array Static Array. + * @param size Number of cells to write (eg. the array's size) + * @param value Fill value. + * @param start Optional: Offset where to start (0 - (size-1)). + * @noreturn + */ +stock Array_Fill(any:array[], size, any:value, start=0) +{ + if (start < 0) { + start = 0; + } + + for (new i=start; i < size; i++) { + array[i] = value; + } +} + +/** + * Copies a 1 dimensional static array. + * + * @param array Static Array to copy from. + * @param newArray New Array to copy to. + * @param size Size of the array (or number of cells to copy) + * @noreturn + */ +stock Array_Copy(const any:array[], any:newArray[], size) +{ + for (new i=0; i < size; i++) { + newArray[i] = array[i]; + } +} -- cgit v1.2.3