I have some problem with OnPlayerInit().
I try kick player when they join to server, its working but console always PrintWarning()
I have no idea why it do that. Player got kicked anyway, but i don't want got that error every time.Code:Server Network Exception NullReferenceException: Object reference not set to an instance of an object
Full source code can be found from Github,
Autokick/AutoKick.cs at master · exel80/Autokick · GitHub
Solved Server network exception and NRE when kicking player
Discussion in 'Rust Development' started by Exel80, Sep 15, 2016.
-
Wulf Community Admin
Check your RustDedicated_Data/output_log.txt for the full error.
-
So maybe i have to wait until player is on "sleeping" mode?Code:
NullReferenceException: Object reference not set to an instance of an object at ServerMgr.SpawnPlayerSleeping (Network.Connection connection) [0x00000] in <filename unknown>:0 at ServerMgr.ClientReady (Network.Message packet) [0x00000] in <filename unknown>:0 at ServerMgr.OnNetworkMessage (Network.Message packet) [0x00000] in <filename unknown>:0 at Facepunch.Network.Raknet.Server.ConnectedPacket (Network.Connection connection) [0x00000] in <filename unknown>:0 at Facepunch.Network.Raknet.Server.Cycle () [0x00000] in <filename unknown>:0 at ServerMgr.Update () [0x00000] in <filename unknown>:0 UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object) UnityEngine.DebugLogHandler:LogException(Exception, Object) UnityEngine.Logger:LogException(Exception, Object) UnityEngine.Debug:LogException(Exception, Object) ServerMgr:Update()
-
Wulf Community Admin
Sounds like something is trying to run on the player after they are already disconnected, null. So maybe. -
I added some timers and now its work fine. Thank you again Wulf
<3
Code:void OnPlayerInit(BasePlayer player) { if (config.Settings["Toggle"].ToLower() == "true") timer.Repeat(5f, 3, SomeoneTryConnect); } private void SomeoneTryConnect() { foreach (BasePlayer player in BasePlayer.activePlayerList.ToList()) { int _auth; if (!int.TryParse(player.net.connection.authLevel.ToString(), out _auth)) { PrintWarning("Somethings went wrong.."); return; } string _name = player.displayName; string _id = player.UserIDString; string message = config.Settings["KickMessage"]; if (DEBUG) Puts($"[Deubg] Name: {_name}, Id: {_id} (Auth: {_auth})"); if (config.Settings["Allow - Auth1 - Connect"].ToLower() == "true" && _auth == 1) return; else if (config.Settings["Allow - Auth2 - Connect"].ToLower() == "true" && _auth == 2) return; if (player.isConnected) player.Kick(message); } }
