add kick command to LobbyCommands

This commit is contained in:
Chris Forbes
2010-12-24 12:10:38 +13:00
parent b5b6b47e95
commit 54cf2e7993
3 changed files with 31 additions and 6 deletions

View File

@@ -49,7 +49,7 @@ namespace OpenRA.Server
else
{
if (len == 0)
server.DropClient(this, null);
server.DropClient(this);
break;
}
@@ -57,7 +57,7 @@ namespace OpenRA.Server
catch (SocketException e)
{
if (e.SocketErrorCode == SocketError.WouldBlock) break;
server.DropClient(this, e);
server.DropClient(this);
return false;
}
}

View File

@@ -165,7 +165,7 @@ namespace OpenRA.Server
foreach (var t in ServerTraits.WithInterface<IClientJoined>())
t.ClientJoined(this, newConn);
}
catch (Exception e) { DropClient(newConn, e); }
catch (Exception e) { DropClient(newConn); }
}
public void UpdateInFlightFrames(Connection conn)
@@ -193,7 +193,7 @@ namespace OpenRA.Server
ms.Write( data );
c.socket.Send( ms.ToArray() );
}
catch( Exception e ) { DropClient( c, e ); }
catch (Exception e) { DropClient(c); }
}
public void DispatchOrders(Connection conn, int frame, byte[] data)
@@ -277,7 +277,7 @@ namespace OpenRA.Server
return lobbyInfo.ClientWithIndex(conn.PlayerIndex);
}
public void DropClient(Connection toDrop, Exception e)
public void DropClient(Connection toDrop)
{
conns.Remove(toDrop);
SendChat(toDrop, "Connection Dropped");

View File

@@ -129,7 +129,7 @@ namespace OpenRA.Mods.RA.Server
{
var occupantConn = server.conns.FirstOrDefault( c => c.PlayerIndex == occupant.Index );
if (occupantConn != null)
server.DropClient( occupantConn, new Exception() );
server.DropClient(occupantConn);
}
server.SyncLobbyInfo();
@@ -221,6 +221,31 @@ namespace OpenRA.Mods.RA.Server
bool.TryParse(s, out server.lobbyInfo.GlobalSettings.LockTeams);
server.SyncLobbyInfo();
return true;
}},
{ "kick",
s =>
{
if (conn.PlayerIndex != 0)
{
server.SendChatTo( conn, "Only the host can kick players" );
return true;
}
int slot;
int.TryParse( s, out slot );
var connToKick = server.conns.SingleOrDefault( c => server.GetClient(c) != null && server.GetClient(c).Slot == slot);
if (connToKick == null)
{
server.SendChatTo( conn, "Noone in that slot." );
return true;
}
server.DropClient(connToKick);
server.SyncLobbyInfo();
return true;
}},
};