Login Problem

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 Community,
    ich verzweifle gerade an meinem Login-System in meinem Selfmade und hoffe ihr könnt mir helfen.
    Das Problem ist, dass er das Passwort falsch erkennt.
    Wenn mein Passwort zb. 123 ist, kann mich mit /login 1 einlogen, was ja totaler schwachsinn ist.
    Noch verwunderlich ist das in der .ini 49 als Passwort drin steht (bei dem Beispiel PW: 123).
    Was wahrscheinlich daran liegt, dass ich beim registrieren sage, Speicher das Passwort als String, denn ich will ja auch Buchstaben im Passwort erlauben.
    Das ist mein Login Befehl:

    dcmd_login(playerid,params[])
    {
    new string[128], pw, password[256], pname[MAX_PLAYER_NAME];
    if(sscanf(params,"s",pw))
    {
    return SendClientMessage(playerid,COLOR_GELB,"Benutzung: /Login [Passwort]");
    }
    GetPlayerName(playerid,pname,sizeof(pname));
    format(string, sizeof(string),"spieler/%s.ini",pname);
    password=dini_Get(string,"passwort"); // Problem vermutung
    if(strval(password)==pw) // Problem vermutung
    {
    SendClientMessage(playerid,COLOR_GRÜN,"Du hast dich erfolgreich eingeloggt.");
    SetPlayerSkin(playerid,dini_Int(string,"skin"));
    SetPlayerPos(playerid,dini_Float(string,"x"),dini_Float(string,"y"),dini_Float(string,"z"));
    SetPlayerFacingAngle(playerid,dini_Float(string,"a"));
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,1);
    SpawnPlayer(playerid);
    logged[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_ROT,"Das Passwort war falsch!");
    }
    return 1;
    }


    Alles weitere wie Spawn, Skin usw. funktioniert einwandfrei, nur das er das Passwort nicht erkennt ist mein Problem.
    Ich habe mir auch schon Loginsysteme hier im Forum angeschaut, aber die sind nie mit dcmd, was meiner Meinung nach das beste ist. ;)
    Außerdem ist bloßes rauskopieren oder einfügen von FS´s zu simpel. Also reicht hier eine erklärung, woran das Problem liegt.
    Wie es dann weiter geht sollte ich eigentlich dann selbst hinbekommen (ansonsten frage ich halt nach :D ).
    Ich bin über jeden Beitrag froh, außer er enthält dinge wie: Lern scripten oder ähnliches. ;)


    Mfg
    Paddy

  • Das Scripten nicht ganz leicht ist, ist ja wohl logisch. ;)
    Aber ich denke jemand wird mir schon helfen können. :S


    PS: Bester Beitrag den ich je gelesen habe in einem Script-Forum. :thumbup:

  • Versuche mal für die Abfrage strcmp zu nutzen, also
    if(strcmp(password, pw, true))


    Und definiere password so:
    new password; //Ohne die Größenangabe 256
    Hoffe es funktioniert.


    Mit freundlichen Grüßen
    Padarom


    PS:
    Erneut ein ziemlich sinnvoller Beitrag von Ghost

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger


  • C:\Dokumente und Einstellungen\Patrick\Desktop\SAMP\gamemodes\new.pwn(196) : error 006: must be assigned to an array
    C:\Dokumente und Einstellungen\Patrick\Desktop\SAMP\gamemodes\new.pwn(197) : error 035: argument type mismatch (argument 1)
    C:\Dokumente und Einstellungen\Patrick\Desktop\SAMP\gamemodes\new.pwn(196) : warning 204: symbol is assigned a value that is never used: "password"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.



    password=dini_Get(string,"passwort"); //Zeile 196
    if(strcmp(password, pw, true)) //Zeile 197 wenn wäre false hier wahrscheinlich auch besser(das Passwort muss ja zu 100% gleich sein), macht er aber auch nicht. :D


    Leider funktioniert das gar nicht. :S
    Trozdem danke für die hilfe.


    PS: Gut das ich nicht der einzige bin der den Beitrag sinnlos findet. :D

  • dcmd_alogin(playerid,params[]){
    new pw, string[128];
    GetPlayerName(playerid,pname,sizeof(pname));
    format(string, sizeof(string),"spieler/%s.ini",pname);


    if(sscanf(params, "s",pw)) {


    return SendClientMessage(playerid,COLOR_RED,"/login [PW]!");
    }
    if(strcmp(pw,dini_Get(string,"PW")) == 0)
    {
    //Dein Code
    }


    else
    {
    SendClientMessage(playerid,COLOR_RED,"Das Passwort war Falsch!");
    SendClientMessage(playerid,COLOR_RED,"Versuche es erneut!");
    }return 1;}

  • Nein, leider funktioniert das auch nicht. :S

    C:\Dokumente und Einstellungen\Patrick\Desktop\SAMP\gamemodes\new.pwn(196) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    if(strcmp(pw,dini_Get(string,"PW")) == 0) // Zeile 196


    trozdem danke auch dir für deine mühe


    Edit:
    Mh ich glaube mein dini hat ansich ein paar komplexe. :D
    Wenn ich zum Beispiel
    dini_Set(file,"key",value);
    Mache sagte er gleich:

    C:\Dokumente und Einstellungen\Patrick\Desktop\SAMP\gamemodes\new.pwn(177) : error 035: argument type mismatch (argument 3)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Wobei das ja gar nicht stimmt schließlich sind ja alle "argumente" da.
    Aus diesem Grund denke ich, funktioniert mein Login auch nicht.
    Jedoch weiß ich nicht warum mein script das als Falsch ansieht ?(
    Kann mir dabei einer helfen?


    Edit 2: Keiner eine Idee? ;(

    3 Mal editiert, zuletzt von Paddy ()