Problem mit Register/Login-System

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
  • Hallo Leute,


    ich versuche mir gerade irgendwie das Scripten beizubringen, dazu habe ich einige Youtube-Tutorials angesehen.


    Was ich bisher geschafft habe ist ein CMD:Kill, den Spieler nach dem Spawnen Waffen zu geben, eine Map einzufügen und einige Meldungen.


    Nun versuche ich mich gerade mit "dini" an einem Register/Login-System, dabei habe ich das Problem, dass ich mich einloggen kann, der Account aber nicht so wirklich unter "scriptfiles" => "Accounts" gespeichert wird.


    Er wird zwar eine .txt-Datei unter "Accounts" angelegt, dennoch wenn ich mich mit dem gleichen Namen mit einem anderen Passwort einlogge ändert sich das Passwort in der .txt-Datei.


    Nun frage ich mich, wo dabei der Fehler liegt.
    Es wäre nett, wenn mir jemand helfen würde!


    /edit


    Momentan habe ich noch folgendes Problem:


    Vielleicht liegts ja nur an der Uhrzeit, dass ich mit meinem Wissen auf dem Trockenden liege..



    (365) : error 017: undefined symbol "sscanf"
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,BLAU,"Benutzung: /makeadmin [ID] [Rank]");


    (366) : error 017: undefined symbol "rank"
    if(rank < 0 || rank > 5000)return SendClientMessage(playerid,BLAU,"Der Rank darf nicht 0, unter 0 oder über 5000 sein!");


    (367) : error 017: undefined symbol "rank"
    SetPVarInt(pID,"Adminlevel",rank);


    (368) : error 017: undefined symbol "rank"
    format(string,sizeof(string),"Du hast %s zu einem Admin (Rank %d) gemacht.",SpielerName(pID),rank);


    (370) : error 017: undefined symbol "rank"
    format(string,sizeof(string),"Admin %s hat dich zu einem Admin (Rank %d) gemacht!",SpielerName(playerid),rank);


    (363) : warning 203: symbol is never used: "rang"
    new pID, rang, string[128];


    (378) : error 017: undefined symbol "sscanf"
    if(sscanf(params,"us",pID,Grund))return SendClientMessage(playerid,BLAU,"Benutzung: /kick [ID] [Grund]");


    (391) : error 017: undefined symbol "sscanf"
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"Benutzung: /ban [ID] [Grund]");



    Mit freundlichen Grüßen
    AlphaGen

    DIVIDE ET IMPERA

    2 Mal editiert, zuletzt von [GSD]AlphaGen ()

  • Zitat

    "Er wird zwar eine .txt-Datei unter "Accounts" angelegt, dennoch wenn ich mich mit dem gleichen Namen mit einem anderen Passwort einlogge ändert sich das Passwort in der .txt-Datei."


    Der Fehler liegt darin, das nicht geprüft wird, ob es den Account gibt.. richtig?

  • Ich habe das ganze mal rausgesucht. Hoffentlich ist es auch das richtige.. :D


    #define DIALOG_TUTORIAL 1
    #define DIALOG_REGISTER 2
    #define DIALOG_LOGIN 3


    public OnPlayerConnect(playerid)
    {
    //LogInSystem
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Account gefunden, gib dein Passwort ein!","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das von dir gewünschte Passwort ein:","Register","Abbrechen");
    }


    //RegistierungsDialog
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Resistrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_LOGIN)
    {
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort ist zu kurz!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Account gefunden, gib dein Passwort ein!","Login","Abbrechen");
    return 1;
    }
    else
    {
    Login(playerid,inputtext);
    return 1;
    }
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort ist zu kurz!");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das von dir gewünschte Passwort ein:","Register","Abbrechen");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }
    if(dialogid==DIALOG_TUTORIAL)
    {
    if(response==1)
    {
    SetPlayerPos(playerid,1227.1797,-914.0590,42.6812);
    SendClientMessage(playerid,0xFFFF00FF,"Du wurdest Teleportiert");
    }
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Okay, dann halt nicht!");
    }
    }
    return 1;
    }



    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.");
    dini_IntSet(Spielerdatei,"Level",0);
    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);
    dini_Create(Spielerdatei);
    if(gettime()<dini_Int(Spielerdatei,"timeban"))
    {
    SendClientMessage(playerid,ROT,"Du bist noch gebannt. Komm später wieder.");
    Kick(playerid);
    return 1;
    }


    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"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,"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,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    }
    return 1;
    }

    DIVIDE ET IMPERA

  • Okay, ich habe mir dein Tutorial angesehen und muss sagen, dass es mir geholfen hat.
    Ich habe das ganze Complied und habe einige Fehlermeldungen bkeommen, davon habe ich den Großteil schon selbst korrigiert, aber zu diesen hier weiß ich kein Rat.


    Vielleicht liegts ja nur an der Uhrzeit, dass ich mit meinem Wissen auf dem Trockenden liege..



    (365) : error 017: undefined symbol "sscanf"
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,BLAU,"Benutzung: /makeadmin [ID] [Rank]");


    (366) : error 017: undefined symbol "rank"
    if(rank < 0 || rank > 5000)return SendClientMessage(playerid,BLAU,"Der Rank darf nicht 0, unter 0 oder über 5000 sein!");


    (367) : error 017: undefined symbol "rank"
    SetPVarInt(pID,"Adminlevel",rank);


    (368) : error 017: undefined symbol "rank"
    format(string,sizeof(string),"Du hast %s zu einem Admin (Rank %d) gemacht.",SpielerName(pID),rank);


    (370) : error 017: undefined symbol "rank"
    format(string,sizeof(string),"Admin %s hat dich zu einem Admin (Rank %d) gemacht!",SpielerName(playerid),rank);


    (363) : warning 203: symbol is never used: "rang"
    new pID, rang, string[128];


    (378) : error 017: undefined symbol "sscanf"
    if(sscanf(params,"us",pID,Grund))return SendClientMessage(playerid,BLAU,"Benutzung: /kick [ID] [Grund]");


    (391) : error 017: undefined symbol "sscanf"
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"Benutzung: /ban [ID] [Grund]");

    DIVIDE ET IMPERA

  • ich würde es mit mysql machen.


    Ist viel ordentlicher und einfacher handzuhaben


    mfg

    Downloadlink? o:


    Zitat:



    Er hat genau deins - schreibt es nur um!
    Zitat Ende:


    Stimmt, ich habe ein neues pawno geöffnet und bin Schritt für Schitt den Anweisungen des Tutorials gefolgt.

    DIVIDE ET IMPERA

    Einmal editiert, zuletzt von [GSD]AlphaGen ()

  • hier ist der feheler :D



    //RegistierungsDialog

    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Resistrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");


    das muss raus ;)