Dateiensystem dini - Dateien erstellen, löschen, speichern, laden

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
  • Hallo, lieber Scripter und (moment, gibts hier Scripterinnen???? egal..)!
    Da viele Scripter mit Dateien arbeiten "müssen" und sich meinstens dabei schwer tun, mache ich hier ein Tutorial zu DracoBlue's Dini.
    Es ist eigentlich nur eine Übersetzung von einem Tread im offiziellen Forum:


    Dini: http://forum.sa-mp.com/index.php?topic=981.0
    Dini englisches Tut: http://forum.sa-mp.com/index.php?topic=71935.0


    VORWEG:
    Falls du nicht weist, was mit einem "key" gemeint ist, schau mal das hier an:
    In der Datei "Maercell.ini" ist das hier geschrieben:

    Zitat

    level=1337

    Maercell.ini => filename
    level => key
    1337 => value (nur ein Beispiel, kommt eben drauf an, war gespeichert wird)




    Die Funktionen
    dini_Exists(filename[])
    Überprüft ob eine Datei mit dem Pfad filename existiert. Returnt true oder false
    if(dini_Exists("/folder/file.ini"))
    {
    // Die Datei "file.ini" ist im Ordner "folder" vorhanden
    }
    else
    {
    // Die Datei "file.ini" gibt es im Ordner "folder" nicht
    }


    dini_Isset(filename[], key[])
    Überprüft ob in einer Datei schon etwas unter key gespichert ist.
    dini_Set("/folder/file.ini", "key", "text");
    if(dini_Isset("/folder/file.ini", "key"))
    {
    // Unter "key" wurde "key" gespeichert, gibt true zurück
    }
    dini_Unset("/folder/file.ini", "key");
    if(dini_Isset("/folder/file.ini", "key"))
    {
    // Unter "key" wurde nichts gespeichert, gibt false zurück
    }


    dini_Unset(filename[], key[])
    Löscht Float/Integer/Bool/String in einer Datei
    dini_Set("/folder/file.ini", "check", "true");
    string = dini_Get("/folder/file.ini", "check");
    print(string); // gibt true zurück


    dini_Unset("/folder/file.ini", "check");
    string = dini_Get("/folder/file.ini", "check");
    print(string); // gibt nichts zurück


    dini_Create(filename[])
    Erstellt eine neue Datei
    // dini_Exists würde false zurückgeben, existiert ja nicht :o
    dini_Create("/folder/file.ini");
    // dini_Exists würde true zurückgeben, existiert nun danke dini_Create



    dini_Remove(filename[])
    Löscht eine Datei
    // dini_Exists würde true zurückgeben, weil die Datei noch existiert
    dini_Remove("/folder/file.ini");
    // dini_Exists würde false zurückgeben, weil die Datei soeben gelöscht wurde


    Jetzt gehts an Speichern und Laden!!!


    dini_Set(filename[], key[], value[])
    Speichert eine String unter key in eine Datei
    dini_Set("/folder/file.ini", "samp", "forums");
    // In "file.ini" im Ordner "folder" stände jetzt:
    // "samp=forums"


    dini_Get(filename[], key[])
    Lädt eine Strint unter key in einer Datei
    string = dini_Get("/folder/file.ini", "samp");
    if(strcmp(string, "forums", false) == 0)
    {
    // Die IF-Abfrage wird ausgeführt, da in file.ini unter "samp" "forums" gespeichert wurde, sieht dini_Set
    }


    Das geht aus mit Integern!!!


    dini_IntSet(filename[], key[], value)
    Speichert ein Integer unter key in einer Datei
    dini_IntSet("/folder/file.ini", "sampforums", 1);
    // Das Ergebnis in "file.ini" im Ordner "folder" ist:
    // "sampforums=1"
    dini_Int(filename[], key[])
    Lädt ein Integer unter key in einer Datei
    new number = dini_Int("/folder/file.ini", "sampforums");
    if(number == 1)
    {
    // sampforums entspricht 1, wie bei dini_IntSet gespeichert
    }



    Und Positionen? Floats!

    dini_FloatSet(filename[], key[], Float:value)
    Speichert eine Float unter key in einer Datei
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    dini_FloatSet("/folder/file.ini", "F_X", X);
    dini_FloatSet("/folder/file.ini", "F_Y", Y);
    dini_FloatSet("/folder/file.ini", "F_Z", Z);


    // Das ergebnis in "file.ini" im Ordner "folder"
    // F_X = 0.000000
    // F_Y = 0.000000
    // F_Z = 0.000000
    // Das wären die koordinaten von playerid


    dini_Float(filename[], key[])
    Lädt eine Float unter key in einer Datei
    // Lädt die Koordinaten "F_X", "F_Y" und "F_Z" in die Floats X, Y, Z und teleportiert playerid
    new Float:X, Float:Y, FloatZ;
    X = dini_Float("/folder/file.ini", "F_X");
    Y = dini_Float("/folder/file.ini", "F_Y");
    Z = dini_Float("/folder/file.ini", "F_Z");
    SetPlayerPos(playerid, X, Y, Z);


    Nur true und false? Da reicht ein Bool-Wert!

    dini_BoolSet(filename[], key[], value)
    Speichert ein Bool-Wert unter key in einer Datei
    dini_BoolSet("/folder/file.ini", "random_bool", true);
    // Das Ergebnis in "file.ini" im Ordner "folder" ist:
    // "random_bool=true"


    dini_Bool(filename[], key[])
    Lädt einen Bool-Wert unter key aus einer Datei
    new bool:random_bool = dini_Bool("/folder/file.ini", "random_bool");
    if(random_bool == true)
    {
    // random_bool ist true wie bei dini_BoolSet gespeichert
    }



    Und das wars! Du hast soeben gelernt mit dini Dateien zu erstellen, zu löschen und darin Bools, Floats, Strings und Integer zu speichern, so einfach gehts!


    Ich danke hiermit DracoBlue für diese wunderbar einfache Art eines Dateiensystems.


    MfG Maercell


    //Goldkiller: Sticky


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

    3 Mal editiert, zuletzt von Trooper[Y] ()

  • Danke Danke Danke. Genau das habe ich gebraucht. Ich bin vorher einfach nicht mit Dini zurecht gekommen, habe es nicht kapiert, aber jetzt leuchtets mir ein.


    Danke. :thumbup:

    Help dcmd & sscanf to their way to Pawn domination. Read the tutorial below, and use it.
    dcmd & sscanf

  • Cool gemacht ^^ aber bekomm das bei m einen script nicht hin ^^ Ich hab ein script da kann man ingame gangs erstellen und die sollen gespeichert. Und wenn man wieder aufm server kommt sollen die vorhanden sein und nicht weg gehen. Könntest du vtl helfen ? wäre nice :D



    Lg LiL

  • Isch blick da leida garnet durch :( Kann mir jemand helfen?!?! BITTE


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • wie dini Funktioniert was wohl jeder aber wie man es noch nutzen kann z.b. ich will alle für einen bestimmten Spieler was Speichern aber alles in einer Datei bzw. ini Datei

    new Zahl[MAX_PLAYERS];


    new formaten[128];
    new name[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(formaten,sizeof(formaten),"key_%s",name);
    if(dini_Exists("EineDatei.ini"))
    {
    Zahl[playerid] = dini_Int("EineDatei.ini",formaten);
    }


    So wird aus dem Schlüssel mit dem Namen des Spielers drinne der wert gelesen und man muss nicht mehrere Dateien verwenden
    einfach bestimmte werte formatieren und verwenden und als Pfad z.b. man hat einen eigenen ordner wo man was reinspeichern will
    einfach im Dateinamen z.b.


    "Ordner/MeineDatei.ini"


    Aber niemals vergessen wenn dieser Ordner nicht exestiert Crasht euer script

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ich check leider absolut 0 kann mir nicht jemand i-wie helfen? Gibts vllt n beispiel script?


    ICQ Nummer: 427213049


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • wie kann ich den kompletten inhalt von einer dini datei über script löschen? geht das mit "dini_Remove("/folder/file.ini");" oda geht das mit was anderem oda geht das garnicht?


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • wie kann ich den kompletten inhalt von einer dini datei über script löschen? geht das mit "dini_Remove("/folder/file.ini");" oda geht das mit was anderem oda geht das garnicht?

    Willst du den Inhalt löschen oder die Datei? Der Inhalt würde am schnellsten so gehen:
    dini_Remove("/folder/file.ini");
    dini_Create("/folder/file.ini");
    Dann wurde die gelöscht und dann neu erstellt => Komplett leere Datei


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • okay danke. Jetzt hab ich nur vergessen warum ich das wissen wollte XD


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • ähmm kann man mit dini auch so machen, dass man garkeine benennung braucht? also z. B. bei dini_Get("Biz.cfg", "CoordX"); das CoordX weg lässt?


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade