Problem mit GUI-Login/Register (GF) - Passwort wird nicht gespeichert

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
  • Hi Leute, ich stehe mal wieder vor einem Problem.. Und zwar habe ich ein GF-Edit auf GUI-Login umgebaut. Das funktioniert auch soweit wunderbar. Nach dem Registrieren speichert er alles wie es soll in die USERNAME.ini. Fast alles.. -.- Was nicht übernommen wird, ist das Passwort.. was den Effekt hat, dass man sich mit jedem beliebigen Passwort einloggen kann. Und das ist ja nicht der Sinn vom Zweck.. :D


    Kurz: das Passwort wird nicht in die USERNAME.ini gespeichert - soll es aber!^^


    Leider weiß ich nicht, wie ich Pawno sagen kann, dass der Inputtext das Passwort sein soll.. Sonst würde ich den Fehler wahrscheinlich selbst finden.. Umso mehr freue ich mich, wenn jemand den Fehler findet.. :) Eine kurze Erläuterung dazu wäre auch super :P


    Läuft beides über zwei neue Publics:



    public OnPlayerLogin(playerid,password[])
    {
    new string2[64];
    new pname2[MAX_PLAYER_NAME];
    new pname3[MAX_PLAYER_NAME];
    new string3[128];


    GetPlayerName(playerid, pname2, sizeof(pname2));
    format(string2, sizeof(string2), "/Accounts/%s.ini", pname2);
    new File: UserFile = fopen(string2, io_read);
    if ( UserFile )
    {
    new PassData[256];
    new keytmp[256], valtmp[256], val[128];
    fread( UserFile , PassData , sizeof( PassData ) );
    keytmp = ini_GetKey( PassData );
    if( strcmp( keytmp , "Key" , true ) == 0 )
    {
    valtmp = ini_GetValue( PassData );
    strmid(PlayerInfo[playerid][pPassword], valtmp, 0, strlen(valtmp)-1, 255);
    }
    if(strcmp(PlayerInfo[playerid][pPassword],password, true ) == 0 ){
    new key[128];
    new Data[128];
    while(fread(UserFile,Data,sizeof(Data))) {
    key = ini_GetKey(Data);
    if( strcmp( key , "Admin" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdmin] = strval( val ); }
    if( strcmp( key , "Kills" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); }
    if( strcmp( key , "Deaths" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); }
    if( strcmp( key , "Warns" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pWarns] = strval( val ); }
    if( strcmp( key , "SkillPoints" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pSkillPoints] = strval( val ); }
    }
    fclose(UserFile);
    gPlayerLogged[playerid] = 1;
    gPlayerAccount[playerid] = 1;
    GetPlayerName(playerid, pname3, sizeof(pname3));
    SendClientMessage(playerid, COLOR_WHITE, "Erfolgreich eingeloggt.");
    format(string3, sizeof(string3), "Willkommen %s, du bist als Admin Level %d eingeloggt!", pname3, PlayerInfo[playerid][pAdmin]);
    SendClientMessage(playerid, COLOR_WHITE,string3);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,100);
    SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,100);
    }
    else {
    SendClientMessage(playerid, COLOR_GREY, " Falsches Passwort");
    fclose(UserFile);
    }
    }
    return 1;
    }
    public OnPlayerRegister(playerid, password[])
    {
    new string[64];
    new playername[MAX_PLAYER_NAME];
    if(IsPlayerConnected(playerid))
    {
    strmid(PlayerInfo[playerid][pPassword], password, 0, strlen(password), 255);
    GetPlayerName(playerid, playername, sizeof(playername));
    format(string, sizeof(string), "/Accounts/%s.ini", playername);
    new File:hFile;
    hFile = fopen(string, io_append);
    new var[32];
    format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var);
    format(var, 32, "Admin=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
    format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
    format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
    format(var, 32, "Warns=%d\n",PlayerInfo[playerid][pWarns]);fwrite(hFile, var);
    format(var, 32, "SkillPoints=%d\n",PlayerInfo[playerid][pSkillPoints]);fwrite(hFile, var);
    fclose(hFile);
    SendClientMessage(playerid, COLOR_WHITE, "Erfolgreich registriert!");
    OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]);
    ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Server Regeln:","1. Beleidigen ist Verboten!\n2. Bugusing ist Verboten!\n3. Cheaten ist Verboten!\n4. Serverwerbung ist Verboten\n\n\nJedlicher Missbrauch der Regeln wird mit\nKick/Warn/Ban bestraft!","Akzeptieren","Ablehnen");
    }
    return 1;
    }


    OnDialogResponse:


    if(response)
    {
    switch(dialogid)
    {
    case DIALOG_LOG:
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_LOG,1,"*** Login","Gib dein Passwort ein.","Weiter","Abbrechen");
    return SendClientMessage(playerid,COLOR_LIGHTRED,"Es wurde kein Passwort eingegeben!");
    }
    if(strlen(inputtext))
    {
    new tmppass[64];
    strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOG,1,"*** Login","Gib dein Passwort ein.","Weiter","Abbrechen");
    SendClientMessage(playerid,COLOR_LIGHTRED,"Das Passwort war falsch!");
    }
    }
    case DIALOG_REG:
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"*** Registrieren","Wähle ein Passwort.","Weiter","Abbrechen");
    return SendClientMessage(playerid,COLOR_LIGHTRED,"Das Passwort ist zu kurz!");
    }
    new tmppass[64];
    strmid(tmppass, inputtext, 0, strlen(inputtext), 255);
    Encrypt(tmppass);
    OnPlayerRegister(playerid,tmppass);
    }
    }
    }
    else
    {
    switch(dialogid)
    {
    case DIALOG_LOG:ShowPlayerDialog(playerid,DIALOG_LOG,1,"*** Login","Gib dein Passwort ein.","Weiter","Abbrechen");
    case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"*** Registrieren","Wähle ein Passwort.","Weiter","Abbrechen");
    }
    }


    Und zu allerlezt - Encrypt:


    public Encrypt(string[])
    {
    for(new x=0; x < strlen(string); x++)
    {
    string[x] += (3^x) * (x % 15);
    if(string[x] > (0xff))
    {
    string[x] -= 256;
    }
    }
    return 1;
    }



    Besten Gruß, Jerome ;)


    Edit: Hat echt keiner eine Idee??


    Kann mir vill jemand erklären wie ich den Textinput des Dialogs auslesen und verwenden kann? Vermute das es daran liegt..

    Wenn am Anfang alles schief geht, nenne es Version 1.0!
    [GFL] GameMode - coming soon [v0.4]
    IP: coming soon..
    Forum: coming soon..

    4 Mal editiert, zuletzt von Sadi () aus folgendem Grund: OnDialogResponse + Encrypt hinzugefügt

  • Das war es leider nicht.. Könnte es auch damit zusammenhängen?


    public SaveAccounts(playerid)
    {
    if(IsPlayerConnected(playerid)) {
    if(gPlayerLogged[playerid]) {
    new string3[32];
    new pname3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname3, sizeof(pname3));
    format(string3, sizeof(string3), "/Accounts/%s.ini", pname3);
    new File: pFile = fopen(string3, io_write);
    if (pFile) {
    new var[32];
    format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(pFile, var);
    fclose(pFile);
    new File: hFile = fopen(string3, io_append);
    format(var, 32, "Admin=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
    format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
    format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
    format(var, 32, "Warns=%d\n",PlayerInfo[playerid][pWarns]);fwrite(hFile, var);
    format(var, 32, "SkillPoints=%d\n",PlayerInfo[playerid][pSkillPoints]);fwrite(hFile, var);
    fclose(hFile);
    }
    }
    }
    return 1;
    }

    Wenn am Anfang alles schief geht, nenne es Version 1.0!
    [GFL] GameMode - coming soon [v0.4]
    IP: coming soon..
    Forum: coming soon..