internal void SyncPlayerMoveToAttack(int targetId, float attackRange, float x, float z) { Msg_CR_UserMoveToAttack builder = new Msg_CR_UserMoveToAttack(); builder.target_id = targetId; builder.attack_range = attackRange; builder.cur_pos_x = x; builder.cur_pos_z = z; SendMessage(builder); }
internal void SyncPlayerMoveToAttack(int targetId, float attackRange) { WorldSystem.Instance.IsAlreadyNotifyMeetObstacle = false; UserInfo userInfo = WorldSystem.Instance.GetPlayerSelf(); if (null != userInfo) { MovementStateInfo msi = userInfo.GetMovementStateInfo(); Msg_CR_UserMoveToAttack builder = new Msg_CR_UserMoveToAttack(); builder.target_id = targetId; builder.attack_range = attackRange; builder.cur_pos_x = msi.PositionX; builder.cur_pos_z = msi.PositionZ; SendMessage(builder); } }
internal static void Execute(object msg, User user) { Msg_CR_UserMoveToAttack attack_msg = msg as Msg_CR_UserMoveToAttack; if (attack_msg == null) { return; } UserInfo charactor = user.Info; if (charactor == null) { LogSys.Log(LOG_TYPE.ERROR, "charactor {0} not exist", user.RoleId); return; } /// if (charactor.GetAIEnable()) { MovementStateInfo msi = charactor.GetMovementStateInfo(); msi.PositionX = attack_msg.cur_pos_x; msi.PositionZ = attack_msg.cur_pos_z; UserAiStateInfo aiInfo = charactor.GetAiStateInfo(); AiData_UserSelf_General data = charactor.GetAiStateInfo().AiDatas.GetData <AiData_UserSelf_General>(); if (null == data) { data = new AiData_UserSelf_General(); charactor.GetAiStateInfo().AiDatas.AddData(data); } charactor.GetMovementStateInfo().IsMoving = false; data.FoundPath.Clear(); aiInfo.Time = 0; aiInfo.Target = attack_msg.target_id; aiInfo.IsAttacked = false; aiInfo.AttackRange = attack_msg.attack_range; aiInfo.ChangeToState((int)AiStateId.Combat); } }