Laden des Player Cars führt zum Server Crash

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 versuche schon vergeblich ein Problem zufixxen.
    Das Problem ist wen ein Spieler ein Auto gekauft hat und dann neu auf dem Server Joint , Crash der Server .. nicht so das der Abstürtzt oder sich Schließt , nein man wird Blueberry Farm gespawnt und alle Funktionen funktionieren nicht mehr :(



    stock loadPlayerAutos(playerid)
    {
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%s' AND laden='1'",SpielerName(playerid));
    mysql_query(query,1234,playerid,mysql_car);
    return 1;
    }


    Das ist der Stock , aber leider finde ich hier keinen Fehler :(


    Wäre echt cool wen mir jemand helfen könnte :)


    Mit Freundlichen Grüßen
    Sascha

    Einmal editiert, zuletzt von GreenX9 ()

  • Das ergebniss des des querys was als string ausgegeben wird wird mit sscanf gesplittet du musst die specifer abfolge korrigieren


    Wtf , ich glaub ich bin noch nicht soweit , weil was du gerade geschrieben hast versteh ich gerade mal nur zu 10%.
    Ich hab dieses Script von einem Kumpel bekommen und hab auch einige bugs gefixxt aber dies krieg ich einfach nicht hin.


    Es wäre richtig nett wen du mir dabei Helfen könntest.

  • mysql_query("SELECT * FROM `accounts` WHERE Name = 'xFreeze' LIMIT 1",1,playerid,handle);

    public OnMysqlQuery(resultid, spareid, MySQL:handle)
    {
    switch (resultid){
    case 1:{
    mysql_store_result(handle);
    strdel(Load_Query,0,100);
    mysql_fetch_row(Load_Query,"|",handle);
    sscanf(Load_Query,"p<|>e<s[10]dlfff>",PlayerInfo[spareid]);
    mysql_free_result(handle);
    }
    }
    return 1;
    }
    mit
    mysql_fetch_row(Load_Query,"|",handle);
    wird die ganze abgerufene reihe herrausgenommen und in den string Load gepackt das kann so aussehen
    10|Günter|12.00|1124|Ja
    mit sscanf ist es möglich nur den specifer das sind die abfolge von zeichen hier nun zur erklärung p<|> was so viel bedeutet das er den string erst splittet wenn das zeichen |
    vorhanden ist in die darauf folgenden formate. d = steht für integer s[10] = string mit 10 zeichen f = float das besondere ist das das ganze auch gleich konvertiert wird.
    nun gut sollte die abfolge falsch sein und es wird zumbeispiel versucht ein string in ein integer zu packen so kann es dazu kommen das der server abkratzt.
    und dieses sscanf specifer abfolge musst du korrigieren anhand von dem dir in der mysql ausgegebenen string und natürlich den dazugehörigen 2d arrays.
    weil dort kann auch was vertauscht sein.

  • Das liegt zumal das dies ein threaded query ist und somit wird ein Callback aufgerufen. Zu dem liegt das am splitten des ausgelesenen Strings das dein serverabschmiert.


    Was zur Hölle
    Wieso sollte das Threated sein?


    Oo



    /e
    mysql_query -> Nicht threated
    mysql_function_query -> threated

    ik bin der vito c:


  • Das hat damit nix zu tun das mysql_plugin von Strickenkid verfügt auch darüber threated querys abzusenden.
    Es bedeutet ja eigentlich auch nur das eine neue verbindung geöffnet wird und die wieder dicht gemacht wird
    http://wiki.sa-mp.com/wiki/MySQL_Plugin#OnMysqlQuery
    This callback is called when a threaded query execution has finished.


    die Aussage war eher darauf bezogen das er dort keinen fehler finden konnte
    weil die "weiterverarbeitung" des querys in dem callback geschieht.


  • Und iwe kann ich dies in meinem Problem anwenden?

  • Wenn du darauf hin den Text noch gelesen hast sollte dir bewusst sein was ein specifer ist.
    und wofür sscanf genutzt wird und woher der string kommt und was darin enthalten ist. Somit kannst du die abfolge bei dir überprüfen und richtig stellen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wenn du darauf hin den Text noch gelesen hast sollte dir bewusst sein was ein specifer ist.
    und wofür sscanf genutzt wird und woher der string kommt und was darin enthalten ist. Somit kannst du die abfolge bei dir überprüfen und richtig stellen.


    Nur was sagt dir, dass er das von Strickenkid nutzt?


    Rufst du die Daten ab, nachdem sie grade insertet wurden?
    Falls ja: Das wird der Fehler sein


    Ich hatte damals auch Probleme mit dem Strickenkid Plugin
    mysql_query INSERT und dannach direkt SELECT ist möglich jedoch crasht es bei 7 / 10 Fällen
    Mobbt mich nicht ich habs getestet... naja xD


    Grüße :thumbup:

    ik bin der vito c:


  • Nur was sagt dir, dass er das von Strickenkid nutzt?


    Weil ich Gott bin !!!


    Nein er hat in einem post davor geschrieben das es das MrMonat Reallife skript ist zu dem hatte mal einer aus meiner skypeliste das selbe problem ich hab ihm dabei geholfen
    und kam zu dem Ergebniss das sscanf hier die Ursache ist, ich habs natürlich ihm das auch behoben.


    Zu dem

    Zitat

    mysql_query INSERT und dannach direkt SELECT ist möglich jedoch crasht es bei 7 / 10 Fällen


    Das hat ja rein nix damit zutun im zusammenhang das der Server wie er erwähnt hat beim einloggen des spielers abkratzt und zu deiner Aussage nun gut es gibt genug fehler die durch plugin hervorgerufen werden bei einer r7 r version von BlueG hat es mir die ganzen querys zerschossen , wenn ich diese über das Skript erstellen lassen habe.

  • Weil ich Gott bin !!!


    Aha xD


    Ich wusste nicht, dass das MrMonat Skript threated nutzt :whistling:
    Das was ich meinte war, dass wenn inserted wird, kann man (bei der BlueG R5 Version) nicht direkt selecten.. Das Problem hatte ich laaange :D


    Da das Thema nun erledigt ist @Threadersteller unten rechts auf erledigt klicken ;)

    ik bin der vito c: