Mysql LoadPlayer

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
  • Hallo zusammen,


    soweit habe ich alles geschafft. Mein letztes Problem ist jetzt nur beim LoadPlayer. Das funktioniert garnicht bzw.

    die Werte werden zurückgesetzt auf 0. SavePlayer funktioniert, da ich es mehrmals getestet habe.

    Ich weiß jetzt nur nicht weiter wie und was ich ändern muss/soll. Da ich gerade ein wenig verwirrt bin.

    Ich hoffe einer von euch kann mir helfen.

    Das ist der Code:




    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new query[2048],sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sname,sizeof(sname));
    SInfo[playerid][pGeld] = GetPlayerMoney(playerid), SInfo[playerid][pLevel] = GetPlayerScore(playerid);
    format(query,sizeof(query),"UPDATE `spieler` SET `Admin`='%d',`Level` = '%d', `Geld` = '%d', `Leader` = '%d', `Member` = '%d' WHERE `Name`='%s'",SInfo[playerid][pAdmin],SInfo[playerid][pLevel],SInfo[playerid][pGeld],SInfo[playerid][pLeader],SInfo[playerid][pMember],sname);
    mysql_function_query(dbhandle,query,false,"","");
    printf("Die Speicherung für %s wurde aufgerufen!",sname),print(query);
    }
    return 1;
    }
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {


    new query[250],sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sname,sizeof(sname));
    format(query,sizeof(query),"SELECT * FROM `spieler` WHERE `Name` = '%s'",sname);
    mysql_function_query(dbhandle,query,false,"","");
    mysql_store_result();
    print(query),printf("Das laden von %s wurde ausgeführt!",sname);
    while(mysql_retrieve_row())
    {
    mysql_fetch_field_row(query, "Admin"),SInfo[playerid][pAdmin]=strval(query);
    mysql_fetch_field_row(query, "Level"),SInfo[playerid][pLevel]=strval(query);
    mysql_fetch_field_row(query, "Geld"),SInfo[playerid][pGeld]=strval(query);
    mysql_fetch_field_row(query, "Leader"),SInfo[playerid][pLeader]=strval(query);
    mysql_fetch_field_row(query, "Member"),SInfo[playerid][pMember]=strval(query);
    }
    mysql_free_result();
    }
    return 1;
    }



    MfG


    Advanced

  • [14:57:22] ---------------------------


    [14:57:22] MySQL Debugging activated (09/06/14)


    [14:57:22] ---------------------------


    [14:57:22]


    [14:57:22] CMySQLHandler::~CMySQLHandler() - deconstructor called.


    [14:57:22] CMySQLHandler::FreeResult() - There is nothing to free (Reason: Connection is dead)


    [14:57:22] CMySQLHandler::Disconnect() - You cannot call this function now. (Reason: Connection is dead)


    Das steht dort. Das ist aber von heute Nachmittag, da hatte ich das Save und Load System noch nicht.



    //Edit


    Hat es vllt damit was zu tun?



    [17:00:48] >> mysql_query_callback( Connection handle: 1 )
    [17:00:48] >> mysql_store_result( Connection handle: 1 )
    [17:00:48] CMySQLHandler::StoreResult() - No data to store.
    [17:00:48] >> mysql_retrieve_row( Connection handle: 1 )
    [17:00:48] CMySQLHandler::RetrieveRow() - You cannot call this function now. (Reason: Empty Result)
    [17:00:48] >> mysql_free_result( Connection handle: 1 )
    [17:00:48] CMySQLHandler::FreeResult() - The result is already empty.
    [17:00:48] ProcessTick() - The cache has been cleared.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Sorry aber ich komm immer noch nicht weiter. Deswegen habe ich doch dieses Thema hier erstellt damit jemand den Fehler findet und mir hilft.
    Also wenn du den fehler nicht siehst, dann bitte ich dich höfflich nicht mehr zu schreiben.

  • Kannst du bitte den Debug Modus zu LOG_ALL setzen, dich dann nochmals einloggen und dann den dazugehörigen Log posten? Das was du zuvor gepostet hast sieht mir nicht nach allem aus.
    Das bräuchten wir. Es ist nicht gesagt, dass der Fehler in dem Code ist den du da gepostet hast. Der Log hilft dabei den Fehler zu finden.

  • Server Log:


    [18:01:07] Number of vehicle models: 10
    [18:01:56] Incoming connection: 188.100.24.208:50542
    [18:01:56] [join] [AL]Contrail has joined the server (0:188.100.24.208)
    [18:01:56] [Connect]: [AL]Contrail ist auf den Server gejoint.
    [18:02:00] SELECT * FROM `spieler` WHERE `Name`='[AL]Contrail'
    [18:02:00] Das laden von [AL]Contrail wurde ausgeführt!
    [18:02:07] Die Speicherung für [AL]Contrail wurde aufgerufen!
    [18:02:07] UPDATE `spieler` SET `Admin`='0',`Level` = '0', `Geld` = '0', `Leader` = '0', `Member` = '0' WHERE `Name`='[AL]Contrail'
    [18:02:07] [Disconnect]: [AL]Contrail hat den Server verlassen. (Leaving)
    [18:02:07] [part] [AL]Contrail has left the server (0:1)


    mysql Log:



    [18:01:56] >> mysql_query_callback( Connection handle: 1 )
    [18:01:56] Passing query SELECT id FROM spieler WHERE Name='[AL]Contrail' | i
    [18:01:56] ProcessQueryThread(OnUserCheck) - Query was successful. (SELECT id FROM spieler WHERE Name='[AL]Contrail')
    [18:01:56] ProcessQueryThread(OnUserCheck) - Data caching enabled.
    [18:01:56] CMySQLHandler::StoreResult() - Result was stored.
    [18:01:56] CMySQLHandler::FreeResult() - Result was successfully free'd.
    [18:01:56] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
    [18:01:56] OnUserCheck(i) - Threaded function called.
    [18:01:56] >> cache_get_data( Connection handle: 1 )
    [18:01:56] ProcessTick() - The cache has been cleared.
    [18:02:00] >> mysql_real_escape_string( Connection handle: 1 )
    [18:02:00] CMySQLHandler::EscapeString(Playboy8962); - Escaped 11 characters to Playboy8962.
    [18:02:00] >> mysql_query_callback( Connection handle: 1 )
    [18:02:00] Passing query SELECT * FROM spieler WHERE Name='[AL]Contrail' AND Passwort='Playboy8962' | i
    [18:02:00] ProcessQueryThread(OnPasswordResponse) - Query was successful. (SELECT * FROM spieler WHERE Name='[AL]Contrail' AND Passwort='Playboy8962')
    [18:02:00] ProcessQueryThread(OnPasswordResponse) - Data caching enabled.
    [18:02:00] CMySQLHandler::StoreResult() - Result was stored.
    [18:02:00] CMySQLHandler::FreeResult() - Result was successfully free'd.
    [18:02:00] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
    [18:02:00] OnPasswordResponse(i) - Threaded function called.
    [18:02:00] >> cache_get_data( Connection handle: 1 )
    [18:02:00] >> mysql_query_callback( Connection handle: 1 )
    [18:02:00] >> mysql_store_result( Connection handle: 1 )
    [18:02:00] CMySQLHandler::StoreResult() - No data to store.
    [18:02:00] >> mysql_retrieve_row( Connection handle: 1 )
    [18:02:00] CMySQLHandler::RetrieveRow() - You cannot call this function now. (Reason: Empty Result)
    [18:02:00] >> mysql_free_result( Connection handle: 1 )
    [18:02:00] CMySQLHandler::FreeResult() - The result is already empty.
    [18:02:00] ProcessTick() - The cache has been cleared.
    [18:02:00] Passing query SELECT * FROM `spieler` WHERE `Name`='[AL]Contrail' |
    [18:02:00] ProcessQueryThread() - Query was successful. (SELECT * FROM `spieler` WHERE `Name`='[AL]Contrail')
    [18:02:00] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
    [18:02:07] >> mysql_query_callback( Connection handle: 1 )
    [18:02:07] CMySQLHandler::ProcessQueryThread() - Reconnection attempt in background thread.
    [18:02:07] CMySQLHandler::Connect() - Connection was successful.
    [18:02:07] CMySQLHandler::Connect() - Auto-Reconnect has been enabled.
    [18:02:07] Passing query UPDATE `spieler` SET `Admin`='0',`Level` = '0', `Geld` = '0', `Leader` = '0', `Member` = '0' WHERE `Name`='[AL]Contrail' |
    [18:02:07] ProcessQueryThread() - Query was successful. (UPDATE `spieler` SET `Admin`='0',`Level` = '0', `Geld` = '0', `Leader` = '0', `Member` = '0' WHERE `Name`='[AL]Contrail')
    [18:02:07] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()


    Bitteschön.



    //Edit
    Habe hier sowas gefunden:


    http://forum.sa-mp.com/showthread.php?t=321478

    Einmal editiert, zuletzt von _Advanced_ ()

  • Das sieht doch schon besser aus.
    mysql_function_query(dbhandle,query,false,"","");


    ändere das zu:
    mysql_query(query);


    Falls das nicht geht, nochmals die Logs (auch wenns nicht anders aussieht). Und wenn du es nicht kompilieren kannst, welches Plugin verwendest du (steht im Server Log wenn der Server startet)?

  • Dann kannst du nach diesem Tutorial vorgehen: http://forum.sa-mp.com/showthread.php?t=337810
    Suche nach "mysql_function_query", dann bist du direkt an der Stelle die du brauchst. Ich finde das Tutorial recht gut erklärt.


    Oder du schaust dir ganz unten den Teil "Converting" an, dort wird es nochmals ausführlich erklärt, mit einem schönen Beispiel.


    Falls du hängst kannst du natürlich gerne nachfragen, allerdings denke ich, dass du das schaffst! :thumbup: