public void Execute(IRocketPlayer caller, string[] command) { UnturnedPlayer player = (UnturnedPlayer)caller; if (command.Length == 0 || command.Length > 2) { UnturnedChat.Say(player, U.Translate("command_generic_invalid_parameter")); throw new WrongUsageOfCommandException(caller, this); } byte amount = 1; string itemString = command[0].ToString(); if (!ushort.TryParse(itemString, out ushort id)) { List<ItemAsset> sortedAssets = new List<ItemAsset>(SDG.Unturned.Assets.find(EAssetType.ITEM).Cast<ItemAsset>()); ItemAsset asset = sortedAssets.Where(i => i.itemName != null).OrderBy(i => i.itemName.Length).Where(i => i.itemName.ToLower().Contains(itemString.ToLower())).FirstOrDefault(); if (asset != null) id = asset.id; if (String.IsNullOrEmpty(itemString.Trim()) || id == 0) { UnturnedChat.Say(player, U.Translate("command_generic_invalid_parameter")); throw new WrongUsageOfCommandException(caller, this); } } Asset a = SDG.Unturned.Assets.find(EAssetType.ITEM, id); if (command.Length == 2 && !byte.TryParse(command[1].ToString(), out amount) || a == null) { UnturnedChat.Say(player, U.Translate("command_generic_invalid_parameter")); throw new WrongUsageOfCommandException(caller, this); } string assetName = ((ItemAsset)a).itemName; if (U.Settings.Instance.EnableItemBlacklist && !player.HasPermission("itemblacklist.bypass." + id)) { if (UnturnedItems.isBlacklisted(id)) { UnturnedChat.Say(player, U.Translate("command_i_blacklisted")); return; } } if (U.Settings.Instance.EnableItemSpawnLimit && !player.HasPermission("itemspawnlimit.bypass." + id)) { if (amount > U.Settings.Instance.MaxSpawnAmount) { UnturnedChat.Say(player, U.Translate("command_i_too_much", U.Settings.Instance.MaxSpawnAmount)); return; } if (U.Instance.PlayerSpawnInfo != null && U.Instance.PlayerSpawnInfo.ContainsKey(player)) { if (amount + U.Instance.PlayerSpawnInfo[player].RecentSpawnAmount > U.Settings.Instance.MaxRecentSpawnAmount) { player.Kick("You have spawned too many items recently."); ItemManager.askClearAllItems(); } } } if (player.GiveItem(id, amount)) { Logger.Log(U.Translate("command_i_giving_console", player.DisplayName, id, amount)); UnturnedChat.Say(player, U.Translate("command_i_giving_private", amount, assetName, id)); if (U.Instance.PlayerSpawnInfo == null) U.Instance.PlayerSpawnInfo = new Dictionary<UnturnedPlayer, PlayerSpawnInfo>(); if (!U.Instance.PlayerSpawnInfo.ContainsKey(player)) U.Instance.PlayerSpawnInfo.Add(player, new PlayerSpawnInfo(player.CSteamID, amount, amount, DateTime.Now)); else { if ((DateTime.Now - U.Instance.PlayerSpawnInfo[player].LastSpawnTime).TotalMinutes >= 1) { U.Instance.PlayerSpawnInfo.Remove(player); U.Instance.PlayerSpawnInfo.Add(player, new PlayerSpawnInfo(player.CSteamID, amount, amount, DateTime.Now)); } else { int Amount = U.Instance.PlayerSpawnInfo[player].RecentSpawnAmount; U.Instance.PlayerSpawnInfo.Remove(player); U.Instance.PlayerSpawnInfo.Add(player, new PlayerSpawnInfo(player.CSteamID, amount, amount + Amount, DateTime.Now)); } } } else { UnturnedChat.Say(player, U.Translate("command_i_giving_failed_private", amount, assetName, id)); } }