Guten Nachmittag Liebe Brotfische
Ich stelle euch nun mal ein System vor, mit dem es extrem einfach ist Daten zu speichern und zu laden.
Also, das alles basiert einfach auf einem Enumerator:
enum p_DATA
{
pMoney,
pLevel,
Float:pX,
Float:pY,
Float:pZ,
pName[MAX_PLAYER_NAME]
};
new SpielerInfo[MAX_PLAYERS][p_DATA];
Also in diesen Enumerator, packen wir alle SpielerDaten die wir für den Spieler speichern wollen
So und sagen wir, wir geben dem jetzt mal paar Werte, wenn der Spieler connected:
SpielerInfo[playerid][pMoney] = 5000;
SpielerInfo[playerid][pLevel] = 5;
SpielerInfo[playerid][pX] = 300.5;
SpielerInfo[playerid][pY] = 6000.3;
SpielerInfo[playerid][pZ] = 1002.94;
format(SpielerInfo[playerid][pName],MAX_PLAYER_NAME,"Kaliber");
Und wenn wir diese unter OnPlayerDisconnect speichern wollen, einfach folgende Zeile:
Das wars, diese eine Zeile, speichert alles was in diesem Enumerator ist
Ich hoffe es wird klar, wieso das Easy Save heißt
Und zum Laden einfach folgende Zeile:
Also, damit sollte es nun wirklich jeder hinbekommen Variablen zu sichern
Editierung:
Angenommen, ein Spieler ist nicht gerade online und man will einen Wert editieren, nehmen wir jetzt mal im oberen Beispiel das Geld, dann macht man folgendes:
Edit("Kaliber.txt",1,10000);
/*
Kaliber.txt = Der Pfad von der Spielerdatei
1 = Die erste Variable im Enum, also das Geld
10000 = Der neue Geldwert, den der Spieler haben soll
*/
Um Offline Daten von einem Spieler Abzufragen, das geht leider nur mit Floats und Integern.
Strings kann man wegen dieser Methode leider nicht auslesen:
Zusatz-Informationen:
Angenommen wir Speichern die Werte, die ich oben angegeben habe, dann sieht unsere Datei so aus:
Nicht wundern, dass ist alles richtig so
Wenn ihr das printet, kommt schon am Ende Kaliber wieder beim Namen raus, nur ich zerlege die chars in zahlen von der Ascii-Tabelle
Aber das setzt sich alles wieder richtig zusammen
Speedtest:
Also, leider kann man hier keinen guten Speedtest zum speichern machen, aber zum Laden, ich denke die Werte sind ziemlich ähnlich:
Pfad Speicherung:
Also, das hier ist ein Spieler-Daten Speicherungssystem
Ihr könnt den Pfad selbst festlegen und auch welche Endung die Datei haben soll:
#define PATH "/Accounts/%s.ini"
#include <k_save>
Jetzt würde das zum Beispiel im Ordner Accounts als .ini Datei gespeichert werden.
Wenn ihr aber dieses define nicht setzt, wird einfach der Name.txt in den scriptfiles gespeichert
Download:
Pastebin: http://pastebin.com/nnLN10Z2
Mediafire: https://www.mediafire.com/?tory1a375eeqsr0
Viel Spaß damit, ich würde mich über ein kleines Feedback freuen
mfg.
//Edit: Editierung
//Edit²: Fehler im in der Editierung gewesen
//Edit³: Informationen zu MAX_VARS
//Edit4: Get Methode
//Edit5: MAX_VARS verbessert einfach enum namen eingeben oder sizeof(SpielerInfo[])
//Edit6: Neue Downloadlinks & Anpassung der Path Größe vom Array
//Edit7: fclose bei der Load Methode vergessen
//Edit8: Kleiner Fehler mit dem NUL Terminator