Mehrfache auswahl bei der Blitzer - Funktion

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
  • Guten Abend,


    ich komme wieder langsam ins Thema Scripten rein, habe mich damit eine längere Zeit nicht mehr beschäftigt.
    Meine Frage ist nun, wie kann ich hinter einen CMD ein funktion des Befehls hinzufügen ?
    Ich scripte bzw benutze OCMD.


    Was ich meine ist:



    ocmd:Blitzer(playerid, params[])
    {
    if(bla bla bla add
    {
    CreateObject...
    }


    if(bla bla bla remove
    {
    DestroyObject...
    }
    return 1;
    }



    Hoffe es ist verständlich ausgedrückt was ich meine ? :love:

  • ocmd:Blitzer(playerid, params[])
    {
    if(!strcmp(params,"add",true))
    {
    CreateObject...
    }
    else if(!strcmp(params,"remove",true))
    {
    DestroyObject...
    }
    return SendClientMessage(playerid,-1,"Es gibt nur add oder remove!");
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Cool danke ;)


    eine weitere Frage habe ich noch, wieso zeigt er mir bei dem Befehl:



    ocmd:blitzer(playerid, params[])
    {
    new speed;
    if(sscanf(params, "i", speed))return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [Geschwindigkeit]");
    if(speed < 30 || speed > 150)
    {
    AddBlitzer(playerid, speed);
    }
    return SendClientMessage(playerid, Rot, "Die Geschwindigkeit muss zwischen 30 und 150 km/h sein.");
    }


    immer die Fehlermeldung an


    [hide]Die Geschwindigkeit muss zwischen 30 und 150 km/h sein.[/hide]


    Gibt keien Warnings oder Errors im Script

  • Da fehlt ein return.


    ocmd:blitzer(playerid, params[])
    {
    new speed;
    if(sscanf(params, "i", speed))return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [Geschwindigkeit]");
    if(speed < 30 || speed > 150)
    {
    AddBlitzer(playerid, speed);
    return 1;
    }
    return SendClientMessage(playerid, Rot, "Die Geschwindigkeit muss zwischen 30 und 150 km/h sein.");
    }


  • Geht auch nicht

  • Die Abfrage muss so lauten:
    if(speed > 30 && speed < 150)
    Du hattest die kleiner-größer Zeichen vertauscht, und den &&-Operator vergessen. (Du hattest den ||-Operator!)


    #edit:
    Im ganzen dann so:

    Spoiler anzeigen
    ocmd:blitzer(playerid, params[])
    {
    new speed;
    if(sscanf(params, "i", speed))return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [Geschwindigkeit]");
    if(speed >= 30 && speed <= 150)
    {
    AddBlitzer(playerid, speed);
    return 1;
    }
    return SendClientMessage(playerid, Rot, "Die Geschwindigkeit muss zwischen 30 und 150 km/h sein.");
    }

    2 Mal editiert, zuletzt von AirM4X ()

  • Ah, da hab ich nicht drauf geschaut.


    ICy.:
    Du hast das return vergessen, sonst kommt die Nachricht wieder immer.
    Also so:
    ocmd:blitzer(playerid, params[])
    {
    new speed;
    if(sscanf(params, "i", speed))return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [Geschwindigkeit]");
    if(speed >= 30 && speed <= 150)
    {
    AddBlitzer(playerid, speed);
    return 1;
    }
    return SendClientMessage(playerid, Rot, "Die Geschwindigkeit muss zwischen 30 und 150 km/h sein.");
    }

  • Jeffry: Das ist mir vorhin beim durchschauen auch noch einmal aufgefallen, und habe es direkt geändert.
    Trotzdem danke für den Hinweis ;)