1. I have some problem with OnPlayerInit().
    I try kick player when they join to server, its working but console always PrintWarning()

    Code:
    Server Network Exception
    NullReferenceException: Object reference not set to an instance of an object
    I have no idea why it do that. Player got kicked anyway, but i don't want got that error every time.

    Full source code can be found from Github,
    Autokick/AutoKick.cs at master · exel80/Autokick · GitHub
     
  2. Wulf

    Wulf Community Admin

    Check your RustDedicated_Data/output_log.txt for the full error.
     
  3. 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()
    So maybe i have to wait until player is on "sleeping" mode?
     
  4. Wulf

    Wulf Community Admin

    Sounds like something is trying to run on the player after they are already disconnected, null. So maybe.
     
  5. 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);
                }
            }