Example #1
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);
 }
Example #2
0
        private void IncreaseLoginRounds(string login)
        {
            lock (_readWriteLockObject)
            {
                if (!LoginRounds.ContainsKey(login))
                {
                    LoginRounds[login] = 0;
                }

                LoginRounds[login] += 1;
            }
        }
Example #3
0
        private void Callbacks_BeginRace(object sender, BeginRaceEventArgs e)
        {
            RunCatchLog(() =>
            {
                if (Settings.KickMode != IdleKickMode.ROUNDS)
                {
                    return;
                }

                List <KeyValuePair <string, uint> > loginsToKick;
                lock (_readWriteLockObject)
                {
                    foreach (string login in LoginRounds.Keys.ToArray())
                    {
                        IncreaseLoginRounds(login);
                    }

                    loginsToKick = LoginRounds.Where(loginRound => loginRound.Value >= Settings.RoundsCount && !LoginHasRight(loginRound.Key, false, "NoIdleKick")).ToList();
                }

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

                        if (playerSettings == null || playerSettings.SpectatorStatus.IsSpectator)
                        {
                            ResetLoginRounds(loginRound.Key);
                            continue;
                        }
                    }

                    KickLogin(loginRound.Key);
                }
            }, "Error in Callbacks_BeginChallenge Method.", true);
        }