fix SyncCustomSettings

This commit is contained in:
Gurge44 committed 2025-12-16 08:48:05 +01:00
1 parent 3e6b354b1a
commit e30afe2b02
8 files changed
+29 -33

No files matched your search

+2 -1
View File
@@ -10,6 +10,7 @@ using EHR.AddOns;
using EHR.AddOns.GhostRoles;
using EHR.Modules;
using HarmonyLib;
using Hazel;
using UnityEngine;
// ReSharper disable InconsistentNaming
@@ -3241,7 +3242,7 @@ public static class Options
MaxNNKs.SetValue(usedValues.MaxNNKs.GetInt(), false, false);
OptionSaver.Save();
OptionItem.SyncAllOptions();
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
Logger.SendInGame(string.Format(Translator.GetString("AutoFactionMinMaxSettings.Applied"), playerCount, usedValues.MinPlayersToActivate.GetInt(), string.Join(", ", new[] { Team.Impostor, Team.Coven, Team.Neutral }.Select(x => $"{Utils.ColorString(x.GetColor(), Translator.GetString($"ShortTeamName.{x}").ToUpper())}: <#ffffff>{usedValues.TeamSettings[x].MinSetting.GetInt()}-{usedValues.TeamSettings[x].MaxSetting.GetInt()}</color>")), usedValues.MinNNKs.GetInt(), usedValues.MaxNNKs.GetInt()));
}
+4 -3
View File
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using EHR.Modules;
using Hazel;
using UnityEngine;
namespace EHR;
@@ -315,10 +316,10 @@ public abstract class OptionItem
foreach (OptionItem op in AllOptions)
op.Refresh();
SyncAllOptions();
SyncAllOptions(sendOption: SendOption.Reliable);
}
public static void SyncAllOptions(int targetId = -1)
public static void SyncAllOptions(int targetId = -1, SendOption sendOption = SendOption.None)
{
if (
Main.AllPlayerControls.Length <= 1
@@ -327,7 +328,7 @@ public abstract class OptionItem
)
return;
RPC.SyncCustomSettingsRPC(targetId);
RPC.SyncCustomSettingsRPC(targetId, sendOption);
}
public void CallUpdateValueEvent(int beforeValue, int currentValue)
+15 -25
View File
@@ -380,12 +380,7 @@ internal static class RPCHandlerPatch
}
case 80:
{
reader.ReadString();
reader.ReadString();
if (reader.ReadString() != Main.ForkId)
Logger.SendInGame(string.Format(GetString("ModMismatch"), __instance.Data?.PlayerName), Color.red);
Logger.SendInGame(string.Format(GetString("ModMismatch"), __instance.Data?.PlayerName), Color.red);
break;
}
case 62 when GameStates.IsInTask && Main.IntroDestroyed && !ExileController.Instance && !AntiBlackout.SkipTasks:
@@ -463,21 +458,17 @@ internal static class RPCHandlerPatch
{
if (AmongUsClient.Instance.AmHost) break;
int startIndex = reader.ReadPackedInt32();
if (startIndex == 2)
if (reader.ReadBoolean())
{
Options.Preset.SetValue(9, false, false);
Options.GameMode.SetValue(reader.ReadPackedInt32(), false, false);
}
for (int i = startIndex; i < OptionItem.AllOptions.Count; i++)
while (reader.BytesRemaining > 0)
{
if (reader.BytesRemaining == 0) break;
var option = OptionItem.AllOptions[i];
if (option is TextOptionItem || option.Id >= 660000) continue;
option.SetValue(reader.ReadPackedInt32(), false, false);
int id = reader.ReadPackedInt32();
int value = reader.ReadPackedInt32();
OptionItem.FastOptions[id].SetValue(value, false, false);
}
OptionSaver.Save();
@@ -1438,7 +1429,7 @@ internal static class RPCHandlerPatch
internal static class RPC
{
public static void SyncCustomSettingsRPC(int targetId = -1)
public static void SyncCustomSettingsRPC(int targetId = -1, SendOption sendOption = SendOption.None)
{
if (targetId != -1)
{
@@ -1448,24 +1439,23 @@ internal static class RPC
if (!AmongUsClient.Instance.AmHost || PlayerControl.AllPlayerControls.Count <= 1) return;
Logger.Msg(" Starting from 2", "SyncCustomSettings");
MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, SendOption.Reliable, targetId);
writer.WritePacked(2);
Logger.Msg(" Starting", "SyncCustomSettings");
MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, sendOption, targetId);
writer.Write(true);
writer.WritePacked(Options.GameMode.GetValue());
for (int i = 2; i < OptionItem.AllOptions.Count; i++)
foreach (var option in OptionItem.AllOptions)
{
var option = OptionItem.AllOptions[i];
if (option is TextOptionItem || option.Id >= 660000) continue;
if (option is TextOptionItem || option.Id >= 660000 || option.Name == "Preset") continue;
if (writer.Length > 500)
{
Logger.Msg($" Starting from {i}", "SyncCustomSettings");
AmongUsClient.Instance.FinishRpcImmediately(writer);
writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, SendOption.Reliable, targetId);
writer.WritePacked(i);
writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, sendOption, targetId);
writer.Write(false);
}
writer.WritePacked(option.Id);
writer.WritePacked(option.GetValue());
}
+1 -1
View File
@@ -803,7 +803,7 @@ internal static class ChatCommands
optionItem.AllValues[targetPreset] = optionItem.AllValues[sourcePresetId];
}
OptionItem.SyncAllOptions();
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
OptionSaver.Save();
}
}
+2 -1
View File
@@ -5,6 +5,7 @@ using System.Linq;
using EHR.Modules;
using EHR.Patches;
using HarmonyLib;
using Hazel;
using Rewired;
using TMPro;
using UnityEngine;
@@ -197,7 +198,7 @@ internal static class ControllerManagerUpdatePatch
hudManager.Dialogue.BackButton.gameObject.SetActive(true);
hudManager.Dialogue.Hide();
OptionItem.SyncAllOptions();
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
OptionSaver.Save();
IsResetting = false;
+3
View File
@@ -6,6 +6,7 @@ using EHR.AddOns.GhostRoles;
using EHR.Modules;
using EHR.Patches;
using HarmonyLib;
using Hazel;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
@@ -1456,6 +1457,8 @@ public static class GameSettingMenuPatch
GMButtons = [];
Main.Instance.StartCoroutine(OptionShower.GetText());
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
}
}
+1 -1
View File
@@ -394,7 +394,7 @@ internal static class ChangeRoleSettings
if (__instance.AmHost)
{
RPC.SyncCustomSettingsRPC();
RPC.SyncCustomSettingsRPC(sendOption: SendOption.Reliable);
Main.RefixCooldownDelay = 0;
}
+1 -1
View File
@@ -658,7 +658,7 @@ internal static class InnerNetClientSpawnPatch
Logger.Warn("client is null or client have invalid color", "TrySyncAndSendMessage");
else
{
LateTask.New(() => OptionItem.SyncAllOptions(client.Id), 3f, "Sync All Options For New Player");
LateTask.New(() => OptionItem.SyncAllOptions(client.Id, SendOption.Reliable), 3f, "Sync All Options For New Player");
LateTask.New(() =>
{