public IControl Build(object item) { if (item is EditableParameterViewModel <long> intParam) { if (intParam.Parameter.Parameter is BoolParameter && BoolParameter != null) { return(BoolParameter.Build(item)); } if (intParam.Parameter.Parameter is FlagParameter && FlagParameter != null) { return(FlagParameter.Build(item)); } if (intParam.UseModernPicker && ItemsParameter != null) { return(ItemsParameter.Build(item)); } } else if (item is EditableParameterActionViewModel aevm && ButtonParameter != null) { return(ButtonParameter.Build(item)); } return(Generic?.Build(item) ?? new Panel()); }
public override bool Execute(Npc npc, Character character) { if (!base.Execute(npc, character)) { return(false); } if (string.IsNullOrEmpty(ItemsParameter) && KamasParameter == 0) { character.ResetStats(false); return(true); } if (character.Kamas < KamasParameter) { //Vous n'avez pas assez de kamas pour effectuer cette action. character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 82); return(false); } if (ItemsParameter != null) { var parameter = ItemsParameter.Split(','); var itemsToDelete = new Dictionary <BasePlayerItem, int>(); foreach (var itemParameter in parameter.Select(x => x.Split('_'))) { if (!int.TryParse(itemParameter[0], out int itemId)) { return(false); } if (!int.TryParse(itemParameter[1], out int amount)) { return(false); } var template = ItemManager.Instance.TryGetTemplate(itemId); if (template == null) { return(false); } var item = character.Inventory.TryGetItem(template); if (item == null) { //Vous ne possédez pas l'objet nécessaire. character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 4); return(false); } if (item.Stack < amount) { //Vous ne possédez pas l'objet en quantité suffisante. character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 252); return(false); } itemsToDelete.Add(item, amount); } foreach (var itemToDelete in itemsToDelete) { character.Inventory.RemoveItem(itemToDelete.Key, itemToDelete.Value); } } character.Inventory.SubKamas(KamasParameter); character.ResetStats(false); return(true); }
public override int StartExecute(Character character) { if (!Record.AreConditionsFilled(character)) { character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 1); return(-1); } if (ItemsParameter != null) { var parameter = ItemsParameter.Split(','); var itemsToDelete = new Dictionary <BasePlayerItem, int>(); foreach (var itemParameter in parameter.Select(x => x.Split('_'))) { int itemId; int amount; if (!int.TryParse(itemParameter[0], out itemId)) { return(-1); } if (!int.TryParse(itemParameter[1], out amount)) { return(-1); } var template = ItemManager.Instance.TryGetTemplate(itemId); if (template == null) { return(-1); } var item = character.Inventory.TryGetItem(template); if (item == null) { //Vous ne possédez pas l'objet nécessaire. character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 4); return(-1); } if (item.Stack < amount) { //Vous ne possédez pas l'objet en quantité suffisante. character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 252); return(-1); } itemsToDelete.Add(item, amount); } foreach (var itemToDelete in itemsToDelete) { character.Inventory.RemoveItem(itemToDelete.Key, itemToDelete.Value); } } character.Teleport(GetPosition()); return(base.StartExecute(character)); }