Fixed clients being able to votekick/kick/ban themselves in the server lobby.
This commit is contained in:
@@ -1332,31 +1332,31 @@ namespace Barotrauma.Networking
|
|||||||
public override bool SelectCrewCharacter(Character character, GUIComponent characterFrame)
|
public override bool SelectCrewCharacter(Character character, GUIComponent characterFrame)
|
||||||
{
|
{
|
||||||
if (character == null) return false;
|
if (character == null) return false;
|
||||||
|
|
||||||
if (character != myCharacter)
|
if (character != myCharacter)
|
||||||
{
|
{
|
||||||
var client = GameMain.NetworkMember.ConnectedClients.Find(c => c.Character == character);
|
var client = GameMain.NetworkMember.ConnectedClients.Find(c => c.Character == character);
|
||||||
if (client == null) return false;
|
if (client == null) return false;
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
kickVoteButton.Enabled = !client.HasKickVoteFromID(myID);
|
kickVoteButton.Enabled = !client.HasKickVoteFromID(myID);
|
||||||
}
|
}
|
||||||
|
|
||||||
kickVoteButton.UserData = character;
|
kickVoteButton.UserData = character;
|
||||||
|
|||||||
@@ -871,17 +871,20 @@ 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)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user