Beispiel #1
0
        public override void Destory()
        {
            m_bJump = false;
            CCreature cc = GetCaster();

            if (cc != null)
            {
                GetCaster().UpdateMoveSpeed();
            }

            VObject vo = cc.GetVObject();

            if (vo != null)
            {
                vo.PushCommand(new CmdFspStopMove());
                vo.SetMove(false);
            }

            base.Destory();
        }
Beispiel #2
0
        public void EnterFrame()
        {
            if (m_player.IsDie())
            {
                return;
            }

            m_curTime += FSPParam.clientFrameMsTime;
            if (m_curTime >= 40 * FSPParam.clientFrameMsTime)
            {
                if (m_tree != null)
                {
                    m_tree.OnUpdate();
                }

                // AI技能外部CD
                int curSkillInterval = m_tree.m_dataBase.GetData <int>((int)eAIParam.INT_SKILL_INTERVAL);
                if (curSkillInterval >= 0)
                {
                    curSkillInterval -= FSPParam.clientFrameMsTime;
                    m_tree.m_dataBase.SetData <int>((int)eAIParam.INT_SKILL_INTERVAL, curSkillInterval);
                }

                if (Client.Inst().m_bDebug)
                {
                    string state = GetCurState();
                    if (!string.IsNullOrEmpty(state))// 如果卡主,可以知道最后一个状态
                    {
                        // 状态显示
                        VObject mt = m_player.GetVObject();
                        if (mt == null)
                        {
                            return;
                        }
                        CmdUIHead cmd = new CmdUIHead();
                        cmd.type = 1;
                        cmd.name = m_player.GetUid() + ":" + state;
                        mt.PushCommand(cmd);
                    }
                }

                // 仇恨值
                m_curHatredTime += FSPParam.clientFrameMsTime;
                if (m_curHatredTime >= 30 * FSPParam.clientFrameMsTime)
                {
                    _UpdateHatredList();
                    //主角显示测试界面
                    if (m_player.IsMaster())
                    {
                        m_hatredList.Sort((x, y) =>
                        {
                            if (x.val == y.val)
                            {
                                return(0);
                            }
                            else if (x.val > y.val)
                            {
                                return(-1);
                            }
                            else
                            {
                                return(1);
                            }
                        });
                        //m_list.Init(m_hatredList.Count, (item, index) =>
                        //{
                        //    UIItem.SetText(item, "txt", m_hatredList[index].uid + " 仇恨值:" + m_hatredList[index].val);
                        //    UIItem.SetProgress(item, "pct", m_hatredList[index].val, 100);
                        //});
                    }
                    m_curHatredTime = 0;
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// 常规技能的开始阶段
        /// 1.也包含了循环动作的技能,如旋风斩
        /// 2.支持背后武器火炮的攻击时,挂点的改变
        /// </summary>
        public virtual void Start()
        {
            BattleEntity ent     = m_casterObject.GetEnt() as BattleEntity;
            int          animaId = m_casterData.animaName;
            AnimationCsv anima   = CsvManager.Inst.GetCsv <AnimationCsv>((int)eAllCSV.eAC_Animation);

            m_curAnima = anima.GetData(animaId);
            if (m_curAnima != null)
            {
                CmdSkillAnimaPriority cmd = new CmdSkillAnimaPriority();
                m_casterObject.PushCommand(cmd);
                if (m_curAnima.mode == (int)WrapMode.Loop)
                {
                    ent.PlayAnima(animaId, null);
                }
                else
                {
                    if (m_curAnima.switchHand)  // 如果是火炮,特殊处理一下,施法时武器切换到手上
                    {
                        ent.BackEquipStart();
                    }
                    ent.PlayAnima(animaId, () =>
                    {
                        ent.BackEquipEnd();
                    });
                }
            }

            int effectId = m_casterData.effectId;

            if (m_casterData.startTime == 0)
            {
                m_curCasterEffectHid = CEffectMgr.Create(effectId, ent, m_casterData.bindPoint);
            }
            else
            {
                TimeMgr.Inst.RegisterEvent(m_casterData.startTime * 0.001f, () =>
                {
                    m_curCasterEffectHid = CEffectMgr.Create(effectId, ent, m_casterData.bindPoint);
                });
            }

            if (m_casterObject == null ||
                m_curSkillCmd == null ||
                m_casterObject.m_cmdUpdateEquip == null)
            {
                return;
            }

            // 播放语音,1手雷 2火炮
            //if (m_curSkillCmd.m_skillIndex == 0)
            //{
            //    if (m_casterObject.m_cmdUpdateEquip.m_armsType == (int)eArmsType.Near)
            //    {
            //        m_casterObject.PlaySpeak(eRoleSpeakCsv.skill1Near);
            //    }
            //    else
            //    {
            //        m_casterObject.PlaySpeak(eRoleSpeakCsv.skill1Far);
            //    }
            //}
            //else if(m_curSkillCmd.m_skillIndex == 1)
            //{
            //    m_casterObject.PlaySpeak(eRoleSpeakCsv.skill2);
            //}
            //else if(m_curSkillCmd.m_skillIndex == 2)
            //{
            //    m_casterObject.PlaySpeak(eRoleSpeakCsv.skill3);
            //}
        }