//erledigt.
Server Crasht einfach nach Login
- Dom
- Geschlossen
- Erledigt
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
-
-
Zeig uns mal bitte die Funktion.
-
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 ggOnPlayerLogin: pastebin
-
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? -
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
-
evt.
das
GangZoneShowForAll(NoDmInfo[i][NoDm_GangzoneID],COLOR_WHITE);
zu das?
GangZoneShowForPlayer(playerid,NoDmInfo[i][NoDm_GangzoneID],COLOR_WHITE);
Weiss nicht ob es daran liegen könnte XD -
evt.
das
GangZoneShowForAll(NoDmInfo[i][NoDm_GangzoneID],COLOR_WHITE);
zu das?
GangZoneShowForPlayer(playerid,NoDmInfo[i][NoDm_GangzoneID],COLOR_WHITE);
Weiss nicht ob es daran liegen könnte XDNein, an der NoDmZone kanns ned liegen :3
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bin grad am Debuggen ...Hab herausgefunden, das SpawnPlayer(playerid); -> OnPlayerLogin: 0 returnt....
Laut Wiki meint er:Code1: The function executed successfully. 0: The function failed to execute. This means the player is not connected.
Script:Codenew 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...
Und sogar selber Debug von Crashdetect XD -
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. -
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
ps:
hab mir schon ein debug geschrieben ...Code
Alles anzeigennew debug_Var = 0; public OnPlayerLogin(playerid) { Debug("OnPlayerLogin"); return 1; } //Debug - System: forward Debug(Beschreibung[]); public Debug(Beschreibung[]) { debug_Var += 1; SendClientMessageToAllF(COLOR_GREY, "%s: %d",Beschreibung,debug_Var); printf("%s: %d",Beschreibung,debug_Var); return 1; }
-
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.
-
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
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....Code
Alles anzeigenformat(string, sizeof(string),"SELECT * FROM `users` WHERE `Name` = '%s'", GetNameOfPlayer(playerid)); mysql_query(string); mysql_store_result(); new val[1000]; while(mysql_fetch_row_format(string,"|")) { Debug("OnPlayerLogin(mysql)"); self_mysql_get_field("KriminalLevel", val); PlayerInfo[playerid][pKriminalLevel] = strval( val ); Debug("vars"); self_mysql_get_field("PolizeiLevel", val); PlayerInfo[playerid][pPolizeiLevel] = strval( val ); Debug("vars"); ...........
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?
-
Dazu müßten wir deine Tabelle mal sehen
-
Dazu müßten wir deine Tabelle mal sehen
hab dir ne PN geschickt =)
-
Vorschlag #1:
klammer mal die Zeilen 8 und 10 (mit den Befehlen self_mysql_get_field) aus + teste dann, wie weit er durchläuftVorschlag #2:
Gib doch mal das Ergebnis deiner MySQL Abfrage in einem String aus. BeispielCodenew 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. -
Vorschlag #1:
klammer mal die Zeilen 8 und 10 (mit den Befehlen self_mysql_get_field) aus + teste dann, wie weit er durchläuftVorschlag #2:
Gib doch mal das Ergebnis deiner MySQL Abfrage in einem String aus. BeispielCodenew 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.#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 ..Codeself_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 -
#1kommt 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 ..Codeself_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 ...
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); -
wäre es sonst ratsam ein anderes mysql plugin zu nutzen?
-
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.
-