public override int StartExecute(Character character) { if (character.IsBusy()) { return(-1); } if (!Record.AreConditionsFilled(character)) { character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 1); return(-1); } var paddock = PaddockManager.Instance.GetPaddockByMap(InteractiveObject.Map.Id); if (paddock == null) { return(-1); } var exchange = new PaddockExchange(character, paddock); exchange.Open(); return(base.StartExecute(character)); }
public override int StartExecute(Character character) { if (!Record.AreConditionsFilled(character)) { character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 1); return(-1); } var map = World.Instance.GetMap(MapId); var interactive = map.GetInteractiveObject(ElementId); if (interactive == null) { return(-1); } if (interactive.State != InteractiveStateEnum.STATE_NORMAL) { return(-1); } interactive.SetInteractiveState(InteractiveStateEnum.STATE_ACTIVATED); if (Obstacles.Any()) { Obstacles.ForEach(x => x.state = (sbyte)MapObstacleStateEnum.OBSTACLE_OPENED); InteractiveHandler.SendMapObstacleUpdatedMessage(map.Clients, Obstacles); } foreach (var element in map.GetInteractiveObjects()) { InteractiveHandler.SendInteractiveElementUpdatedMessage(map.Clients, character, element); } return(base.StartExecute(character)); }
public override bool IsEnabled(Character character) => base.IsEnabled(character) && Record.AreConditionsFilled(character);
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)); }
public override bool AreConditionsFilled(Character character) { return(Record.AreConditionsFilled(character)); }