From d641b036f962dee58fb9115aff51d38bbc48dd0b Mon Sep 17 00:00:00 2001 From: deidara Date: Fri, 1 May 2026 16:34:59 +0300 Subject: [PATCH] =?UTF-8?q?v1.3.2:=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20debu?= =?UTF-8?q?g-=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4,=20=D0=BE=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D1=87=D0=B8=D1=81=D1=82=D1=8B=D0=B9?= =?UTF-8?q?=20LogToFileEx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- scripting/super_admin_menu.sp | 25 ++++++------------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 4d93c0f..ece993f 100644 --- a/README.md +++ b/README.md @@ -74,11 +74,11 @@ addons/sourcemod/logs/super_admin_menu.log ## Версия -`1.3.1` — Автор: OpenAI + deidara.dev +`1.3.2` — Автор: OpenAI + deidara.dev ### Changelog -- **1.3.1** +- **1.3.2** - Логирование переведено с `OpenFile` на `LogToFileEx` — родной механизм SourceMod, надёжно работает на shared-хостингах (MyArena и т.п.) - **1.3** - Разграничение прав: обычные админы (флаги `a`–`j`, без `z`) теперь имеют доступ только к меню «Эффекты игрока» diff --git a/scripting/super_admin_menu.sp b/scripting/super_admin_menu.sp index e1d2f22..17335c1 100644 --- a/scripting/super_admin_menu.sp +++ b/scripting/super_admin_menu.sp @@ -24,7 +24,7 @@ public Plugin myinfo = name = "Super Admin Menu", author = "OpenAI + deidara.dev", description = "Единое супер-админ меню по команде sm_sadmin", - version = "1.3.2-debug" + version = "1.3.2" }; public void OnPluginStart() @@ -1339,20 +1339,16 @@ bool IsValidClient(int client) return (client > 0 && client <= MaxClients && IsClientInGame(client)); } -// Логируем действие админа. Действия обычного админа -> в super_admin_menu.log. -// Все действия (любого админа) -> в стандартный SM лог (L.log) для отладки. +// Логируем действие обычного админа в файл addons/sourcemod/logs/super_admin_menu.log. +// Действия DEIDARA/TESTER не логируются. void LogAdminAction(int client, int target, const char[] format, any ...) { + if (!IsRegularAdmin(client)) + return; + char message[256]; VFormat(message, sizeof(message), format, 4); - bool isReg = IsRegularAdmin(client); - bool isAllowed = IsClientInAllowedGroup(client); - int flags = GetUserFlagBits(client); - - // [DEBUG] показываем в чате что произошло - PrintToChat(client, "\x04[SADMIN-DBG]\x01 isReg=%d allowedGroup=%d flags=%d", isReg, isAllowed, flags); - char adminName[MAX_NAME_LENGTH], adminSteam[32]; GetClientName(client, adminName, sizeof(adminName)); if (!GetClientAuthId(client, AuthId_Steam2, adminSteam, sizeof(adminSteam))) @@ -1372,20 +1368,11 @@ void LogAdminAction(int client, int target, const char[] format, any ...) strcopy(targetInfo, sizeof(targetInfo), "UNKNOWN"); } - // [DEBUG] всегда пишем в стандартный SM лог (L.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); } \ No newline at end of file