AfkManager: fixed bugs, teleports don't un-afk anymore.

This commit is contained in:
BotoX 2016-08-10 00:56:36 +02:00
parent 7193354b58
commit 2dea599894

View File

@ -1,9 +1,10 @@
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <cstrike>
#pragma semicolon 1
#pragma newdecls required
#define AFK_CHECK_INTERVAL 5.0
bool g_Players_bEnabled[MAXPLAYERS + 1];
@ -13,6 +14,7 @@ float g_Players_fEyePosition[MAXPLAYERS + 1][3];
int g_Players_iButtons[MAXPLAYERS + 1];
int g_Players_iSpecMode[MAXPLAYERS + 1];
int g_Players_iSpecTarget[MAXPLAYERS + 1];
bool g_Players_bTeleported[MAXPLAYERS + 1];
float g_fKickTime;
float g_fMoveTime;
@ -26,33 +28,33 @@ public Plugin myinfo =
name = "Good AFK Manager",
author = "BotoX",
description = "A good AFK manager?",
version = "1.1",
version = "1.2",
url = ""
};
public void Cvar_KickTime(Handle:cvar, const char[] oldvalue, const char[] newvalue)
public void Cvar_KickTime(ConVar convar, const char[] oldValue, const char[] newValue)
{
g_fKickTime = GetConVarFloat(cvar);
g_fKickTime = GetConVarFloat(convar);
}
public void Cvar_MoveTime(Handle:cvar, const char[] oldvalue, const char[] newvalue)
public void Cvar_MoveTime(ConVar convar, const char[] oldValue, const char[] newValue)
{
g_fMoveTime = GetConVarFloat(cvar);
g_fMoveTime = GetConVarFloat(convar);
}
public void Cvar_WarnTime(Handle:cvar, const char[] oldvalue, const char[] newvalue)
public void Cvar_WarnTime(ConVar convar, const char[] oldValue, const char[] newValue)
{
g_fWarnTime = GetConVarFloat(cvar);
g_fWarnTime = GetConVarFloat(convar);
}
public void Cvar_KickMinPlayers(Handle:cvar, const char[] oldvalue, const char[] newvalue)
public void Cvar_KickMinPlayers(ConVar convar, const char[] oldValue, const char[] newValue)
{
g_iKickMinPlayers = GetConVarInt(cvar);
g_iKickMinPlayers = GetConVarInt(convar);
}
public void Cvar_MoveMinPlayers(Handle:cvar, const char[] oldvalue, const char[] newvalue)
public void Cvar_MoveMinPlayers(ConVar convar, const char[] oldValue, const char[] newValue)
{
g_iMoveMinPlayers = GetConVarInt(cvar);
g_iMoveMinPlayers = GetConVarInt(convar);
}
public void Cvar_Immunity(Handle:cvar, const char[] oldvalue, const char[] newvalue)
public void Cvar_Immunity(ConVar convar, const char[] oldValue, const char[] newValue)
{
g_iImmunity = GetConVarInt(cvar);
g_iImmunity = GetConVarInt(convar);
}
public void OnPluginStart()
@ -82,12 +84,25 @@ public void OnPluginStart()
AddCommandListener(Command_Say, "say_team");
HookEvent("player_team", Event_PlayerTeamPost, EventHookMode_Post);
HookEntityOutput("trigger_teleport", "OnEndTouch", Teleport_OnEndTouch);
AutoExecConfig(true, "plugin.AfkManager");
}
public void OnMapStart()
{
CreateTimer(AFK_CHECK_INTERVAL, Timer_CheckPlayer, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
/* Handle late load */
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientConnected(i))
{
OnClientConnected(i);
if(IsClientInGame(i) && IsClientAuthorized(i))
OnClientPostAdminCheck(i);
}
}
}
int CheckAdminImmunity(int Index)
@ -104,10 +119,11 @@ void ResetPlayer(int Index)
g_Players_bEnabled[Index] = false;
g_Players_bFlagged[Index] = false;
g_Players_iLastAction[Index] = 0;
g_Players_fEyePosition[Index] = Float:{0.0, 0.0, 0.0};
g_Players_fEyePosition[Index] = view_as<float>({0.0, 0.0, 0.0});
g_Players_iButtons[Index] = 0;
g_Players_iSpecMode[Index] = 0;
g_Players_iSpecTarget[Index] = 0;
g_Players_bTeleported[Index] = false;
}
void InitializePlayer(int Index)
@ -143,7 +159,7 @@ public Action Event_PlayerTeamPost(Handle event, const char[] name, bool dontBro
g_Players_iLastAction[Index] = GetTime();
}
public Action Command_Say(Index, const char[] Command, Args)
public Action Command_Say(int Index, const char[] Command, int Args)
{
g_Players_iLastAction[Index] = GetTime();
}
@ -156,7 +172,12 @@ public Action OnPlayerRunCmd(int Index, int &iButtons, int &iImpulse, float fVel
&& g_Players_iSpecMode[Index] != 4) // OBS_MODE_IN_EYE
{
if(!((iButtons & IN_LEFT) || (iButtons & IN_RIGHT)))
g_Players_iLastAction[Index] = GetTime();
{
if(!g_Players_bTeleported[Index])
g_Players_iLastAction[Index] = GetTime();
g_Players_bTeleported[Index] = true;
}
g_Players_fEyePosition[Index] = fAngles;
}
@ -170,6 +191,16 @@ public Action OnPlayerRunCmd(int Index, int &iButtons, int &iImpulse, float fVel
return Plugin_Continue;
}
public Action Teleport_OnEndTouch(const char[] output, int caller, int activator, float delay)
{
if(activator < 1 || activator > MaxClients)
return Plugin_Continue;
g_Players_bTeleported[activator] = true;
return Plugin_Continue;
}
public Action Timer_CheckPlayer(Handle Timer, any Data)
{
int Index;