mysql_fetch_row lässt Server Chrashen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mysql_fetch_row lässt Server Chrashen

    Nabend

    Ich habe ein problem, mit der Funktion [pwn]mysql_fetch_row[/pwn]
    Wenn ein 2. Spieler connectet, dann geht der server in die Knie
    Ich frage mich zwar wiso aber mir fällt keine lösung ein.

    Ich arbeite mit den Strickenkid plugin und nein ich nehme nicht das Blue G.
    [pwn]stock LoadPlayer(playerid,Key[])
    {
    new Data[1024],query[256]/*,Get[130]*/;
    format(query, 256, "SELECT * FROM `player` WHERE `Name` = '%s'", PlayerInfo[playerid][Name]);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    mysql_fetch_field ("Passwort",PlayerInfo[playerid][Passwort],SQL);
    // mysql_fetch_row(Get, "", SQL);
    mysql_free_result(SQL);
    if(!strcmp(MD5_Hash(Key), PlayerInfo[playerid][Passwort], true))
    {
    format(query, sizeof(query),"SELECT * FROM `player` WHERE `Name` = '%s'",PlayerInfo[playerid][Name]);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    while(mysql_fetch_row(Data, "|", SQL))
    {
    sscanf(Data, "p<|>ds[64]s[128]dddddddddddds[128]s[128]s[16]dd",
    PlayerInfo[playerid][Userid],PlayerInfo[playerid][Name],PlayerInfo[playerid][Passwort],PlayerInfo[playerid][Admin],PlayerInfo[playerid][Job],PlayerInfo[playerid][Team],PlayerInfo[playerid][Geld],PlayerInfo[playerid][Skin],
    PlayerInfo[playerid][Level],PlayerInfo[playerid][Respekt],PlayerInfo[playerid][PayDay],PlayerInfo[playerid][PayDayTog],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Banned],PlayerInfo[playerid][BanGrund],
    PlayerInfo[playerid][BanAdmin],PlayerInfo[playerid][IP],PlayerInfo[playerid][Nummer],PlayerInfo[playerid][Safeban]);
    }
    GivePlayerMoney(playerid,PlayerInfo[playerid][Geld]);
    SetPlayerScore(playerid,PlayerInfo[playerid][Userid]);
    format(query, 128, "{006100}[Join] %s hat den Server betreten.", PlayerInfo[playerid][Name]);
    SendClientMessageToAll(cGreen, query);
    SetPVarInt(playerid,"loggedin",1);
    SetPVarInt(playerid,"played",1);
    SpawnPlayer(playerid);
    mysql_free_result(SQL);
    return 1;
    }
    else
    {
    format(query, 128, "{FFFFFF}Fehler{FF6E00} %s {FFFFFF}Das Passwort war Falsch", PlayerInfo[playerid][Name]);
    ShowPlayerDialog(playerid,diaLogin,DIALOG_STYLE_PASSWORD,"GTA "Servername"",query,"Login","");
    return 1;
    }
    }[/pwn]

    Ich hoffe mal, das einer von euch eine idee dazu hat
  • das gibt er aus
    [pwn][15:37:53] [npc:join] Train2 has joined the server (2:127.0.0.1)
    [15:37:55] [debug] Server crashed while executing NoName.amx
    [15:37:55] [debug] AMX backtrace:
    [15:37:55] [debug] #0 native mysql_fetch_row () [10007250] from mysql.dll
    [15:37:55] [debug] #1 0001a1ec in ?? () from NoName.amx
    [15:37:55] [debug] #2 00011094 in public OnPlayerRequestClass () from NoName.amx
    [15:37:55] [debug] System backtrace:
    [15:37:55] [debug] #0 78583db8 in malloc () from C:\WINXP\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4974_x-ww_d889290f\MSVCR90.dll
    [15:37:56] [debug] #1 78583eb8 in operator new () from C:\WINXP\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4974_x-ww_d889290f\MSVCR90.dll
    [15:37:56] [debug] #2 1000420d in Supports () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\plugins\mysql.dll
    [15:37:56] [debug] #3 10007305 in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\plugins\mysql.dll
    [15:37:56] [debug] #4 004010b6 in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\samp-server.exe
    [15:37:56] [debug] #5 02b33c32 in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\plugins\crashdetect.dll
    [15:37:56] [debug] #6 02b36076 in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\plugins\crashdetect.dll
    [15:37:56] [debug] #7 02b2c05a in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\plugins\crashdetect.dll
    [15:37:56] [debug] #8 02b33c5e in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\plugins\crashdetect.dll
    [15:37:56] [debug] #9 0046da69 in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\samp-server.exe
    [15:37:56] [debug] #10 484ea6ff in ?? () from C:\Dokumente und Einstellungen\Chris\Eigene Dateien\gtacs\samp-server.exe[/pwn]

    Das lustige is ja das in der Requestclass kein fetch row ist
    es liegt an der login funktion
  • [pwn]stock LoadPlayer(playerid,Key[])
    {
    new Data[1024],query[256],Get[200];
    format(query, 256, "SELECT * FROM `player` WHERE `Name` = '%s'", PlayerInfo[playerid][Name]);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() > 0) {
    mysql_fetch_row(Get);
    sscanf(Get, "p<|>ds[64]s[128]dddddddddddds[128]s[128]s[16]dd",
    PlayerInfo[playerid][Userid],PlayerInfo[playerid][Name],PlayerInfo[playerid][Passwort],PlayerInfo[playerid][Admin],PlayerInfo[playerid][Job],PlayerInfo[playerid][Team],PlayerInfo[playerid][Geld],PlayerInfo[playerid][Skin],
    PlayerInfo[playerid][Level],PlayerInfo[playerid][Respekt],PlayerInfo[playerid][PayDay],PlayerInfo[playerid][PayDayTog],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Banned],PlayerInfo[playerid][BanGrund],
    PlayerInfo[playerid][BanAdmin],PlayerInfo[playerid][IP],PlayerInfo[playerid][Nummer],PlayerInfo[playerid][Safeban]);
    if(!strcmp(MD5_Hash(Key), PlayerInfo[playerid][Passwort], true)) {
    GivePlayerMoney(playerid,PlayerInfo[playerid][Geld]);
    SetPlayerScore(playerid,PlayerInfo[playerid][Userid]);
    format(query, 128, "{006100}[Join] %s hat den Server betreten.", PlayerInfo[playerid][Name]);
    SendClientMessageToAll(cGreen, query);
    SetPVarInt(playerid,"loggedin",1);
    SetPVarInt(playerid,"played",1);
    SpawnPlayer(playerid);
    }
    else {
    format(query, 128, "{FFFFFF}Fehler{FF6E00} %s {FFFFFF}Das Passwort war Falsch", PlayerInfo[playerid][Name]);
    ShowPlayerDialog(playerid,diaLogin,DIALOG_STYLE_PASSWORD,"GTA "Servername"",query,"Login","");
    return 1;
    }
    }
    mysql_free_result(SQL);
    return 1;
    }[/pwn]
    Ich würde es mal so versuchen.
  • Stimmt.
    Warte, anders:
    [pwn]stock LoadPlayer(playerid,Key[])
    {
    new Data[1024],query[256],Get[200];
    format(query, 256, "SELECT * FROM `player` WHERE `Name` = '%s' AND `Passwort` = '%s'", PlayerInfo[playerid][Name], Key);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() > 0) {
    mysql_fetch_row(Get);
    sscanf(Get, "p<|>ds[64]s[128]dddddddddddds[128]s[128]s[16]dd",
    PlayerInfo[playerid][Userid],PlayerInfo[playerid][Name],PlayerInfo[playerid][Passwort],PlayerInfo[playerid][Admin],PlayerInfo[playerid][Job],PlayerInfo[playerid][Team],PlayerInfo[playerid][Geld],PlayerInfo[playerid][Skin],
    PlayerInfo[playerid][Level],PlayerInfo[playerid][Respekt],PlayerInfo[playerid][PayDay],PlayerInfo[playerid][PayDayTog],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Banned],PlayerInfo[playerid][BanGrund],
    PlayerInfo[playerid][BanAdmin],PlayerInfo[playerid][IP],PlayerInfo[playerid][Nummer],PlayerInfo[playerid][Safeban]);
    if(!strcmp(MD5_Hash(Key), PlayerInfo[playerid][Passwort], true)) {
    GivePlayerMoney(playerid,PlayerInfo[playerid][Geld]);
    SetPlayerScore(playerid,PlayerInfo[playerid][Userid]);
    format(query, 128, "{006100}[Join] %s hat den Server betreten.", PlayerInfo[playerid][Name]);
    SendClientMessageToAll(cGreen, query);
    SetPVarInt(playerid,"loggedin",1);
    SetPVarInt(playerid,"played",1);
    SpawnPlayer(playerid);
    }
    else {
    format(query, 128, "{FFFFFF}Fehler{FF6E00} %s {FFFFFF}Das Passwort war Falsch", PlayerInfo[playerid][Name]);
    ShowPlayerDialog(playerid,diaLogin,DIALOG_STYLE_PASSWORD,"GTA "Servername"",query,"Login","");
    return 1;
    }
    }
    mysql_free_result(SQL);
    return 1;
    }[/pwn]

    So ist es eigtl. prima.