Compare commits

..

14 Commits

Author SHA1 Message Date
fd0ebe9014 yes 2025-12-13 14:35:45 +01:00
6117ac93f7 gitignore 2025-12-13 14:35:04 +01:00
3d5ef1686a uhum aha nem tudom mi ez a szar 2025-12-13 14:33:59 +01:00
e6208996f7 chat shit 2025-12-13 14:32:17 +01:00
4ad7265875 idk what is this 2025-12-13 14:31:41 +01:00
a88b3f155e client stuff fix 2025-12-13 14:31:08 +01:00
1e49828385 player list fix idk 2025-12-13 14:30:48 +01:00
7dd6fab39e again lobby 2025-12-13 14:30:34 +01:00
6ce0df40ca lobby stuff 2025-12-13 14:30:24 +01:00
df3e319b62 idk what is this 2025-12-13 14:30:16 +01:00
b934751afd just a little one 2025-12-13 14:29:58 +01:00
13c6527215 uhum fix 2025-12-13 14:29:47 +01:00
f199bbde65 a nother one 2025-12-13 14:29:35 +01:00
f3be3584db some fix 2025-12-13 14:29:21 +01:00
16 changed files with 198 additions and 699600 deletions

23
.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
# Logs / local debug output
output*.txt
*.log
# OS junk
.DS_Store
Thumbs.db
Desktop.ini
# Editor / IDE
.vs/
*.suo
*.user
*.userosscache
*.sln.docstates
*.VC.db
*.VC.VC.opendb
# Build artifacts (C#/Unity tooling)
**/bin/
**/obj/
**/*.mdb
**/*.pdb

View File

@@ -58,15 +58,40 @@ namespace KCM
server.ClientDisconnected += (obj, ev) =>
{
try
{
var playerName = $"Client {ev.Client.Id}";
string steamId;
if (Main.clientSteamIds.TryGetValue(ev.Client.Id, out steamId) && !string.IsNullOrEmpty(steamId))
{
KCPlayer player;
if (Main.kCPlayers.TryGetValue(steamId, out player) && player != null && !string.IsNullOrEmpty(player.name))
playerName = player.name;
Main.kCPlayers.Remove(steamId);
}
Main.clientSteamIds.Remove(ev.Client.Id);
new ChatSystemMessage()
{
Message = $"{Main.GetPlayerByClientID(ev.Client.Id).name} has left the server.",
Message = $"{playerName} has left the server.",
}.SendToAll();
Main.kCPlayers.Remove(Main.GetPlayerByClientID(ev.Client.Id).steamId);
Destroy(LobbyHandler.playerEntries.Select(x => x.GetComponent<PlayerEntryScript>()).Where(x => x.Client == ev.Client.Id).FirstOrDefault().gameObject);
var entry = LobbyHandler.playerEntries
.Select(x => x != null ? x.GetComponent<PlayerEntryScript>() : null)
.FirstOrDefault(x => x != null && x.Client == ev.Client.Id);
if (entry != null)
Destroy(entry.gameObject);
Main.helper.Log($"Client disconnected. {ev.Reason}");
}
catch (Exception ex)
{
Main.helper.Log("Error handling client disconnect");
Main.helper.Log(ex.ToString());
}
};
Main.helper.Log($"Listening on port 7777. Max {LobbyHandler.ServerSettings.MaxPlayers} clients.");

View File

@@ -35,6 +35,7 @@ namespace KCM.Packets.Handlers
if (!KCServer.IsRunning)
{
Main.kCPlayers.Clear();
Main.clientSteamIds.Clear();
}
}
catch (Exception ex)

View File

@@ -35,13 +35,17 @@ namespace KCM.Packets.Lobby
Main.helper.Log("PlayerList: " + playersName[i] + " " + playersId[i] + " " + steamIds[i]);
Main.kCPlayers.Add(steamIds[i], new KCPlayer(playersName[i], playersId[i], steamIds[i])
KCPlayer player;
if (!Main.kCPlayers.TryGetValue(steamIds[i], out player) || player == null)
{
name = playersName[i],
ready = playersReady[i],
banner = playersBanner[i],
kingdomName = playersKingdomName[i]
});
player = new KCPlayer(playersName[i], playersId[i], steamIds[i]);
Main.kCPlayers[steamIds[i]] = player;
}
player.name = playersName[i];
player.ready = playersReady[i];
player.banner = playersBanner[i];
player.kingdomName = playersKingdomName[i];
if (Main.clientSteamIds.ContainsKey(playersId[i]))
@@ -49,7 +53,8 @@ namespace KCM.Packets.Lobby
else
Main.clientSteamIds.Add(playersId[i], steamIds[i]);
Main.kCPlayers[steamIds[i]].inst.PlayerLandmassOwner.SetBannerIdx(playersBanner[i]);
if (player.inst != null && player.inst.PlayerLandmassOwner != null)
player.inst.PlayerLandmassOwner.SetBannerIdx(playersBanner[i]);
LobbyHandler.AddPlayerEntry(playersId[i]);
}

View File

@@ -14,6 +14,8 @@ namespace KCM.Packets.Lobby
public override void HandlePacketServer()
{
if (player == null)
return;
IsReady = !player.ready;
//SendToAll(KCClient.client.Id);
@@ -22,6 +24,8 @@ namespace KCM.Packets.Lobby
public override void HandlePacketClient()
{
if (player == null)
return;
player.ready = IsReady;
}
}

View File

@@ -51,6 +51,20 @@ namespace KCM.Packets.Network
{
Main.helper.Log("Server Player Connected: " + Name + " Id: " + clientId + " SteamID: " + SteamId);
KCPlayer player;
if (Main.kCPlayers.TryGetValue(SteamId, out player))
{
player.id = clientId;
player.name = Name;
player.steamId = SteamId;
}
else
{
Main.kCPlayers[SteamId] = new KCPlayer(Name, clientId, SteamId);
}
Main.clientSteamIds[clientId] = SteamId;
List<KCPlayer> list = Main.kCPlayers.Select(x => x.Value).OrderBy(x => x.id).ToList();
if (list.Count > 0)

View File

@@ -38,7 +38,8 @@ namespace KCM.Packets.Network
Main.helper.Log("Sending client connected. Client ID is: " + clientId);
Main.kCPlayers.Add(Main.PlayerSteamID, new KCPlayer(KCClient.inst.Name, clientId, Main.PlayerSteamID));
Main.kCPlayers[Main.PlayerSteamID] = new KCPlayer(KCClient.inst.Name, clientId, Main.PlayerSteamID);
Main.clientSteamIds[clientId] = Main.PlayerSteamID;
Player.inst.PlayerLandmassOwner.teamId = clientId * 10 + 2;

View File

@@ -16,20 +16,15 @@ namespace KCM.Packets
{
get
{
KCPlayer p = null;
if (!Main.clientSteamIds.ContainsKey(clientId))
string steamId;
if (!Main.clientSteamIds.TryGetValue(clientId, out steamId) || string.IsNullOrEmpty(steamId))
return null;
//Main.helper.Log($"SteamID: {Main.GetPlayerByClientID(clientId).steamId} for {clientId} ({Main.GetPlayerByClientID(clientId).id})");
if (Main.kCPlayers.TryGetValue(Main.GetPlayerByClientID(clientId).steamId, out p))
return p;
else
{
Main.helper.Log($"Error getting player from packet {packetId} {this.GetType().Name} from {clientId}");
}
KCPlayer player;
if (Main.kCPlayers.TryGetValue(steamId, out player))
return player;
Main.helper.Log($"Error getting player from packet {packetId} {GetType().Name} from {clientId}");
return null;
}
}

52
README.md Normal file
View File

@@ -0,0 +1,52 @@
# KCM (Kingdoms and Castles Multiplayer) javított verzió
Ez a repo egy *Kingdoms and Castles* multiplayer mod forrását tartalmazza, pár stabilitási/szinkron hibára célzott javításokkal.
## Mi volt a gond?
A mellékelt log (`output.txt`) alapján több tipikus hiba okozta a szerver indításkori/ lobby-beli szétesést:
- `NullReferenceException` a lobby player UI frissítésében (`PlayerEntryScript.SetValues`)
- duplikált SteamID miatti `ArgumentException: same key already added` a handshake során
- csomagkezelés közben `KeyNotFoundException` / `NullReferenceException` (hiányzó `clientId -> steamId` map, race/állapot problémák)
## Mit javít ez a verzió?
- Lobby UI frissítés stabilizálása (null/állapot ellenőrzések, helyes inicializálási sorrend)
- Handshake alatt a player-regisztráció ütközésmentessé tétele + `clientSteamIds` beállítása
- Packet oldali player lookup biztonságossá tétele (ne dobjon kivételt hiányzó map esetén)
- `PlayerReady` packet: ha nincs player, ne crasheljen
- Szerver oldalon a csatlakozáskor a játékos regisztráció/map frissítése
- Kilépés/clear esetén `clientSteamIds` takarítása, hogy ne maradjanak “árva” bejegyzések
Érintett fájlok (főbb pontok):
- `ServerLobby/PlayerEntryScript.cs`
- `Packets/Network/ServerHandshake.cs`
- `Packets/Network/ClientConnected.cs`
- `Packets/Packet.cs`
- `Packets/Lobby/PlayerReady.cs`
- `Packets/Lobby/PlayerList.cs`
- `KCServer.cs`
- `Packets/Handlers/LobbyHandler.cs`
- `RiptideSteamTransport/LobbyManager.cs`
## Telepítés / használat
Fontos: a hostnak és **minden kliensnek ugyanaz a verzió** kell, különben továbbra is lehetnek sync problémák.
1. Tedd a mod mappáját a játék `mods` könyvtárába (vagy használd Workshopból, de ott egy frissítés felülírhatja a javításokat).
2. Indítsd újra teljesen a játékot.
3. Hostolj/ csatlakozz, majd ellenőrizd, hogy a lobby és a szerver indítás stabil marad.
## Hibaelhárítás
Ha továbbra is hibát látsz:
- Küldd el a `output.txt` releváns részét (a hiba előtti/utáni stack trace-t), vagy írd le a pontos üzenetet.
- Írd meg, hogy: hostoltál-e, hány kliens csatlakozott, és mindenkin ugyanaz a mod-verzió van-e.
## Repo higiénia
- A `.gitignore` kizárja a logokat (`output*.txt`) és tipikus IDE/build artifactokat, hogy ne kerüljenek fel GitHubra.

View File

@@ -159,6 +159,7 @@ namespace Riptide.Demos.Steam.PlayerHosted
Main.helper.Log("clear players");
Main.kCPlayers.Clear();
Main.clientSteamIds.Clear();
LobbyHandler.ClearPlayerList();
LobbyHandler.ClearChatEntries();
Main.helper.Log("end clear players");

View File

@@ -51,12 +51,24 @@ namespace KCM.ServerLobby.LobbyChat
{
try
{
if (banner == null)
return;
string steamId;
if (!Main.clientSteamIds.TryGetValue(Client, out steamId))
return;
KCPlayer player;
Main.kCPlayers.TryGetValue(Main.GetPlayerByClientID(Client).steamId, out player);
if (!Main.kCPlayers.TryGetValue(steamId, out player) || player == null)
return;
var bannerTexture = World.inst.liverySets[player.banner].banners;
if (World.inst == null || World.inst.liverySets == null)
return;
banner.texture = bannerTexture;
if (player.banner < 0 || player.banner >= World.inst.liverySets.Length)
return;
banner.texture = World.inst.liverySets[player.banner].banners;
}
catch (Exception ex)
{

View File

@@ -21,15 +21,15 @@ namespace KCM.ServerLobby
public void Start()
{
banner = transform.Find("PlayerBanner").GetComponent<RawImage>();
SetValues();
InvokeRepeating("SetValues", 0, 0.25f);
banner = transform.Find("PlayerBanner").GetComponent<RawImage>();
transform.Find("PlayerBanner").GetComponent<Button>().onClick.AddListener(() =>
{
Main.TransitionTo(MenuState.NameAndBanner);//ChooseBannerUI Hooks required, as well as townnameui
Main.TransitionTo(MenuState.NameAndBanner);
});
}
@@ -37,14 +37,39 @@ namespace KCM.ServerLobby
{
try
{
if (banner == null)
{
var bannerTransform = transform.Find("PlayerBanner");
if (bannerTransform == null)
return;
banner = bannerTransform.GetComponent<RawImage>();
if (banner == null)
return;
}
string steamId;
if (!Main.clientSteamIds.TryGetValue(Client, out steamId))
return;
KCPlayer player;
Main.kCPlayers.TryGetValue(Main.GetPlayerByClientID(Client).steamId, out player);
transform.Find("PlayerName").GetComponent<TextMeshProUGUI>().text = player.name;
transform.Find("Ready").gameObject.SetActive(player.ready);
if (!Main.kCPlayers.TryGetValue(steamId, out player) || player == null)
return;
var bannerTexture = World.inst.liverySets[player.banner].banners;
var nameTransform = transform.Find("PlayerName");
if (nameTransform != null)
nameTransform.GetComponent<TextMeshProUGUI>().text = player.name ?? "";
banner.texture = bannerTexture;
var readyTransform = transform.Find("Ready");
if (readyTransform != null)
readyTransform.gameObject.SetActive(player.ready);
if (World.inst == null || World.inst.liverySets == null)
return;
if (player.banner < 0 || player.banner >= World.inst.liverySets.Length)
return;
banner.texture = World.inst.liverySets[player.banner].banners;
}
catch (Exception ex)
{

View File

@@ -1,311 +0,0 @@
2024-04-17T18:31:45:SENDING PLACE KEEP RANDOMLY FOR Shadowfita ON LANDMASS: 0
2024-04-17T18:31:45:SENDING PLACE KEEP RANDOMLY FOR MUFFINMAN ON LANDMASS: 2
2024-04-17T18:31:45:GameState (MainMenuMode)
2024-04-17T18:31:45:True
2024-04-17T18:31:45:Menu set to: 200
2024-04-17T18:31:45:Exception has been thrown by the target of an invocation.
2024-04-17T18:31:45:System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
at MainMenuMode.StartGame () [0x000ae] in <64d48a4605b74315afc90e0d3d75aed0>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <eae584ce26bc40229c1b1aa476bfa589>:0
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00048] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <eae584ce26bc40229c1b1aa476bfa589>:0
at KCM.Packets.Lobby.StartGame.Start () [0x00058] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:31:45:Last 9 methods in call tree: Update -> HandleMessages -> Handle -> OnMessageReceived -> HandlePacket -> HandlePacketClient -> SendMessage -> SendMessage -> OnPlayerPlacement_Patch1
2024-04-17T18:31:45:1
2024-04-17T18:31:45:2
2024-04-17T18:31:45:3
2024-04-17T18:31:45:4
2024-04-17T18:31:45:5
2024-04-17T18:31:45:6
2024-04-17T18:31:45:7
2024-04-17T18:31:45:8
2024-04-17T18:31:45:9
2024-04-17T18:31:45:10
2024-04-17T18:31:45:11
2024-04-17T18:31:45:12
2024-04-17T18:31:45:13
2024-04-17T18:31:45:14
2024-04-17T18:31:45:Called by: HandlePacketClient
2024-04-17T18:31:45:1 Shadowfita - Sending building place packet for keep
2024-04-17T18:31:45:Observer created for Building with 15 fields, 0 properties, and 0 non-primitive list variables
2024-04-17T18:31:59:Overridden complete build
2024-04-17T18:32:17:Received place building packet for keep from MUFFINMAN(2)
2024-04-17T18:32:17:Building init
2024-04-17T18:32:17:Building unpack
2024-04-17T18:32:17:Client Player (2 MUFFINMAN) (Player)
2024-04-17T18:32:17:False
2024-04-17T18:32:17:2
2024-04-17T18:32:17:Player add Building unpacked
2024-04-17T18:32:17:1
2024-04-17T18:32:17:2
2024-04-17T18:32:17:3
2024-04-17T18:32:17:4
2024-04-17T18:32:17:5
2024-04-17T18:32:17:6
2024-04-17T18:32:17:7
2024-04-17T18:32:17:8
2024-04-17T18:32:17:9
2024-04-17T18:32:17:10
2024-04-17T18:32:17:11
2024-04-17T18:32:17:12
2024-04-17T18:32:17:13
2024-04-17T18:32:17:14
2024-04-17T18:32:17:Set keep True
2024-04-17T18:32:17:Place from load
2024-04-17T18:32:17:unpack stage 2
2024-04-17T18:32:17:Landmass owner take ownership
2024-04-17T18:32:17:2 (team 22) banner: -1 Placed building Keep(Clone) at (24.0, 0.0, 91.0)
2024-04-17T18:32:17:Received add villager packet from MUFFINMAN(2)
2024-04-17T18:32:17:Teleporting villager to (26.8, 0.0, 91.2)
2024-04-17T18:32:17:Received add villager packet from MUFFINMAN(2)
2024-04-17T18:32:17:Teleporting villager to (26.8, 0.0, 91.6)
2024-04-17T18:32:17:Received add villager packet from MUFFINMAN(2)
2024-04-17T18:32:17:Teleporting villager to (26.4, 0.0, 91.6)
2024-04-17T18:32:17:Received add villager packet from MUFFINMAN(2)
2024-04-17T18:32:17:Teleporting villager to (26.4, 0.0, 91.2)
2024-04-17T18:32:17:Received add villager packet from MUFFINMAN(2)
2024-04-17T18:32:17:Teleporting villager to (24.6, 0.0, 92.2)
2024-04-17T18:32:28:Received place building packet for road from MUFFINMAN(2)
2024-04-17T18:32:28:Building init
2024-04-17T18:32:28:Error handling packet 71 WorldPlace from 2
2024-04-17T18:32:28:----------------------- Main exception -----------------------
2024-04-17T18:32:28:System.ArgumentNullException: Value cannot be null.
Parameter name: source
at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:28:----------------------- Main message -----------------------
2024-04-17T18:32:28:Value cannot be null.
Parameter name: source
2024-04-17T18:32:28:----------------------- Main stacktrace -----------------------
2024-04-17T18:32:28: at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:28:Received place building packet for road from MUFFINMAN(2)
2024-04-17T18:32:28:Building init
2024-04-17T18:32:28:Error handling packet 71 WorldPlace from 2
2024-04-17T18:32:28:----------------------- Main exception -----------------------
2024-04-17T18:32:28:System.ArgumentNullException: Value cannot be null.
Parameter name: source
at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:28:----------------------- Main message -----------------------
2024-04-17T18:32:28:Value cannot be null.
Parameter name: source
2024-04-17T18:32:28:----------------------- Main stacktrace -----------------------
2024-04-17T18:32:28: at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:28:Building not found.
2024-04-17T18:32:28:Building not found.
2024-04-17T18:32:29:Received place building packet for road from MUFFINMAN(2)
2024-04-17T18:32:29:Building init
2024-04-17T18:32:29:Error handling packet 71 WorldPlace from 2
2024-04-17T18:32:29:----------------------- Main exception -----------------------
2024-04-17T18:32:29:System.ArgumentNullException: Value cannot be null.
Parameter name: source
at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:29:----------------------- Main message -----------------------
2024-04-17T18:32:29:Value cannot be null.
Parameter name: source
2024-04-17T18:32:29:----------------------- Main stacktrace -----------------------
2024-04-17T18:32:29: at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:29:Building not found.
2024-04-17T18:32:29:Received place building packet for road from MUFFINMAN(2)
2024-04-17T18:32:29:Building init
2024-04-17T18:32:29:Error handling packet 71 WorldPlace from 2
2024-04-17T18:32:29:----------------------- Main exception -----------------------
2024-04-17T18:32:29:System.ArgumentNullException: Value cannot be null.
Parameter name: source
at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:29:----------------------- Main message -----------------------
2024-04-17T18:32:29:Value cannot be null.
Parameter name: source
2024-04-17T18:32:29:----------------------- Main stacktrace -----------------------
2024-04-17T18:32:29: at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:30:Building not found.
2024-04-17T18:32:30:Received place building packet for road from MUFFINMAN(2)
2024-04-17T18:32:30:Building init
2024-04-17T18:32:30:Error handling packet 71 WorldPlace from 2
2024-04-17T18:32:30:----------------------- Main exception -----------------------
2024-04-17T18:32:30:System.ArgumentNullException: Value cannot be null.
Parameter name: source
at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:30:----------------------- Main message -----------------------
2024-04-17T18:32:30:Value cannot be null.
Parameter name: source
2024-04-17T18:32:30:----------------------- Main stacktrace -----------------------
2024-04-17T18:32:30: at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:30:Overridden complete build
2024-04-17T18:32:30:Building not found.
2024-04-17T18:32:31:Received place building packet for road from MUFFINMAN(2)
2024-04-17T18:32:31:Building init
2024-04-17T18:32:31:Error handling packet 71 WorldPlace from 2
2024-04-17T18:32:31:----------------------- Main exception -----------------------
2024-04-17T18:32:31:System.ArgumentNullException: Value cannot be null.
Parameter name: source
at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:31:----------------------- Main message -----------------------
2024-04-17T18:32:31:Value cannot be null.
Parameter name: source
2024-04-17T18:32:31:----------------------- Main stacktrace -----------------------
2024-04-17T18:32:31: at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:32:Building not found.
2024-04-17T18:32:32:Building not found.
2024-04-17T18:32:33:Building not found.
2024-04-17T18:32:33:Building not found.
2024-04-17T18:32:33:Building not found.
2024-04-17T18:32:33:Building not found.
2024-04-17T18:32:34:Building not found.
2024-04-17T18:32:34:Building not found.
2024-04-17T18:32:34:Building not found.
2024-04-17T18:32:34:Building not found.
2024-04-17T18:32:34:Building not found.
2024-04-17T18:32:34:Building not found.
2024-04-17T18:32:35:Building not found.
2024-04-17T18:32:35:Building not found.
2024-04-17T18:32:35:Building not found.
2024-04-17T18:32:35:Building not found.
2024-04-17T18:32:35:Building not found.
2024-04-17T18:32:36:Building not found.
2024-04-17T18:32:36:Building not found.
2024-04-17T18:32:36:Building not found.
2024-04-17T18:32:36:Building not found.
2024-04-17T18:32:36:Building not found.
2024-04-17T18:32:37:Building not found.
2024-04-17T18:32:37:Building not found.
2024-04-17T18:32:37:Received place building packet for smallhouse from MUFFINMAN(2)
2024-04-17T18:32:37:Building init
2024-04-17T18:32:37:Error handling packet 71 WorldPlace from 2
2024-04-17T18:32:37:----------------------- Main exception -----------------------
2024-04-17T18:32:37:System.ArgumentNullException: Value cannot be null.
Parameter name: source
at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:37:----------------------- Main message -----------------------
2024-04-17T18:32:37:Value cannot be null.
Parameter name: source
2024-04-17T18:32:37:----------------------- Main stacktrace -----------------------
2024-04-17T18:32:37: at (wrapper managed-to-native) UnityEngine.Material.CreateWithMaterial(UnityEngine.Material,UnityEngine.Material)
at UnityEngine.Material..ctor (UnityEngine.Material source) [0x00008] in <85d1d3e7744a4a47b5f51883bf40bba2>:0
at (wrapper dynamic-method) Building.Init_Patch0(object)
at KCM.Packets.Game.GameWorld.WorldPlace.PlaceBuilding () [0x0018d] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Game.GameWorld.WorldPlace.HandlePacketClient () [0x00019] in <9248c2b646c04c27b08155cb9b937ba4>:0
at KCM.Packets.Handlers.PacketHandler.HandlePacket (System.Object sender, Riptide.MessageReceivedEventArgs messageReceived) [0x00023] in <9248c2b646c04c27b08155cb9b937ba4>:0
2024-04-17T18:32:37:Building not found.
2024-04-17T18:32:37:Building not found.
2024-04-17T18:32:37:Building not found.
2024-04-17T18:32:37:Building not found.
2024-04-17T18:32:38:Building not found.
2024-04-17T18:32:38:Building not found.
2024-04-17T18:32:38:Building not found.
2024-04-17T18:32:39:Building not found.
2024-04-17T18:32:39:Building not found.
2024-04-17T18:32:39:Building not found.
2024-04-17T18:32:40:Building not found.
2024-04-17T18:32:40:Building not found.
2024-04-17T18:32:40:Building not found.
2024-04-17T18:32:41:Building not found.
2024-04-17T18:32:41:Building not found.
2024-04-17T18:32:42:Building not found.
2024-04-17T18:32:42:Building not found.
2024-04-17T18:32:42:Building not found.
2024-04-17T18:32:43:Building not found.
2024-04-17T18:32:43:Building not found.
2024-04-17T18:32:43:Building not found.
2024-04-17T18:32:44:Building not found.
2024-04-17T18:32:44:Building not found.
2024-04-17T18:32:44:Building not found.
2024-04-17T18:32:45:Building not found.
2024-04-17T18:32:45:Building not found.
2024-04-17T18:32:45:Building not found.
2024-04-17T18:32:46:Building not found.
2024-04-17T18:32:46:Building not found.
2024-04-17T18:32:46:Building not found.
2024-04-17T18:32:46:Building not found.
2024-04-17T18:32:47:Building not found.
2024-04-17T18:32:47:Building not found.
2024-04-17T18:32:47:Building not found.
2024-04-17T18:32:48:Building not found.
2024-04-17T18:32:48:Building not found.
2024-04-17T18:32:48:Building not found.
2024-04-17T18:32:49:Building not found.
2024-04-17T18:32:49:Building not found.
2024-04-17T18:32:49:Building not found.
2024-04-17T18:32:50:Building not found.
2024-04-17T18:32:50:Building not found.
2024-04-17T18:32:50:Building not found.
2024-04-17T18:32:51:Building not found.
2024-04-17T18:32:51:Building not found.
2024-04-17T18:32:51:Building not found.
2024-04-17T18:32:52:Building not found.
2024-04-17T18:32:52:Building not found.
2024-04-17T18:32:52:Building not found.
2024-04-17T18:32:52:Building not found.
2024-04-17T18:32:53:Building not found.
2024-04-17T18:32:53:Building not found.
2024-04-17T18:32:53:Building not found.
2024-04-17T18:32:54:Building not found.
2024-04-17T18:32:54:Building not found.
2024-04-17T18:32:54:Building not found.
2024-04-17T18:32:55:Building not found.
2024-04-17T18:32:55:Building not found.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

683835
output.txt

File diff suppressed because it is too large Load Diff