コード例 #1
0
ファイル: SkillPaddock.cs プロジェクト: Mixi59/Stump
        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));
        }
コード例 #2
0
ファイル: SkillAnimate.cs プロジェクト: Mixi59/Stump
        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));
        }
コード例 #3
0
ファイル: SkillZaapiTeleport.cs プロジェクト: Mixi59/Stump
 public override bool IsEnabled(Character character) => base.IsEnabled(character) && Record.AreConditionsFilled(character);
コード例 #4
0
        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));
        }
コード例 #5
0
ファイル: CustomSkill.cs プロジェクト: Mixi59/Stump
 public override bool AreConditionsFilled(Character character)
 {
     return(Record.AreConditionsFilled(character));
 }