Hallo Brotfische,
Ich habe folgedes Problem: Ich wollte wenn man immer an einer stelle steht, und nichts mach, nach einer Zeit gekickt wird, leider geht das aber nicht.
Codes:
#define AntiAFK_Timer 60000
forward AlleSpielerKontrollieren();
forward SpielerKontrollieren(playerid);
new Float:AlteSpielerPos[MAX_PLAYERS][3];
new IsAFK[MAX_PLAYER_NAME];
new bool:SpielerIstAFK[MAX_PLAYERS];
new bool:IstSpielerGespawnt[MAX_PLAYERS];
//unter OnGameModeInit
SetTimer("AlleSpielerKontrollieren", AntiAFK_Timer, 0);
//Befehle
ocmd:afk(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
if(SpielerIstAFK[playerid] == false)
{
new sttl[228];
SpielerIstAFK[playerid] = true;
TogglePlayerControllable(playerid,0);
IsAFK[playerid] = 1;
SendClientMessage(playerid,0xFF1E00FF,"Du hast dich in den AFK-Modus begeben!");
format(sttl, sizeof(sttl), "** %s ist nun abwesend. **", getPlayerName(playerid));
SendClientMessageToAll(0xF0F0F0FF, sttl);
SendClientMessage(playerid,0xFF1E00FF,"um AFK wieder Zu verlassen nutze /back");
}
else
{
SendClientMessage(playerid,0xFF1E00FF,"Du befindest dich schon im AFK-Modus Nutze /back!");
return 1;
}
}
return 1;
}
ocmd:back(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
if(SpielerIstAFK[playerid] == true)
{
new str[128];
SpielerIstAFK[playerid] = false;
TogglePlayerControllable(playerid,1);
IsAFK[playerid] = 0;
SendClientMessage(playerid,0xF0F0F0FF,"Du bist aus dem AFK-Modus zurückgekehrt!");
format(str, sizeof(str), "** %s ist nun wieder anwesend. **", getPlayerName(playerid));
SendClientMessageToAll(0xF0F0F0FF, str);
}
else
{
SendClientMessage(playerid,0xF0F0F0FF,"Du befindest dich nicht im AFK-Modus!");
}
}
return 1;
}
//Spieler laden
IsAFK[playerid] = 0;
SpielerIstAFK[playerid] = false;
//public´s
public AlleSpielerKontrollieren()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IstSpielerGespawnt[i] == true)
{
if(!IsPlayerNPC(i))
{
new Float:PositionX, Float:PositionY, Float:PositionZ;
GetPlayerPos(i, PositionX, PositionY, PositionZ);
if(PositionX == AlteSpielerPos[i][0] && PositionY == AlteSpielerPos[i][1] && PositionZ == AlteSpielerPos[i][2])
{
SendClientMessage(i,C_Error, "AntiAFK: Du wirst in 10 Sekunden gekickt, wenn du nicht wieder am Spiel teilnimmst."); // Rot
SetTimerEx("SpielerKontrollieren", 10000, 0, "i", i); //10000 ms = 10 Sekunden
}
AlteSpielerPos[i][0] = PositionX;
AlteSpielerPos[i][1] = PositionY;
AlteSpielerPos[i][2] = PositionZ;
}
}
}
return 1;
}
public SpielerKontrollieren(playerid)
{
if(IsPlayerConnected(playerid) && IstSpielerGespawnt[playerid] == true)
{
if(!IsPlayerNPC(playerid))
{
new AntiAFKMessage[128];
new Float:PositionX, Float:PositionY, Float:PositionZ;
GetPlayerPos(playerid, PositionX, PositionY, PositionZ);
if(PositionX == AlteSpielerPos[playerid][0] && PositionY == AlteSpielerPos[playerid][1] && PositionZ == AlteSpielerPos[playerid][2])
{
SendClientMessage(playerid, C_Error, "AntiAFK: Wegen Untätigkeit gekickt!");
format(AntiAFKMessage, sizeof(AntiAFKMessage), "AntiAFK: %s wurde wegen Untätigkeit gekickt!", getPlayerName(playerid));
SendClientMessageToAll(C_Error, AntiAFKMessage);
Kick(playerid);
}
}
}
return 1;
}
Ich hoffe es kann mir jemand helfen
MFG German_ScripterHD