Passwort aus Datei anzeigen lassen

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
  • Habe Fehler beim Anzeigen vom Passwort. :S


    if (strcmp("/c", cmdtext, true, 10) == 0)
    {
    new code = SpielerDaten[playerid][pPasswort];
    new codestring[64];
    format(codestring, sizeof(codestring), "{FFFFFF}Dein Code für den Login lautet: %s", code);
    ShowPlayerDialog(playerid, DIALOG_CODE, DIALOG_STYLE_MSGBOX, "{00BFFF}Dein Login-Code", codestring, "Okay", "");
    return 1;
    }
    Hier wird entweder nur die Länge des Passwortes ausgegeben oder nur ein einziges komisches Zeichen, welches sich je nach Passwort ändert.
    Wie kann ich machen, dass da nur das klare Passwort angezeigt wird? :)


    if (strcmp("/cc", cmdtext, true, 10) == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_CODE_CHANGE, DIALOG_STYLE_INPUT, "{00BFFF}Login-Code ändern", "{FFFFFF}Bitte lege nun deinen neuen Code für den Login fest.", "Ändern", "Abbrechen");
    return 1;
    }
    Hier gibt der Spieler dann einfach sein neues Passwort/Code fest, welches er für den Login haben möchte.


    case DIALOG_CODE_CHANGE:
    {
    if(response == 1)
    {
    SpielerDaten[playerid][pPasswort] = strlen(inputtext);
    SpielerSpeichern(playerid);
    SendClientMessage(playerid, Gruen, "Du hast deinen Login-Code erfolgreich geändert.");
    }
    }
    Hier wird halt das eingegebene Passwort in "pPasswort" gespeichert. Danach wird der komplette Account gespeichert, wobei das Passwort dann auch in die Datei geschrieben wird. Leider wird nur die Länge des Passwortes und nicht das Passwort selber in die Spielerdatei geschrieben. :( Wie kann ich das beheben? Ist es richtig mit "strlen(inputtext" ?

  • Ist SpielerDaten[playerid][pPasswort] eine Zahl oder ein String?


    SpielerDaten[playerid][pPasswort] = strlen(inputtext);
    strlen gibt dir die Länge des Textes wieder. Falls pPasswort ein Integer ist musst du strval verwenden bzw. strcat falls es ein String ist.

  • Ist SpielerDaten[playerid][pPasswort] eine Zahl oder ein String?


    SpielerDaten[playerid][pPasswort] = strlen(inputtext);
    strlen gibt dir die Länge des Textes wieder. Falls pPasswort ein Integer ist musst du strval verwenden bzw. strcat falls es ein String ist.


    Also bei meinem Script wird automatisch ein Code als Passwort festgelegt. Ich möchte diesen Code jetzt ändern. Zum Beispiel in: Artus
    Das geht aber nicht. Wenn ich den Code dann per /c anzeigen lassen will, dann steht da nichts.
    pPasswort ist ein String.


    Mit strcat erhalte ich folgende Fehler:


    Selfmade.pwn(947) : warning 202: number of arguments does not match definition
    Selfmade.pwn(947) : warning 224: indeterminate array size in "sizeof" expression (symbol "maxlength")

  • Zitat

    pPasswort ist ein String.


    Dann ist diese Zeile auch falsch: new code = SpielerDaten[playerid][pPasswort];
    Du könntest die Variable auch direkt im String formatieren:
    format(codestring, sizeof(codestring), "{FFFFFF}Dein Code für den Login lautet: %s", SpielerDaten[playerid][pPasswort]);

    Zitat


    Selfmade.pwn(947) : warning 202: number of arguments does not match definition
    Selfmade.pwn(947) : warning 224: indeterminate array size in "sizeof" expression (symbol "maxlength")


    Da hast du wohl strcat falsch verwendet:

    SpielerDaten[playerid][pPasswort][0] = '\0'; //damit das alte Passwort überschrieben wird, strcat fügt den String nur hinzu
    strcat(SpielerDaten[playerid][pPasswort],inputtext);

  • Du solltest mit der Funktion strmid arbeiten.


    Dieser "=" (Ist gleich) Mist bringt dir bei sowas nicht viel.


    Außerdem nicht strlen(inputtext), sondern nur inputtext verwenden, weil das sonst ein Int ist also nicht das Passwort. Dieses [pPasswort] sollte dann dementsprechend auch als string deklariert werden.

  • SpielerDaten[playerid][pPasswort] = inputtext;
    pPasswort ist als String deklariert und da kommt --> error 047: array sizes do not match, or destination array is too small


    Außerdem gibt er mir denselben Fehler nochmal bei folgendem Code:
    SpielerDaten[playerid][pPasswort] = dini_Get(Spielerdatei,"Passwort");


    Oben bei der enum SpielerDaten ist pPasswort[64]

  • Strings solltest du (zumindest in Pawn) nicht mit einem = zuweisen, sondern mit format.


    Sprich so:


    format(SpielerDaten[playerid][pPasswort],64,inputtext);


    Bei den anderen genauso ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Falls du meinen Beitrag gelesen hättest, wüsstest du was der Fehler ist.
    Verwende

    SpielerDaten[playerid][pPasswort][0] = '\0';
    strcat(SpielerDaten[playerid][pPasswort],inputtext);
    zum Ändern des Passwortes und beim Laden:
    strcat(SpielerDaten[playerid][pPasswort],dini_Get(Spielerdatei,"Passwort"));