using UnityEngine; public class Cmd0614 : CmdBase { private uint m_PlayerID = 0; private int m_SkillID = -1; private Vector3 m_TargetPosition; public uint m_TargetServerID; public GActorFight m_Owner; private byte m_Step = 0; public override void Init(GameNetPackBasic netPack) { H0614_tagUseSkillPos m_NetPack = netPack as H0614_tagUseSkillPos; m_PlayerID = m_NetPack.ObjID; m_SkillID = m_NetPack.SkillID; m_TargetPosition.x = (m_NetPack.PosX - GA_Hero.MapOffset.x) * .5f; m_TargetPosition.z = (m_NetPack.PosY - GA_Hero.MapOffset.z) * .5f; if (m_NetPack.HurtCount > 0) { m_TargetServerID = m_NetPack.HurtList[0].ObjID; } else { m_TargetServerID = 0; } m_Owner = GAMgr.Instance.GetBySID(m_PlayerID) as GActorFight; m_Owner.SkillMgr.CastSkill(m_Owner.ServerInstID, m_SkillID, true); m_Step = 0; } public override void Update() { if (m_SkillID == -1) { m_Finished = true; return; } GActorFight _target = GAMgr.Instance.GetBySID(m_TargetServerID) as GActorFight; GActorNpcFight _npcFight = _target as GActorNpcFight; GActorPlayerBase _player = m_Owner as GActorPlayerBase; if (m_Owner == null || m_Owner.ActorInfo.serverDie) { m_Finished = true; return; } // 如果在寻路则终端当前寻路逻辑 if (m_Owner is GA_Player || m_Owner is GA_NpcFightSgzcZZ) { if (m_Owner.State == E_ActorState.AutoRun) { m_Owner.StopPathFind(); } _player.StopRush(); } Skill _skill = m_Owner.SkillMgr.Get(m_SkillID); switch (m_Step) { case 0: SkillConfig _tagChinSkill = SkillConfig.Get(m_SkillID); Vector3 _targetPos = m_TargetPosition; _targetPos.y = 0; _targetPos = PathFinder.AdjustPosition(_targetPos); _targetPos.y = m_Owner.Pos.y; _skill.targetPosition = _targetPos; if (_tagChinSkill != null) { if (_tagChinSkill.CastTime == 0) { if (_npcFight == null || _npcFight.NpcConfig.NPCType != (int)E_NpcType.Ghost) { //E_SkillCastType _castTrpe = (E_SkillCastType)(_tagChinSkill.Tag % 10); //if (_castTrpe == E_SkillCastType.NeedTarget // || m_Owner is GActorPlayerBase) //{ // //if (_target != null) // //{ // // Vector3 _dir = MathUtility.ForwardXZ(_target.Pos, m_Owner.Pos); // // m_Owner.destForward = m_Owner.Forward = _dir; // //} // //else // //{ // Vector3 _dir = MathUtility.ForwardXZ(_targetPos, m_Owner.Pos); // m_Owner.destForward = m_Owner.Forward = _dir; // //} //} //else //{ Vector3 _dir = MathUtility.ForwardXZ(_targetPos, m_Owner.Pos); m_Owner.destForward = m_Owner.Forward = _dir; //} } } if (_tagChinSkill.Skillactmark > 0 && _tagChinSkill.Skillactmark < 20) { switch (_tagChinSkill.Skillactmark) { case 10: m_Owner.Play(GAStaticDefine.State_Attack1Hash); break; case 11: m_Owner.Play(GAStaticDefine.State_Attack2Hash); break; case 12: m_Owner.Play(GAStaticDefine.State_Attack3Hash); break; case 13: m_Owner.Play(GAStaticDefine.State_Attack4Hash); break; } } else { m_Owner.NextAction = _tagChinSkill.Skillactmark; switch (_tagChinSkill.Skillactmark) { case 21: m_Owner.Play(GAStaticDefine.State_Skill21); break; case 22: m_Owner.Play(GAStaticDefine.State_Skill22); break; case 23: m_Owner.Play(GAStaticDefine.State_Skill23); break; case 24: m_Owner.Play(GAStaticDefine.State_Skill24); break; case 25: m_Owner.Play(GAStaticDefine.State_Skill25); break; case 26: m_Owner.Play(GAStaticDefine.State_Skill26); break; case 27: m_Owner.Play(GAStaticDefine.State_Skill27); break; case 28: m_Owner.Play(GAStaticDefine.State_Skill28); break; case 29: m_Owner.Play(GAStaticDefine.State_Skill29); break; case 99: m_Owner.Play(GAStaticDefine.State_RollHash); break; } } } //if (m_Owner is GA_PlayerXMZZ) //{ m_Finished = true; //} //else //{ // m_Step = 1; //} break; case 1: if (_skill.SkillCompelete) { m_Finished = true; } break; } } }