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(); } }
/// <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); } }
/// <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); }
/// <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));