sscanf Befehl returnen?

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
  • Hey,


    eine kurze Frage:


    Ist es möglich, dass wenn in einem Befehl kein Parameter gewählt wird, der Parameter die eigene Spieler-ID annimt?
    Also beispielsweise so:


    if(sscanf(params,"u",pID)) return cmd_licenses(playerid,playerid);


    So klappt es natürlich nicht, aber ich denke, man kann das Prinzip verstehen :)
    Für Befehle benutze ich ZCMD, falls diese Information notwendig ist.
    Dadurch könnten einige meiner Befehle ziemlich kürzer werden..


    Grüße,
    tonyalva

  • Ok,


    doof formulierte Fragestellung, mh? :P


    Dann eben neu:
    Falls es möglich ist, wie stelle ich dies am besten an?
    Könntest du mir ein Beispiel dafür geben, oder mir sagen, wo ich dies "lernen" kann?


    Grüße,
    tony

  • Mh,


    Wie es mit einem Kick / einer Message usw. funktioniert, ist mir ja bewusst, allerdings klappt die Angabe des Parameters so nicht.
    error 035: argument type mismatch (argument 2)


    Wenn der Code deiner Ansicht nach "eigentlich" schon richtig war, dann müsste er doch klappen :P


    Ich weiß auch gerade nicht, wie ich es sonst anstellen muss, der ZCMD/Sscanf-Thread im englischen SAMP-Forum hat mir da ebenfalls nicht geholfen..


    Grüße,
    tony


  • COMMAND:licenses(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return cmd_licenses(playerid,playerid); //SendClientMessage(playerid,COLOR_GREY,"[Benutzung]: /licenses [Spieler]");
    new string[128];
    format(string,sizeof(string),"|_________Lizenzen von %s_________|",PlayerName[playerid]);
    SendClientMessage(pID,COLOR_LIGHTBLUE,string);
    if(PlayerInfo[playerid][pCarLic] == 1) { format(string,sizeof(string),"Führerschein: Bestanden. (%d/%d) Strafpunkten",PlayerInfo[playerid][pCarPoints],MAX_CAR_POINTS); }
    else if(PlayerInfo[playerid][pCarEntzogen] >= 1) { format(string,sizeof(string),"Führerschein: Nicht bestanden (entzogen) | %d Stunden Sperre",PlayerInfo[playerid][pCarEntzogen]); }
    else if(PlayerInfo[playerid][pCarLic] == -1) { format(string,sizeof(string),"Führerschein: Nicht bestanden (entzogen)"); }
    else { format(string,sizeof(string),"Führerschein: Nicht bestanden."); }
    SendClientMessage(pID,COLOR_GREY,string);
    format(string,sizeof(string),"* %s zeigt %s seine Lizenzen",PlayerName[playerid],PlayerName[pID]);
    SendRangeMessage(30,playerid,string,Purple);
    return 1;
    }


    Sorry, wegen der Einrückung, es wollte nicht so, wie ich es wollte..
    Ja, ich wusste übrigens was der Error bedeutet, ich habe es mir allerdings so gedacht:
    Da der Parameter einen Namen oder eine ID des Spielers verlangt, sende ich als Parameter die ID des Spielers, der den Befehl getippt hat.
    Ansonsten hatte ich auch keine Idee, daher ja auch die Frage :P


    Grüße,
    tony

  • Schau mal, das ist genau das, was ich vermutet habe.


    licenses(playerid,params[]) => funktion(integer,string) 
    cmd_licenses(playerid,playerid) =>funktion (integer,integer)


    Du musst also die playerid erst in einen String packen,
    wenn das klappen soll ;)