einen SetWeather Befehl erstellen(OCMD,sscanf) Für Anfänger

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,


    das ist mein Tutorial wie man einen Setweather Befehl erstellt, und einen /newveh Befehl!



    1. SetWeather


    Als erstes erstellen wir den Command, dafür brauchen wir aber erst die Include.


    #include <ocmd>


    So nun kommen wir zu den Befehl.


    ocmd:setweather(playerid,params[])
    {


    new weatherid1,string[80]; // Wir definieren uns eine Variable womit wir die WeatherID ändern können (weatherid1), dazu erstellen wir uns noch einen String, womit wir einen Text an die Playerid schicken.


    So nun kommen wir zu dem Hauptteil des Befehls:


    if(sscanf(params,"i",weatherid1))return SendClientMessage(playerid, COLOR_GRAD2,"INFO: /setweather [WEATHERID]");


    if(sccanf(params,Integer,VARIABLE))return SendClientMessage(playerid,FARBE,"TEXT!");


    Integer: Gibt eine Zahl wieder, es gibt auch andere Typen wie zumbeispiel "u" das gibt dann ein PlayerNamen, oder die ID wieder.



    Also, wir erstellen hier eine Abfrage, ob der Befehl auch richtig ausgeführt wird, das heißt wenn wir nun nur /setweather eingeben, kommt eine Fehlermeldung.
    Wenn wir jetzt /setweather WEATHERID eingeben, ändert sich das Wetter, aber das müssen wir erst Scripten.


    if(SpielerInfo[playerid][Adminlevel] >= 1) // Abfrage ob der User der den Befehl ausführt Admin Level 1 oder höher hat
    {
    SetWeather(weatherid1); // Hier sehen wir das wir unsere erstelle Variable verwenden, normaler weiße kommt dort eine Zahl rein, aber dadurch das wir uns das definiert haben, können wir das benutzen, da es eine Zahl ist müssen wir ein "i" benutzen im sscanf teil benutzen. Wir können dort aber auch ein "d" machen, der vorteil beim d ist das die Zahl auch ins Minus gehen kann, was bei i nicht der Fall ist.
    format(string,sizeof(string),"Du hast das Wetter in die ID %d geändert!",weatherid1); // Hier sehen wir das wir ein format mit unseren erstellen String verwenden, das %d bedeutet das eine Zahl wiedergegeben wird. Dahinter das "weatherid1" sagt uns das die Zahl die Variable ist die wir erstellt haben.
    SendClientMessage(playerid,COLOR_GRAD2,string); // Hier senden wir den String an den User
    }


    else
    {
    SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin"); // Hier wird unsere abfrage ob der User Admin ist abgefragt, wenn er kein Admin ist kommt die Meldung die hier steht.
    }
    return 1;
    }


    So sieht unser Befehl am Ende aus:


    ocmd:setweather(playerid,params[])
    {
    new weatherid1,string[80];
    if(sscanf(params,"i",weatherid1))return SendClientMessage(playerid, COLOR_GRAD2,"INFO: /setweather [WEATHERID]");
    if(SpielerInfo[playerid][Adminlevel] >= 1)
    {
    SetWeather(weatherid1);
    format(string,sizeof(string),"Du hast das Wetter in die ID %d geändert!",weatherid1);
    SendClientMessage(playerid,COLOR_GRAD2,string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin");
    }
    return 1;
    }


    Ich hoffe ihr konntet durch mein Tutorial was lernen, und bedanke mich für das Lesen :)

    Einmal editiert, zuletzt von KayuZ ()

  • Tutorial eigentlich okay, aber ich hätte nicht so gut daraus lernen können, gibt bessere, aber trotzdem:
    6/10!


    Einige Anmerkungen:

    Zitat

    das ist mein Tutorial wie man einen Setweather Befehl erstellt, und einen /newveh Befehl!

    ist aber nur ein Weatercommand da.


    Zitat

    #include

    Downloadlink sollte eigentlich dabei sein



    Zitat

    if(sccanf(params,ART,VARIABLE))return SendClientMessage(playerid,FARBE,"TEXT!");

    Was hier fehlt ist die Liste für die Data Typen.