Fixed clients being able to votekick/kick/ban themselves in the server lobby.

This commit is contained in:
Joonas Rikkonen
2018-01-16 17:39:20 +02:00
parent 633bd85e27
commit 8544dea9db
3 changed files with 16 additions and 12 deletions
@@ -1340,19 +1340,19 @@ namespace Barotrauma.Networking
if (HasPermission(ClientPermissions.Ban)) if (HasPermission(ClientPermissions.Ban))
{ {
var banButton = new GUIButton(new Rectangle(0, 0, 100, 20), "Ban", Alignment.BottomRight, "", characterFrame); var banButton = new GUIButton(new Rectangle(0, 0, 100, 20), TextManager.Get("Ban"), Alignment.BottomRight, "", characterFrame);
banButton.UserData = character.Name; banButton.UserData = character.Name;
banButton.OnClicked += GameMain.NetLobbyScreen.BanPlayer; banButton.OnClicked += GameMain.NetLobbyScreen.BanPlayer;
} }
if (HasPermission(ClientPermissions.Kick)) if (HasPermission(ClientPermissions.Kick))
{ {
var kickButton = new GUIButton(new Rectangle(0, 0, 100, 20), "Kick", Alignment.BottomLeft, "", characterFrame); var kickButton = new GUIButton(new Rectangle(0, 0, 100, 20), TextManager.Get("Kick"), Alignment.BottomLeft, "", characterFrame);
kickButton.UserData = character.Name; kickButton.UserData = character.Name;
kickButton.OnClicked += GameMain.NetLobbyScreen.KickPlayer; kickButton.OnClicked += GameMain.NetLobbyScreen.KickPlayer;
} }
else if (Voting.AllowVoteKick) else if (Voting.AllowVoteKick)
{ {
var kickVoteButton = new GUIButton(new Rectangle(0, 0, 120, 20), "Vote to Kick", Alignment.BottomLeft, "", characterFrame); var kickVoteButton = new GUIButton(new Rectangle(0, 0, 120, 20), TextManager.Get("VoteToKick"), Alignment.BottomLeft, "", characterFrame);
if (GameMain.NetworkMember.ConnectedClients != null) if (GameMain.NetworkMember.ConnectedClients != null)
{ {
@@ -871,8 +871,13 @@ namespace Barotrauma
private bool SelectPlayer(GUIComponent component, object obj) private bool SelectPlayer(GUIComponent component, object obj)
{ {
var selectedClient = GameMain.NetworkMember.ConnectedClients.Find(c => c.Name == obj.ToString());
if (selectedClient == null) return false;
if (GameMain.Client != null) if (GameMain.Client != null)
{ {
if (selectedClient.ID == GameMain.Client.ID) return false;
if (!GameMain.Client.HasPermission(ClientPermissions.Ban) && if (!GameMain.Client.HasPermission(ClientPermissions.Ban) &&
!GameMain.Client.HasPermission(ClientPermissions.Kick) && !GameMain.Client.HasPermission(ClientPermissions.Kick) &&
!GameMain.Client.Voting.AllowVoteKick) !GameMain.Client.Voting.AllowVoteKick)
@@ -881,8 +886,6 @@ namespace Barotrauma
} }
} }
var selectedClient = GameMain.NetworkMember.ConnectedClients.Find(c => c.Name == obj.ToString());
playerFrame = new GUIFrame(new Rectangle(0, 0, 0, 0), Color.Black * 0.6f); playerFrame = new GUIFrame(new Rectangle(0, 0, 0, 0), Color.Black * 0.6f);
var playerFrameInner = new GUIFrame(GameMain.Server != null ? new Rectangle(0, 0, 450, 370) : new Rectangle(0, 0, 450, 150), null, Alignment.Center, "", playerFrame); var playerFrameInner = new GUIFrame(GameMain.Server != null ? new Rectangle(0, 0, 450, 370) : new Rectangle(0, 0, 450, 150), null, Alignment.Center, "", playerFrame);
@@ -1030,7 +1033,7 @@ namespace Barotrauma
if (GameMain.Client != null && GameMain.Client.Voting.AllowVoteKick && selectedClient != null) if (GameMain.Client != null && GameMain.Client.Voting.AllowVoteKick && selectedClient != null)
{ {
var kickVoteButton = new GUIButton(new Rectangle(0, -30, 120, 20), "Vote to Kick", Alignment.BottomLeft, "", playerFrameInner); var kickVoteButton = new GUIButton(new Rectangle(0, -30, 120, 20), TextManager.Get("VoteToKick"), Alignment.BottomLeft, "", playerFrameInner);
kickVoteButton.Enabled = !selectedClient.HasKickVoteFromID(GameMain.Client.ID); kickVoteButton.Enabled = !selectedClient.HasKickVoteFromID(GameMain.Client.ID);
kickVoteButton.UserData = selectedClient; kickVoteButton.UserData = selectedClient;
kickVoteButton.OnClicked += GameMain.Client.VoteForKick; kickVoteButton.OnClicked += GameMain.Client.VoteForKick;
@@ -190,6 +190,7 @@
<Permissions>Permissions</Permissions> <Permissions>Permissions</Permissions>
<PermittedConsoleCommands>Permitted console commands</PermittedConsoleCommands> <PermittedConsoleCommands>Permitted console commands</PermittedConsoleCommands>
<Kick>Kick</Kick> <Kick>Kick</Kick>
<VoteToKick>Vote to kick</VoteToKick>
<Ban>Ban</Ban> <Ban>Ban</Ban>
<BanRange>Ban range</BanRange> <BanRange>Ban range</BanRange>
<PrivateMessageTag>[PM]</PrivateMessageTag> <PrivateMessageTag>[PM]</PrivateMessageTag>