/afk befehl funktioniert nicht.

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,


    habe heute einen relativ simplen AFK Befehl erstellt. Es soll der Player in ein ( von mir angefertigtes ) Interior geportet und gefreezt werden solange wie er AFK ist damit er in der ZEit nicht getötet wird etc. Das funktioniert auch schon, jetzt wollte ich aber noch einen schutz vor Abus einbauen undzwar das man wenn man einmal /afk gegangen ist 3 Minuten warten muss bevor man /back bekommt. Leider funktioniert der Timer nicht ganz und ich frage mich wieso :( hier mal der Code:


    if(strcmp(cmdtext, "/afk", true, 10) ==0)
    {

    if (IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,0xFF0000FF,"Du sitzt in einem Fahrzeug!");
    }
    if (!IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,COLOR_GREEN, "Du bist jetzt AFK, benutze /back um wieder am Spiel teilzunehmen.");
    GetPlayerName(playerid,name,sizeof(name));
    format(str,sizeof(str),"%s (%d) Ist jetzt AFK",name,playerid);
    SendClientMessageToAll(COLOR_YELLOW, str);
    TogglePlayerControllable(playerid,0);
    SetPlayerPos(playerid,-426.5869,20.3248,51.4453);
    return 1;
    }
    }


    if(strcmp(cmdtext, "/back", true, 10) ==0)
    {
    if(back[playerid] == 0)
    {
    back[playerid] = 1;
    backtimer[playerid] = SetTimerEx("healer",60000*3,0,"i",playerid);
    SendClientMessage(playerid,COLOR_GREEN, "Du bist jetzt vom AFK Modus zurück!.");
    GetPlayerName(playerid,name,sizeof(name));
    format(str,sizeof(str),"%s (%d) Ist jetzt vom AFK Modus zurück!",name,playerid);
    SendClientMessageToAll(COLOR_YELLOW, str);
    TogglePlayerControllable(playerid,1);
    SetPlayerPos(playerid,1191.1719,-906.5045,48.0625);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du kannst erst nach 3 Minuten wieder aus dem AFK Bereich herraus!");
    }
    }


    und noch die Variablen:
    new back[MAX_PLAYERS];
    new backtimer[MAX_PLAYERS];


    Hoffe das ihr mir Helfen könnt :/


    MFG
    Spider


    edit: zu [PWN] geändert und richtig eingerückt

  • new bool:back[MAX_PLAYERS];
    new backtimer[MAX_PLAYERS];
    forward publicname(playerid);


    //befehl: geht afk:
    backtimer[playerid] = SetTimerEx("publicname",60000*3,0,"i",playerid);
    back[playerid] = false;


    //befehl zum back gehen:
    if(back[playerid])
    {
    //back gehen
    back[playerid] = false;
    }
    else //du kannst erst nach 3 Minuten


    public publicname(playerid)
    {
    back[playerid] = true;
    return 1;
    }