Stringabfrage mit sscanf lässt Server crashen

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
  • Servus,
    bei mir ist grad folgendes, für mich sehr dubioses Problem aufgetreten.


    Im folgendes Codeschnippsel sollte in Zeile 327 ein String mithilfe von sscanf2 (Plugin Version) eingelesen werden.

    Code: includes/adminbefehle.inc
    ocmd:createvehicle(playerid, params[])
    {
    	if(!GetAdminLevel(playerid, 4)) return SendClientMessage(playerid, COLOR_CHAT_ERROR, "Du bist kein Admin");
    	if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_CHAT_ERROR, "Du musst in einem Fahrzeug sitzen");
        new id, pref[3];
    	if(sscanf(params, "ds[2]", id, pref)) return SendClientMessage(playerid, COLOR_CHAT_ERROR, "Benutzung: /createvehicle [JobID] [Kennzeichen Prefix]");
    	new Float:posx, Float:posy, Float:posz, Float:rot, color1, color2;


    Wenn ich den Code so kompilere, bekomme ich hier keine Errors oder Warnings.
    Wenn ich den Befehl Ingame ausführe, z.B. /createvehicle 0 SA, stürzt der Server ab.


    Crashdetect sagt folgendes:

    Code
    [21:48:45] [debug] Server crashed while executing script.amx
    [21:48:45] [debug] AMX backtrace:
    [21:48:45] [debug] #0 0001c630 in public ocmd_createvehicle (playerid=0, params[]=@0008c4a0 "0 FC") at F:\Projekte\SAMP\pawno\include\feuer.inc:293
    [21:48:45] [debug] #1 native CallLocalFunction () from samp03svr
    [21:48:45] [debug] #2 00006344 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0008c450 "/createvehicle 0 FC") at F:\Projekte\SAMP\pawno\include\ocmd.inc:77

    Nun zum für mich verwirrenden Punkt:
    Crashdetect sagt ansonsten relativ genau was den Server grad "abgeschaltet" hat. Oben sagt er mir nur, dass der Fehler in einer anderen Include ist (feuer.inc), und zwar im Befehl ocmd_createvehicle in Zeile 293.


    Wie zu sehen ist, hat die angebliche Fehlerzeile nichts mit dem Befehl oder sonst einer benötigten Funktion zu tun.


    Ich habe bereits versucht, bei der sscanf Abfrage mit größeren Arrays (new pref[64]) zu arbeiten, aber das Problem hat sich dadurch nicht beheben lassen.


    Vielleicht sieht einer von euch den Fehler oder hat nen Tipp, ich bin mit meinem Latein am Ende.


    Mit freundlichem Gruß
    Wepper


    //Edit 09.08.2016
    Fehler behoben.
    Fehler lag nicht, wie angenommen, bei sscanf, sondern an einer fehlerhaften Funktion, welche nicht in der Include, sondern nur im Gamemode funktioniert.

    Mit freundlichem Gruß
    Weper

    Einmal editiert, zuletzt von wepper () aus folgendem Grund: Fehler behoben. Fehler lag nicht, wie angenommen, bei sscanf, sondern an einer fehlerhaften Funktion, welche nicht in der Include, sondern nur im Gamemode funktioniert.