/kick mit Timern

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 Leute,
    der /kick Befehl wird von SAMP ja jetzt zu schnell ausgeführt, am besten löse ich das ja jetzt mit Timern.
    Habe bloß keine Idee wie das gehen soll...
    Bitte um Hilfe.


    Mein /kick Befehl:

    Spoiler anzeigen
    ocmd:kick(playerid, params[])
    {
    if(!IsPlayerAnAdmin(playerid, 1))return echo(playerid, COLOR_RED, "Du hast keine Rechte für diesen befehl!");
    new pID, reason[128], string[128];
    if(sscanf(params, "us", pID, reason))return echo(playerid, COLOR_YELLOW, "Benutze: /kick <Spielername/ID> <Grund>");
    {
    if(!IsPlayerConnected(pID))return echo(playerid, COLOR_RED, "Dieser Spieler ist nicht online!");
    format(string, 128, "AdmCmd: %s wurde von %s gekickt! Grund: %s", GetName(pID), GetName(playerid), reason);
    echoall(COLOR_ADMCMD, string);
    Kick(pID);
    return 1;
    }
    }

  • ocmd:kick(playerid, params[])
    {
    if(!IsPlayerAnAdmin(playerid, 1))return echo(playerid, COLOR_RED, "Du hast keine Rechte für diesen befehl!");
    new pID, reason[128], string[128];
    if(sscanf(params, "us", pID, reason))return echo(playerid, COLOR_YELLOW, "Benutze: /kick <Spielername/ID> <Grund>");
    {
    if(!IsPlayerConnected(pID))return echo(playerid, COLOR_RED, "Dieser Spieler ist nicht online!");
    format(string, 128, "AdmCmd: %s wurde von %s gekickt! Grund: %s", GetName(pID), GetName(playerid), reason);
    echoall(COLOR_ADMCMD, string);
    SetTimerEx("kicktimer", 500, false,"u", pID);
    return 1;
    }
    }


    forward kicktimer(playerid)
    public kicktimer(playerid)
    {
    Kick(playerid);
    }

  • Macht halt eine public Funktion die nichts anderes tut,als Kick() auszuführen.Diese Funktion lässt du nach X Millisekunden aufrufen und übergibst ihr noch zusätzlich die Id des Spielers,der gekickt werden soll.
    DasNeo hat ja schon eine fertige Lösung gepostet ( wie langweilig ), allerdings mit dem Platzhalter "u" den es nicht gibt für SetTimerEx.


  • DasNeo hat ja schon eine fertige Lösung gepostet ( wie langweilig ), allerdings mit dem Platzhalter "u" den es nicht gibt für SetTimerEx.


    Bei mir funktioniert das mit "u" aber. o.O'



    //Goldkiller: Ich habe auch geschrieben dass es den nicht gibt,nicht das er nicht funktioniert.
    http://wiki.sa-mp.com/wiki/SetTimerEx
    Es geht darum,dass "u" nicht unbedingt richtig interpretiert werden muss.Dieses "u" gibt es nur bei SSCANF,nicht bei den reguläten SA:MP Funktionen ( SetTimerEx,CallLocal/RemoteFunction o.Ä.).


    Einmal editiert, zuletzt von Goldkiller ()