[Fehlerbehebung] Login-Passwort auslesen

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 habe schon Meister Google gefragt, doch der weiß auch nicht´s.


    Kurze Erklärung:


    Ich bin auf einem Server Scripter und die haben ein "vermutlich" editiertes Script. Und da stellt sich folgendes Problem:


    Wenn ich mich einloggen will und auch das richtige Passwort habe steht da immer: Dein Passwort ist falsch. - was ja auch sein soll WENN ES FALSCH IST. Aber es ist nicht falsch.


    Code vom Login:


    Anfangsabfrage
    public OnPlayerLogin(playerid,password[])
    {
    new tmp2[128];
    new string2[128];
    new string[128];
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    format(string2, sizeof(string2), "/Accounts/%s.ini", playername2);
    new File: UserFile = fopen(string2, io_read);
    if ( UserFile )
    {
    new PassData[128];
    new keytmp[128], valtmp[128];
    fread( UserFile , PassData , sizeof( PassData ) );
    keytmp = ini_GetKey( PassData );
    if( strcmp( keytmp , "Key" , true ) == 0 )
    {
    valtmp = ini_GetValue( PassData );
    strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
    }
    if(strcmp(PlayerInfo[playerid][pKey],password, true ) == 0 )
    {
    new key[ 256 ] , val[ 256 ];
    new Data[ 256 ];
    while ( fread( UserFile , Data , sizeof( Data ) ) )
    {
    key = ini_GetKey( Data );
    if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLevel] = strval( val ); }


    Endabfrage
    if( strcmp( key , "Bombe" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pBombe] = strval( val ); }
    }//end while
    fclose(UserFile);//close the file after everything has been read in the while
    }
    else
    {
    format(string,sizeof(string),"{ff0000}Dein eingegebendes Passwort war fasch, bitte gib dein richtiges Passwort im den unterigen Fenster ein:");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{00ff00}[{ff0000}Mein Server{00ff00}]{ffffff}- Account",string,"Einloggen","Abbrechen");
    fclose(UserFile);
    gPlayerLogTries[playerid] += 1;
    if(gPlayerLogTries[playerid] == 3) { Kick(playerid); }
    return 1;
    }
    PlayerInfo[playerid][pAdjustable] = 0;
    ResetPlayerMoney(playerid);
    ConsumingMoney[playerid] = 1;
    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
    CurrentMoney[playerid] = PlayerInfo[playerid][pCash];


    P.S.: DIe letzte zeile beim Anfangsteil ist die, wo dann die .ini-Datei ausgelesen wird. Ich hab SIe deshalb nicht hier drin, weil der Text sonst zu lange ist (Zeichen) Das gleich gilt auch beim Entteil, da ist es die erste zeile die letzte von der Auslesung von der .ini datei also Adminlevel, LIzenze etc.

    Mit freundlichen Grüßen


    TheRacer110

    ___________________________________________________

    Einmal editiert, zuletzt von TheMike ()

  • Versuchs mal damit:


    public OnPlayerLogin(playerid,password[])
    {
    new tmp2[128];
    new string2[256];
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    format(string2, sizeof(string2), "/Accounts/%s.ini", playername2);
    new File: UserFile = fopen(string2, io_read);
    if ( UserFile )
    {
    new PassData[256];
    new keytmp[256], valtmp[256];
    fread( UserFile , PassData , sizeof( PassData ) );
    keytmp = ini_GetKey( PassData );
    if( strcmp( keytmp , "Key" , true ) == 0 )
    {
    valtmp = ini_GetValue( PassData );
    strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
    }
    if(strcmp(PlayerInfo[playerid][pKey],password, true ) == 0 )
    {
    new key[ 256 ] , val[ 256 ];
    new Data[ 256 ];
    while ( fread( UserFile , Data , sizeof( Data ) ) )
    {
    key = ini_GetKey( Data );
    if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLevel] = strval( val ); }


    Ich bin der Meinung, dass der eine String zu viel ist.


  • Hallo,


    dankeschön für deine Mitteilung. ICh werde es gleich einbauen und versuchen.


    Zur Info: Ich kenne mich damit aus, aber mit dieser Abfrage, das hab ich jetzt irgw. nicht gecheckt. Ich sag dir bescheid, wenn es funktioniert hat.


    Mfg
    TheMike



    P.S.: Sobald ich das einfüge, erkennt er "string" nicht mehr und es kommen lauter fehler!
    Dennoch Danke für die Antwort!

    Mit freundlichen Grüßen


    TheRacer110

    ___________________________________________________

    Einmal editiert, zuletzt von TheMike ()