v1.3.2-debug: временный диагностический вывод

Печатает в чат админу значения IsRegularAdmin/AllowedGroup/flags.
Пишет в стандартный SM лог (L<date>.log) для гарантированной видимости.
This commit is contained in:
deidara
2026-05-01 16:23:28 +03:00
parent 4cc453722e
commit 695b3f38ee
+23 -11
View File
@@ -24,7 +24,7 @@ public Plugin myinfo =
name = "Super Admin Menu", name = "Super Admin Menu",
author = "OpenAI + deidara.dev", author = "OpenAI + deidara.dev",
description = "Единое супер-админ меню по команде sm_sadmin", description = "Единое супер-админ меню по команде sm_sadmin",
version = "1.3.1" version = "1.3.2-debug"
}; };
public void OnPluginStart() public void OnPluginStart()
@@ -1339,21 +1339,19 @@ bool IsValidClient(int client)
return (client > 0 && client <= MaxClients && IsClientInGame(client)); return (client > 0 && client <= MaxClients && IsClientInGame(client));
} }
// Логируем действие обычного админа в файл addons/sourcemod/logs/super_admin_menu.log. // Логируем действие админа. Действия обычного админа -> в super_admin_menu.log.
// Действия DEIDARA/TESTER не логируются. // Все действия (любого админа) -> в стандартный SM лог (L<date>.log) для отладки.
void LogAdminAction(int client, int target, const char[] format, any ...) void LogAdminAction(int client, int target, const char[] format, any ...)
{ {
if (!IsRegularAdmin(client))
return;
char message[256]; char message[256];
VFormat(message, sizeof(message), format, 4); VFormat(message, sizeof(message), format, 4);
char path[PLATFORM_MAX_PATH]; bool isReg = IsRegularAdmin(client);
BuildPath(Path_SM, path, sizeof(path), "logs/super_admin_menu.log"); bool isAllowed = IsClientInAllowedGroup(client);
int flags = GetUserFlagBits(client);
char timestamp[32]; // [DEBUG] показываем в чате что произошло
FormatTime(timestamp, sizeof(timestamp), "%Y-%m-%d %H:%M:%S"); PrintToChat(client, "\x04[SADMIN-DBG]\x01 isReg=%d allowedGroup=%d flags=%d", isReg, isAllowed, flags);
char adminName[MAX_NAME_LENGTH], adminSteam[32]; char adminName[MAX_NAME_LENGTH], adminSteam[32];
GetClientName(client, adminName, sizeof(adminName)); GetClientName(client, adminName, sizeof(adminName));
@@ -1374,6 +1372,20 @@ void LogAdminAction(int client, int target, const char[] format, any ...)
strcopy(targetInfo, sizeof(targetInfo), "UNKNOWN"); strcopy(targetInfo, sizeof(targetInfo), "UNKNOWN");
} }
// LogToFileEx — родной механизм SourceMod, без префиксов и автосоздания файла // [DEBUG] всегда пишем в стандартный SM лог (L<date>.log) — этот файл точно существует
LogMessage("[super_admin_menu DEBUG] isReg=%d allowedGroup=%d flags=%d | %s (%s) -> %s на игроке %s",
isReg, isAllowed, flags, adminName, adminSteam, message, targetInfo);
if (!isReg)
return;
char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/super_admin_menu.log");
char timestamp[32];
FormatTime(timestamp, sizeof(timestamp), "%Y-%m-%d %H:%M:%S");
PrintToChat(client, "\x04[SADMIN-DBG]\x01 пишу в %s", path);
LogToFileEx(path, "[%s] %s (%s) -> %s на игроке %s", timestamp, adminName, adminSteam, message, targetInfo); LogToFileEx(path, "[%s] %s (%s) -> %s на игроке %s", timestamp, adminName, adminSteam, message, targetInfo);
} }