From 8da9538f24669c0975fd1e46ad4989f30783ebe9 Mon Sep 17 00:00:00 2001 From: Dogan Date: Mon, 28 Jan 2019 01:14:11 +0100 Subject: [PATCH] new plugin: AdminActivity a lot of improvements will follow --- AdminActivity/scripting/AdminActivity.sp | 78 ++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 AdminActivity/scripting/AdminActivity.sp diff --git a/AdminActivity/scripting/AdminActivity.sp b/AdminActivity/scripting/AdminActivity.sp new file mode 100644 index 0000000..2408a4a --- /dev/null +++ b/AdminActivity/scripting/AdminActivity.sp @@ -0,0 +1,78 @@ +#pragma semicolon 1 + +#include + +#include "loghelper.inc" + +#pragma newdecls required + +float g_fAdminConnectionTime[MAXPLAYERS + 1]; +char g_cAdminName[MAXPLAYERS + 1][128]; +char g_cAdminSteamID[MAXPLAYERS + 1][128]; +AdminId g_AdminID[MAXPLAYERS + 1]; +char g_cAdminActivityFile[128]; + +public Plugin myinfo = +{ + name = "AdminActivity", + author = "Dogan", + description = "Log Admin Activity", + version = "1.0.0" +}; + +public void OnPluginStart() +{ + CreateTimer(30.0, CheckConnectionTime, _, TIMER_REPEAT); + + BuildPath(Path_SM, g_cAdminActivityFile, sizeof(g_cAdminActivityFile), "logs/adminactivity/AdminActivity.txt"); + + HookEvent("player_disconnect", EventHook_PlayerDisconnect, EventHookMode_Post); +} + +public void OnPluginEnd() +{ + UnhookEvent("player_disconnect", EventHook_PlayerDisconnect, EventHookMode_Post); +} + +public void OnMapStart() +{ + GetTeams(); +} + +public void EventHook_PlayerDisconnect(Event hEvent, const char[] sName, bool bDontBroadcast) +{ + bool bIsBot = view_as(hEvent.GetInt("bot")); + + if (bIsBot) + return; + + int client = GetClientOfUserId(hEvent.GetInt("userid")); + + g_AdminID[client] = GetUserAdmin(client); + + if (GetAdminFlag(g_AdminID[client], Admin_Generic)) + { + GetClientAuthId(client, AuthId_Steam2, g_cAdminSteamID[client], 128); + GetClientName(client, g_cAdminName[client], 128); + LogToFile(g_cAdminActivityFile, "%s %s Time in Minutes: %f", g_cAdminName[client], g_cAdminSteamID[client], g_fAdminConnectionTime[client] / 60.0); + g_fAdminConnectionTime[client] = 0.0; + } +} + +public Action CheckConnectionTime(Handle hThis) +{ + for (int i = 1; i <= MaxClients; i++) + { + if (IsValidClient(i) && GetAdminFlag(g_AdminID[i], Admin_Generic)) + continue; + + g_AdminID[i] = GetUserAdmin(i); + + g_fAdminConnectionTime[i] += 30.0; + } +} + +stock bool IsValidClient(int client) +{ + return (client >= 1 && client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client)); +} \ No newline at end of file