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?
~ grüße
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?
~ grüße
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;
}
Geht irgendwie nicht :X