Merge pull request #34 from EnhancedNetwork/dev

v1.1.4 Hotfix 1
This commit is contained in:
D1GQ authored and GitHub committed 2024-09-22 16:34:41 -05:00
commit 5a0ae1a09e
8 files changed
+61 -27

No files matched your search

+18 -1
View File
@@ -281,7 +281,7 @@ class AntiCheat
if (level + 1 > BetterGameSettings.DetectedLevelAbove.GetInt()) if (level + 1 > BetterGameSettings.DetectedLevelAbove.GetInt())
{ {
BetterNotificationManager.NotifyCheat(player, string.Format(Translator.GetString("InvalidLevelRPC"), level)); BetterNotificationManager.NotifyCheat(player, string.Format(Translator.GetString("AntiCheat.InvalidLevelRPC"), level));
Logger.LogCheat($"{player.BetterData().RealName} {Enum.GetName((RpcCalls)callId)}: {level > BetterGameSettings.DetectedLevelAbove.GetInt()} - {level} > {BetterGameSettings.DetectedLevelAbove.GetInt()}"); Logger.LogCheat($"{player.BetterData().RealName} {Enum.GetName((RpcCalls)callId)}: {level > BetterGameSettings.DetectedLevelAbove.GetInt()} - {level} > {BetterGameSettings.DetectedLevelAbove.GetInt()}");
} }
@@ -621,6 +621,22 @@ class AntiCheat
} }
} }
if (callId is (byte)RpcCalls.SendChatNote)
{
var type = reader.ReadByte();
if (!GameStates.IsMeeting || (ChatNoteTypes)type == ChatNoteTypes.DidVote && player.BetterData().AntiCheatInfo.ChatDidVote)
{
BetterNotificationManager.NotifyCheat(player, string.Format(Translator.GetString("AntiCheat.InvalidActionRPC"), Enum.GetName((RpcCalls)callId)));
Logger.LogCheat($"{player.BetterData().RealName} {Enum.GetName((RpcCalls)callId)}: {!GameStates.IsMeeting} || {(ChatNoteTypes)type == ChatNoteTypes.DidVote} && {player.BetterData().AntiCheatInfo.ChatDidVote}");
}
if ((ChatNoteTypes)type == ChatNoteTypes.DidVote)
{
player.BetterData().AntiCheatInfo.ChatDidVote = true;
}
}
if (callId is (byte)RpcCalls.Shapeshift) if (callId is (byte)RpcCalls.Shapeshift)
{ {
var target = reader.ReadNetObject<PlayerControl>(); var target = reader.ReadNetObject<PlayerControl>();
@@ -713,6 +729,7 @@ class AntiCheat
{ {
if (callId is (byte)RpcCalls.StartMeeting if (callId is (byte)RpcCalls.StartMeeting
or (byte)RpcCalls.ReportDeadBody or (byte)RpcCalls.ReportDeadBody
or (byte)RpcCalls.SendChatNote
or (byte)RpcCalls.CloseMeeting or (byte)RpcCalls.CloseMeeting
or (byte)RpcCalls.Exiled or (byte)RpcCalls.Exiled
or (byte)RpcCalls.CastVote or (byte)RpcCalls.CastVote
+6
View File
@@ -27,6 +27,7 @@ public static class PlayerControlDataExtension
public class ExtendedAntiCheatInfo public class ExtendedAntiCheatInfo
{ {
public bool BannedByAntiCheat { get; set; } = false; public bool BannedByAntiCheat { get; set; } = false;
public bool ChatDidVote { get; set; } = false;
public List<string> AUMChats { get; set; } = []; public List<string> AUMChats { get; set; } = [];
public int TimesAttemptedKilled { get; set; } = 0; public int TimesAttemptedKilled { get; set; } = 0;
public int OpenSabotageNum { get; set; } = 0; public int OpenSabotageNum { get; set; } = 0;
@@ -75,6 +76,11 @@ public static class PlayerControlDataExtension
player.BetterData().RoleInfo.DeadDisplayRole = player.Data.RoleType; player.BetterData().RoleInfo.DeadDisplayRole = player.Data.RoleType;
} }
if (!GameStates.IsMeeting)
{
player.BetterData().AntiCheatInfo.ChatDidVote = false;
}
if (string.IsNullOrEmpty(player.BetterData().RealName)) if (string.IsNullOrEmpty(player.BetterData().RealName))
{ {
player.BetterData().RealName = player.Data.PlayerName; player.BetterData().RealName = player.Data.PlayerName;
+1 -1
View File
@@ -209,7 +209,7 @@ internal static class RPC
try try
{ {
if (!GameStates.IsTOHEHostLobby) if (!GameStates.IsTOHEHostLobby && callId is not unchecked((byte)CustomRPC.Sicko) or unchecked((byte)CustomRPC.AUM) or (byte)CustomRPC.AUMChat)
{ {
var flag = Enum.IsDefined(typeof(CustomRPC), (int)callId) || Enum.IsDefined(typeof(RpcCalls), callId); var flag = Enum.IsDefined(typeof(CustomRPC), (int)callId) || Enum.IsDefined(typeof(RpcCalls), callId);
+1 -1
View File
@@ -51,7 +51,7 @@ public class ClientPatch
[HarmonyPostfix] [HarmonyPostfix]
public static void StartInitialLoginFlow_Postfix(EOSManager __instance) public static void StartInitialLoginFlow_Postfix(EOSManager __instance)
{ {
__instance.StartCoroutine(DataBaseConnect.Init()); // __instance.StartCoroutine(DataBaseConnect.Init());
} }
} }
// Log game exit // Log game exit
+2 -2
View File
@@ -150,11 +150,11 @@ class GamePlayManager
__instance.StartButton.gameObject.SetActive(true); __instance.StartButton.gameObject.SetActive(true);
if (__instance.startState == GameStartManager.StartingStates.Countdown) if (__instance.startState == GameStartManager.StartingStates.Countdown)
{ {
__instance.StartButton.buttonText.text = string.Format("Cancel: {0}", (int)__instance.countDownTimer + 1); __instance.StartButton.buttonText.text = string.Format("{0}: {1}", Translator.GetString(StringNames.Cancel),(int)__instance.countDownTimer + 1);
} }
else else
{ {
__instance.StartButton.buttonText.text = "Start Game"; __instance.StartButton.buttonText.text = Translator.GetString(StringNames.StartLabel);
} }
} }
[HarmonyPatch(nameof(GameStartManager.BeginGame))] [HarmonyPatch(nameof(GameStartManager.BeginGame))]
+13
View File
@@ -204,6 +204,19 @@ class MeetingHudUpdatePatch
} }
} }
[HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.ClearVote))]
class MeetingHud_ClearVotePatch
{
public static void Postfix()
{
// Clear info for Anti-Cheat
foreach (var player in Main.AllPlayerControls)
{
player.BetterData().AntiCheatInfo.ChatDidVote = false;
}
}
}
[HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.OnDestroy))] [HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.OnDestroy))]
class MeetingHud_OnDestroyPatch class MeetingHud_OnDestroyPatch
{ {
+16 -18
View File
@@ -1,6 +1,7 @@
using AmongUs.GameOptions; using AmongUs.GameOptions;
using HarmonyLib; using HarmonyLib;
using Hazel; using Hazel;
using static Il2CppSystem.Globalization.CultureInfo;
namespace BetterAmongUs.Patches; namespace BetterAmongUs.Patches;
@@ -276,8 +277,9 @@ public class RoleManagerPatch
if (NumImpostors > Main.AllPlayerControls.Length) if (NumImpostors > Main.AllPlayerControls.Length)
NumImpostors = Main.AllPlayerControls.Length; NumImpostors = Main.AllPlayerControls.Length;
List<PlayerControl> Impostors = []; List<NetworkedPlayerInfo> Impostors = [];
List<PlayerControl> Crewmates = []; List<NetworkedPlayerInfo> Crewmates = [];
List<NetworkedPlayerInfo> CrewAndImps() => [.. Impostors, .. Crewmates];
// Set imp from settings // Set imp from settings
int[] betterImpostorSettings = int[] betterImpostorSettings =
@@ -300,7 +302,7 @@ public class RoleManagerPatch
{ {
if (Impostors.Count < NumImpostors) if (Impostors.Count < NumImpostors)
{ {
Impostors.Add(player); Impostors.Add(player.Data);
Logger.LogPrivate($"Settings Assigned {Utils.GetRoleName(RoleTypes.Impostor)} role to {player.Data.PlayerName}", "RoleManager"); Logger.LogPrivate($"Settings Assigned {Utils.GetRoleName(RoleTypes.Impostor)} role to {player.Data.PlayerName}", "RoleManager");
} }
} }
@@ -320,14 +322,14 @@ public class RoleManagerPatch
{ {
if (Impostors.Count < NumImpostors) if (Impostors.Count < NumImpostors)
{ {
Impostors.Add(player); Impostors.Add(player.Data);
Logger.LogPrivate($"Override Assigned {Utils.GetRoleName(RoleTypes.Impostor)} role to {player.Data.PlayerName}", "RoleManager"); Logger.LogPrivate($"Override Assigned {Utils.GetRoleName(RoleTypes.Impostor)} role to {player.Data.PlayerName}", "RoleManager");
} }
else continue; else continue;
} }
else if (role is RoleTypes.Engineer) else if (role is RoleTypes.Engineer)
{ {
Crewmates.Add(player); Crewmates.Add(player.Data);
Logger.LogPrivate($"Override Assigned {Utils.GetRoleName(RoleTypes.Engineer)} role to {player.Data.PlayerName}", "RoleManager"); Logger.LogPrivate($"Override Assigned {Utils.GetRoleName(RoleTypes.Engineer)} role to {player.Data.PlayerName}", "RoleManager");
} }
} }
@@ -336,7 +338,7 @@ public class RoleManagerPatch
// Get players in random order // Get players in random order
List<PlayerControl> players = Main.AllPlayerControls List<PlayerControl> players = Main.AllPlayerControls
.Where(player => !Impostors.Contains(player) && !Crewmates.Contains(player)) .Where(player => !CrewAndImps().Contains(player.Data))
.ToList(); .ToList();
int n = players.Count; int n = players.Count;
@@ -356,29 +358,25 @@ public class RoleManagerPatch
if (Impostors.Count < NumImpostors) if (Impostors.Count < NumImpostors)
{ {
if (!Crewmates.Contains(pc)) Impostors.Add(pc.Data);
{ Logger.LogPrivate($"Assigned {Utils.GetRoleName(RoleTypes.Impostor)} role to {pc.Data.PlayerName}", "RoleManager");
Impostors.Add(pc);
Logger.LogPrivate($"Assigned {Utils.GetRoleName(RoleTypes.Impostor)} role to {pc.Data.PlayerName}", "RoleManager");
}
} }
else else
{ {
if (!Impostors.Contains(pc)) Crewmates.Add(pc.Data);
{ Logger.LogPrivate($"Assigned {Utils.GetRoleName(RoleTypes.Engineer)} role to {pc.Data.PlayerName}", "RoleManager");
Crewmates.Add(pc);
Logger.LogPrivate($"Assigned {Utils.GetRoleName(RoleTypes.Engineer)} role to {pc.Data.PlayerName}", "RoleManager");
}
} }
} }
foreach (var player in Impostors) foreach (var data in Impostors)
{ {
var player = Utils.PlayerFromPlayerId(data.PlayerId);
player.RpcSetRole(RoleTypes.Impostor); player.RpcSetRole(RoleTypes.Impostor);
} }
foreach (var player in Crewmates) foreach (var data in Crewmates)
{ {
var player = Utils.PlayerFromPlayerId(data.PlayerId);
player.RpcSetRole(RoleTypes.Engineer); player.RpcSetRole(RoleTypes.Engineer);
} }
+4 -4
View File
@@ -25,8 +25,8 @@ public class Main : BasePlugin
{ {
public static readonly ReleaseTypes ReleaseBuildType = ReleaseTypes.Release; public static readonly ReleaseTypes ReleaseBuildType = ReleaseTypes.Release;
public const string BetaNum = "0"; public const string BetaNum = "0";
public const string HotfixNum = "0"; public const string HotfixNum = "1";
public const bool IsHotFix = false; public const bool IsHotFix = true;
public const string PluginGuid = "com.ten.betteramongus"; public const string PluginGuid = "com.ten.betteramongus";
public const string PluginVersion = "1.1.4"; public const string PluginVersion = "1.1.4";
public const string ReleaseDate = "09.20.2024"; // mm/dd/yyyy public const string ReleaseDate = "09.20.2024"; // mm/dd/yyyy
@@ -155,11 +155,11 @@ public class Main : BasePlugin
{ {
Logger = BepInEx.Logging.Logger.CreateLogSource(PluginGuid); Logger = BepInEx.Logging.Logger.CreateLogSource(PluginGuid);
BetterDataManager.SetUp();
BetterDataManager.LoadData();
LoadOptions(); LoadOptions();
Translator.Init(); Translator.Init();
Harmony.PatchAll(); Harmony.PatchAll();
BetterDataManager.SetUp();
BetterDataManager.LoadData();
GameSettingMenuPatch.SetupSettings(true); GameSettingMenuPatch.SetupSettings(true);
if (PlatformData.Platform == Platforms.StandaloneSteamPC) if (PlatformData.Platform == Platforms.StandaloneSteamPC)