示例#1
0
        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);
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }