/
NLObP
/
AAEmu
Обзор
Документация
Войти
/
NLObP
/
AAEmu
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
AAEmu.Game/Scripts/SubCommands/Items/ItemUnwrapSubCommand.cs
78 строк
3 KB
Roger Barreto
Collection expressions check + blank lines update (#1110)
11 дек 2024, 19:38
Не верифицирован
11 дек 2024, 19:38
0ce5643
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using AAEmu.Game.Core.Managers; using AAEmu.Game.Models.Game.Char; using AAEmu.Game.Models.Game.Items; using AAEmu.Game.Models.Game.Items.Actions; using AAEmu.Game.Utils.Scripts.SubCommands; using AAEmu.Game.Core.Packets.G2C; using AAEmu.Game.Models.Game.Items.Templates; using AAEmu.Game.Utils.Scripts; namespace AAEmu.Game.Scripts.SubCommands.Items; public class ItemUnwrapSubCommand : SubCommandBase { public ItemUnwrapSubCommand() { Title = "[Item]"; Description = "Set target item's unwrap time to now, or to expire a specified amount of minutes from now."; CallPrefix = $"{CommandManager.CommandPrefix}item unwrap"; AddParameter(new NumericSubCommandParameter<ulong>("itemId", "item id", true)); AddParameter( new NumericSubCommandParameter<float>("minutes", "minutes=-1", false, -1f, 1000000f) { DefaultValue = -1f }); } public override void Execute(ICharacter character, string triggerArgument, IDictionary<string, ParameterValue> parameters, IMessageOutput messageOutput) { //Character addTarget; var selfCharacter = (Character)character; ulong itemId = parameters["itemId"]; var minutes = GetOptionalParameterValue<float>(parameters, "minutes", -1); var item = ItemManager.Instance.GetItemByItemId(itemId); if (item == null) { character.SendMessage($"No item could be found with Id: {itemId}"); return; } if (!(item.Template is EquipItemTemplate equipItemTemplate)) { character.SendMessage($"Item @ITEM_NAME({item.TemplateId}) is not a equipment item, Id: {itemId}"); return; } var newTime = DateTime.UtcNow; character.SendMessage($"Item unwrap using {minutes}"); if (minutes >= 0 && equipItemTemplate.ChargeLifetime > 0) { newTime = newTime.AddMinutes(equipItemTemplate.ChargeLifetime * -1).AddMinutes(minutes); } item.UnpackTime = newTime; item.SetFlag(ItemFlag.Unpacked); if (item.Template.BindType == ItemBindType.BindOnUnpack) { item.SetFlag(ItemFlag.SoulBound); } var updateItemTask = new ItemUpdateSecurity(item, (byte)item.ItemFlags, item.HasFlag(ItemFlag.Secure), item.HasFlag(ItemFlag.Secure), item.ItemFlags.HasFlag(ItemFlag.Unpacked)); character.SendPacket(new SCItemTaskSuccessPacket(ItemTaskType.ItemTaskThistimeUnpack, updateItemTask, [])); if (equipItemTemplate.ChargeLifetime > 0) { character.SendPacket(new SCSyncItemLifespanPacket(true, item.Id, item.TemplateId, item.UnpackTime)); } character.SendMessage($"Item @ITEM_NAME({item.TemplateId}) unwrap time set to {newTime}"); } }