3 Parameter nicht mit angeben, nur wie?

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


    Ich habe eine Frage, und zwar möchte ich den den dritten Parameter (Also den Parameter- "Angabe") bei strcmp ("Poisition") nicht mit angeben lassen.
    Also, wenn er /editbiz BIZID POISITION macht, soll halt die Funktion direkt angewendet werden.
    Nur wie stelle ich dies an?


    ocmd:editbiz(playerid, params[])
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    if(PlayerDaten[playerid][pAdminlevel] != 2000)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!");
    new BizIDWahl, ExistsBiz[84], cmd[12], angabe[64];
    if(sscanf(params,"is[12]s[64]", BizIDWahl, cmd, angabe)) return SendClientMessage(playerid,DUNKELROT," Benutzung: /editbiz [ID] [Name/Preis/Eintritt/Poisition] [Angabe]");
    format(ExistsBiz,sizeof(ExistsBiz),"/Firmen/%i.ini", BizIDWahl);
    if(dini_Exists(ExistsBiz))
    {
    if(strcmp(cmd,"Name",true) == 0)
    {



    }
    if(strcmp(cmd,"Preis",true) == 0)
    {


    }
    if(strcmp(cmd,"Eintritt",true) == 0)
    {



    }
    if(strcmp(cmd,"Position",true) == 0)
    {



    }
    }
    return 1;
    }

  • "is[12]S(default Wert?)[64]"



    Wozu steht den der Wert "default Wert?" muss ich da jetzt Position rein schrieben oder wie?


    ocmd:editbiz(playerid, params[])
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    if(PlayerDaten[playerid][pAdminlevel] != 2000)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!");
    new BizIDWahl, ExistsBiz[84], cmd[12], angabe[64];
    if(sscanf(params,"is[12]s[64]", BizIDWahl, cmd, angabe)) return SendClientMessage(playerid,DUNKELROT," Benutzung: /editbiz [ID] [Name/Preis/Eintritt/Position] [Angabe]");
    format(ExistsBiz,sizeof(ExistsBiz),"/Firmen/%i.ini", BizIDWahl);
    if(dini_Exists(ExistsBiz))
    {
    if(strcmp(cmd,"Name",true) == 0)
    {



    }
    if(strcmp(cmd,"Preis",true) == 0)
    {


    }
    if(strcmp(cmd,"Eintritt",true) == 0)
    {


    }
    if(strcmp(cmd,"Position",true) == 0)
    {


    }
    }
    return 1;
    }

  • Nein, musst du nicht. Du kannst es so lassen wenn du den dritten Parameter nicht mit einem Wert belegen willst, wenn du Position als zweiten Parameter hast, ich habe dir es nur als Option offen gelassen.


    (Beachte das große S, falls nicht gesehen!)

  • Wie bereits gesagt, einfach so:
    "is[12]S(default Wert)[64]"


    Da du den default Wert ja nicht nutzt ist es völlig egal was da steht.


    Beispiel:
    "is[12]S(blub)[64]"

    Also ich habe es jetzt so drin stehen, Jeffry:



    if(sscanf(params,"is[12]s(Position)[64]", BizIDWahl, cmd, angabe)) return SendClientMessage(playerid,DUNKELROT," Benutzung: /editbiz [ID] [Name/Preis/Eintritt/Position] [Angabe]");



    aber funktioniert nicht, ich soll immer noch den 3ten Parameter ausfüllen.

  • Du kannst es natürlich auch so machen


    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.