158 lines
3.2 KiB
SourcePawn
158 lines
3.2 KiB
SourcePawn
#if defined _smlib_array_included
|
|
#endinput
|
|
#endif
|
|
#define _smlib_array_included
|
|
|
|
#include <sourcemod>
|
|
|
|
/**
|
|
* 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 int Array_FindValue(any[] array, int size, any value, int start=0)
|
|
{
|
|
if (start < 0) {
|
|
start = 0;
|
|
}
|
|
|
|
for (int 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 int Array_FindString(const char[][] array, int size, const char[] str, bool caseSensitive=true, int start=0)
|
|
{
|
|
if (start < 0) {
|
|
start = 0;
|
|
}
|
|
|
|
for (int 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 int Array_FindLowestValue(any[] array, int size, int start=0)
|
|
{
|
|
if (start < 0) {
|
|
start = 0;
|
|
}
|
|
|
|
any value = array[start];
|
|
any tempValue;
|
|
int x = start;
|
|
|
|
for (int 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 int Array_FindHighestValue(any[] array, int size, int start=0)
|
|
{
|
|
if (start < 0) {
|
|
start = 0;
|
|
}
|
|
|
|
any value = array[start];
|
|
any tempValue;
|
|
int x = start;
|
|
|
|
for (int 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 void Array_Fill(any[] array, int size, any value, int start=0)
|
|
{
|
|
if (start < 0) {
|
|
start = 0;
|
|
}
|
|
|
|
for (int 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 void Array_Copy(const any[] array, any[] newArray, int size)
|
|
{
|
|
for (int i=0; i < size; i++) {
|
|
newArray[i] = array[i];
|
|
}
|
|
}
|