UNET - Disconnect a Player during OnServerAddPlayer
Hi guys,
I'm looking for a way to kick a player during OnServerAddPlayer in my custom UNETManager. I've seen similar topics around here but none are attempting to do the disconnect this early.
Network.CloseConnection needs a NetworkPlayer, which I don't have yet. All I have is a NetworkConnection. If I call Disconnect on that NetworkConnection it does kick the player but generates a few errors on the Server (Failed to send internal buffer channel:0 bytesToSend:1302 UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate())
Any advice? Thanks in advance.
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
{
if (TestToSeeIfPlayerCanConnect())
{
// Carry on connecting as normal...
}
else
{
// this causes errors
conn.Disconnect();
}
}
Answer by Morgenstern_1 · Jun 15, 2016 at 10:26 AM
Well from tinkering around it seems that doing:
conn.Dispose();
conn.Disconnect();
seems to work without generating errors (although there is a warning). Whether or not this is the right approach remains to be seen, if anyone has any better ideas then please let me know!
Hmmm... I take that back. I seemed to work when running several standalone players on my machine, but as soon as I try over a LAN with other people that code generates errors too.
Failed to send internal buffer channel:0 bytesToSend:547 UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:LogError(Object) UnityEngine.Networking.ChannelPacket:SendToTransport(NetworkConnection, Int32) (at C:\buildslave\unity\build\Extensions\Networking\Runtime\ChannelPacket.cs:52) UnityEngine.Networking.ChannelBuffer:SendInternalBuffer() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\ChannelBuffer.cs:306) UnityEngine.Networking.ChannelBuffer:CheckInternalBuffer() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\ChannelBuffer.cs:134) UnityEngine.Networking.NetworkConnection:FlushChannels() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\NetworkConnection.cs:277) UnityEngine.Networking.NetworkServerSimple:UpdateConnections() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\NetworkServerSimple.cs:197) UnityEngine.Networking.NetworkServerSimple:Update() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\NetworkServerSimple.cs:267) UnityEngine.Networking.NetworkServer:InternalUpdate() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\NetworkServer.cs:706) UnityEngine.Networking.NetworkServer:Update() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\NetworkServer.cs:656) UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate() (at C:\buildslave\unity\build\Extensions\Networking\Runtime\NetworkIdentity.cs:1058)
Your answer