Hey ihr,
im Teamspeak kam mir gerade eben nach einer Diskussion mit @BlackAce: die Idee nach einer Include, die es einem ermöglicht, unbegrenzt viele Arrays mit einer unbegrenzt großer Größe zu besitzen.
Nach jahrelanger Entwicklung und Performierung veröffentliche ich sie nun für euch
Beispiele für Anwendungen sind diese:
ZitatMan möchte gerne eine Anzahl an Autos laden, weiß aber nicht, wie viele es sind.
Mit dieser Include kann man nach dem Spawnen die IDs speichern und diese z.B. für Fahrberechtigung nutzen, ohne ein überdimensioniertes Array zu nutzen und oder die Größe bei jedem neuen Auto zu ändern
Funktionen sind aktuell folgende: ArrayPushString(array[], value[]) // Fügt dem Array "array[]" den String "value[]" zu
ArrayPushInteger(array[], value) // Fügt dem Array "array[]" den Integer "value" zu
ArrayPushFloat(array[], Float:value) // Fügt dem Array "array[]" den Float-Wert "value" zu
ArrayPullString(array[], index, value[]) // Gibt den index-sten String von dem Array "array[]" zurück und speichert ihn in "value[]"
ArrayPullInteger(array[], index) // Gibt den index-sten Integer von dem Array "array[]" zurück
Float:ArrayPullFloat(array[], index) // Gibt den index-sten Float-Wert von dem Array "array[]" zurück
// Die Update-Funktionen geben true/false zurück.
// true bei Erfolg, false, wenn was schief ging (zB der Index noch nicht existiert, da das array noch nicht so groß ist)
ArrayUpdateString(array[], index, value[]) // Setzt den index-sten Wer des Arrays "array[]"
ArrayUpdateInteger(array[], index, value) // auch
ArrayUpdateFloat(array[], index, Float:value) // auch
ArrayLength(array[]) // Gibt die Länge des Arrays "array[]" zurück
ArrayDeleteIndex(array[], index) // Löscht den Index "index" aus dem Array "array[]".
Die Arrays verhalten sich etwas anders als normale Arrays.
Diese handeln nach einem Stapelprinzip; wenn ein Element gelöscht wird, rücken die nächsten nach, damit es keine "leeren" Elemente gibt.
Beispiele: public OnGameModeInit() {
// Erstes Array befüllen
ArrayPushInteger("sample", 1);
ArrayPushInteger("sample", 2);
ArrayPushInteger("sample", 3);
ArrayPushInteger("sample", 4);
// Zweites Array befüllen
ArrayPushInteger("sample2", 5);
ArrayPushInteger("sample2", 6);
// Ausgeben, wie groß die sind
printf("Länge 1: %d", ArrayLength("sample"));
printf("Länge 2: %d", ArrayLength("sample2"));
// Ein paar Testausgaben
printf("Erster aus 1: %d", ArrayPullInteger("sample", 0));
printf("Erster aus 2: %d", ArrayPullInteger("sample2", 0));
// Etwas löschen
ArrayDeleteIndex("sample", 0);
ArrayDeleteIndex("sample", 0);
// Ausgeben, was sich in 1 Verändert hat
printf("Länge 1: %d", ArrayLength("sample"));
printf("Erster aus 1: %d", ArrayPullInteger("sample", 0));
}
Changelog:
0.1a
- erster Release
0.1b
- Filterscript-Kompatibel gemacht
0.1c
- Unterstützung von Floats
- Ermöglicht das Verändern von Werten
Version 0.1a
Version 0.1b
Version 0.1c
PS: Die Include wurde von @BlackAce: für "sehr nützlich" eingestuft. Hoffe ich