From f45ec6f91821451d7610d1e15e6a78a789d5b975 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Thu, 14 Apr 2011 12:13:08 +1200 Subject: [PATCH] 691,697 fixed --- OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs | 17 ++++------------- OpenRA.Mods.RA/ServerTraits/PlayerCommands.cs | 6 ++++++ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs index 6e144f1497..15a50b52d6 100644 --- a/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.RA/ServerTraits/LobbyCommands.cs @@ -74,19 +74,6 @@ namespace OpenRA.Mods.RA.Server server.SyncLobbyInfo(); return true; }}, - { "spectator", - s => - { - var slotData = server.lobbyInfo.Slots.Where(ax => ax.Spectator && !server.lobbyInfo.Clients.Any(l => l.Slot == ax.Index)).FirstOrDefault(); - if (slotData == null) - return true; - - client.Slot = slotData.Index; - S.SyncClientToPlayerReference(client, slotData.MapPlayer != null ? server.Map.Players[slotData.MapPlayer] : null); - - server.SyncLobbyInfo(); - return true; - }}, { "slot", s => { @@ -101,6 +88,10 @@ namespace OpenRA.Mods.RA.Server client.Slot = slot; S.SyncClientToPlayerReference(client, slotData.MapPlayer != null ? server.Map.Players[slotData.MapPlayer] : null); + // if we're entering a spectator slot, relinquish our spawnpoint. + if (slotData.Spectator) + client.SpawnPoint = 0; + server.SyncLobbyInfo(); return true; }}, diff --git a/OpenRA.Mods.RA/ServerTraits/PlayerCommands.cs b/OpenRA.Mods.RA/ServerTraits/PlayerCommands.cs index d3e30d4db1..ee018e7281 100644 --- a/OpenRA.Mods.RA/ServerTraits/PlayerCommands.cs +++ b/OpenRA.Mods.RA/ServerTraits/PlayerCommands.cs @@ -71,6 +71,12 @@ namespace OpenRA.Mods.RA.Server return false; } + if (server.lobbyInfo.Slots[client.Slot].Spectator) + { + server.SendChatTo( conn, "Can't select a spawnpoint as a spectator" ); + return false; + } + if (server.lobbyInfo.Clients.Where( c => c != client ).Any( c => (c.SpawnPoint == spawnPoint) && (c.SpawnPoint != 0) )) { server.SendChatTo( conn, "You can't be at the same spawn point as another player" );