string speichern,wiedergeben und abfragen

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
  • Guten Tag


    Ich benutzte dini und habe bisher nur variablen abgespeichert, bisauf das passwort.
    nun sehe ich aber wie kompliziert das wird, wenn man ein /stats befehl macht, wenn man dazu ein dialog benutzt. da wäre es einfacher, zum beispiel die Fraktion als string zu speichern und auch als string wiederzu geben.. nun wäre da meine erstefrage, wie man ein string mit dini abspeichert. muss man dazu einfach folgendes machen:


    anstatt:
    enum Sinfo
    {
    Alter
    }
    new Spieler[MAX_PLAYERS][Sinfo];


    Spieler[playerid][Alter] = 3;


    das hier:


    enum Sinfo
    {
    Alter[256]
    }
    new Spieler[MAX_PLAYERS][Sinfo];

    Spieler[playerid][Alter] = drei;


    dann wäre meine nächste frage, wie ich das abfrage.
    ich habe es bisher immer so gemacht:


    if(Spieler[playerid][Alter] ==3)
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Du bist 3!");
    }


    wie müsste es denn aussehen wenn man das dann abfragt? so? :


    if(!strcmp(Spieler[playerid][Alter],"drei",true))
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Du bist 3!");
    }

    Einmal editiert, zuletzt von Simon ()

  • Meinst du sowas


    Code
    if( strcmp( key , "Alter" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAge] = strval( val ); }format(var, 32, "Passwort=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var); // Passwort

  • ähm nicht wirklich. also ein bsp: ich gebe /stats ein, dann kommt ein dialog wo alle daten stehen. die ganzen daten sind in einer .ini abgespeichert, jedoch so:


    Alter=15
    Team=1
    Leader=5


    so und wenn ich nun ein dialog mache, muss ich ja sämliche abfragen machen. ich kann das alter problemlos widergeben:


    format(str(str),"Alter: %d",Spieler[playerid][Alter]);
    ShowPlayerDialog(bla,"Stats:","str","---","---");


    die ausgabe wäre: Alter: 15


    so wenn ich aber nun wiedergeben will, wo er leader ist, wäre die ausgabe:


    Leader: 5


    die ausgabe soll aber sein Leader: Grove Street
    oder Leader: LSPD


    dazu könnte ich nun folgende abfrage machen:
    if(Spieler[playerid][Leader] == 5)
    {


    da ich aber sehr mehrere sachen gespeichert habe, würde es zu 1000enden abfragen führen. es wäre einfach es so zu speichern:
    Leader=Grove Street.


    Ausgabe:


    Leader: Grove Street.


    ohne eine abfrage. was viel einfacher ist.


    Ich hoffe du verstehst mich jetzt :D

  • definiere es doch oben


    Code
    #define MAX_Fraktionen 15new FraktionenMAX_Fraktionen][15] = {"LSPD", "SFPD","Army"};


    Und wenne das hast definierst du es unter einfach. So brauchst du nicht jede Fraktion definieren sondern er sucht sich das raus welche ID welce Fraktion ist und wird dann so angzeigt.

  • und wie passt das dann mit der .ini zusammen? iwo muss er ja wissen woher er die ids nehmen soll.. würde es aber lieber mit dem string machen, so muss ich nichts neues definieren.


    //edit: ich habs mal probiert, und so sieht meine name.ini aus (geschlecht ist nur zum test gedacht, bin männlich :D)


    //edit: ich hab es nun mal so gemacht, doch irgentwie will es nicht so hinhauen:


    public OnPlayerText(playerid, text[])
    {
    if(Spieler[playerid][Spawn] == 0 && sex[playerid] == 0)
    {
    return 0;
    }
    if(sex[playerid] == 1)
    {
    new Spielerdatei[64],SpielerName[MAX_PLAYER_NAME],str[256];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    format(Spielerdatei,sizeof(Spielerdatei),"/User/%s.ini",SpielerName);
    if(strcmp(text, "Männlich", true) == 0)
    {
    format(str,sizeof(str),"Männlich");
    SendClientMessage(playerid,0xFFFFFFFF,"Du bist also Ein Mann!");
    sex[playerid] = 0;
    Spieler[playerid][Geschlecht] = str;
    dini_IntSet(Spielerdatei,"Geschlecht",Spieler[playerid][Geschlecht]);
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT," ","Wie Alt bist du?","Okay","Zurück");
    return 0;
    }
    else if(strcmp(text, "Weiblich", true) == 0)
    {
    format(str,sizeof(str),"Weiblich");
    SendClientMessage(playerid,0xFFFFFFFF,"Du bist also eine Frau!");
    sex[playerid] = 0;
    Spieler[playerid][Geschlecht] = str;
    dini_IntSet(Spielerdatei,"Geschlecht",Spieler[playerid][Geschlecht]);
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT," ","Wie Alt bist du?","Okay","Zurück");
    return 0;
    }
    else
    {
    sex[playerid] = 1;
    return SendClientMessage(playerid,0xFF5B71FF,"Bist du Männlich oder Weiblich?");
    }
    }
    return 1;
    }


    in der .ini steht folgendes:


    Geschlecht=77

    2 Mal editiert, zuletzt von Simon ()