コード例 #1
0
        public override bool IsSkillInCD(SkillNode node)
        {
            if (node == null)
            {
                return(false);
            }
            SkillNode head = GetHead(node.Category);

            if (node.SkillId != head.SkillId)
            {
                return(false);
            }
            SkillInfo head_info = m_Owner.GetSkillStateInfo().GetSkillInfoById(head.SkillId);

            return(head_info.IsInCd(TimeUtility.GetLocalMilliseconds() / 1000.0f));
        }
コード例 #2
0
 private void NpcSkill(NpcInfo npc, int skillId)
 {
     if (null != npc)
     {
         if (npc.SkillController != null)
         {
             SkillInfo skillInfo = npc.GetSkillStateInfo().GetSkillInfoById(skillId);
             if (null != skillInfo)
             {
                 long curTime = TimeUtility.GetServerMilliseconds();
                 if (!skillInfo.IsInCd(curTime / 1000.0f))
                 {
                     npc.SkillController.ForceStartSkill(skillId);
                     skillInfo.BeginCD();
                 }
             }
         }
     }
 }
コード例 #3
0
        private int GetCanCastSkillId(UserInfo user, float dis)
        {
            if (null == user)
            {
                return(-1);
            }
            List <int> skillsCanCast = new List <int>();
            int        start         = (int)SkillCategory.kAttack;
            int        end           = (int)SkillCategory.kSkillD;

            for (int i = start; i <= end; i++)
            {
                SkillNode node = user.SkillController.GetHead((SkillCategory)i);
                if (null != node)
                {
                    SkillInfo skillInfo = user.GetSkillStateInfo().GetSkillInfoById(node.SkillId);
                    if (null != skillInfo)
                    {
                        if (skillInfo.ConfigData.SkillRangeMax >= dis && skillInfo.ConfigData.SkillRangeMin <= dis)
                        {
                            if (!skillInfo.IsInCd(TimeUtility.GetServerMilliseconds()))
                            {
                                skillsCanCast.Add(i);
                            }
                        }
                    }
                }
            }
            int count = skillsCanCast.Count;

            if (count > 0)
            {
                return(skillsCanCast[CrossEngineHelper.Random.Next(count)]);
            }
            return(-1);
        }
コード例 #4
0
        public override bool IsSatifyUser(CharacterInfo entity)
        {
            List <int> skillList = Converter.ConvertNumericList <int>(Config.ActionParam);
            long       curTime   = TimeUtility.GetServerMilliseconds();

            for (int i = 0; i < skillList.Count; i++)
            {
                if (skillList[i] > 0)
                {
                    if (entity.GetSkillStateInfo().GetSkillInfoById(skillList[i]) == null)
                    {
                        return(false);
                    }
                    SkillInfo skillInfo = entity.GetSkillStateInfo().GetSkillInfoById(skillList[i]);
                    if (null == skillInfo || skillInfo.IsInCd(curTime / 1000.0f))
                    {
                        return(false);
                    }
                }
                else
                {
                    AiSkillComboList aiSkillComboConfig = AiSkillComboListProvider.Instance.GetDataById(skillList[i] * -1);
                    if (null != aiSkillComboConfig)
                    {
                        for (int j = 0; j < aiSkillComboConfig.SkillList.Count; j++)
                        {
                            if (entity.GetSkillStateInfo().GetSkillInfoById(aiSkillComboConfig.SkillList[i]) == null)
                            {
                                return(false);
                            }
                            SkillInfo skillInfo = entity.GetSkillStateInfo().GetSkillInfoById(aiSkillComboConfig.SkillList[i]);
                            if (null == skillInfo || skillInfo.IsInCd(curTime / 1000.0f))
                            {
                                return(false);
                            }
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }

            /*
             * foreach (int comboId in skillList) {
             * if (comboId > 0) {
             *  if (entity.GetSkillStateInfo().GetSkillInfoById(comboId) == null) {
             *    return false;
             *  }
             * } else {
             *  AiSkillComboList aiSkillComboConfig = AiSkillComboListProvider.Instance.GetDataById(comboId * -1);
             *  if (null != aiSkillComboConfig) {
             *    foreach (int skillId in aiSkillComboConfig.SkillList) {
             *      if (entity.GetSkillStateInfo().GetSkillInfoById(skillId) == null) {
             *        return false;
             *      }
             *    }
             *  } else {
             *    return false;
             *  }
             * }
             * }*/
            return(true);
        }