private void OnTriggerSend(SteamPlayer player, string name, ESteamCall mode, ESteamPacket type, params object[] arguments)
        {
            if (name == "tellGesture")
            {
                var up = UnturnedPlayer.FromSteamPlayer(player);
                var id = int.Parse(arguments[0].ToString());
                if (id == 8)
                {
                    if (!Configuration.Instance.UsePermissions || up.HasPermission("pickpocket"))
                    {
                        Player victimPlayer = RaycastHelper.GetPlayerFromHits(up.Player, Configuration.Instance.MaxDistance);

                        if (victimPlayer != null)
                        {
                            if (Cooldowns.TryGetValue(up.Id.ToString(), out DateTime expireDate) && expireDate > DateTime.Now)
                            {
                                UnturnedChat.Say(up.CSteamID, Translate("COOLDOWN", System.Math.Truncate((expireDate - DateTime.Now).TotalSeconds)), MessageColor);
                            }
                            else
                            {
                                if (expireDate != null)
                                {
                                    Cooldowns.Remove(up.Id);
                                }
                                UnturnedPlayer victim = UnturnedPlayer.FromPlayer(victimPlayer);
                                if (victim.HasPermission("bypass.pickpocket"))
                                {
                                    UnturnedChat.Say(up, Translate("BYPASS"), MessageColor);
                                    return;
                                }
                                PickpocketComponent comp = up.Player.gameObject.AddComponent <PickpocketComponent>();
                                comp.Initialize(up, victim, this);
                                Cooldowns.Add(up.Id, DateTime.Now.AddSeconds(Configuration.Instance.PickpocketCooldown));
                            }
                        }
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Tells the music player to play the song with the specific id
        /// </summary>
        /// <param name="id">Id of the song to play</param>
        /// <returns></returns>
        public async Task PlayID(string id)
        {
            Song song = SongList.First(x => x.id == id);

            if (song?.path == null)
            {
                throw new ApiError("Song has no path");
            }
            await PlayFile(song.path);

            if (Cooldowns.TryGetValue(id, out Timer timer2))
            {
                timer2.Dispose();
                Cooldowns.Remove(id);
            }
            Timer timer = new Timer(6.48e+7);

            timer.Elapsed      += delegate { CooldownElapsed(id); };
            song.canBePlayed    = false;
            song.cooldownExpiry = DateTime.UtcNow.AddMilliseconds(6.48e+7);
            timer.AutoReset     = false;
            timer.Start();
            Cooldowns.Add(id, timer);
        }