inital commit
This commit is contained in:
125
afk4ever.sp
Normal file
125
afk4ever.sp
Normal file
@@ -0,0 +1,125 @@
|
||||
/* Plugin Template generated by Pawn Studio */
|
||||
|
||||
#include <sourcemod>
|
||||
#include <sdktools_functions>
|
||||
|
||||
new client_points[MAXPLAYERS];
|
||||
new spec_points[MAXPLAYERS];
|
||||
new Float:client_angels[MAXPLAYERS][3];
|
||||
new Handle:cv_pointlimit, Handle:cv_speclimit;
|
||||
|
||||
public Plugin:myinfo =
|
||||
{
|
||||
name = "AFK4ever",
|
||||
author = "Chefe",
|
||||
description = "Simple AFK kicker",
|
||||
version = "1.4",
|
||||
url = "www.chefgaming.de"
|
||||
}
|
||||
|
||||
public OnPluginStart()
|
||||
{
|
||||
CreateTimer(60.0, CheckClients, _, TIMER_REPEAT);
|
||||
cv_pointlimit = CreateConVar("sm_afk_pointlimit", "50", "Set the maximum point limit a active player can have before he get kicked");
|
||||
cv_speclimit = CreateConVar("sm_afk_speclimit", "100", "Set the maximum point limit a spectator can have before he get kicked");
|
||||
HookEvent("player_activate", Event_PlayerConnect);
|
||||
|
||||
AutoExecConfig(true);
|
||||
}
|
||||
|
||||
public Event_PlayerConnect(Handle:event, const String:name[], bool:dontBroadcast)
|
||||
{
|
||||
new uid = GetEventInt(event, "userid");
|
||||
new client = GetClientOfUserId(uid);
|
||||
|
||||
client_points[client] = 0;
|
||||
spec_points[client] = 0;
|
||||
}
|
||||
|
||||
public Action:CheckClients(Handle:timer)
|
||||
{
|
||||
new i = 1;
|
||||
while (i <= GetMaxClients())
|
||||
{
|
||||
if (IsClientInGame(i) && !IsClientBot(i) && !IsClientAdm(i) && !IsClientReplay(i))
|
||||
{
|
||||
if (IsClientActive(i) && IsPlayerAlive(i))
|
||||
{
|
||||
new Float:currentangels[3];
|
||||
GetClientEyeAngles(i, currentangels);
|
||||
|
||||
if (currentangels[0] == client_angels[i][0] && currentangels[1] == client_angels[i][1] && currentangels[2] == client_angels[i][2])
|
||||
{
|
||||
client_points[i] = client_points[i]+10;
|
||||
}
|
||||
else if (client_points[i] > 0)
|
||||
{
|
||||
client_points[i] = client_points[i]-10;
|
||||
}
|
||||
|
||||
spec_points[i] = 0;
|
||||
client_angels[i] = currentangels;
|
||||
|
||||
if (client_points[i] >= GetConVarInt(cv_pointlimit))
|
||||
{
|
||||
PrintToChatAll("\x04%N\x01 kicked out of the game for been afk too long", i);
|
||||
KickClient(i, "You have been kicked due beeing afk");
|
||||
}
|
||||
}
|
||||
else if (!IsClientActive(i))
|
||||
{
|
||||
spec_points[i] = spec_points[i]+10;
|
||||
|
||||
if (spec_points[i] >= GetConVarInt(cv_speclimit))
|
||||
{
|
||||
PrintToChatAll("\x04%N\x01 kicked out of the game for been afk too long", i);
|
||||
KickClient(i, "You have been kicked due beeing afk too long");
|
||||
}
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
IsClientBot(client)
|
||||
{
|
||||
if (IsClientInGame(client))
|
||||
{
|
||||
new String:auth[255];
|
||||
GetClientAuthString(client, auth, sizeof(auth));
|
||||
|
||||
if (strcmp(auth, "BOT", false) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
IsClientActive(client)
|
||||
{
|
||||
new team = GetClientTeam(client);
|
||||
|
||||
if (team == 2 || team == 3)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
IsClientAdm(client)
|
||||
{
|
||||
new AdminId:admid = GetUserAdmin(client);
|
||||
if (admid != INVALID_ADMIN_ID)
|
||||
{
|
||||
return GetAdminFlag(admid, AdminFlag:Admin_Custom1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user