Daten aus einer Datei lesen und anwenden

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
  • Sooooo, nach einer längeren Pause hab ich mich mal wieder an ein altes Samp Script gesetzt und wollte es weiterprogrammieren... nur bin ich jetzt auf ein Problem gestoßen, was ich aufhält: Ich werde im Samp Wiki aus dem Artikel zur Datei Schreib- und lesefunktion nicht schlau... Zuerst würde ich gerne etwas einfaches machen... z.b. man schreibt in diese datei rein:

    Code
    HOSTNAME= Bla fasel
    MAPNAME= Bla fasel2


    Also der Server soll diese datei nun lesen und den Hostname bzw. Mapname in die Namen umändern... und ich weiss nicht wie ich das machen soll :thumbup:
    Schon mal danke im voraus

    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

    Der Satz des Dracoblue

  • Sanja
    Die pwn soll die daten aus dieser konfigurationsdatei lesen und anwenden.. dat iss alles ^^

    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

    Der Satz des Dracoblue

  • Ich würde dir das Dateisystem dini empfehlen, ist sehr einfach anzuwenden:
    http://dracoblue.net/download/dini-16/35/


    !!!
    Tutorials zu dini findest du glaube ich auch hier im Forum, wenn nicht --> sa-mp.com

    Nur wenn man das Unmögliche versucht kann man das absolut Mögliche erreichen
    Hermann Hesse


    „Was manche Menschen sich selber vormachen, das macht ihnen so schnell keiner nach.”
    Gerhard Uhlenbruck

  • Ja, danke schon mal ich arbeite grad dran^^


    edit: Sooo... ich hab mir ein paar tutorials durchgelesen und dann was ausprobiert und promt verzweifelt... ich poste mal wie weit ich gekommen bin:
    if(dini_Exists("/gorns_battlemode/mainc.cfg")) {
    new string[128];
    new gmn[64];
    string = dini_Get("/gorns_battlemode/main.cfg","Gamemode Name", gmn);// hier steckt der wurm drinn... und ich vermute, dass diese Zeile der komplette Schrott ist ^^
    SetGameModeText(gmn);
    }


    Ähh... ich glaub ich hab da was falsch verstanden... ^^

    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

    Der Satz des Dracoblue

    Einmal editiert, zuletzt von xXGornXx ()

  • Die Funktion sieht nicht ganz so aus,wie du sie benutzen möchtest.
    stock dini_Get(filename[],key[])
    filename = "/gorns_battlemode/main.cfg"
    key = "Gamemode Name"
    ??? = gmn - Es gibt keinen 3. Parameter.


    Ich bin mir nicht ganz sicher,denke aber,dass der key keine Leerzeichen enthalten darf.Du solltest also als Erstes mal aus "Gamemode Name" "GamemodeName" machen.
    Würde dir format,strcat oder Ähnliches empfehlen um den String zu speichern. Daher,
    format( string , sizeof(string) , dini_Get("/gorns_battlemode/main.cfg","GamemodeName") );
    Folgendes geht auch:

    new string[ /*DINI_MAX_STRING*/ 256];
    string = dini_Get("/gorns_battlemode/main.cfg","GamemodeName");
    Das klappt aber nur, wenn string auch die Größe DINI_MAX_STRING hat. Müsste auf 256 definiert sein.
    Dann kannst den Gamemodenamen setzen.
    SetGameModeText(string);

  • Vielen Dank!
    Es läuft jetzt schon einigermaßen... da wäre aber noch eine kleine Sache: Wenn der Ordner im Scriptfilesordner nicht existiert (also "/gorns_battlemode/") dann kann das Script die Datei nicht erstellen... gibt es eine Möglichkeit auch Ordner erstellen zu lassen?

    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

    Der Satz des Dracoblue