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
