Beiträge von Ditti

    FoX: du solltest nun auch die Zeilen markieren, die die Fehler verursachen.


    Offtopic: Oh oh, Kaliber ist hier. Ich glaube, damit ist das Thema erledigt. :D

    Wir versuchen mal, zusammen einen kick-Befehl zu erstellen.
    Was soll der alles machen? So, wie ich es sehe, soll eine Nachricht an den gekickten und an alle Admins geschickt werden.
    Durch das "an alle Admins" wird es durch die for-Schleife schon ressourcenfressend, wieso also nicht an alle schicken?


    Natürlich soll der Spieler gekickt werden, er soll aber noch sehen, warum -> erst die Kick-Msg. schicken, dann kicken.


    Und es sollen nur Admins mit dem Adminlevel 5 dürfen. Wenn du das ganz oben hinschreibst, also bevor du überhaupt Variablen initialisierst, kannst du auch das Ressourcen sparen, da die Variablen nicht erstellt werden, wenn der Spieler kein Admin ist.


    Sind meine Vermutungen soweit richtig?

    Ich verstehe echt nicht, warum sscanf immer falsch eingesetzt wird.


    Bevor du sID verwenden kannst, musst du diese via sscanf herausfinden.


    //e: Hier mal mein kick-Befehl:
    COMMAND:kick(playerid, params[])
    {
    if(GetPVarInt(playerid, "adminscore") >= 1)
    {
    new id, reason[128], string[128];

    if(!sscanf(params, "us", id, reason))
    {
    format(string, sizeof(string), "Türsteher: %s wurde von %s gekickt. - Grund: %s", GetName(id), GetName(playerid), reason);
    SendClientMessageToAll(COLOR_RED, string);
    Kick(id);
    }
    else if(!sscanf(params, "u", id))
    {
    format(string, sizeof(string), "Türsteher: %s wurde von %s gekickt.", GetName(id), GetName(playerid));
    SendClientMessageToAll(COLOR_RED, string);
    Kick(id);
    }
    else
    {
    SendClientMessage(playerid,COLOR_BLUE,"/kick [ID] [Grund]");
    }
    }
    else
    {
    new string[128];

    format(string, sizeof(string), "Türsteher: %s wurde gekickt. - Grund: /kick? Bitch, please!", GetName(playerid));
    SendClientMessageToAll(COLOR_RED, string);
    Kick(playerid);
    }
    }

    Du machst switch(carID), obwohl diese gar nicht gesetzt ist , die wird erst bei sscanf gesetzt.


    Und als Tipp zu sscanf:
    sscanf(params, "k<vehicle>ii", carID, Color1, Color2)


    Dann kannst du /spawncar Infernus oder /spawncar 411 schreiben und es kommt beides auf's gleiche hinaus.


    So könnte aber der Beifahrer das Car jacken. :)

    Noch als Hinweis:
    sscanf muss VOR die erste Verwendung der dort festgelegten Variablen.
    Also bevor du carID switchen kannst, musst du sscanf aufrufen.
    Und für Vehicle-IDs/Namen kannst du den identifier "k<vehicle>" verwenden - dann ergeben "/vspawn Infernus" und /vspawn 411" das gleiche.

    ocmd:revive(playerid, params[])
    {
    if(GetPVarInt(playerid, "Fraktion") == 2) //anpassen für Medics
    {
    new pID;
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid, ROT, "/revive [ID]");
    SetPlayerHealth(pID, 30);
    ClearAnimations(pID);
    }
    }


    Reicht das? :D


    //e: Für den Pickup-Kram müsste ich in OnPlayerDeath rumpfuschen, macht sich aber am Handy doof. ;)
    Die Position des Medics ist jetzt hier auch noch nicht bedacht.