Enum speichert keine Werte.

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
  • Hi Community,


    Mein Enum speichert irgendwie keine Werte. Ab und zu hat es funktioniert aber jetzt geht es garnicht mehr. Hier ein beispiel:


    Das ist erstmal mein Enum:

    enum sDaten
    {
    loggedin,
    passwort,
    geld,
    level,
    kills,
    deaths,
    adminlevel, -- Hier das Beispiel fürs Adminlevel
    exp,
    spielerpayday,
    spielzeit,
    Float:sx,
    Float:sy,
    Float:sz,
    Float:sr
    }


    new spielerD[MAX_PLAYERS][sDaten];


    Dann ist hier ein Command womit ich das Adminlevel setten kann:



    ocmd:makeadmin(playerid,params[])
    {
    new pID, alevel, name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME], string[400], string2[400], Spieler[200];
    if(spielerD[playerid][adminlevel] >= 3)
    {
    if(sscanf(params,"ui",pID,alevel)) return SendClientMessage(playerid,rot,"Befehl: /makeadmin [ID] [Level 1-3]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,rot,"Der Spieler ist nicht Online.");
    if(alevel >= 0 && alevel <= 3)
    {
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(pID,name2,sizeof(name2));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",name2);
    dini_IntSet(Spieler,"Adminlevel",alevel);
    format(string,sizeof(string),"Du wurdest vom Admin %s zum Adminlevel %i ernnant.",name,alevel);
    format(string2,sizeof(string2),"Du hast den Spieler %s zum Adminlevel %i ernnant.",name2,alevel);
    SendClientMessage(playerid,blau,string2);
    SendClientMessage(pID,blau,string);
    aktuSpieler(pID);
    return 1;
    }
    }
    return 1;
    }


    Und hier aktuSpieler(playerid), speicherSpieler(playerid) und ladeSpieler(playerid) um die Daten in der textdatei zu aktualisieren/zu laden/zu speichern:



    stock ladeSpieler(playerid)
    {
    new Spieler[200], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",name);


    spielerD[playerid][geld] = dini_Int(Spieler,"Geld");
    spielerD[playerid][level] = dini_Int(Spieler,"Level");
    spielerD[playerid][deaths] = dini_Int(Spieler,"Deaths");
    spielerD[playerid][kills] = dini_Int(Spieler,"Kills");
    spielerD[playerid][adminlevel] = dini_Int(Spieler,"Adminlevel");
    spielerD[playerid][exp] = dini_Int(Spieler,"Erfahrungspunkte");
    spielerD[playerid][spielerpayday] = dini_Int(Spieler,"Payday");
    spielerD[playerid][spielzeit] = dini_Int(Spieler,"Spielzeit");
    spielerD[playerid][sx] = dini_Float(Spieler,"X-Spawn");
    spielerD[playerid][sy] = dini_Float(Spieler,"Y-Spawn");
    spielerD[playerid][sz] = dini_Float(Spieler,"Z-Spawn");
    spielerD[playerid][sz] = dini_Float(Spieler,"R-Spawn");
    GivePlayerMoney(playerid,spielerD[playerid][geld]);
    SetPlayerScore(playerid,spielerD[playerid][level]);
    dini_IntSet(Spieler,"loggedin",1);
    return 1;
    }


    stock speicherSpieler(playerid)
    {
    new Spieler[200], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",name);
    GetPlayerPos(playerid,spielerD[playerid][sx],spielerD[playerid][sy],spielerD[playerid][sz]);

    dini_IntSet(Spieler,"Geld",spielerD[playerid][geld]);
    dini_IntSet(Spieler,"Level",spielerD[playerid][level]);
    dini_IntSet(Spieler,"Deaths",spielerD[playerid][deaths]);
    dini_IntSet(Spieler,"Kills",spielerD[playerid][kills]);
    dini_IntSet(Spieler,"Adminlevel",spielerD[playerid][adminlevel]);
    dini_IntSet(Spieler,"Erfahrungspunkte",spielerD[playerid][exp]);
    dini_IntSet(Spieler,"Payday",spielerD[playerid][spielerpayday]);
    dini_IntSet(Spieler,"Spielzeit",spielerD[playerid][spielzeit]);
    dini_FloatSet(Spieler,"X-Spawn",spielerD[playerid][sx]);
    dini_FloatSet(Spieler,"Y-Spawn",spielerD[playerid][sy]);
    dini_FloatSet(Spieler,"Z-Spawn",spielerD[playerid][sz]);
    dini_FloatSet(Spieler,"R-Spawn",spielerD[playerid][sr]);
    dini_IntSet(Spieler,"loggedin",0);
    return 1;
    }


    stock aktuSpieler(playerid)
    {
    new Spieler[200], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",name);
    GetPlayerPos(playerid,spielerD[playerid][sx],spielerD[playerid][sy],spielerD[playerid][sz]);

    dini_IntSet(Spieler,"Geld",spielerD[playerid][geld]);
    dini_IntSet(Spieler,"Level",spielerD[playerid][level]);
    dini_IntSet(Spieler,"Deaths",spielerD[playerid][deaths]);
    dini_IntSet(Spieler,"Kills",spielerD[playerid][kills]);
    dini_IntSet(Spieler,"Adminlevel",spielerD[playerid][adminlevel]);
    dini_IntSet(Spieler,"Erfahrungspunkte",spielerD[playerid][exp]);
    dini_IntSet(Spieler,"Payday",spielerD[playerid][spielerpayday]);
    dini_IntSet(Spieler,"Spielzeit",spielerD[playerid][spielzeit]);
    GetPlayerFacingAngle(playerid,spielerD[playerid][sr]);
    dini_FloatSet(Spieler,"X-Spawn",spielerD[playerid][sx]);
    dini_FloatSet(Spieler,"Y-Spawn",spielerD[playerid][sy]);
    dini_FloatSet(Spieler,"Z-Spawn",spielerD[playerid][sz]);
    dini_FloatSet(Spieler,"R-Spawn",spielerD[playerid][sr]);
    return 1;
    }


    Mein Problem ist jetzt das zum beispiel. Wenn ich den Command /makeadmin [ID] [adminlevel] eingebe das sich die Daten in der .txt Datei nicht aktualisieren/speichern.
    Das gleich ist beim Level und Geld so.


    Kann mir da jmd. bitte helfen?


    mfg FaPlays

  • Du schreibst bei /makeadmin das Adminlevel schon in die Datei und führst dann nochmal "aktuSpieler" aus, welches den Account nochmal speichert, aber diesmal mit den Werten aus dem Enum. Diese veränderst du aber nicht. Daher trägt er dir dort wieder eine null ein.

  • spielerD[playerid][adminlevel] = alevelin /makeadmin einfügen, dann muss es wieder funken


    Erklärung:


    - Bei /makeadmin wird in der Datei der Wert gespeichert, aber nicht in der Variable.
    - es wird aktuSpieler durchgeführt.
    - Da du vergessen hast, die Variable im Script zu ändern, ist sie ja noch 0 und der Wert in der Datei wird wieder ersetzt durch die 0.


    :)

    Mit freundlichen Grüßen
    Zeuto

  • oh danke das ist mir garnicht aufgefallen. So wird das wahrscheinlich auch bei dem rest sein. danke danke danke. Eine frage noch. Wie kann ich bei eine giveplayermoney Befehl den Geld Wert als Variable dazu fügen?


    So geht das ja leider nicht:



    spielerD[playerid][geld]+ggeld;