Crash oder Kein Dialog

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
  • https://pastebin.com/RqWWcTjy



    Nachdem ich das vorhin gescriptet habe, hab ich ein backup gemacht und mich an was anderes gesetzt,


    da dann fehler auftauchten durch die dinge die ich danach gescriptet habe, hab ich das script zurückgesetzt,


    davor hat das system wie ichs oben gescriptet habe (kann den originalcode nicht mehr wiedergeben)


    richtig gut funktioniert, es gab zwar einen warning wegen ondialogresponse oder sscanf aber den hab ich da ignoriert.



    Naja also jetzt nachdem ich bei if(dialogid == DIALOG_ISUSED) das vorherige passwort nochmal angegeben habe,


    geht es einfach weiter mit der registration (wie gesagt vorher hats seltsamerweise funktioniert)


    Bitte mal gucken...



    /edit hab mal die kommentare entfernt

  • inputtext[playerid]


    Das ist eine lustige Zeile ^^


    Was glaubst du, tust du da und das verwendest du öfter.


    inputtext ist ein einfacher string, ohne playerid Array.


    Sprich, angenommen wir sagen mal inputtext = "1234".



    //sagen wir mal playerid = 0
    inputtext[playerid]Enspricht also dann der 1.


    Das ist so überhaupt gar nicht das, was du willst.
    Nutze zum string Vergleich [wiki]strcmp[/wiki] und verwende das richtig :)


    Und es bringt nichts die Variable zu formatieren, da diese nicht gespeichert wird, es ist keine globale Variable, nur ein Parameter.


    Ich hab deinen Code nur überflogen, aber das ist mir besonders ins Auge gestochen und allein deshalb kann da nichts funktionieren.

    ast2ufdyxkb1.png


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

  • Ja, hab bei mein speicherstring so gemacht wegen nem error deshalb dachte ich, machs doch auch da xd


    Hm, also wie könnte ich das denn ohne format machen? Heißt inputtext auf nen string un in nen anderen public damit. Guck dir den code bitte mal an das weißt du was ich meine :)

  • Ich habe dir das angepasst und etwas mit Kommentaren versehen, zum besseren Verständnis.
    Ich habe den Grundaufbau so gelassen und nur die Fehler korrigiert.
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    //Vermeide solche "Doppeldeklarationen" wie string und string2.
    new string[128];
    new string2[128];
    new query[256];
    new giveplayer[MAX_PLAYER_NAME];
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    if(dialogid == DIALOG_REGISTERS)
    {

    if(!response) return Kick(playerid);
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTERS, DIALOG_STYLE_PASSWORD, "VR Reallife", "Herzlich Willkommen auf VR Reallife\nDein Account nicht in unserer Datenbank gefunden.\nBitte registriere dich nun.\n{FF0000}Mindestens 3 Zeichen!", "Fortfahren", "Abbrechen");

    //Das eingegebene Passwort wird weg geschrieben:
    SetPVarString(playerid,"password",inputtext);
    ShowPlayerDialog(playerid,DIALOG_ISUSED,DIALOG_STYLE_MSGBOX,"VR Reallife","Benutzt du dieses Passwort auf einem anderem Server?","Ja","Nein");
    return 1;
    }
    if(dialogid == DIALOG_ISUSED)
    {
    if(response)
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTERCHECK, DIALOG_STYLE_PASSWORD, "VR Reallife", "Herzlich Willkommen auf VR Reallife\nDein Account nicht in unserer Datenbank gefunden.\nBitte registriere dich nun.", "Fortfahren", "Abbrechen");
    SendClientMessage(playerid,COLOR_RED,"SERVER: Um deine Accountsicherheit auf dem Server zu gewährleisten, wähle bitte ein anderes Passwort!");
    return 1;
    }
    else
    {
    mysql_format(handle, query, sizeof(query), "INSERT INTO `user` (`Username`, `Key`) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][PlayerName], inputtext);
    SendClientMessage(playerid,0xFFFFE060,"DHuiensohn");
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    }
    return 1;
    }
    if(dialogid == DIALOG_REGISTERCHECK)
    {
    //Lese das zuvor eingegeben Passwort aus und prüfe es gegen "inputtext":
    GetPVarString(playerid, "password", string, sizeof(string));
    if(!strcmp(inputtext, string))
    {
    SendClientMessage(playerid,COLOR_RED,"Das Passwort hast du davor schon eingegeben!");
    ShowPlayerDialog(playerid, DIALOG_REGISTERCHECK, DIALOG_STYLE_PASSWORD, "VR Reallife", "Herzlich Willkommen auf VR Reallife\nDein Account nicht in unserer Datenbank gefunden.\nBitte registriere dich nun.", "Fortfahren", "Abbrechen");
    return 1;
    }
    else
    {
    mysql_format(handle, query, sizeof(query), "INSERT INTO `user` (`Username`, `Key`) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][PlayerName], inputtext);
    SendClientMessage(playerid,0xFFFFE060,"DHuiensohn");
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    }
    return 1;
    }