added feature requested by bigode

This commit is contained in:
jenz 2023-04-23 20:21:28 +02:00
parent 63585069d1
commit 901cc232eb

View File

@ -22,6 +22,9 @@ public Plugin myinfo =
url = "www.unloze.com" url = "www.unloze.com"
}; };
//timer
Handle g_hTimer_avg_hour_count = null;
public Action time_query_activity(Handle timer, any data) public Action time_query_activity(Handle timer, any data)
{ {
if (!g_hDatabase) if (!g_hDatabase)
@ -85,6 +88,22 @@ public void OnPluginStart()
HookConVarChange((cvar = CreateConVar("sm_mapchooser_afk_detect_time", "120", "Time in seconds until a player is considered as AFK and therefore excluded from player average time.")), Cvar_playerAFKTime); HookConVarChange((cvar = CreateConVar("sm_mapchooser_afk_detect_time", "120", "Time in seconds until a player is considered as AFK and therefore excluded from player average time.")), Cvar_playerAFKTime);
g_iPlayerAFKTime = cvar.IntValue; g_iPlayerAFKTime = cvar.IntValue;
delete cvar; delete cvar;
g_hTimer_avg_hour_count = CreateTimer(1800.0, log_average_hour_count, _, TIMER_REPEAT);
}
public Action log_average_hour_count(Handle timer, any data)
{
int i_port = GetConVarInt(FindConVar("hostport"));
int avg_hour = GetAveragePlayerActiveTimeServer();
if (!g_hDatabase)
{
Database.Connect(SQL_OnDatabaseConnect, "unloze_playtimestats");
return Plugin_Handled;
}
char sQuery[512];
Format(sQuery, sizeof(sQuery), "INSERT INTO `average_hours` (`avg_hour`, `server_port`) VALUES ('%i', '%i')", avg_hour, i_port);
g_hDatabase.Query(SQL_FinishedQuery, sQuery, _, DBPrio_Low);
return Plugin_Continue;
} }
public void Cvar_playerAFKTime(ConVar convar, const char[] oldValue, const char[] newValue) public void Cvar_playerAFKTime(ConVar convar, const char[] oldValue, const char[] newValue)
@ -98,7 +117,7 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char [] error, int err_ma
return APLRes_Success; return APLRes_Success;
} }
public int Native_GetAveragePlayerActiveTimeServer(Handle plugin, int numParams) public int GetAveragePlayerActiveTimeServer()
{ {
int total_hours = 0; int total_hours = 0;
int total_players = 0; int total_players = 0;
@ -116,10 +135,19 @@ public int Native_GetAveragePlayerActiveTimeServer(Handle plugin, int numParams)
} }
return total_hours / total_players; return total_hours / total_players;
} }
public int Native_GetAveragePlayerActiveTimeServer(Handle plugin, int numParams)
{
return GetAveragePlayerActiveTimeServer();
}
public void OnPluginEnd() public void OnPluginEnd()
{ {
if (g_h_time_activity != null) if (g_h_time_activity != null)
delete g_h_time_activity; delete g_h_time_activity;
if (g_hTimer_avg_hour_count != null)
{
delete g_hTimer_avg_hour_count;
}
} }
public void SQL_OnDatabaseConnect(Database db, const char[] error, any data) public void SQL_OnDatabaseConnect(Database db, const char[] error, any data)
@ -245,11 +273,11 @@ public void insert_client(int client)
public void SQL_FinishedQuery(Database db, DBResultSet results, const char[] error, any data) public void SQL_FinishedQuery(Database db, DBResultSet results, const char[] error, any data)
{ {
if (!db || strlen(error)) if (!db || strlen(error))
{ {
LogError("Query error 3: %s", error); LogError("Query error 3: %s", error);
} }
delete results; delete results;
} }
stock bool IsValidClient(int client) stock bool IsValidClient(int client)
@ -261,37 +289,37 @@ stock bool IsValidClient(int client)
public void OnMapStart() public void OnMapStart()
{ {
if (!g_hDatabase) if (!g_hDatabase)
{ {
Database.Connect(SQL_OnDatabaseConnect, "unloze_playtimestats"); Database.Connect(SQL_OnDatabaseConnect, "unloze_playtimestats");
return; return;
} }
char sQuery[512]; char sQuery[512];
char sServer[32]; char sServer[32];
int i_port = GetConVarInt(FindConVar("hostport")); int i_port = GetConVarInt(FindConVar("hostport"));
if (i_port == 27015 || i_port == 27019) if (i_port == 27015 || i_port == 27019)
{ {
Format(sServer, sizeof(sServer), "ze_time"); Format(sServer, sizeof(sServer), "ze_time");
} }
else if (i_port == 27016) else if (i_port == 27016)
{ {
Format(sServer, sizeof(sServer), "zr_time"); Format(sServer, sizeof(sServer), "zr_time");
} }
else if (i_port == 27017) else if (i_port == 27017)
{ {
Format(sServer, sizeof(sServer), "mg_time"); Format(sServer, sizeof(sServer), "mg_time");
} }
else if (i_port == 27023) else if (i_port == 27023)
{ {
Format(sServer, sizeof(sServer), "jb_time"); Format(sServer, sizeof(sServer), "jb_time");
} }
else else
{ {
return; return;
} }
Format(sQuery, sizeof(sQuery), "select player_name, sum(%s) as %s_total from unloze_playtimestats.player_time GROUP BY steam_id order by %s_total desc limit 100", sServer, sServer, sServer); Format(sQuery, sizeof(sQuery), "select player_name, sum(%s) as %s_total from unloze_playtimestats.player_time GROUP BY steam_id order by %s_total desc limit 100", sServer, sServer, sServer);
g_hDatabase.Query(SQL_OnQueryCompletedTopTime, sQuery); g_hDatabase.Query(SQL_OnQueryCompletedTopTime, sQuery);
} }
public Action Command_TopTime(int client, int args) public Action Command_TopTime(int client, int args)