From 860891293f5338566be5c8d4caf25d5d85d7b7a3 Mon Sep 17 00:00:00 2001 From: ecv Date: Mon, 24 Nov 2025 16:00:35 +0100 Subject: [PATCH] Logging now works in telnet --- CHRANIBotTNG/CHRANIBotTNG.dll | Bin 13312 -> 13312 bytes CHRANIBotTNG/ModInfo.xml | 2 +- Harmony/CHRANIBotTNG.cs | 40 +++++++++++++++++----------------- build.sh | 1 + 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/CHRANIBotTNG/CHRANIBotTNG.dll b/CHRANIBotTNG/CHRANIBotTNG.dll index 4fef98c9ea1af926fbf296f3034f67126fd899ce..f5b2cc3d254313fbe0bdb14098c3e030164c6297 100644 GIT binary patch delta 5155 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 delta 5047 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 diff --git a/CHRANIBotTNG/ModInfo.xml b/CHRANIBotTNG/ModInfo.xml index 18e6376..baa8dbb 100644 --- a/CHRANIBotTNG/ModInfo.xml +++ b/CHRANIBotTNG/ModInfo.xml @@ -4,6 +4,6 @@ - + \ No newline at end of file diff --git a/Harmony/CHRANIBotTNG.cs b/Harmony/CHRANIBotTNG.cs index 82c7a59..fd06229 100644 --- a/Harmony/CHRANIBotTNG.cs +++ b/Harmony/CHRANIBotTNG.cs @@ -14,7 +14,7 @@ public class CHRANIBotTNG : IModApi public void InitMod(Mod _modInstance) { - Console.WriteLine("[CHRANIBotTNG] Loading"); + Log.Out("[CHRANIBotTNG] Loading"); modPath = _modInstance.Path; @@ -28,7 +28,7 @@ public class CHRANIBotTNG : IModApi var harmony = new Harmony("com.chranibottng.mod"); harmony.PatchAll(Assembly.GetExecutingAssembly()); - Console.WriteLine($"[CHRANIBotTNG] Loaded - {MutedPlayers.Count} muted players, {AdminManager.GetAdminCount()} admins"); + Log.Out($"[CHRANIBotTNG] Loaded - {MutedPlayers.Count} muted players, {AdminManager.GetAdminCount()} admins"); } } @@ -46,7 +46,6 @@ public static class MuteStorage Directory.CreateDirectory(dataDir); } muteFilePath = Path.Combine(dataDir, "muted_players.json"); - Console.WriteLine($"[MuteStorage] Initialized: {muteFilePath}"); } public static HashSet LoadMutedPlayers() @@ -59,7 +58,7 @@ public static class MuteStorage { string json = File.ReadAllText(muteFilePath); var players = ParseJsonArray(json); - Console.WriteLine($"[MuteStorage] Loaded {players.Count} muted players"); + Log.Out($"[CHRANIBotTNG] Loaded {players.Count} muted players"); return players; } } @@ -79,7 +78,7 @@ public static class MuteStorage { string json = ToJsonArray(players); File.WriteAllText(muteFilePath, json); - Console.WriteLine($"[MuteStorage] Saved {players.Count} muted players"); + Log.Out($"[CHRANIBotTNG] Saved {players.Count} muted players"); } catch (Exception e) { @@ -218,22 +217,23 @@ public static class AdminManager { try { + var permStr = ""; XDocument doc = XDocument.Load(serverAdminPath); adminSteamIDs = doc.Descendants("user") .Where(u => { - var permStr = u.Attribute("permission_level")?.Value; + permStr = u.Attribute("permission_level")?.Value; return int.TryParse(permStr, out int perm) && perm < 1000; }) .Select(u => u.Attribute("userid")?.Value) .Where(id => !string.IsNullOrEmpty(id)) .ToHashSet(); - Console.WriteLine($"[AdminManager] Loaded {adminSteamIDs.Count} admins (permission < 1000)"); + Log.Out($"[CHRANIBotTNG] Loaded {adminSteamIDs.Count} admins (permission < 1000)"); foreach (var id in adminSteamIDs) { - Console.WriteLine($" Admin: {id}"); + Log.Out($"[CHRANIBotTNG] Admin: {id} ({permStr})"); } } catch (Exception e) @@ -249,7 +249,7 @@ public static class AdminManager DumpObject(_cInfo); string steamId = _cInfo.PlatformId.ReadablePlatformUserIdentifier; - Console.WriteLine($"[AdminManager] Checking admin-permissions for user: {steamId}"); + Log.Out($"[CHRANIBotTNG] Checking admin-permissions for user: {steamId}"); // Try exact match first if (adminSteamIDs.Contains(steamId)) @@ -275,7 +275,7 @@ public static class AdminManager { if (serverAdminPath != null) { - Console.WriteLine("[AdminManager] Reloading serveradmin.xml"); + Log.Out($"[CHRANIBotTNG] Reloading serveradmin.xml"); LoadAdmins(); } } @@ -345,14 +345,14 @@ public class ChatMessagePatch // Check if user is admin if (!AdminManager.IsAdmin(_cInfo)) { - Console.WriteLine($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to mute - denied"); + Log.Out($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to mute - denied"); } else { string targetId = parts[2]; CHRANIBotTNG.MutedPlayers.Add(targetId); MuteStorage.SaveMutedPlayers(CHRANIBotTNG.MutedPlayers); - Console.WriteLine($"[CHRANIBotTNG] Admin {_cInfo?.playerName} muted: {targetId}"); + Log.Out($"[CHRANIBotTNG] Admin {_cInfo?.playerName} muted: {targetId}"); } } else if (parts.Length >= 3 && parts[1].ToLower() == "unmute") @@ -360,7 +360,7 @@ public class ChatMessagePatch // Check if user is admin if (!AdminManager.IsAdmin(_cInfo)) { - Console.WriteLine($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to unmute - denied"); + Log.Out($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to unmute - denied"); } else { @@ -368,11 +368,11 @@ public class ChatMessagePatch if (CHRANIBotTNG.MutedPlayers.Remove(targetId)) { MuteStorage.SaveMutedPlayers(CHRANIBotTNG.MutedPlayers); - Console.WriteLine($"[CHRANIBotTNG] Admin {_cInfo?.playerName} unmuted: {targetId}"); + Log.Out($"[CHRANIBotTNG] Admin {_cInfo?.playerName} unmuted: {targetId}"); } else { - Console.WriteLine($"[CHRANIBotTNG] Player was not muted: {targetId}"); + Log.Out($"[CHRANIBotTNG] Player was not muted: {targetId}"); } } } @@ -381,14 +381,14 @@ public class ChatMessagePatch // Show muted players list if (!AdminManager.IsAdmin(_cInfo)) { - Console.WriteLine($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to view mutelist - denied"); + Log.Out($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to view mutelist - denied"); } else { - Console.WriteLine($"[CHRANIBotTNG] Muted players ({CHRANIBotTNG.MutedPlayers.Count}):"); + Log.Out($"[CHRANIBotTNG] Muted players ({CHRANIBotTNG.MutedPlayers.Count}):"); foreach (var muted in CHRANIBotTNG.MutedPlayers) { - Console.WriteLine($" - {muted}"); + Log.Out($"[CHRANIBotTNG] {muted}"); } } } @@ -397,12 +397,12 @@ public class ChatMessagePatch // Reload serveradmin.xml if (!AdminManager.IsAdmin(_cInfo)) { - Console.WriteLine($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to reload - denied"); + Log.Out($"[CHRANIBotTNG] Non-admin {_cInfo?.playerName} tried to reload - denied"); } else { AdminManager.Reload(); - Console.WriteLine($"[CHRANIBotTNG] Admin {_cInfo?.playerName} reloaded serveradmin.xml"); + Log.Out($"[CHRANIBotTNG] Admin {_cInfo?.playerName} reloaded serveradmin.xml"); } } diff --git a/build.sh b/build.sh index 49c3519..9d12bdf 100755 --- a/build.sh +++ b/build.sh @@ -8,6 +8,7 @@ csc -target:library \ -out:CHRANIBotTNG/CHRANIBotTNG.dll \ -nostdlib \ -r:"$GAME_DIR/7DaysToDie_Data/Managed/mscorlib.dll" \ + -r:"$GAME_DIR/7DaysToDie_Data/Managed/LogLibrary.dll" \ -r:"$GAME_DIR/7DaysToDie_Data/Managed/netstandard.dll" \ -r:"$GAME_DIR/7DaysToDie_Data/Managed/System.dll" \ -r:"$GAME_DIR/7DaysToDie_Data/Managed/System.Core.dll" \