Eigene ID benutzen wenn keine Angegeben.

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
  • Hallo liebe Forengemeinschaft.


    ich Scripte seit ein paar Wochen an einem eigenen Gamemode.
    Jedoch habe ich bei den Befehlen ein kleines Verständnis Problem.


    Ich arbeite mit ocmd und sscanf2.
    Meine Frage lautet: Wie kann ich abfragen ob ein Spieler nach einem Befehl keine ID angegeben hat und er somit die eigene nimmt?


    Beispiel Befehl:
    ocmd:setpint(playerid,params[])
    {
    new pID, intID;
    if(sscanf(params,"ui",pID,intID))return SendClientMessage(playerid, -1,"Benutze: /setpint ID InteriorID");
    SetPlayerInterior(pID, intID);
    return 1;
    }
    Jedoch muss man hier eine ID angeben von dem Spieler dessen Interior gesetzt wird.


    Wie kann ich das ganze nun so abfragen das wenn man "/setpint 7" eingibt das Interior von dem Ausführer auf 7 gesetzt wird?


    Jedoch sollte der Befehl derselbe sein, wenn man einem anderen Spieler das Interior setzen muss. :)


    Vielen dank im Vorraus.
    Alex.

  • Das kannst du so machen:
    ocmd:setpint(playerid,params[])
    {
    new pID, intID;
    if(strlen(params) > 0 && IsNumeric(params)) //Steht nur eine Zahl in den Params? Dann nutze playerid.
    {
    pID = playerid;
    intID = strval(params);
    }
    else if(sscanf(params,"ui",pID,intID)) return SendClientMessage(playerid, -1,"Benutze: /setpint ID InteriorID");
    SetPlayerInterior(pID, intID);
    return 1;
    }


    Zusammen mit dieser Funktion:
    stock IsNumeric(str[])
    {
    if(!strlen(str)) return 0;
    for(new i = 0, j = strlen(str); i < j; i++) if(str[i] > '9' || str[i] < '0') return 0;
    return 1;
    }