Speicherungssystem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Also, es gibt ja gaanz viele Speicherungssysteme schon. Allerdings sind die meisten so aufgebaut, dass man permanent irgendwelche Sachen eingeben muss wie z.B. dini:


    dini_Int(...); //-> Immer 1ne Funktion für 1ne Variable


    Nun, da mir mal wieder extrem langweilig ist, habe ich für euch ein kleines Speicherungssystem geschrieben welches das extrem vereinfacht, sieht z.B. so aus:



    //Parameter erklärt:
    User::save(pfad[], pw[], args[], var1, var2, var3, var4, ...); //da wo ... ist, kann es unendlich weiter gehen
    //pw[] steht für das Passwort des Spielers
    //args[] sind die Argumente, unten steht eine genaue Erklärung
    //var1 = Die 1. Variable die man speichern will



    //Anwendungsbeispiel:
    new pfad[MAX_PLAYER_NAME+4],name[24];
    GetPlayerName(playerid,name,24);
    format(pfad,MAX_PLAYER_NAME+4,"%s.txt",name);
    User::save(pfad, "123", "ddfs", int1, int2, float1, string);
    //pfad = Wo die Datei gespeichert werden soll
    //"123" = Das Passwort des Spielers
    //"ddfs" = Sind die Argumente
    //int1 ist die erste Variable die gespeichert wird.


    und zum laden ist es auch ganz einfach:



    //Parameter:
    User::load(pfad[], pw[], args[], var1, var2, var3, var4, ...); //da wo ... ist, kann es unendlich weiter gehen
    //pfad[] = Wo die Datei gespeichert werden soll
    //pw[] steht für das Passwort des Spielers
    //args[] sind die Argumente, unten steht eine genaue Erklärung
    //var1 = Die 1. Variable die wieder geladen wird



    //Anwendungsbeispiel:
    new int1,int2,Float:float1,string[32],pfad[MAX_PLAYER_NAME+4],name[24];
    GetPlayerName(playerid,name,24);
    format(pfad,MAX_PLAYER_NAME+4,"%s.txt",name);
    User::load(pfad, "123", "ddfs", int1, int2, float1, string);


    Besonders wichtig ist, dass das Passwort immer übereinstimmt, sonst gibt die "Load" Funktion eine 0 zurück, das ist ein eingebautes Passwort Abfrage System ;)


    Args (Argumente):
    Die Argumente kennt ihr aus dem sscanf-Code :)
    Hier nochmal eine kleine Liste:


    Code
    i,d = Integer (Zahlen)s = String (Zeichenkette)f = Float (Kommastellenzahl)


    Wichtig:
    Ich habe eine statische Größe angegeben, die Datei kann momentan nur 256 Bytes groß sein. Falls ihr das erhöhen müsst (wenn ihr z.B. viele Texte abspeichern müsst), dann macht ihr das so:


    #define MAX_BUFFER 512 //Jetzt könnte die Datei 512 Bytes groß sein
    #include <k_save>


    Speedtest + Support:
    Falls noch Fragen bestehen, könnt ihr diese gerne stellen, einen Speedtest habe ich auch gemacht, also für 1000 Saves, dauert das (mit diesen 4 Variablen * 1000 halt) = 150ms
    und das Laden 80ms...
    Also es ist verdammt schnell :D


    Download:
    Source-Code: Pastebin
    Direkter-Download: Mediafire


    Würde mich über ein kleines Feedback freuen :)


    mfg. :thumbup:


    //Edit:
    Nochmal alles etwas ausführlicher erklärt und etwas hinzugefügt.
    Nun muss man keine playerid angeben...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    2 Mal editiert, zuletzt von Kaliber ()

  • Wurden Zeit Vergleiche aufgenommen?


    Mit was soll ich es denn vergleichen? :huh:


    Bin ich blind oder werden einfach nur Zeilen in die Benutzerdatei geschrieben, ohne die alten Werte zu löschen?


    io_write sorgt dafür, dass die alten Sachen gelöscht werden ;)


    mfg. :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Dadurch ist man gezwungen die ganze Datei zu laden, wenn man z. B. den Ban-Zustand wissen will, oder nicht?


    Nein, das hinten, sind optionale Parameter, du hängst dir einfach die Variablen die du mal einzelst abfragen willst nach vorne und dann, kannst du auch nur die Abfragen und die anderen weglassen ;)


    zur ( HSA, y_ini )?


    Nein, habe ich nicht, aber du kannst ja mal nachforschen, die haben auch bestimmt ihre Speedtests gemacht ;)


    //Edit: Rechtschreibung


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()

  • Wie schnell ist es schneller als dini?


    Habe es gerade mal getestet, also dini brauch so 400ms für die Daten, die ich oben in 150ms speichern lasse, das hört sich fast gleich schnell an, aber bei meinem System, würde es bei 20 Variablen immernoch nur ca 150ms dauern und bei dini > 1000 ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • In den nächsten Tagen, soweit ich es fertig habe.


    Ich habe nicht verstanden, was du machen willst ^^


    Aber solange irgendwo erwähnt wird, dass die Idee und Umsetzung von dem Speicherungssystem von mir ist, ist alles okay :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S