Problem mit sscanf (Änderung von Parametern bei verschiedener Eingabe eines bestimmten Parameters)

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
  • Ich habe derzeitig ein Problem mit sscanf.
    Ich habe für euch einen vereinfachten Code geschrieben, mein Befehl ist durchaus komplexer.
    Lest es euch bitte erstmal kurz durch:


    new art[10];
    if(sscanf(params,"s",art)) return SendClientMessage(playerid, WHITE, "Verwenung: /ladung [info/abholen]");
    if(!strcmp(art, "info", true))
    {
    return SendClientMessage(playerid, GELB, "Du hast nur /info ohne Params getippt.");
    }
    if(!strcmp(art, "abholen", true))
    {
    new art2[10], menge;
    if(sscanf(params, "sd", art2, menge)) return SendClientMessage(playerid, WHITE, "Verwenung: /ladung [abholen] [Menge]");
    //selbst wenn eingabe richtig ist wird der weitere code nicht ausgeführt
    }


    Vielleicht erkennt ihr, was ich scripten möchte: Einen Befehl mit verschiedenen Parametern, wenn andere Parameter sich ändern.
    Bei /ladung info: nur die Nachricht
    bei /ladung abholen: noch die Menge als Parameter


    Doch hier return er an der Stelle. Wenn ich nur /ladung abholen eingeben würde, kommt auch die nachricht mit "Verwenung: ...".
    Doch wenn ich alle Parameter richtig eintippe, also mit der Menge, Passiert nichts mehr und der folgende Code wird nicht ausgeführt.


    Kann man denn überhaupt so vorgehen, wie ich es mir gedacht habe? Und was ist falsch daran?
    Danke schonmal für die Hilfe!

  • Es kann sein, das sscanf die params-Variable verändert, und daher beim 2. sscanf mit der gleichen params-Variable fehlschlägt.
    Speicher mal bevor du alles ausführt die params Variable in einem Buffer und benutz' bei der 2. Überprüfung die Buffer-Variable.


    #Brotfischbaron


    In schā'a llāh

  • Ich glaub ich hab dich falsch verstanden. Ich machte es wie folgt:
    new params1[128];
    format(params1, sizeof(params1), "%s", params);


    Falls du das meintest: Es ging nicht ^^

  • Bringt ebenso nichts.
    Ich werde jetzt versuchen, einen optionalen Parameter einzubauen, den ich bei der Info nicht verwende, aber bei /ladung abholen als nötig dekladiere.
    Ich melde mich mit Ergebnissen.
    :)


    Ich hab nen optionalen Parameter eingefügt, den ich später als Pflicht dekladiere.

    Einmal editiert, zuletzt von Alexus ()