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