Dialog geht nicht weiter(MySQL)

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
  • Hey Leute,
    Ich habe seid einigen tagen ein Problem und zwar hab ich ein Selfmade angefangen was auf MySQL R7/8 läuft nun wenn ich jetzt meine Sachen speichern will und mich wieder registrieren will und auf den Button halt klicke passiert nichts der Dialog ist wieder da und das die ganze Zeit ! Was kann man da gegen machen? Hier mal meine Codes:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(!response) Kick(playerid);
    if(strlen(inputtext) > 32 || strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Dein Passwort muss mindestens 4 Zeichen oder darf maximal 32 Zeichen enthalten!\n\nWillkommen auf ... Du hast noch keinen Account, \num dich zu Registrieren gib bitte ein gewünschtes Passwort ein:","Registrieren","Abbrechen");
    new password[129];
    WP_Hash(password, 129, inputtext);
    CreatePlayerAccount(playerid, password);
    CheckPlayerAccount(playerid);
    }
    case DIALOG_LOGIN:
    {
    if(!response) Kick(playerid);
    if(strlen(inputtext) > 32 || strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login","Dein Passwort muss mindestens 4 Zeichen oder darf maximal 32 Zeichen enthalten!\n\nWillkommen auf ...\nDeine Accountdaten wurden gefunden, bitte gib dein Passwort ein:","Login","Abbrechen");
    new password[129], query[128];
    WP_Hash(password, 129, inputtext);
    format(query, sizeof query, "SELECT * FROM `accounts` WHERE `ID` = '%d'", SpielerInfo[playerid][pID]);
    mysql_function_query(1, query, true, "OnPlayerAccountLoad", "is", playerid, password);
    }
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }


    stock ResetPlayerVariables(playerid)
    {
    SpielerInfo[playerid][pID] = -1,SpielerInfo[playerid][pEingeloggt] = 0,
    SpielerInfo[playerid][pPremiumcoins] = 0,SpielerInfo[playerid][pEP] = 0,
    SpielerInfo[playerid][pLevel] = 0, SpielerInfo[playerid][pGeld] = 0,
    SpielerInfo[playerid][pAdmin] = 0,SpielerInfo[playerid][pFraktion] = 0,
    SpielerInfo[playerid][pLeader] = 0,SpielerInfo[playerid][pRang] = 0,
    SpielerInfo[playerid][pPerso] = 0,SpielerInfo[playerid][pAutoschein] = 0,
    SpielerInfo[playerid][pMotorradschein] = 0,SpielerInfo[playerid][pLKWSchein] = 0,
    SpielerInfo[playerid][pFlugschein] = 0,SpielerInfo[playerid][pWaffenschein] = 0,
    SpielerInfo[playerid][pPayDayMinutes] = 0,SpielerInfo[playerid][pJob] = 0,
    WrongPassword[playerid] = 0;
    }


    stock DatabaseConnect()
    {
    mysql_debug(1);
    mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATA, MYSQL_PASS);
    if(mysql_ping() == 1)
    {
    print("[MySQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
    return 1;
    }
    else
    {
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("[MySQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
    mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATA, MYSQL_PASS);
    if(mysql_ping() == 1)
    {
    print("[MySQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
    return 1;
    }
    else
    {
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("[MySQL] Der Server wird nun beendet!");
    SendRconCommand("exit");
    return 1;
    }
    }
    }


    stock CheckPlayerAccount(playerid)
    {
    new query[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    mysql_real_escape_string(name, name);
    format(query, sizeof query, "SELECT `ID` FROM `accounts` WHERE `Username` = '%s'", name);
    mysql_function_query(1, query, true, "OnPlayerAccountCheck", "i", playerid);
    }
    public OnPlayerAccountCheck(playerid)
    {
    if(!IsPlayerConnected(playerid)) return 1;
    new rows, fields, result[5];
    cache_get_data(rows, fields);
    if(rows)
    {
    cache_get_field_content(0, "ID", result);
    SpielerInfo[playerid][pID] = strval(result);
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login", "Willkommen auf ...\nDeine Accountdaten wurden gefunden, bitte gib dein Passwort ein:","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registrierung", "Willkommen auf ...\nDu hast noch keinen Account, um dich zu Registrieren gib bitte ein gewünschtes Passwort ein:", "Registrieren", "Abbrechen");
    }
    return 1; //!!WICHTIG: Immer returnen damit der Cache geleert wird..!!
    }


    stock CreatePlayerAccount(playerid, password[])
    {
    new query[256], name[MAX_PLAYER_NAME], escpassword[129];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    mysql_real_escape_string(name, name);
    mysql_real_escape_string(password, escpassword);
    format(query, sizeof query, "INSERT INTO `accounts` (`Username`, `Password`, `Premiumcoins`, `Erfahrungspunkte`, `Level`, `Geld`, `Adminlevel`, `Fraktion`, `Leader`, `Rang`, `Personalausweis`, `Autoschein`, `Motorradschein`, `LKWSchein`, `Flugschein`, `Waffenschein`, `PayDayMinutes`, `Job`) VALUES ('%s', '%s', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0')",name, escpassword);
    mysql_function_query(1, query, false, "", "");
    }
    public OnPlayerAccountLoad(playerid, password[])
    {
    if(!IsPlayerConnected(playerid) || !IsPlayerNPC(playerid)) return 1;
    new rows, fields, result[129];
    cache_get_data(rows, fields);
    if(!rows) Kick(playerid);
    cache_get_field_content(0, "Password", result);
    if(!strcmp(result, password, false))
    {
    cache_get_field_content(0, "Premiumcoins", result); SpielerInfo[playerid][pPremiumcoins] = strval(result);
    cache_get_field_content(0, "Erfahrungspunkte", result); SpielerInfo[playerid][pEP] = strval(result);
    cache_get_field_content(0, "Level", result); SpielerInfo[playerid][pLevel] = strval(result);
    cache_get_field_content(0, "Geld", result); SpielerInfo[playerid][pGeld] = strval(result);
    cache_get_field_content(0, "Adminlevel", result); SpielerInfo[playerid][pAdmin] = strval(result);
    cache_get_field_content(0, "Fraktion", result); SpielerInfo[playerid][pFraktion] = strval(result);
    cache_get_field_content(0, "Leader", result); SpielerInfo[playerid][pLeader] = strval(result);
    cache_get_field_content(0, "Rang", result); SpielerInfo[playerid][pRang] = strval(result);
    cache_get_field_content(0, "Personalausweis", result); SpielerInfo[playerid][pPerso] = strval(result);
    cache_get_field_content(0, "Autoschein", result); SpielerInfo[playerid][pAutoschein] = strval(result);
    cache_get_field_content(0, "Motorradschein", result); SpielerInfo[playerid][pMotorradschein] = strval(result);
    cache_get_field_content(0, "LKWSchein", result); SpielerInfo[playerid][pLKWSchein] = strval(result);
    cache_get_field_content(0, "Flugschein", result); SpielerInfo[playerid][pFlugschein] = strval(result);
    cache_get_field_content(0, "Waffenschein", result); SpielerInfo[playerid][pWaffenschein] = strval(result);
    cache_get_field_content(0, "PayDayMinutes", result); SpielerInfo[playerid][pPayDayMinutes] = strval(result);
    cache_get_field_content(0, "Job", result); SpielerInfo[playerid][pJob] = strval(result);
    SpielerInfo[playerid][pEingeloggt] = 1;
    SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
    SpawnPlayer(playerid);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Das Angegebene Passwort stimmt nicht überein.\nBitte gib das richtige Passwort ein\n\nDu hast 3 Versuche sonst wirst du gekickt!:","Login","Abbrechen");
    WrongPassword[playerid] += 1;
    if(WrongPassword[playerid] == 3)
    {
    WrongPassword[playerid] = 0;
    Kick(playerid);
    }
    }
    return 1;
    }
    public SavePlayerAccount(playerid)
    {
    if(!IsPlayerConnected(playerid) || !IsPlayerNPC(playerid)) return 1;
    new query[500];
    format(query, sizeof query, "UPDATE accounts SET \
    Premiumcoins=%d, \
    Erfahrungspunkte=%d, \
    Level=%d, \
    Geld=%d, \
    Adminlevel=%d, \
    Fraktion=%d, \
    Leader=%d, \
    Rang=%d, \
    Personalausweis=%d, \
    Autoschein=%d, \
    Motorradschein=%d, \
    LKWSchein=%d, \
    Flugschein=%d, \
    Waffenschein=%d, \
    PayDayMinutes=%d, \
    Job=%d \
    WHERE ID=%d", \
    SpielerInfo[playerid][pPremiumcoins],
    SpielerInfo[playerid][pEP],
    GetPlayerScore(playerid),
    GetPlayerMoney(playerid),
    SpielerInfo[playerid][pAdmin],
    SpielerInfo[playerid][pFraktion],
    SpielerInfo[playerid][pLeader],
    SpielerInfo[playerid][pRang],
    SpielerInfo[playerid][pPerso],
    SpielerInfo[playerid][pAutoschein],
    SpielerInfo[playerid][pMotorradschein],
    SpielerInfo[playerid][pLKWSchein],
    SpielerInfo[playerid][pFlugschein],
    SpielerInfo[playerid][pWaffenschein],
    SpielerInfo[playerid][pPayDayMinutes],
    SpielerInfo[playerid][pJob],
    SpielerInfo[playerid][pID]);
    mysql_function_query(1, query, false, "", "");
    return 1;
    }


    Vielen dank im voraus.


    Mit freundlichen Grüßen
    Dwayne_Pacino

  • Die MySQL log gibt keinen fehler aus oder das ihrgend wie sich die querys verändern.
    Ich hatte den Bug mal das nach dem erstellen der Tabellen auch wenn diese schon vorhanden waren die querys nicht mehr gingen.


    Hmmm ich versteh auch nicht wo der Fehler sein kann. Langsam verzweifel ich


  • Hmmm ich versteh auch nicht wo der Fehler sein kann. Langsam verzweifel ich


    Du kannst mal zwei Sachen machen in wie ich schon gesagt habe in die MySQL Log schauen und wenn immer die registrierung aufgerufen wird kannst du mal
    das was in den Dialogen steht mal umbenennen das weisst du wenigstens was er dich immer zurück schmeißt und an welcher stelle das ist. Weil ich kann auch nicht Hellsehen
    sondern auch nur vermuten an was liegen könnte. Ein Fehler sehe ich auch nicht. Jedoch was mir noch einfallen würde ist das du das neuste R7 plugin verwendest also R7 r15
    war das.


    Es kann auch am plugin liegen so ist es nicht. Verwendest du das sscanf plugin ?

  • Liegt daran das du ein ! bei IsPlayerNPC gemacht hast.. bei OnPlayerAccountLoad
    Richtig:
    if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid)) return 1;


    Abgesehen mal davon würde das sein momentanes problem nicht beheben da dies beim registrieren kommt also sein dialog wird imme rneu aufgerufen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen