Server Crasht einfach nach Login

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
  • Beitrag von require ()

    Dieser Beitrag wurde von shoxinat0r aus folgendem Grund gelöscht: Das wurde bereits im Vorpost geschrieben, braucht nicht doppelt erwähnt zu werden ().
  • Wenn du schon CrashDetect benutzt dann Compiler doch bitte mit -3d flag.


    Der Fehler ist seit Jahren bekannt. In der Float.inc Zeile 111 ist der Operator mit einem Sternchen versehen was das Problem verursachen könnte.


    Habe leider bisher keine Lösung gefunden. Im SA-MP Sourcs Code finde ich auch nichts was mich weiterbringt. Zumal ich kein C++ kann.

  • Wenn du schon CrashDetect benutzt dann Compiler doch bitte mit -3d flag.


    Der Fehler ist seit Jahren bekannt. In der Float.inc Zeile 111 ist der Operator mit einem Sternchen versehen was das Problem verursachen könnte.


    Habe leider bisher keine Lösung gefunden. Im SA-MP Sourcs Code finde ich auch nichts was mich weiterbringt. Zumal ich kein C++ kann.

    kenn mich da zu wenig aus, wie nutz ich dieses -3d flag? ^^
    ja steht bei mir auch drinne "operator*"
    komisch ist ja, es hat vorher noch funktioniert... auf einmal funkt garnix mehr gg


    OnPlayerLogin: pastebin

    Einmal editiert, zuletzt von Dom ()

  • Ne frage...
    Hat mann den irgendwann Skin= -1?
    wenn ja müsstest du dann nicht auch
    if(PlayerInfo[playerid][pZiviSkin] == -1){ SetSpawnInfo(playerid, 0, randomskinXD,0.0,0.0,0.0,0,0,0,0,0,0,0);}
    Setzen lassen?

    Habs mal ausgeklammert, nur um zu testen ob es das ist... macht kein Unterschied...


    ehrlich gesagt, kA warum ich das da überhaupt stehn hab ^^

  • Nein, an der NoDmZone kanns ned liegen :3



    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Bin grad am Debuggen ...


    Hab herausgefunden, das SpawnPlayer(playerid); -> OnPlayerLogin: 0 returnt....
    Laut Wiki meint er:

    Code
    1: The function executed successfully.
    0: The function failed to execute. This means the player is not connected.


    Script:



    Code
    new res = SpawnPlayer(playerid); 
    format(fetterstring, sizeof(fetterstring), "OnPlayerLogin(SpawnPlayer): %d",res);
    Debug(fetterstring);
    
    
    ------
    Logs:
    [15/11/2016 13:19:44] OnPlayerLogin(SpawnPlayer): 0

    ich checks echt ned mehr xD
    so hard am verzweifeln ...


    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Ok, jetzt kack ich bald echt drauf ....
    Hab ja genug Backups wo eig. alles funktioniert...
    Soeben den Server Neu Installiert und das allte Backup hochgeladen und gestartet...
    Registrieren kann ich mich, sobald ich rejoin und mich einloggen will, selber effekt, Server crasht...
    :thumbdown::thumbdown::thumbdown:
    Und sogar selber Debug von Crashdetect XD


    Code
    [13:44:48] [debug] Server crashed while executing script.amx
    [13:44:48] [debug] AMX backtrace:
    [13:44:48] [debug] #0 00000034 in ?? (69, 67, 56, 56, 0, 0, 0, 0, 0, 0, ... <6 arguments>) from script.amx
    [13:44:48] [debug] #1 00000034 in public OnPlayerLogin () from script.amx

    3 Mal editiert, zuletzt von Dom ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kleiner Tipp:
    Debug das ganze in deiner OnPlayerLogin. Sprich print("debug #1") usw. und schau, wie weit er da durchläuft. Resultat bitte hier posten.

    Hab ich schon, er läuft bis runter, er steckt nirgendwo fest :wacko:
    ps:
    hab mir schon ein debug geschrieben ...

  • Klammer mal den kompletten MySQL Code aus deiner OnPlayerLogin aus und teste das mal so. Denke zwar nicht, daß es daran liegt, aber man kann ja nie wissen.

    Ich Schmus dich nieder xD <3
    liegt zwar dran, aber ich weis ned an was :/ hab grad das enum mit der liste + Datenbank verglichen, mir ist aber nix aufgefallen :/
    String hab ich auch erhöht, sollte es das sein, funkt aber auch ned :/



    ------
    hab nun den mysql absatz debugt, da kommt aber nur der erste debug....


    ich finds nur komisch, es hat bis jetzt immer so funktioniert xD
    habs nun aufn Lokalen PC gestartet...
    nun gibt er mir debug native mysql_fetch_field_row ....

    Code
    [16:00:58] OnPlayerLogin(mysql): 1
    [16:00:58] [debug] Server crashed while executing script.amx
    [16:00:58] [debug] AMX backtrace:
    [16:00:58] [debug] #0 native mysql_fetch_field_row () from mysql.DLL
    [16:00:58] [debug] #1 00129a6c in ?? (7095220, 9199508) from script.amx
    [16:00:58] [debug] #2 000dea98 in public OnPlayerLogin (0) from script.amx

    jemand ne idee?

    Einmal editiert, zuletzt von Dom ()

  • Vorschlag #1:
    klammer mal die Zeilen 8 und 10 (mit den Befehlen self_mysql_get_field) aus + teste dann, wie weit er durchläuft


    Vorschlag #2:
    Gib doch mal das Ergebnis deiner MySQL Abfrage in einem String aus. Beispiel



    Code
    new row[1024]; while (row = mysql_fetch_row_format(string,"|"))
    {
    print(row);
    ... dein Code ...
    }


    Nachtrag:
    Hatte eine PM mit der Log bekommen!
    Gib doch mal per PRINT aus, was in den Zeile 8 und 10 rauskommt.


    Code
    self_mysql_get_field("KriminalLevel", val); print(val); // PlayerInfo[playerid][pKriminalLevel] = strval( val );
    Debug("vars");
    self_mysql_get_field("PolizeiLevel", val); print(val); // PlayerInfo[playerid][pPolizeiLevel] = strval( val );

    Einmal editiert, zuletzt von Woozie ()

  • #1
    kommt nix :/


    #2


    Code
    [18:35:04] 1|Dom|password|5|5|0|100000|1000000|1|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|698403|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0||0|1|0|1|0|0|0|0|0|0|0|niemand|
    [18:35:04] [debug] Server crashed while executing script.amx
    [18:35:04] [debug] AMX backtrace:
    [18:35:04] [debug] #0 native mysql_fetch_field_row () from mysql.DLL

    #3
    kommt nur 1 und dann crash ..


    Code
    self_mysql_get_field("KriminalLevel", val); //PlayerInfo[playerid][pKriminalLevel] = strval( val ); 
    printf("%d",val);
    self_mysql_get_field("PolizeiLevel", val); //PlayerInfo[playerid][pPolizeiLevel] = strval( val );
    printf("%d",val);
    self_mysql_get_field("AdminLevel", val); //PlayerInfo[playerid][pAdmin] = strval( val ); 
    printf("%d",val);

    da wird nur einmal eine 1 debugged, das wird mal die UserID sein ...



    Bin anscheinend ned nur der einzige der das problem hat...
    https://forum.sa-mp.com/showthread.php?p=2866848

  • Zu #2:
    Müßtest du selber sehen, daß er nicht ein Feld ausliest, sondern das komplette Ergebnis in VAL speichert. Natürlich crasht der Server, wenn du 196 Zeichen in eine Zahl umwandeln möchtest.


    Zu #3:
    val ist keine Zahlvariable, sondern ein Array/String. wenn du das mit print ausgeben möchtest, entweder print(val); oder (was d*mm wäre) printf("%s",val);

  • Keine Ahnung ob es am Plugin liegt. Das Plugin, welches ich nutze, wird nicht mehr aktualisiert und ist veraltet. Tut aber dennoch treu seinen Dienst ohne Probleme. Sowas sollte jeder für sich entscheiden.


    @Problem
    sieh dir mal das Beispiel im SA-MP Wiki an: http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format
    und benutz SSCANF, somit geht die Ausführung schneller, sauberer und verbrauch auch weniger Speicher (Code wie auch Ausführung).


    Nachtrag:
    okay, scheinbar benutzt du nicht dieses Plugin. Aber der MySQL Befehl mysql_fetch_row sollte eigentlich identisch sein und dieser gibt das gesamte Ergebnis deines Querys aus. Daher kannst du das Beispiel aus dem SA-MP Wiki auch benutzen.


    Übrigens, welches MySQL Plugin benutzt du überhaupt. Ich habe nach self_mysql_get_field in Google gesucht, aber nichts passendes dazu gefunden.

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