Warum klappt das Register/Login System nicht?

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 alles zusammen!
    Unzwar habe ich ein Register/Login System gemacht doch es passiert nichts?!? Keine Errors, keine Warnings, nichts! Hier sind die zeilen:


    public OnPlayerConnect(playerid)
    {
    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))
    {
    SendClientMessage(playerid,0xAAAAAAAA,"Dein Account wurde gefunden.Tippe /login [Passwort] um dich Einzuloggen.");
    }
    else
    {
    SendClientMessage(playerid,0xAAAAAAAA,"Du bist noch nicht Registriert.Tippe /register [Passwort] ein um dich zu Registrieren.");
    }
    return 1;
    }


    if(strcmp("/register",cmdtext,true)==0)
    {
    if(!strlen(cmdtext))
    {
    SendClientMessage(playerid,0xAAAAAAAA,"Das Passwort war nicht lang genug.");
    SendClientMessage(playerid,0xAAAAAAAA,"Du bist noch nicht Registriert.Tippe /register [Passwort] ein um dich zu Registrieren.");
    return 1;
    }
    else
    {
    Register(playerid,cmdtext);
    return 1;
    }
    }
    if(strcmp("/login",cmdtext,true)==0)
    {
    if(!strlen(cmdtext))
    {
    SendClientMessage(playerid,0xAAAAAAAA,"Das Passwort war nicht lang genug.");
    SendClientMessage(playerid,0xAAAAAAAA,"Dein Account wurde gefunden.Tippe /login [Passwort] um dich Einzuloggen.");
    return 1;
    }
    else
    {
    Login(playerid,cmdtext);
    return 1;
    }
    }
    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,0xAAAAAAAA,"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);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    SendClientMessage(playerid,0xAAAAAAAA,"Erfolgreich Eingeloggt.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xAAAAAAAA,"Falsches Passwort.");
    SendClientMessage(playerid,0xAAAAAAAA,"Dein Account wurde gefunden.Tippe /login [Passwort] um dich Einzuloggen.");
    return 1;
    }
    }


    PS: Es ist das Register/Login System von MrMonat aber ich wollte es mal ohne Dialog ausprobieren. Hoffe ihr könnt mir helfen und ich danke euch schon mal im vorraus.

    Selfmade Reallife Server:IIIIIIIIIIIIIIIIIII 5%

  • natürlich kann man...
    sonst könnte ich das nicht
    stock EinladungAkzeptieren(eingabeid, playerid/*, FraktionsID*/)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new string[MAX_PLAYER_NAME*2+80];
    new FraktionsName[24];

    *snipped* sonst zu viel geheimer code^^

    //SetPVarInt(eingabeid, "Einladung", PlayerInfo[playerid][pFraktion]);
    format(string,sizeof(string),"%s hat dich in die Fraktion %s eingeladen. Möchtest du diese Einladung annehmen?",name, FraktionsName);
    ShowPlayerDialog(eingabeid,3,DIALOG_STYLE_MSGBOX,"Fraktionsbeitritt",string,"Akzeptieren","Ablehnen");
    return 1;
    }



  • Dito.


    Bei dem Register + Login System wird das Passwort "/register" heißen.
    Man muss cmdtext splitten. Oder wie hattest du dir nen Register Befehl ohne Parameter vorgestellt ?


    MFG RFT

    RFT

  • Wenn ich es zu publics machen will kommen diese 2 Warnings:


    (258) : warning 235: public function lacks forward declaration (symbol "Register")
    (271) : warning 235: public function lacks forward declaration (symbol "Login")


    Und hier sind die Zeilen:


    public Register(playerid,key[])


    public Login(playerid,key[])


    Okay danke dir :D wäre sehr nett von dir wenn du mir auch sagen würdest wie ich cmdtext splitte bzw. wie der Parameter aussieht.

    Selfmade Reallife Server:IIIIIIIIIIIIIIIIIII 5%


  • Lass es als stock. Public (Callbacks) brauchste nur für ein Timer oder wenn du per Filterscript oder so drauf zugreifen willst.
    Splitten benutz du strtok wenn ja ?



    new cmd[128], idx;
    cmd = strtok(cmdtext, idx);
    new Params[128];
    if(strcmp("/register",cmd,true)==0)
    {
    Params = strtok(cmdtext, idx);
    if(!Params[0])
    {
    SendClientMessage(playerid,0xAAAAAAAA,"Das Passwort war nicht lang genug.");
    SendClientMessage(playerid,0xAAAAAAAA,"Du bist noch nicht Registriert.Tippe /register [Passwort] ein um dich zu Registrieren.");
    return 1;
    }
    else
    {
    Register(playerid,Params);
    return 1;
    }
    }
    if(strcmp("/login",cmd,true)==0)
    {
    Params = strtok(cmdtext, idx);
    if(!Params[0])
    {
    SendClientMessage(playerid,0xAAAAAAAA,"Das Passwort war nicht lang genug.");
    SendClientMessage(playerid,0xAAAAAAAA,"Dein Account wurde gefunden.Tippe /login [Passwort] um dich Einzuloggen.");
    return 1;
    }
    else
    {
    Login(playerid,Params);
    return 1;
    }
    }
    return 1;
    }


    Du möchtest ja nur überprüfen ob ein Parameter angegeben wurden ist. Dann mach es so wie ichs vorgeschrieben habe ist die bessere und schnellere Lösung.


    MFG RFT

    RFT