Hilfe bei ENUM

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 habe mir ein Befehl gemacht um was mit if(Spieler[playerid][Admin]
    definieren kann.


    Dazu hab ich halt im Register / Login folgendes abgefragt:


    Register:
    dini_IntSet(Playerdatei,"Admin",0);


    Login:
    SetPVarInt(playerid,"Admin",dini_Int(Playerdatei,"Admin"));


    Speichern:
    dini_IntSet(Playerdatei,"Admin",GetPVarInt(playerid,"Admin"));



    Mein ENUM

    enum Daten
    {
    Admin,
    }
    new Spieler[MAX_PLAYERS][Daten];


    Wenn ich jetzt die Abfrage hab:

    if(Spieler[playerid][Admin] > 0)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Test für die Hilfe!");
    }


    Dies klappt aber nicht. In der Datei des Accountes steht Admin auf 1 - also größer als Null aber es kommt nicht.
    Wieso ?

  • Danke,
    aber jetzt hab ich noch ein Problem


    In meiner Account Datei steht Admin auf 1.


    Jetzt hab ich ein Check Befehl gemacht um zu gucken.



    ocmd:check(playerid)
    {
    if(Spieler[playerid][Admin] > 0)
    {
    SendClientMessage(playerid, COLOR_ORANGE, "Du bist Admin");
    }
    else
    {
    SendClientMessage(playerid, COLOR_ORANGE, "Du bist kein Admin");
    }
    return 1;
    }


    Dann kommt du bist kein Admin, wieso ?

  • Kein Wunder !!


    Ich würde auch mal in der Abfrage auf 1 setzten ^^


    ocmd:check(playerid)
    {
    if(Spieler[playerid][Admin] > 1)
    {
    SendClientMessage(playerid, COLOR_ORANGE, "Du bist Admin");
    }
    else
    {
    SendClientMessage(playerid, COLOR_ORANGE, "Du bist kein Admin");
    }
    return 1;
    }

  • Ich habe es bei mir eigentlich definiert.



    stock ENUM(playerid)
    {
    new string[128];
    Spieler[playerid][Level] = dini_Int(string,"Level");
    Spieler[playerid][Geld] = dini_Int(string,"Geld");
    Spieler[playerid][Admin] = dini_Int(string,"Admin");
    Spieler[playerid][Premium] = dini_Int(string,"Premium");
    }


    Das ENUM wird beim Login aufgerufen.


    // > ist doch größer. Also größer als 0.

  • Das ganze solltest du erstmal übersichtlicher gestalten. Mit offensichtleren Funktion Namen. Unter "ENUM" versteh ich zuviel, ich würde es "LoadAccount" oder sonst irgendwie nennen, dann natürlich noch darauf achten das diese auch nach dem erfolgreichen Login aufgerufen wird.


    Und dann natürlich noch eine Funktion "SaveAccount" unter OnPlayerDisconnect, diese sollte dann das ganze speichern.


    Wenn das ganze übersichtlicher ist kann man dir auch gleich besser helfen.


  • stock Register(playerid,key[])
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    dini_Create(Playerdatei);
    dini_Set(Playerdatei,"Passwort",key);
    LoginText(playerid);
    SetPlayerScore(playerid,0);
    dini_IntSet(Playerdatei,"Admin",0);
    dini_IntSet(Playerdatei,"Premium",0);
    dini_IntSet(Playerdatei,"Perso",0);
    SetPVarInt(playerid,"Eingeloggt",1);
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
    {
    AccountLaden(playerid);
    LoginText(playerid);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREEN,"Du hast ein falsches Passwort eingegeben!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","Login", "Abbrechen");
    }
    return 1;
    }


    stock AccountLaden(playerid)
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    SetPlayerScore(playerid,dini_Int(Playerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Playerdatei,"Geld"));
    SetPVarInt(playerid,"Admin",dini_Int(Playerdatei,"Admin"));
    SetPVarInt(playerid,"Premium",dini_Int(Playerdatei,"Premium"));
    SetPVarInt(playerid,"Perso",dini_Int(Playerdatei,"Perso"));
    SetPVarInt(playerid,"Eingeloggt",1);
    ENUM(playerid);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    dini_IntSet(Playerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Playerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Playerdatei,"Admin",GetPVarInt(playerid,"Admin"));
    dini_IntSet(Playerdatei,"Premium",GetPVarInt(playerid,"Premium"));
    dini_IntSet(Playerdatei,"Perso",GetPVarInt(playerid,"Perso"));
    }
    }


    DAS stock ENUM war für das, was Killer Kater meinte.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • In deinem Stock "ENUM" sollen die entsprechenden Daten aus dem Dateipfad "string" geladen werden.
    Der String wird dort jedoch nicht formatiert, also können keine Daten ausgelesen werden.


    Entscheide dich, entweder mit PVars oder mit dem Enumerator zu arbeiten.
    Wenn du dich dazu entscheidest, auf einen Enumerator zu wechseln, bearbeite einfach deinen Stock "AccountLaden":


    Spieler[playerid][Admin] = dini_Int(Playerdatei,"Admin");


    Viele Grüße,
    Alva