MySQl Laden bringt Server zum Absturz

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
  • Guten Tag.


    Ich habe wieder ein kleines Problem:


    Wenn ich mir einen Account mache und dieser dann erstellt wird, ist alles normal ich kann gut spielen.
    Aber wenn ich mich dann in einen Account einloggen will der schon angemeldet ist, dann würgt der Server einfach ab.:(


    MoneyGiven[playerid] = -1;
    JustLogged[playerid] = 0;
    new query[300], pname[24];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT IP FROM `playerdata` WHERE user = '%s' LIMIT 1", pname);
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    if(!rows)
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Register",""White"Willkommen auf"Red""SERVER_NAME""White"!\n"White"Du musst dich Registrieren um hier Spielen zu können!\n\n"White"Gebe dein Passwort ein:", "OK", "Abbrechen");
    }
    if(rows == 1)
    {
    new IP[2][15];
    mysql_fetch_field_row(IP[0],"IP");
    GetPlayerIp(playerid, IP[1], 15);
    if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true))
    {
    MySQL_Login(playerid);
    }
    else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true))
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Login", ""White"Willkommen zurück auf "Red""SERVER_NAME""White"!\n"White"Du musst dich einloggen um hier Spielen zu können!\n\n"White"Gebe "Red"dein"White" Passwort ein:", "OK", "Abbrechen");
    IsRegistered[playerid] = 1;
    }
    }
    mysql_free_result();


    Das wird alles beim OnPlayerConnect geladen.
    Gibt es da was neues, was in der 0.3x nicht verarbeitet werden kann.
    Weil in der 0.3c ging das Script ohne Probleme.



    Weiß jemand Rat?



    //Edit:
    Code eingefügt


    MFG Apfel

    Einmal editiert, zuletzt von Home ()

  • Wenn der wert 0 ist geht es nicht war?
    Sobald er einen hat stürzt er ab, das kommt davon da du eine Funktion vergessen hast
    mysql_fetch_row_format
    Die kommt über den Fetch field, da er erstmal alles holen muss was geladen werden soll

    All in all it's just another brick in the wall

  • Wenn der wert 0 ist geht es nicht war?
    Sobald er einen hat stürzt er ab, das kommt davon da du eine Funktion vergessen hast
    mysql_fetch_row_format
    Die kommt über den Fetch field, da er erstmal alles holen muss was geladen werden soll



    Danke, jetzt würgt zum glück der Server nicht mehr ab :).


    Aber leider, sobald man sich einloggt, würgt der Server leider ab :(.


    if(dialogid == DIALOG_REGISTER)
    {
    if(response)
    {
    if(!strlen(inputtext) || strlen(inputtext) > 100)
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Register",""White"Willkommen auf"Red""SERVER_NAME""White"!\n"White"Du musst dich Registrieren um hier Spielen zu können!\n\n"White"Gebe dein Passwort ein:", "OK", "Abbrechen");
    }
    else if(strlen(inputtext) > 0 && strlen(inputtext) < 100)
    {
    new escpass[100];
    mysql_real_escape_string(inputtext, escpass);
    MySQL_Register(playerid, escpass);
    }
    }
    if(!response)
    {
    GameTextForPlayer(playerid, "~r~Du musst dich erst Registrieren!", 3000, 6);
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Register",""White"Willkommen auf"Red""SERVER_NAME""White"!\n"White"Du musst dich Registrieren um hier Spielen zu können!\n\n"White"Gebe dein Passwort ein:", "OK", "Abbrechen");
    }
    }
    if(dialogid == DIALOG_LOGIN)
    {
    if(!response)
    {
    GameTextForPlayer(playerid, "~r~Zuerst Einloggen", 3000, 6);
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Login", ""White"Willkommen zurück auf "Red""SERVER_NAME""White"!\n"White"Du musst dich einloggen um hier Spielen zu können!\n\n"White"Gebe "Red"dein"White" Passwort ein:", "OK", "Abbrechen");
    }
    if(response)
    {
    new query[200], pname[24], escapepass[100];
    GetPlayerName(playerid, pname, 24);
    mysql_real_escape_string(inputtext, escapepass);
    format(query, sizeof(query), "SELECT `user` FROM playerdata WHERE user = '%s' AND password = SHA1('%s')", pname, escapepass);
    mysql_fetch_row_format(query,escapepass);
    mysql_query(query);
    mysql_store_result();
    new numrows = mysql_num_rows();
    if(numrows == 1) MySQL_Login(playerid);
    if(!numrows)
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel");
    GameTextForPlayer(playerid, "~r~Passwort falsch!", 3000, 6);
    }
    mysql_free_result();
    }
    }
    return 1;
    }



    Da sind die ganzen DIalog_Register und Dialog_Login, ich hoffe, du kannst mir da auch helfen.. :)

  • poste mal die
    MySQL_Login(playerid)
    funktion


    Da ist es:


    stock MySQL_Login(playerid)
    {
    new query[300], pname[24], savingstring[20];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT score, money, level, vip, kma, rank, kills, deaths, muted, jailed, frozen, mutedtimes, jailedtimes, frozentimes, banned, bannedby, logins, posx, posy, posz, posa FROM playerdata WHERE user = '%s'", pname);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
    mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
    mysql_fetch_field_row(savingstring, "money"); MoneyGiven[playerid] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "level"); PlayerInfo[playerid][pLevel] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "vip"); PlayerInfo[playerid][pVIP] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "kma"); PlayerInfo[playerid][pKMA] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "rank"); PlayerInfo[playerid][pRank] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "kills"); PlayerInfo[playerid][pKills] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "deaths"); PlayerInfo[playerid][pDeaths] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "muted"); PlayerInfo[playerid][pMuted] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "jailed"); PlayerInfo[playerid][pJailed] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "frozen"); PlayerInfo[playerid][pFrozen] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "mutedtimes"); PlayerInfo[playerid][pMutedTimes] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "jailedtimes"); PlayerInfo[playerid][pJailedTimes] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "frozentimes"); PlayerInfo[playerid][pFrozenTimes] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "banned"); PlayerInfo[playerid][pBanned] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "bannedby"); PlayerInfo[playerid][pBannedBy] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "logins"); PlayerInfo[playerid][pLogins] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posx"); PlayerInfo[playerid][pPosX] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posy"); PlayerInfo[playerid][pPosY] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posz"); PlayerInfo[playerid][pPosZ] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posa"); PlayerInfo[playerid][pPosA] = strval(savingstring);
    }
    mysql_free_result();
    JustLogged[playerid] = 1;
    Logged[playerid] = 1;
    PlayerInfo[playerid][pLogins]++;
    GameTextForPlayer(playerid, "~g~Eingeloggt!", 3000, 6);
    return 1;
    }


    4 Mal editiert, zuletzt von Home ()

  • erhöhe mal den query da bei dir
    mach den mal testweise auf 512 um zu schauen obs klappt


    Aber mal was anderes Wenn du nen Float laden willst, dann weise auch Floats dazu


    PlayerInfo[playerid][pPosX] = strval(savingstring);
    //zu den
    PlayerInfo[playerid][pPosX] = floatstr(savingstring);

    All in all it's just another brick in the wall