Spieler automatisch als AFK setzen

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 Tag, wie kann ich einen Spieler automatisch als AFK setzen?


    Also wenn die neue Position der alten Position entspricht, wird der Spieler automatisch in den AFK Modus gesetzt. Wie soll das funktionieren? :D


    ~ grüße

    Es gibt verschiedene Kulturen, aber nur eine Zivilisation, die europäische.


    Mustafa Kemal Atatürk

  • Es gibt bereits viele AFK-Systeme.
    Die basieren darauf, dass bei OnPlayerUpdate kein Aufruf passiert.


    Du brauchst eine globale Variable
    new idletime[MAX_PLAYERS];


    Diese soll den letzten Moment speichern, der bei OnPlayerUpdate aufgerufen wurde.
    Nun musst da auch was gespeichert werden.


    public OnPlayerUpdate(playerid)
    {
    return idletime[playerid] = GetTickCount(), 1;
    }


    Nun wird der letzte Moment gespeichert.
    Jedoch muss doch überprüft werden, wann der Spieler AFK geht. Jedoch wird es bei OnPlayerUpdate
    nicht gehen, da es ja dann nicht mehr aktualisiert wird. Wir brauchen einen Timer.
    Der Timer sollte beim GameMode Start gestartet werden. Hin zu OnGameModeInit.


    public OnGameModeInit()
    {
    SetTimer("AFK", 3000, 1);
    return 1;
    }


    forward AFK();
    public AFK()
    {
    new tick = GetTickCount();
    for(new i, j = GetMaxPlayers(); i < j; i++)
    {
    if(tick - idletime[i] >= 5000) // Nach 5 Sekunden AFK
    {
    // Was passiert, wenn der Spieler AFK ist?
    }
    }
    return 1;
    }