private void OnItemAction(Item item, string action, BasePlayer player)
 {
     if (player != null && TrackedPlayers.ContainsKey(player.userID))
     {
         TrackedPlayers[player.userID].ResetAFKTime();
     }
 }
 private void OnPlayerActiveItemChanged(BasePlayer player, Item oldItem, Item newItem)
 {
     if (player != null && TrackedPlayers.ContainsKey(player.userID))
     {
         TrackedPlayers[player.userID].ResetAFKTime();
     }
 }
 private void OnPlayerVoice(BasePlayer player, byte[] data)
 {
     if (player != null && TrackedPlayers.ContainsKey(player.userID))
     {
         TrackedPlayers[player.userID].ResetAFKTime();
     }
 }
 private void OnServerInitialized()
 {
     foreach (var player in BasePlayer.activePlayerList)
     {
         TrackedPlayers.Add(player.userID, new AFKPlayer(player));
     }
     InitializeTimer();
 }
        private void CanMoveItem(Item item, PlayerInventory playerLoot, uint targetContainer, int targetSlot, int amount)
        {
            var oplayer = playerLoot?.GetComponent <BasePlayer>();

            if (oplayer != null && TrackedPlayers.ContainsKey(oplayer.userID))
            {
                TrackedPlayers[oplayer.userID].ResetAFKTime();
            }
        }
        private void OnPlayerChat(ConsoleSystem.Arg arg)
        {
            var oplayer = arg?.Player();

            if (oplayer != null && TrackedPlayers.ContainsKey(oplayer.userID))
            {
                TrackedPlayers[oplayer.userID].ResetAFKTime();
            }
        }
        private void CanCraft(ItemCrafter itemCrafter, ItemBlueprint bp, int amount)
        {
            var oplayer = itemCrafter?.GetComponent <BasePlayer>();

            if (oplayer != null && TrackedPlayers.ContainsKey(oplayer.userID))
            {
                TrackedPlayers[oplayer.userID].ResetAFKTime();
            }
        }
        private void CanBuild(Planner planner, Construction prefab, Construction.Target target)
        {
            var oplayer = planner?.GetOwnerPlayer();

            if (oplayer != null && TrackedPlayers.ContainsKey(oplayer.userID))
            {
                TrackedPlayers[oplayer.userID].ResetAFKTime();
            }
        }
Exemple #9
0
        /// <summary>
        /// Removes the role from a specific player.
        /// </summary>
        /// <param name="player">The <see cref="Player"/> to remove the role from.</param>
        public virtual void RemoveRole(Player player)
        {
            TrackedPlayers.Remove(player);
            if (RemovalKillsPlayer)
            {
                player.Role = RoleType.Spectator;
            }
            foreach (CustomAbility ability in CustomAbilities)
            {
                ability.RemoveAbility(player);
            }

            RoleRemoved(player);
        }
        private long GetPlayerAFKTime(ulong id)
        {
#if (DEBUG)
            Puts($"AFK time called for id:{id.ToString()}");
#endif
            if (TrackedPlayers.ContainsKey(id))
            {
                return(TrackedPlayers[id].TimeAFK);
            }
            else
            {
                return(-1L);
            }
        }
Exemple #11
0
        /// <summary>
        /// Handles setup of the role, including spawn location, inventory and registering event handlers.
        /// </summary>
        /// <param name="player">The <see cref="Player"/> to add the role to.</param>
        public virtual void AddRole(Player player)
        {
            Log.Debug($"{Name}: Adding role to {player.Nickname}.", CustomRoles.Instance.Config.Debug);
            if (Role != RoleType.None)
            {
                player.SetRole(Role, SpawnReason.ForceClass, true);
            }

            Timing.CallDelayed(1.5f, () =>
            {
                Vector3 pos = GetSpawnPosition();

                // If the spawn pos isn't 0,0,0, We add vector3.up * 1.5 here to ensure they do not spawn inside the ground and get stuck.
                if (pos != Vector3.zero)
                {
                    player.Position = pos + (Vector3.up * 1.5f);
                }

                if (!KeepInventoryOnSpawn)
                {
                    Log.Debug($"{Name}: Clearing {player.Nickname}'s inventory.", CustomRoles.Instance.Config.Debug);
                    player.ClearInventory();
                }

                foreach (string itemName in Inventory)
                {
                    Log.Debug($"{Name}: Adding {itemName} to inventory.", CustomRoles.Instance.Config.Debug);
                    TryAddItem(player, itemName);
                }

                Log.Debug($"{Name}: Setting health values.", CustomRoles.Instance.Config.Debug);
                player.Health    = MaxHealth;
                player.MaxHealth = MaxHealth;
            });

            Log.Debug($"{Name}: Setting player info", CustomRoles.Instance.Config.Debug);
            player.CustomInfo = $"{Name} (Custom Role)";
            foreach (CustomAbility ability in CustomAbilities)
            {
                ability.AddAbility(player);
            }
            ShowMessage(player);
            RoleAdded(player);
            TrackedPlayers.Add(player);
        }
Exemple #12
0
 /// <summary>
 /// Checks if the given player has this role.
 /// </summary>
 /// <param name="player">The <see cref="Player"/> to check.</param>
 /// <returns>True if the player has this role.</returns>
 public virtual bool Check(Player player) => TrackedPlayers.Contains(player);
 private void OnPlayerDisconnected(BasePlayer player, string reason) => TrackedPlayers.Remove(player.userID);
 private void OnPlayerInit(BasePlayer player) => TrackedPlayers.Add(player.userID, new AFKPlayer(player));