[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • und du das sscanf Plugin nutzt, versuch es mal bitte so:

    Nur um das mal zu erwähnen, sscanf in so einem Fall zu nutzen ist sehr schlecht, da das komplett überflüssig ist.


    Man sollte bei so einem Fall direkt params nutzen:


    C
    ocmd@3:a,achat,adminchat(playerid,params[])
    {
    	if(!PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
    	if(params[0] == EOS || params[0] == '\1') return SendClientMessage(playerid,COLOR_RED,"[INFO] Nutze /a[chat] [Text]");
    	new msg[128];
    	format(msg,sizeof(msg),"%s %s: %s",Adminrang(playerid),PlayerInfo[playerid][pName],params);
    	SendMessageToAdmins(COLOR_ADMIN,msg);
    	return 1;
    }

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habe kurz eine frage das mit unload funktioniert nicht wen er hinfährt und einfach /unload macht,


  • Habe kurz eine frage das mit unload funktioniert nicht wen er hinfährt und einfach /unload macht,


    C&P lassen und es mal neu schreibe, vielleicht klappt es dann? ;)

  • Beitrag von John_Dree ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Problem bereits gelöst ().
  • Nutzt du die aktuelle ocmd Include?
    ocmd 2.1.1 [ Update 3.11.2013 ]


    Aktualisiere diese gegebenenfalls.

    Vielen Dank hat die Lösung eingebracht.



    Nur um das mal zu erwähnen, sscanf in so einem Fall zu nutzen ist sehr schlecht, da das komplett überflüssig ist.
    Man sollte bei so einem Fall direkt params nutzen:


    C
    ocmd@3:a,achat,adminchat(playerid,params[])
    {
    	if(!PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
    	if(params[0] == EOS || params[0] == '\1') return SendClientMessage(playerid,COLOR_RED,"[INFO] Nutze /a[chat] [Text]");
    	new msg[128];
    	format(msg,sizeof(msg),"%s %s: %s",Adminrang(playerid),PlayerInfo[playerid][pName],params);
    	SendMessageToAdmins(COLOR_ADMIN,msg);
    	return 1;
    }

    Vielen Dank auch hier, ich wollte nur so ne Art return wie bei dir beschrieben ausgeben und du hast mir da einen kürzeren und besseren Lösungsansatz mitgegeben ^^

  • Beitrag von John_Dree ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Fehler gefunden ().
  • Hallo,


    wie kann man seine for-Schleifen effizient machen? (oder eine andere methode nutzen? foreach?)
    Da die meisten es so machen:


    for(new i=0;i<MAX_PLAYERS;i++)


    Durchgeht er ja jedes mal das Server Limit von 500 Usern. Wie geht es perfomanter?


    2. Frage:
    Wie kann man die globalen Variabeln, beispiel:


    new Hallo[MAX_PLAYERS];


    ebenfalls perfomant machen? Da ich gelesen habe, dass man "GetMaxPlayers()" nutzen kann, aber die ID 0 nicht mitgezählt wird.

    Mit freundlichen Grüßen,


    Keslo

  • Durchgeht er ja jedes mal das Server Limit von 500 Usern. Wie geht es perfomanter?

    Am besten wäre es einfach, sowas zu machen, das würde beide deiner Probleme auf einen Schlag lösen:



    C
    #undef MAX_PLAYERS
    #define MAX_PLAYERS 25

    Dann würdest du eben nur 25 Einträge durchgehen hahaha :D


    Aber schon richtig foreach wäre am besten:


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


    Gehen würde auch sowas wie:


    for(new i=GetPlayerPoolSize(); i!=-1; i--)


    Das beispielsweise beginnt ab der höchsten spielerid auf dem Server und nicht z.B. ab 500 :)


    Also zur Verdeutlichung:


    MAX_PLAYERS = Ein fester (konstanter) Wert, den du für Arrays nutzen kannst. (Da dort nur feste Werte verwendet werden können, also Dinge die sich nicht ändern. Die müssen von vorne herein fest definiert sein.) Habe oben ja gezeigt, wie du das anpassen kannst.


    GetMaxPlayers = Diese Funktion liest dir aus der server.cfg den Wert aus. Ist schlecht und kann nicht für Arrays verwendet werden, da es eine Funktion ist und keine konstante! Also am Besten einfach MAX_PLAYERS den Wert von der server.cfg mittels dem Makro trick oben anpassen.


    GetPlayerPoolSize = Gibt die höchste Spielerid auf dem Server wieder. Halt gut geeignet für Loops, aber foreach ist besser, da bei foreach keine Lücken zwischen den IDs entstehen. Quasi wenn ID 4 die höchste Spielerid ist, aber nur ID 1 noch online. Dann beginnt die Loop trotzdem von 4 runter zu zählen. Und bei foreach hättest du nur 2 anstatt 5 (4-0) Einträge.




    Zu deinem 2. Punkt kann man nicht viel sagen.
    Es gibt Memory Editing Plugins, so dass man Variablen dynamisch allozieren kann.


    Einfacher wäre der spezielle Gebrauch von PVars, da du diesen Speicher wieder freigeben kannst.


    Oder eben gezielte Anpassung des Makros von MAX_PLAYERS :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Schau dir mal folgendes Thema bzw. explizit den verlinkten Beitrag an


    Code Optimierung


    Alles klar, vielen Dank euch beiden! :rolleyes::rolleyes:



    --


    Hey,


    ich hab da ein Problem, leider hab ich absolut keine Ahnung woran es liegen könnte.


    Wenn ich mein Server Starte, läuft alles super, keine Warns/Errors von Crashdetect/MySQL etc...
    Dann joine ich wie gewohnt auf mein Server, logge mich ein und logge mich wieder aus.
    Wenn ich dann versuche zu joinen, tut er es nicht, sondern da steht dann einfach nur "Connecting to Server...."


    Anschließend muss ich Server und Client neu starten, damit ich wieder connecten kann.


    Hätte jemand eine Idee, was es evtl. sein könnte?

    Mit freundlichen Grüßen,


    Keslo

    Einmal editiert, zuletzt von Keslo ()

  • Ja, dein Server schmiert ab, lade mal crashdetect und schaue dann in den server_log bzw poste den hier

    Das ist der Punkt, da steht nichts :huh:
    Habs nochmal versucht, zwar connected er aber dann steht da nur noch: Connected to MeinServer...

    Mit freundlichen Grüßen,


    Keslo

  • Tjaa...was sollen wir jetzt tun? :D


    Unsere Wunderkugel befragen? :D


    Offensichtlich ist dann etwas an deinem Code verkehrt, wenn wirklich nichts im Log steht ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Tjaa...was sollen wir jetzt tun?


    Unsere Wunderkugel befragen?


    Offensichtlich ist dann etwas an deinem Code verkehrt, wenn wirklich nichts im Log steht

    haha die gute alte Wunderkugel :D
    Natürlich könnt ihr nicht alles wissen, aber ich dachte, vielleicht gab es ja schon vorfälle :D


    trotzdem danke :)


    //edit:
    hab nochmal rumprobiert...
    hab herausgefunden, dass wenn ich nicht connecten kann, dann aber wieder connecte, dann gehts einwandfrei, versuch
    ich danach wieder zu connecten, gehts wieder nicht, dann wieder schon... was ist hier los :whistling::whistling:
    auf anderen servern, mit anderem script funkioniert alles einwandfrei...

    Mit freundlichen Grüßen,


    Keslo

    Einmal editiert, zuletzt von Keslo ()

  • was ist hier los

    Ja wie schon erwähnt ist dies ein Skript Fehler.


    Nun bräuchten wir Code...so von OnPlayerConnect, OnPlayerRequestClass und eben da wo du den Spieler Einloggen willst usw.


    Oder du kannst auch auf eigene Faust ermitteln und mal überall prints verteilen und schauen, wie weit du kommst bzw wo der Code hängen bleibt :)


    Wenn du das gezielt machst, kannst du genau feststellen, an welcher Zeile es hängen bleibt ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von John_Dree ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Oder du kannst auch auf eigene Faust ermitteln und mal überall prints verteilen und schauen, wie weit du kommst bzw wo der Code hängen bleibt


    Wenn du das gezielt machst, kannst du genau feststellen, an welcher Zeile es hängen bleibt

    Ja denke das wäre die beste Möglichkeit :)


    //edit: Fehler gefunden...


    Ich hab eine Variable, wo ich Abfrage, ob der Spieler schon eingeloggt ist, oder nicht.
    Dann hatte ich alle Variabeln auf 0 gesetzt unter onplayerconnect nachdem ich abgefragt habe, ob er schon eingeloggt ist oder nicht, fürs login-system.
    also eigener logischer fehler :whistling::whistling:


    das mit den printen ist echt ne top sache :) danke nochmal!



    //hab wieder ein problem ;)


    Mein Server speichert die User nicht, Laden funktioniert einwandfrei, keine Errors von crashdetect ö.ä.


    Hier der MySQL Ausschnitt, sobald ich reconnecte, eine Variable ändere, die gespeichert werden soll und dann mich direkt wieder auslogge.



    [03:58:30] [INFO] changed log level from 'warning, error' to 'debug, info, warning, error'
    [03:58:30] [DEBUG] mysql_connect("87.98.243.201", "samp6643", "*****", "samp6643_dm", 0)
    [03:58:30] [DEBUG] CHandleManager::Create(this=0x257c8b8, host='87.98.243.201', user='samp6643', pass='****', db='samp6643_dm', options=0x2571be8)
    [03:58:30] [INFO] Creating new connection handle...
    [03:58:30] [DEBUG] CConnection::CConnection(this=0x257cf20, host='87.98.243.201', user='samp6643', passw='****', db='samp6643_dm', options=0x2571be8)
    [03:58:30] [DEBUG] CConnection::CConnection - new connection = 0x2556120
    [03:58:30] [DEBUG] CConnection::CConnection(this=0x5bdc020, host='87.98.243.201', user='samp6643', passw='****', db='samp6643_dm', options=0x2571be8)
    [03:58:30] [DEBUG] CConnection::CConnection - new connection = 0x25a2840
    [03:58:30] [DEBUG] CThreadedConnection::WorkerFunc(this=0x5bdc020, connection=0x5bdc020)
    [03:58:30] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x5bdc020, connection=0x5bdc020)
    [03:58:30] [DEBUG] CConnectionPool::CConnectionPool(size=2, this=0x257cfa0)
    [03:58:30] [DEBUG] CConnection::CConnection(this=0x5daa020, host='87.98.243.201', user='samp6643', passw='****', db='samp6643_dm', options=0x2571be8)
    [03:58:30] [DEBUG] CConnection::CConnection - new connection = 0x25ad210
    [03:58:30] [DEBUG] CThreadedConnection::WorkerFunc(this=0x5daa020, connection=0x5daa020)
    [03:58:30] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x5daa020, connection=0x5daa020)
    [03:58:30] [DEBUG] CConnection::CConnection(this=0x5f76020, host='87.98.243.201', user='samp6643', passw='****', db='samp6643_dm', options=0x2571be8)
    [03:58:30] [DEBUG] CConnection::CConnection - new connection = 0x25b7f10
    [03:58:30] [DEBUG] CThreadedConnection::WorkerFunc(this=0x5f76020, connection=0x5f76020)
    [03:58:30] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x5f76020, connection=0x5f76020)
    [03:58:30] [INFO] Connection handle with id '1' successfully created.
    [03:58:30] [DEBUG] CHandleManager::Create - new handle = 0x2555ac0
    [03:58:30] [DEBUG] mysql_connect: return value: '1'
    [03:58:30] [DEBUG] mysql_errno(1)
    [03:58:30] [DEBUG] CHandle::GetErrorId(this=0x2555ac0)
    [03:58:30] [DEBUG] CConnection::GetError(this=0x257cf20, connection=0x2556120)
    [03:58:30] [DEBUG] CHandle::GetErrorId - return value: true, error id: '0', error msg: ''
    [03:58:30] [DEBUG] mysql_errno: return value: '0'
    [03:58:35] [DEBUG] mysql_format(1, 0x05A84704, 256, "SELECT id FROM users WHERE name = '%e'")
    [03:58:35] [DEBUG] CHandle::EscapeString(this=0x2555ac0, src='Keslo')
    [03:58:35] [DEBUG] CConnection::EscapeString(src='Keslo', this=0x257cf20, connection=0x2556120)
    [03:58:35] [DEBUG] CHandle::EscapeString - return value: true, escaped string: 'Keslo'
    [03:58:35] [DEBUG] mysql_format: return value: '41'
    [03:58:35] [DEBUG] mysql_pquery(1, "SELECT id FROM users WHERE name = 'Keslo'", "OnUserCheck", "d")
    [03:58:35] [DEBUG] CCallback::Create(amx=0x4b27cb8, name='OnUserCheck', format='d', params=0x5a846ec, param_offset=5)
    [03:58:35] [DEBUG] CCallback::Create - callback index for 'OnUserCheck': 46
    [03:58:35] [DEBUG] processing specifier 'd' with parameter index 0
    [03:58:35] [DEBUG] retrieved and pushed value '0'
    [03:58:35] [INFO] Callback 'OnUserCheck' set up for delayed execution.
    [03:58:35] [DEBUG] created delayed callback with 1 parameter
    [03:58:35] [DEBUG] CHandle::Execute(this=0x2555ac0, type=2, query=0x25acf50)
    [03:58:35] [DEBUG] CConnectionPool::Queue(query=0x25acf50, this=0x257cfa0)
    [03:58:35] [DEBUG] CHandle::Execute - return value: true
    [03:58:35] [DEBUG] mysql_pquery: return value: '1'
    [03:58:35] [DEBUG] CConnection::Execute(query=0x25acf50, this=0x5daa020, connection=0x25ad210)
    [03:58:35] [DEBUG] CQuery::Execute(this=0x25acf50, connection=0x25ad210)
    [03:58:35] [INFO] query "SELECT id FROM users WHERE name = 'Keslo'" successfully executed within 19.513 milliseconds
    [03:58:35] [DEBUG] CResultSet::Create(connection=0x25ad210, query_str='SELECT id FROM users WHERE name = 'Keslo'')
    [03:58:35] [DEBUG] created new resultset '0x258a788'
    [03:58:35] [DEBUG] fetched MySQL result '0x25869e8'
    [03:58:35] [DEBUG] allocated 20 bytes for PAWN result
    [03:58:35] [DEBUG] CCallback::Execute(amx=0x4b27cb8, index=46, num_params=1)
    [03:58:35] [INFO] Executing callback 'OnUserCheck' with 1 parameter...
    [03:58:35] [DEBUG] processing internal specifier 'c'
    [03:58:35] [DEBUG] pushed value '0' onto AMX stack
    [03:58:35] [DEBUG] executing AMX callback with index '46'
    [03:58:35] [DEBUG] cache_get_row_count(0x05A84B04)
    [03:58:35] [DEBUG] cache_get_row_count: return value: '1'
    [03:58:35] [DEBUG] AMX callback executed with error '0'
    [03:58:35] [INFO] Callback successfully executed.
    [03:58:36] [DEBUG] mysql_format(1, 0x05A84484, 256, "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')")
    [03:58:36] [DEBUG] CHandle::EscapeString(this=0x2555ac0, src='Keslo')
    [03:58:36] [DEBUG] CConnection::EscapeString(src='Keslo', this=0x257cf20, connection=0x2556120)
    [03:58:36] [DEBUG] CHandle::EscapeString - return value: true, escaped string: 'Keslo'
    [03:58:36] [DEBUG] CHandle::EscapeString(this=0x2555ac0, src='1234')
    [03:58:36] [DEBUG] CConnection::EscapeString(src='1234', this=0x257cf20, connection=0x2556120)
    [03:58:36] [DEBUG] CHandle::EscapeString - return value: true, escaped string: '1234'
    [03:58:36] [DEBUG] mysql_format: return value: '67'
    [03:58:36] [DEBUG] mysql_pquery(1, "SELECT * FROM users WHERE name = 'Keslo' AND password = MD5('1234')", "OnUserLogin", "d")
    [03:58:36] [DEBUG] CCallback::Create(amx=0x4b27cb8, name='OnUserLogin', format='d', params=0x5a8446c, param_offset=5)
    [03:58:36] [DEBUG] CCallback::Create - callback index for 'OnUserLogin': 47
    [03:58:36] [DEBUG] processing specifier 'd' with parameter index 0
    [03:58:36] [DEBUG] retrieved and pushed value '0'
    [03:58:36] [INFO] Callback 'OnUserLogin' set up for delayed execution.
    [03:58:36] [DEBUG] created delayed callback with 1 parameter
    [03:58:36] [DEBUG] CHandle::Execute(this=0x2555ac0, type=2, query=0x25ac668)
    [03:58:36] [DEBUG] CConnectionPool::Queue(query=0x25ac668, this=0x257cfa0)
    [03:58:36] [DEBUG] CHandle::Execute - return value: true
    [03:58:36] [DEBUG] mysql_pquery: return value: '1'
    [03:58:36] [DEBUG] CConnection::Execute(query=0x25ac668, this=0x5f76020, connection=0x25b7f10)
    [03:58:36] [DEBUG] CQuery::Execute(this=0x25ac668, connection=0x25b7f10)
    [03:58:36] [INFO] query "SELECT * FROM users WHERE name = 'Keslo' AND password = MD5('1234')" successfully executed within 16.691 milliseconds
    [03:58:36] [DEBUG] CResultSet::Create(connection=0x25b7f10, query_str='SELECT * FROM users WHERE name = 'Keslo' AND password = MD5('1234')')
    [03:58:36] [DEBUG] created new resultset '0x258a830'
    [03:58:36] [DEBUG] fetched MySQL result '0x25c69d0'
    [03:58:36] [DEBUG] allocated 284 bytes for PAWN result
    [03:58:36] [DEBUG] CCallback::Execute(amx=0x4b27cb8, index=47, num_params=1)
    [03:58:36] [INFO] Executing callback 'OnUserLogin' with 1 parameter...
    [03:58:36] [DEBUG] processing internal specifier 'c'
    [03:58:36] [DEBUG] pushed value '0' onto AMX stack
    [03:58:36] [DEBUG] executing AMX callback with index '47'
    [03:58:36] [DEBUG] cache_get_row_count(0x05A84B04)
    [03:58:36] [DEBUG] cache_get_row_count: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "id", 0x059A7118)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '7'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Registriert", 0x059A7120)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Skin", 0x059A7118)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '105'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Money", 0x059A7128)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '25000'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "AdminLevel", 0x059A712C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '5'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Fraktion", 0x059A7130)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '5'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "vTeam", 0x059A7134)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '4'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Level", 0x059A7138)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "LSPDLevel", 0x059A713C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "LSPDExp", 0x059A7140)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "LSPDMaxExp", 0x059A7144)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '75'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "FBILevel", 0x059A7148)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "FBIExp", 0x059A714C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "FBIMaxExp", 0x059A7150)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '75'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "GangLevel", 0x059A7154)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "GangExp", 0x059A7158)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "GangMaxExp", 0x059A715C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '75'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "MedicLevel", 0x059A7160)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "MedicExp", 0x059A7164)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "MedicMaxExp", 0x059A7168)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '75'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Wanteds", 0x059A716C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name(0, "WantedGrund", 0x059A7170, 1)
    [03:58:36] [DEBUG] cache_get_value_name: assigned value: ''
    [03:58:36] [DEBUG] cache_get_value_name: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "MuteTime", 0x059A7370)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Spielzeit", 0x059A7374)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "JailTime", 0x059A7378)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "JailType", 0x059A737C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Morde", 0x059A7380)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Tode", 0x059A7384)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Verbrechen", 0x059A7388)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "ContractGeld", 0x059A738C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Spawnchange", 0x059A7390)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "Warns", 0x059A7394)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "LastLogin", 0x059A7398)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "PayDayPoints", 0x059A739C)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "TutorialDone", 0x059A73A0)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] cache_get_value_name_int(0, "LottoNummer", 0x059A73A4)
    [03:58:36] [DEBUG] cache_get_value_name_int: assigned value: '0'
    [03:58:36] [DEBUG] cache_get_value_name_int: return value: '1'
    [03:58:36] [DEBUG] AMX callback executed with error '0'
    [03:58:36] [INFO] Callback successfully executed.
    [03:58:45] [DEBUG] mysql_format(1, 0x05A82BA0, 2000, "UPDATE users SET Registriert = '%d', Skin = '%d', Money = '%d', AdminLevel = '%d', Fraktion = '%d', vTeam = '%d', Level = '%d', LSPDLevel = '%d', LSPDExp = '%d', LSPDMaxExp = '%d', FBILevel = '%d', FBIExp = '%d', FBIMaxExp = '%d', GangLevel = '%d', GangExp = '%d', GangMaxExp = '%d', MedicLevel = '%d', MedicExp = '%d', MedicMaxExp = '%d',")
    [03:58:45] [DEBUG] mysql_format: return value: '330'
    [03:58:45] [DEBUG] mysql_format(1, 0x05A82BA0, 2000, "%sWanteds = '%d', WantedGrund = '%s', MuteTime = '%d', Spielzeit = '%d', JailTime = '%d', JailType = '%d', Morde = '%d', Tode = '%d', Verbrechen = '%d', ContractGeld = '%d', Spawnchange = '%d', Warns = '%d', LastLogin = '%d', PayDayPoints = '%d', TutorialDone = '%d', LottoNummer = '%d' WHERE id = '%d'")
    [03:58:45] [DEBUG] mysql_format: return value: '614'
    [03:58:45] [DEBUG] mysql_pquery(1, "UPDATE users SET Registriert = '1', Skin = '105', Money = '25000', AdminLevel = '0', Fraktion = '3', vTeam = '4', Level = '0', LSPDLevel = '1', LSPDExp = '0', LSPDMaxExp = '75', FBILevel = '1', FBIExp = '0', FBIMaxExp = '75', GangLevel = '1', GangExp = '0', GangMaxExp = '75', MedicLevel = '1', MedicExp = '0', MedicMaxExp = '75',Wanteds = '1', WantedGrund = '', MuteTime = '0', Spielzeit = '0', JailTime = '0', JailType = '0', Morde = '0', Tode = '0', Verbrechen = '0', ContractGeld = '0', Spawnchange = '0', Warns = '0', LastLogin = '0', PayDayPoints = '0', TutorialDone = '0', LottoNummer = '0' WHERE id = '105'", "", "")
    [03:58:45] [DEBUG] CCallback::Create(amx=0x4b27cb8, name='', format='', params=0x5a82b8c, param_offset=5)
    [03:58:45] [DEBUG] CHandle::Execute(this=0x2555ac0, type=2, query=0x25acc58)
    [03:58:45] [DEBUG] CConnectionPool::Queue(query=0x25acc58, this=0x257cfa0)
    [03:58:45] [DEBUG] CHandle::Execute - return value: true
    [03:58:45] [DEBUG] mysql_pquery: return value: '1'
    [03:58:45] [DEBUG] CConnection::Execute(query=0x25acc58, this=0x5daa020, connection=0x25ad210)
    [03:58:45] [DEBUG] CQuery::Execute(this=0x25acc58, connection=0x25ad210)
    [03:58:46] [INFO] query "UPDATE users SET Registriert = '1', Skin = '105', Money = '25000', AdminLevel = '0', Fraktion = '3', vTeam = '4', Level = '0', LSPDLevel = '1', LSPDExp = '0', LSPDMaxExp = '75', FBILevel = '1', FBIExp = '0', FBIMaxExp = '75', GangLevel = '1', GangExp = '0', GangMaxExp = '75', MedicLevel = '1', MedicExp = '0', MedicMaxExp = '75',Wanteds = '1', WantedGrund = '', MuteTime = '0', Spielzeit = '0', JailTime = '0', JailType = '0', Morde = '0', Tode = '0', Verbrechen = '0', ContractGeld = '0', Spawnchange = '0', Warns = '0', LastLogin = '0', PayDayPoints = '0', TutorialDone = '0', LottoNummer = '0' WHERE id = '105'" successfully executed within 13.101 milliseconds
    [03:58:46] [DEBUG] CResultSet::Create(connection=0x25ad210, query_str='UPDATE users SET Registriert = '1', Skin = '105', Money = '25000', AdminLevel = '0', Fraktion = '3', vTeam = '4', Level = '0', LSPDLevel = '1', LSPDExp = '0', LSPDMaxExp = '75', FBILevel = '1', FBIExp = '0', FBIMaxExp = '75', GangLevel = '1', GangExp = '0', GangMaxExp = '75', MedicLevel = '1', MedicExp = '0', MedicMaxExp = '75',Wanteds = '1', WantedGrund = '', MuteTime = '0', Spielzeit = '0', JailTime = '0', JailType = '0', Morde = '0', Tode = '0', Verbrechen = '0', ContractGeld = '0', Spawnchange = '0', Warns = '0', LastLogin = '0', PayDayPoints = '0', TutorialDone = '0', LottoNummer = '0' WHERE id = '105'')
    [03:58:46] [DEBUG] created new resultset '0x258a638'
    [03:58:46] [DEBUG] fetched MySQL result '0x0'


    Ich ändere immer InGame mein AdminLevel auf 0. Am Ende der Log sieht man genau, dass er das zwar registriert, aber in der Datenbank wird nichts geändert.


    Hier noch ein Ausschnitt der Methode vom Speichern:



    stock SaveUserStats(playerid)
    {
    //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
    if(!Spieler[playerid][Eingeloggt]) return 1;


    //Ansonsten speichere sie
    new query[2000];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET Registriert = '%d', Skin = '%d', Money = '%d', AdminLevel = '%d', Fraktion = '%d', vTeam = '%d', Level = '%d', LSPDLevel = '%d', LSPDExp = '%d', LSPDMaxExp = '%d', FBILevel = '%d', FBIExp = '%d', FBIMaxExp = '%d', GangLevel = '%d', GangExp = '%d', GangMaxExp = '%d', MedicLevel = '%d', MedicExp = '%d', MedicMaxExp = '%d',",
    Spieler[playerid][Registriert],
    Spieler[playerid][Skin],
    Spieler[playerid][Money],
    Spieler[playerid][AdminLevel],
    Spieler[playerid][Fraktion],
    Spieler[playerid][vTeam],
    Spieler[playerid][Level],
    Spieler[playerid][LSPDLevel],
    Spieler[playerid][LSPDExp],
    Spieler[playerid][LSPDMaxExp],
    Spieler[playerid][FBILevel],
    Spieler[playerid][FBIExp],
    Spieler[playerid][FBIMaxExp],
    Spieler[playerid][GangLevel],
    Spieler[playerid][GangExp],
    Spieler[playerid][GangMaxExp],
    Spieler[playerid][MedicLevel],
    Spieler[playerid][MedicExp],
    Spieler[playerid][MedicMaxExp]);


    mysql_format(handle, query, sizeof(query),"%sWanteds = '%d', WantedGrund = '%s', MuteTime = '%d', Spielzeit = '%d', JailTime = '%d', JailType = '%d', Morde = '%d', Tode = '%d', Verbrechen = '%d', ContractGeld = '%d', Spawnchange = '%d', Warns = '%d', LastLogin = '%d', PayDayPoints = '%d', TutorialDone = '%d', LottoNummer = '%d' WHERE id = '%d'",
    query,
    Spieler[playerid][Wanteds],
    Spieler[playerid][WantedGrund],
    Spieler[playerid][MuteTime],
    Spieler[playerid][Spielzeit],
    Spieler[playerid][JailTime],
    Spieler[playerid][JailType],
    Spieler[playerid][Morde],
    Spieler[playerid][Tode],
    Spieler[playerid][Verbrechen],
    Spieler[playerid][ContractGeld],
    Spieler[playerid][Spawnchange],
    Spieler[playerid][Warns],
    Spieler[playerid][LastLogin],
    Spieler[playerid][PayDayPoints],
    Spieler[playerid][TutorialDone],
    Spieler[playerid][LottoNummer],
    Spieler[playerid][p_id]);

    //Das Query wird abgesendet
    mysql_pquery(handle, query);
    return 1;
    }


    Und selbstverständlich ein Screenshot von der Struktur meiner Tabelle:


    https://imgur.com/a/EkOrfOz


    Danke im Voraus :)

    Mit freundlichen Grüßen,


    Keslo

    2 Mal editiert, zuletzt von Keslo ()