Server ignores kick votes if the client has already voted to kick the same player. Closes #615
This commit is contained in:
@@ -212,6 +212,11 @@ namespace Barotrauma.Networking
|
|||||||
kickVoters.Remove(voter);
|
kickVoters.Remove(voter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool HasKickVoteFrom(Client voter)
|
||||||
|
{
|
||||||
|
return kickVoters.Contains(voter);
|
||||||
|
}
|
||||||
|
|
||||||
public bool HasKickVoteFromID(int id)
|
public bool HasKickVoteFromID(int id)
|
||||||
{
|
{
|
||||||
return kickVoters.Any(k => k.ID == id);
|
return kickVoters.Any(k => k.ID == id);
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ namespace Barotrauma
|
|||||||
byte kickedClientID = inc.ReadByte();
|
byte kickedClientID = inc.ReadByte();
|
||||||
|
|
||||||
Client kicked = GameMain.Server.ConnectedClients.Find(c => c.ID == kickedClientID);
|
Client kicked = GameMain.Server.ConnectedClients.Find(c => c.ID == kickedClientID);
|
||||||
if (kicked != null)
|
if (kicked != null && !kicked.HasKickVoteFrom(sender))
|
||||||
{
|
{
|
||||||
kicked.AddKickVote(sender);
|
kicked.AddKickVote(sender);
|
||||||
Client.UpdateKickVotes(GameMain.Server.ConnectedClients);
|
Client.UpdateKickVotes(GameMain.Server.ConnectedClients);
|
||||||
|
|||||||
Reference in New Issue
Block a user