Example #1
0
        private void KickIdlingPlayers(object state)
        {
            RunCatchLog(() =>
            {
                DateTime now = DateTime.Now;
                IEnumerable <KeyValuePair <string, DateTime> > loginsToKick;

                lock (_readWriteLockObject)
                {
                    loginsToKick = LoginTimes.Where(loginTime => (now - loginTime.Value).TotalSeconds >= Settings.SecondsCount && !LoginHasRight(loginTime.Key, false, "NoIdleKick"));
                }

                foreach (KeyValuePair <string, DateTime> loginTime in loginsToKick)
                {
                    if (!Settings.KickSpectators)
                    {
                        PlayerSettings playerSettings = GetPlayerSettings(loginTime.Key);

                        if (playerSettings == null || playerSettings.SpectatorStatus.IsSpectator)
                        {
                            ResetLoginsTime(loginTime.Key);
                            continue;
                        }
                    }

                    KickLogin(loginTime.Key);
                }
            }, "Error in KickIdlingPlayers Method.", true);
        }
Example #2
0
 private void Callbacks_PlayerDisconnect(object sender, PlayerDisconnectEventArgs e)
 {
     RunCatchLog(() =>
     {
         lock (_readWriteLockObject)
         {
             LoginRounds.Remove(e.Login);
             LoginTimes.Remove(e.Login);
         }
     }, "Error in Callbacks_PlayerDisconnect Method.", true);
 }