mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-20 01:46:19 +00:00
more left info and fixes
This commit is contained in:
1 parent
797169d9d3
commit
644b821fe2
4 files changed
+61
-3
No files matched your search
@@ -15,6 +15,7 @@ public class ExtendedPlayerInfo
|
||||
public float TimeSinceLastTask { get; set; } = 5f;
|
||||
public uint LastTaskId { get; set; } = 0;
|
||||
public int TimesCalledMeeting { get; set; } = 0;
|
||||
public DisconnectReasons DisconnectReason { get; set; } = DisconnectReasons.Unknown;
|
||||
public ExtendedRoleInfo? RoleInfo { get; set; }
|
||||
}
|
||||
|
||||
@@ -27,7 +28,7 @@ public class ExtendedRoleInfo
|
||||
|
||||
public static class PlayerControlExtensions
|
||||
{
|
||||
private static readonly Dictionary<string, ExtendedPlayerInfo> playerInfo = [];
|
||||
public static readonly Dictionary<string, ExtendedPlayerInfo> playerInfo = [];
|
||||
|
||||
// Get BetterData from PlayerControl
|
||||
public static ExtendedPlayerInfo? BetterData(this PlayerControl player)
|
||||
|
||||
@@ -19,6 +19,23 @@ class GamePlayManager
|
||||
{
|
||||
AntiCheat.PauseAntiCheat();
|
||||
}
|
||||
|
||||
// Clear unused Better Data
|
||||
var keysToRemove = new List<string>();
|
||||
|
||||
foreach (var betterInfo in PlayerControlExtensions.playerInfo)
|
||||
{
|
||||
if (!Main.AllPlayerControls.Any(pc => pc.Data.Puid == betterInfo.Key))
|
||||
{
|
||||
keysToRemove.Add(betterInfo.Key);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var key in keysToRemove)
|
||||
{
|
||||
PlayerControlExtensions.playerInfo.Remove(key);
|
||||
}
|
||||
|
||||
}
|
||||
[HarmonyPatch(nameof(LobbyBehaviour.Start))]
|
||||
[HarmonyPostfix]
|
||||
|
||||
@@ -76,7 +76,35 @@ class MeetingHudUpdatePatch
|
||||
|
||||
if (!flag)
|
||||
{
|
||||
SetPlayerTextInfoMeeting(pva, "<color=#6b6b6b>Disconnected</color>", isInfo: true);
|
||||
string DisconnectText;
|
||||
var playerData = GameData.Instance.GetPlayerById(pva.TargetPlayerId);
|
||||
switch (playerData.BetterData().DisconnectReason)
|
||||
{
|
||||
case DisconnectReasons.ExitGame:
|
||||
DisconnectText = "Left The Game";
|
||||
break;
|
||||
case DisconnectReasons.Banned:
|
||||
if (playerData.BetterData().BannedByAntiCheat)
|
||||
{
|
||||
DisconnectText = "Banned By Anti-Cheat>";
|
||||
}
|
||||
else
|
||||
{
|
||||
DisconnectText = "Banned By Host";
|
||||
}
|
||||
break;
|
||||
case DisconnectReasons.Kicked:
|
||||
DisconnectText = "Kicked By Host";
|
||||
break;
|
||||
case DisconnectReasons.Hacking:
|
||||
DisconnectText = "Banned By Server";
|
||||
break;
|
||||
default:
|
||||
DisconnectText = "Disconnected";
|
||||
break;
|
||||
}
|
||||
|
||||
SetPlayerTextInfoMeeting(pva, $"<color=#6b6b6b>{DisconnectText}</color>", isInfo: true);
|
||||
SetPlayerTextInfoMeeting(pva, "");
|
||||
pva.transform.Find("votePlayerBase").gameObject.SetActive(false);
|
||||
pva.transform.Find("deadX_border").gameObject.SetActive(false);
|
||||
|
||||
@@ -110,11 +110,23 @@ class OnPlayerLeftPatch
|
||||
HudManager.Instance?.NotifyOfDisconnect(data.Character);
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(GameData))]
|
||||
[HarmonyPatch("HandleDisconnect")]
|
||||
[HarmonyPatch(MethodType.Normal)]
|
||||
[HarmonyPatch(new Type[] { typeof(PlayerControl), typeof(DisconnectReasons) })]
|
||||
class GameDataHandleDisconnectPatch
|
||||
{
|
||||
public static void Prefix(/*GameData __instance,*/ [HarmonyArgument(0)] PlayerControl player, [HarmonyArgument(1)] DisconnectReasons reason)
|
||||
{
|
||||
player.BetterData().DisconnectReason = reason;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(GameData), nameof(GameData.ShowNotification))]
|
||||
class GameDataShowNotificationPatch
|
||||
{
|
||||
public static bool Prefix(AmongUsClient __instance, ref string playerName, ref DisconnectReasons reason)
|
||||
public static bool Prefix(/*GameData __instance,*/ ref string playerName, ref DisconnectReasons reason)
|
||||
{
|
||||
string ReasonText;
|
||||
switch (reason)
|
||||
|
||||
Reference in new issue
Block a user