Fixed OwnerClientName & OwnerClientIP not being set on respawned characters. The characters of clients who aren't in-game 30 seconds after a round starts are treated as disconnected, making it possible for the client to gain control of the character if they do manage to connect. Closes #583, #584
This commit is contained in:
@@ -872,11 +872,10 @@ namespace Barotrauma.Networking
|
||||
else
|
||||
{
|
||||
//if 30 seconds have passed since the round started and the client isn't ingame yet,
|
||||
//kill the client's character
|
||||
//consider the client's character disconnected (causing it to die if the client does not join soon)
|
||||
if (gameStarted && c.Character != null && (DateTime.Now - roundStartTime).Seconds > 30.0f)
|
||||
{
|
||||
c.Character.Kill(CauseOfDeath.Disconnected);
|
||||
c.Character = null;
|
||||
c.Character.ClientDisconnected = true;
|
||||
}
|
||||
|
||||
ClientWriteLobby(c);
|
||||
|
||||
@@ -519,6 +519,8 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
#endif
|
||||
clients[i].Character = character;
|
||||
character.OwnerClientIP = clients[i].Connection.RemoteEndPoint.Address.ToString();
|
||||
character.OwnerClientName = clients[i].Name;
|
||||
GameServer.Log(string.Format("Respawning {0} ({1}) as {2}", clients[i].Name, clients[i].Connection?.RemoteEndPoint?.Address, characterInfos[i].Job.Name), ServerLog.MessageType.Spawning);
|
||||
|
||||
#if CLIENT
|
||||
|
||||
Reference in New Issue
Block a user