Skip to content

Commit 7e89b2a

Browse files
committed
Fixed checksum bug, closed #100
1 parent cf59b37 commit 7e89b2a

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

resources/localization.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@
107107
"German (Germany)": "Benötigte Dependenzen nicht aufgefunden"
108108
},
109109
"polymod_signature_incompatible": {
110-
"English": "Current mods are not compatible with original mods!",
111-
"Russian": "Текущие моды несовместимы с оригинальными модами!",
110+
"English": "Current mods are not compatible with mods of this game!",
111+
"Russian": "Текущие моды несовместимы с модами этого матча!",
112112
"Turkish": "Mevcut modlar orijinal modlarla uyumsuz!",
113113
"Spanish (Mexico)": "Falta de compatibilidad entre los mods concurrientes!",
114114
"French (France)": "Les mods actuels ne sont pas compatibles avec les mods originaux!",
@@ -191,7 +191,7 @@
191191
},
192192
"polymod_hub_config_disable": {
193193
"English": "DISABLE {0}",
194-
"Russian": "ВЫЛЮЧИТЬ {0}"
194+
"Russian": "ВЫКЛЮЧИТЬ {0}"
195195
},
196196
"polymod_config_setto": {
197197
"English": "{0} is set to {1}!",

src/Managers/Compatibility.cs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,30 @@ private static bool CheckSignatures(Action<int, BaseEventData> action, int id, B
2424
return true;
2525
}
2626

27-
string signature = string.Empty;
27+
string stateChecksum = string.Empty;
2828
try
2929
{
30-
signature = File.ReadAllText(Path.Combine(Application.persistentDataPath, $"{gameId}.signatures"));
30+
Plugin.logger.LogInfo($"Getting checksum for state {gameId}");
31+
stateChecksum = File.ReadAllText(Path.Combine(Application.persistentDataPath, $"{gameId}.signatures"));
32+
Plugin.logger.LogInfo($"Checksum found.");
3133
}
32-
catch { }
33-
if (signature == string.Empty) return true;
34-
if (Plugin.config.debug) return true;
35-
if (checksum != signature)
34+
catch
35+
{
36+
Plugin.logger.LogInfo($"Failed to get checksum.");
37+
}
38+
if (stateChecksum == string.Empty)
39+
{
40+
Plugin.logger.LogInfo($"State checksum is empty, ignoring.");
41+
return true;
42+
}
43+
bool doChecksumsMatch = stateChecksum == checksum;
44+
Plugin.logger.LogInfo($"State checksum: '{stateChecksum}', global checksum: '{checksum}', comparison result : {doChecksumsMatch}");
45+
if (Plugin.config.debug)
46+
{
47+
Plugin.logger.LogInfo($"Debug detected, ignoring.");
48+
return true;
49+
}
50+
if (!doChecksumsMatch)
3651
{
3752
PopupManager.GetBasicPopup(new(
3853
Localization.Get("polymod.signature.mismatch"),
@@ -135,9 +150,9 @@ private static void GameManager_MatchEnded(bool localPlayerIsWinner, ScoreDetail
135150
[HarmonyPatch(typeof(ClientBase), nameof(ClientBase.CreateSession), typeof(GameSettings), typeof(Il2CppSystem.Guid))]
136151
private static void ClientBase_CreateSession(GameSettings settings, Il2CppSystem.Guid gameId)
137152
{
138-
File.WriteAllLinesAsync(
153+
File.WriteAllTextAsync(
139154
Path.Combine(Application.persistentDataPath, $"{gameId}.signatures"),
140-
new string[] { checksum }
155+
checksum
141156
);
142157
}
143158

0 commit comments

Comments
 (0)