Es wird nichts aus der Spielerdatei gelesen

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 Morgen,
    ich habe schon seit längerem das Problem, das nichts aus der Spielerdatei gelesen wird.
    Ich arbeite mit Dini von Mr.Monat.
    Es wird nur Level und Passwort ausgelesen.
    Hier wie es in der Spielerdatei aussieht und darunter wie es ingame aussieht:

  • Hier
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SendClientMessage(playerid,BLAU,"Erfolgreich registriert.");
    SetPlayerScore(playerid,1);
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }
    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt.");
    return 1;
    }
    else
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,BLAU,"Falsches Passwort.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    }


    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    }
    return 1;
    }


    stock isPlayerAnAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
    return 0;
    }


    stock isPlayerInFrakt(playerid,fraktid)
    {
    if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1;
    return 0;
    }


    Unter Onplayerdiconnect:
    public OnPlayerDisconnect(playerid, reason)
    {
    //Login
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }


    Hier der restart Befehl z.B.
    if(strcmp(cmdtext,"/restart",true)==0)//Den Server restarten.
    {
    if(isPlayerAnAdmin(playerid,3))
    {
    SendRconCommand("gmx");
    return 1;
    }
    SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
    return 1;
    }

  • Also hier mal die Stocks:



    //Spieler Speichern
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    if(dini_Exists(Spielerdatei))
    {
    dini_IntSet(Spielerdatei,"Adminlevel",sSpieler[playerid][Adminlevel]);
    }
    }
    return 1;
    }






    Dann beim Login diesen Stock:



    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    if(dini_Exists(Spielerdatei))
    {
    sSpieler[playerid][Adminlevel] = dini_Int(Spielerdatei,"Adminlevel");
    }
    SetPVarInt(playerid,"loggedin",1);
    SpawnPlayer(playerid);
    return 1;
    }



    und registrieren:



    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    dini_IntSet(Spielerdatei,"Adminlevel",0);
    SpawnPlayer(playerid);
    return 1;
    }



    Das "SpielerRegistrieren", natürlich beim ersten Connect auf dem Server.


    SpielerLaden bei jedem Login bzw. OnplayerConnect,


    und zu guter letzt, SpielerSpeichern bei OnPlayerDisconnect, so lädt es die Spielerdateien.


    MfG

    Ihr habt das normale Pawno satt? Notepad ++ mit allen Pawnofunktionen, hier zum Downloaden, Klick

  • versuch das mal so


    if(strcmp(cmdtext,"/restart",true)==0)//Den Server restarten.
    {
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
    {
    SendRconCommand("gmx");
    return 1;
    }
    return 1;
    }


    sollte so gehen du hattest nur ein fehler im Befehl gehabt
    so währe der richtig gewesen
    if(strcmp(cmdtext,"/restart",true)==0)//Den Server restarten.
    {
    if(!isPlayerAnAdmin(playerid,3))
    {
    SendRconCommand("gmx");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
    }
    return 1;
    }

  • /restart geht jetzt, aber wieso nicht /spawn
    if(strcmp(cmdtext,"/spawn",true)==0)//Teleportiert den Admin zum Spawn.
    {
    if(isPlayerAnAdmin(playerid,3))
    {
    SetPlayerPos(playerid,475.0953,-1771.5754,13.7163);
    SendClientMessage(playerid,0xFFFF00FF,"Du wurdest Teleportiert");
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
    }
    return 1;
    }
    Adminlevel wird jetzt zwar ausgelesen, aber fraktion usw. nicht.


    Hier der /stats Befehl:
    if(strcmp(cmdtext,"/stats",true)==0)//Zeigt die Spielerstatistiken an
    {
    new string[128];
    new fraktname[64];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:{fraktname="Keine";}
    case 1:{fraktname=fraktname1;}
    case 2:{fraktname=fraktname2;}
    case 3:{fraktname=fraktname3;}
    case 4:{fraktname=fraktname4;}
    case 5:{fraktname=fraktname5;}
    case 6:{fraktname=fraktname6;}
    case 7:{fraktname=fraktname7;}
    case 8:{fraktname=fraktname8;}
    case 9:{fraktname=fraktname9;}
    case 10:{fraktname=fraktname10;}
    case 11:{fraktname=fraktname11;}
    case 12:{fraktname=fraktname12;}
    case 13:{fraktname=fraktname13;}
    case 14:{fraktname=fraktname14;}
    }
    //1 reihe
    format(string,sizeof(string),"[Name: %s]\n[Level: %i]\n[Adminlevel: %i]\n[Fraktion: %s]\n[Geld: %i]\n[Konto: %i]",SpielerName(playerid),GetPlayerScore(playerid),GetPVarInt(playerid,"Adminlevel"),fraktname),dini_Int(accFormat, "Konto");
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"OK","Statistiken","","");
    return 1;
    }


    PS: mein /stats Befehl sieht ingame so aus:

    Einmal editiert, zuletzt von iBenny ()