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(); }
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; } } }
/// <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); //} }