Example #1
0
 private void CmdIsAFK(BasePlayer player, string command, string[] args)
 {
     if (CheckPermission(player, PERMISSIONUSE))
     {
         if (args.Length == 1)
         {
             string status = default(string);
             if (BasePlayer.Find(args[0]) != null)
             {
                 if (AFKPlayers.Contains(BasePlayer.Find(args[0])))
                 {
                     status = lang.GetMessage(misafk, this, player.UserIDString);
                 }
                 else
                 {
                     status = lang.GetMessage(misnotafk, this, player.UserIDString);
                 }
             }
             else
             {
                 status = lang.GetMessage(moffline, this, player.UserIDString);
             }
             Messenger(player, true, mplayerafk, args[0], status);
         }
         else
         {
             Messenger(player, true, merrornoargs);
         }
     }
     else
     {
         Messenger(player, true, mnoperm);
     }
 }
Example #2
0
        private bool IsPlayerAFK(ulong id)
        {
#if (DEBUG)
            Puts($"IsPlayerAFK API method called with id:{id.ToString()}, {AFKPlayers.Any(p => p.userID == id)} returned...");
#endif
            return(AFKPlayers.Any(p => p.userID == id));
        }
Example #3
0
        private void InitializeTimer()
        {
            if (AFKTimer != null && !AFKTimer.Destroyed)
            {
                AFKTimer.Destroy();
            }
            AFKTimer = timer.Every(Settings.GeneralSettings.StatusRefreshInterval, () =>
            {
                foreach (var trackedPlayer in TrackedPlayers.Values)
                {
                    trackedPlayer.CheckPosition(Settings.CompareSettings.CompareRotation);
                    if (trackedPlayer.TimeAFK >= Settings.GeneralSettings.SecondsToAFKStatus && !AFKPlayers.Contains(trackedPlayer.Player))
                    {
                        AFKPlayers.Add(trackedPlayer.Player);
                    }
                    else if (trackedPlayer.TimeAFK < Settings.GeneralSettings.SecondsToAFKStatus && AFKPlayers.Contains(trackedPlayer.Player))
                    {
                        AFKPlayers.Remove(trackedPlayer.Player);
                    }
                    if (Settings.NotificationSettings.NotifyPlayer && Settings.GeneralSettings.SecondsToAFKStatus - trackedPlayer.TimeAFK < Settings.NotificationSettings.NotifyPlayerTime)
                    {
                        Messenger(trackedPlayer.Player, true, mnotify);
                        if (Settings.NotificationSettings.NotifyPlayerSound)
                        {
                            var beep = new Effect();
                            beep.Init(Effect.Type.Generic, trackedPlayer.Player.transform.position, trackedPlayer.Player.transform.forward);
                            beep.pooledString = "assets/prefabs/tools/pager/effects/beep.prefab";
                            EffectNetwork.Send(beep, trackedPlayer.Player.Connection);
                        }
                    }
                }
            });
#if (DEBUG)
            Puts($"New timer initialized with {Settings.GeneralSettings.StatusRefreshInterval.ToString()} interval. " +
                 $"Notifications are {(Settings.NotificationSettings.NotifyPlayer ? "ON" : "OFF")}. " +
                 $"Sounds are {(Settings.NotificationSettings.NotifyPlayerSound ? "ON" : "OFF")}...");
#endif
        }