DIALOG_SYTLE_INPUT

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
  • HeyHo,


    habe eine frage...


    wie kann ich das was bei dem dialog eingegeben wird, dass dass in der dini datei gespeichert wird (PlayerInfo[playerid][pMail] = daseingegebende


    der dialog ist so:


    ShowPlayerDialog(playerid,DIALOG_REGSTEP_3,DIALOG_STYLE_INPUT,"E-Mail","blablabla","Weiter","zurück");


    Danke im vorraus!

  • Wenn du möchtest, dass es in deiner Variable gespeichert wird (PlayerInfo[playerid][pMail]), musst du unter "enum {...}" einfach der pMail eine maximale Zeichenlänge zuweisen (z.B. pMail[128]) und unter OnDialogResponse dieser Variable den inputtext zuordnen.
    Ich arbeite nicht mit DINI, aber habe mal in den letzten 5Minuten etwas dazu heraus gesucht. Sinnvoll wäre es ebenfalls, pMail darauf zu untersuchen, ob kein Zeichen beinhält(Stichwort isnull), aber möchte dir keine Funktionen in den Script bringen, die du nicht möchtest bzw. nach denen du nicht gefragt hast.


    Code
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
        switch(dialogid) {
            case: DIALOG_REGSTEP_3: {
                if(response) {
                    strcat(PlayerInfo[playerid][pMail], inputtext);
                    dini_Set("diespielerdatei.ini", festgelegter Emailspeicherort, PlayerInfo[playerid][pMail]);
                }
            }
        }
    }

    Du kannst gerne etwas probieren, sei kreativ. Du kannst auch erst die Email einspeichern und später laden, z.B. wenn der Spieler das Tutorial beendet. Alternativ eben nur bei Bedarf laden, da eine Email ja nicht jeden Tag und bei jedem Login benötigt und geändert wird.


    Auch würde ich überprüfen, ob ein @ vorhanden ist, aber darüber gab es ja die Tage ein Thema.

  • was ist mir festgelegter Emailspeicherort gemeint?



    habe es jz so:



    ...
    ShowPlayerDialog(playerid,DIALOG_REGSTEP_3,DIALOG_STYLE_INPUT,"E-Mail","blablabla","Weiter","zurück");
    ...
    if(dialogid == DIALOG_REGSTEP_3)
    {
    if(response == 1
    {
    OnPlayerEnterEmail(playerid,inputtext);
    }
    .....




    public OnPlayerEnterEmail(playerid, emaill[])
    {
    new string4[64];
    new File: hFile = fopen(string4, io_write);
    if (hfile)
    {
    strmid(PlayerInfo[playerid][pMail], email, 0, strlen(email), 255);
    new var[32];
    format(var, 32, "Email=%s\n", PlayerInfo[playerid][pMail]);fwrite(hfile, var);
    }

  • Du brauchst deswegen nicht extra ein Callback aufrufen lassen, das kann man ganz gut auch einfach sofort speichern lassen, ohne Zwischenaufrufe.

    Denke dran, den Speicherort (Spieler\%s.txt) zu ändern!

  • if(dialogid == DIALOG_REGSTEP_3)
    {
    if(response == 1)
    {
    format(PlayerInfo[playerid][pMail], 32, inputtext);
    new str[145];
    format(str, sizeof(str), "[Info] Du hast ''%s'' als deine E-Mail-Adresse angegeben.", PlayerInfo[playerid][pMail]);
    SendClientMessage(playerid, 0xFF0000FF, str);
    }
    return 1;
    }


    Und dann bei deinem SpielerSpeichern:
    format(var, 32, "Email=%s\n", PlayerInfo[playerid][pMail]);fwrite(hfile, var);


    Und beim LoginPlayer muss es auch geladen werden. Poste das gegebenenfalls, wenn du nicht weißt, wie du das laden kannst (du musst auch format oder strcat nutzen, wie beim Dialog).