2025-07-23 04:17:47 -04:00
|
|
|
// ASS Utilities - Advanced server features
|
|
|
|
Database Ass_Database_ServerMetrics;
|
|
|
|
void Set_Ass_Database_ServerMetrics(Database db) {
|
|
|
|
Ass_Database_ServerMetrics = db;
|
|
|
|
}
|
|
|
|
Database Get_Ass_Database_ServerMetrics() {
|
|
|
|
return Ass_Database_ServerMetrics;
|
|
|
|
}
|
|
|
|
//Gets the server time as an int array, 0 = hour, 1 = minute, 2 = AM/PM(0/1 respectively)
|
|
|
|
void GetServerTime(int retVal[3]) {
|
|
|
|
char buffer[8];
|
|
|
|
FormatTime(buffer, sizeof(buffer), "%I", GetTime());
|
|
|
|
int hour = StringToInt(buffer);
|
|
|
|
FormatTime(buffer, sizeof(buffer), "%M", GetTime());
|
|
|
|
int minute = StringToInt(buffer);
|
|
|
|
FormatTime(buffer, sizeof(buffer), "%p", GetTime());
|
|
|
|
int ampm = (StrEqual(buffer, "AM")) ? 0 : 1;
|
|
|
|
retVal[0] = hour;
|
|
|
|
retVal[1] = minute;
|
|
|
|
retVal[2] = ampm;
|
|
|
|
}
|
|
|
|
//Gets the server stats and display it in the server
|
|
|
|
public Action StatsTracker(Handle timer) {
|
|
|
|
int time[3];
|
|
|
|
GetServerTime(time);
|
|
|
|
char hour[4], minute[4], ampm[4];
|
|
|
|
Format(hour, sizeof(hour), "%i", time[0]);
|
|
|
|
Format(minute, sizeof(minute), "%i", time[1]);
|
|
|
|
Format(ampm, sizeof(ampm), "%i", time[2]);
|
|
|
|
FastFire2("FBMetric.TimeHH", "SetTextureIndex", hour, 0.0, false);
|
|
|
|
FastFire2("FBMetric.TimeMM", "SetTextureIndex", minute, 0.0, false);
|
|
|
|
FastFire2("FBMetric.TimeAMPM", "SetTextureIndex", ampm, 0.0, false);
|
2025-08-19 01:58:06 -04:00
|
|
|
//PrintToChatAll("Current time is %s:%s %s", hour, minute, StringToInt(ampm) == 0 ? "AM" : "PM");
|
2025-07-23 04:17:47 -04:00
|
|
|
CreateTimer(15.0, StatsTracker);
|
|
|
|
if (!Get_Ass_Database()) return Plugin_Stop;
|
|
|
|
char query[512];
|
|
|
|
query[0] = '\0'; // Clear buffer
|
|
|
|
StrCat(query, sizeof(query), "SELECT 'memory_used_gib' AS name, value FROM memory_used_gib WHERE id = 1 ");
|
|
|
|
StrCat(query, sizeof(query), "UNION ALL SELECT 'memory_total_gib', value FROM memory_total_gib WHERE id = 1 ");
|
|
|
|
StrCat(query, sizeof(query), "UNION ALL SELECT 'cpu_usage_percent', value FROM cpu_usage_percent WHERE id = 1 ");
|
|
|
|
StrCat(query, sizeof(query), "UNION ALL SELECT 'cpu_frequency_x10', value FROM cpu_frequency_x10 WHERE id = 1 ");
|
|
|
|
StrCat(query, sizeof(query), "UNION ALL SELECT 'cpu_temperature_c', value FROM cpu_temperature_c WHERE id = 1");
|
|
|
|
SQL_TQuery(Ass_Database_ServerMetrics, OnMetricsFetch, query);
|
|
|
|
return Plugin_Stop;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void OnMetricsFetch(Database db, DBResultSet results, const char[] error, any data)
|
|
|
|
{
|
|
|
|
if (results == null)
|
|
|
|
{
|
|
|
|
LogError("Stat fetch failed: %s", error);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
while (results.FetchRow())
|
|
|
|
{
|
|
|
|
char name[32];
|
|
|
|
int value;
|
|
|
|
results.FetchString(0, name, sizeof(name));
|
|
|
|
value = results.FetchInt(1);
|
|
|
|
char val[32];
|
|
|
|
if (StrEqual(name, "memory_used_gib")) {
|
|
|
|
Format(val, sizeof(val), "%i", value);
|
|
|
|
FastFire2("FBMetric.RAMUtil", "SetTextureIndex", val, 0.0, false);
|
|
|
|
} else if (StrEqual(name, "memory_total_gib")) {
|
|
|
|
Format(val, sizeof(val), "%i", value);
|
|
|
|
FastFire2("FBMetric.RAMTotal", "SetTextureIndex", val, 0.0, false);
|
|
|
|
} else if (StrEqual(name, "cpu_usage_percent")) {
|
|
|
|
Format(val, sizeof(val), "%i", value);
|
|
|
|
FastFire2("FBMetric.CPUUtil", "SetTextureIndex", val, 0.0, false);
|
|
|
|
//PrintToServer("CPU Usage: %d%%", value);
|
|
|
|
} else if (StrEqual(name, "cpu_frequency_x10")) {
|
|
|
|
Format(val, sizeof(val), "%i", value);
|
|
|
|
FastFire2("FBMetric.CPUFreq", "SetTextureIndex", val, 0.0, false);
|
|
|
|
//PrintToServer("CPU Freq: %.1f GHz", value / 10.0);
|
|
|
|
} else if (StrEqual(name, "cpu_temperature_c")) {
|
|
|
|
Format(val, sizeof(val), "%i", value);
|
|
|
|
FastFire2("FBMetric.CPUTemp", "SetTextureIndex", val, 0.0, false);
|
|
|
|
//PrintToServer("CPU Temp: %d°C", value);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FastFire2("FBMetrics.*", "Enable", "", 0.0, false);
|
|
|
|
}
|