diff --git a/TcpServer/Program.cs b/TcpServer/Program.cs index e8023a5..5e0bb8d 100644 --- a/TcpServer/Program.cs +++ b/TcpServer/Program.cs @@ -217,6 +217,22 @@ private void HandleGameActions(ByteBuffer buffer, int id) case 0: // Change weapon int weaponId = buffer.GetInt(); Console.WriteLine($"Player \"{id}\" changed weapon to \"{weaponId}\""); + lock (playerDatas) + { + if (playerDatas.TryGetValue(id, out var weaponPlayer)) + { + weaponPlayer.weapon = weaponId; + weaponPlayer.weaponChanged = true; + } + } + // relay so other clients render the weapon on this player's avatar + // (client handles protocol 2 / argument 2 -> PlayerChangeWeapon(id, weaponId)) + ByteBuffer weaponBroadcast = new ByteBuffer(); + weaponBroadcast.Put((byte)2); // protocol + weaponBroadcast.Put((byte)2); // argument 2 = change weapon + weaponBroadcast.Put(id); + weaponBroadcast.Put(weaponId); + SendToOtherClients(weaponBroadcast.Trim().Get(), id); break; case 1: // Fire weapon