private void PushSkill(UserInfo playerself, Vector3 targetpos, float attackrange)
 {
     if (null != playerself && Vector3.Zero != targetpos)
     {
         UserAiStateInfo info = playerself.GetAiStateInfo();
         RevokeSkill(playerself, info);
         info.Time        = 0;
         info.TargetPos   = targetpos;
         info.AttackRange = attackrange;
         info.IsAttacked  = false;
         info.ChangeToState((int)AiStateId.Combat);
     }
 }
 private void RevokeSkill(UserInfo playerself, UserAiStateInfo aiInfo)
 {
     if (null == playerself || null == aiInfo)
     {
         return;
     }
     StopFindPath(playerself, aiInfo);
     aiInfo.Target      = 0;
     aiInfo.IsAttacked  = false;
     aiInfo.Time        = 0;
     aiInfo.TargetPos   = Vector3.Zero;
     aiInfo.AttackRange = 0;
     aiInfo.ChangeToState((int)AiStateId.Idle);
 }
        private void Combat(UserInfo playerself, int targetId, float attackrange)
        {
            if (null != playerself && m_lastSelectObjId != targetId)
            {
                UserAiStateInfo info = playerself.GetAiStateInfo();
                if ((int)AiStateId.Move == info.CurState)
                {
                    StopFindPath(playerself, info);
                }
                info.Time        = 0;
                info.Target      = targetId;
                info.IsAttacked  = false;
                info.AttackRange = attackrange;

                info.ChangeToState((int)AiStateId.Combat);
            }
        }
Exemple #4
0
        public static void ExecPlayerSelfMoveCommand(float x, float y, float z)
        {
            Vector3 pos = new Vector3();

            pos.x = x;
            pos.y = y;
            pos.z = z;
            UserInfo user = WorldSystem.Instance.GetPlayerSelf();

            if (null != user)
            {
                if (!user.UnityPathFinding)
                {
                    List <Vector3> waypoints = user.SpatialSystem.FindPath(user.GetMovementStateInfo().GetPosition3D(), pos, 1);
                    waypoints.Add(pos);
                    UserAiStateInfo       aiInfo = user.GetAiStateInfo();
                    AiData_ForMoveCommand data   = aiInfo.AiDatas.GetData <AiData_ForMoveCommand>();
                    if (null == data)
                    {
                        data = new AiData_ForMoveCommand(waypoints);
                        aiInfo.AiDatas.AddData(data);
                    }

                    data.WayPoints          = waypoints;
                    data.Index              = 0;
                    data.EstimateFinishTime = 0;
                    data.IsFinish           = false;
                    aiInfo.ChangeToState((int)AiStateId.MoveCommand);
                }
                else
                {
                    UserAiStateInfo       aiInfo = user.GetAiStateInfo();
                    AiData_ForMoveCommand data   = aiInfo.AiDatas.GetData <AiData_ForMoveCommand>();
                    if (null == data)
                    {
                        data = new AiData_ForMoveCommand(null);
                        aiInfo.AiDatas.AddData(data);
                    }

                    user.PathFindingFinished = false;
                    user.GetAiStateInfo().ChangeToState((int)AiStateId.PathFinding);
                    user.GetAiStateInfo().PreviousState = (int)AiStateId.MoveCommand;
                    GfxSystem.ForMoveCommandPathToTarget(user, pos);
                }
            }
        }
        private void FindPath(Vector3 targetpos)
        {
            UserInfo playerself = WorldSystem.Instance.GetPlayerSelf();

            if (playerself != null && !playerself.IsDead())
            {
                if (Vector3.Zero == targetpos)
                {
                    return;
                }
                UserAiStateInfo aiInfo = playerself.GetAiStateInfo();
                if (null != aiInfo)
                {
                    StopFindPath(playerself, aiInfo);
                }
                aiInfo.TargetPos = targetpos;
                aiInfo.ChangeToState((int)AiStateId.Move);
            }
        }
        private void StopFindPath(UserInfo playerself, UserAiStateInfo aiInfo)
        {
            if (null == playerself || null == aiInfo)
            {
                return;
            }
            AiData_UserSelf_General data = playerself.GetAiStateInfo().AiDatas.GetData <AiData_UserSelf_General>();

            if (null == data)
            {
                data = new AiData_UserSelf_General();
                playerself.GetAiStateInfo().AiDatas.AddData(data);
            }
            playerself.GetMovementStateInfo().IsMoving = false;
            aiInfo.Time = 0;
            data.Time   = 0;
            data.FoundPath.Clear();
            aiInfo.ChangeToState((int)AiStateId.Idle);
        }
        private void StopAiMove()
        {
            UserInfo playerself = WorldSystem.Instance.GetPlayerSelf();

            if (null != playerself)
            {
                UserAiStateInfo aiInfo = playerself.GetAiStateInfo();
                if (aiInfo.CurState == (int)AiStateId.MoveCommand || aiInfo.CurState == (int)AiStateId.PursuitCommand || aiInfo.CurState == (int)AiStateId.PatrolCommand)
                {
                    aiInfo.Time   = 0;
                    aiInfo.Target = 0;
                    aiInfo.AiDatas.RemoveData <AiData_ForMoveCommand>();
                    aiInfo.AiDatas.RemoveData <AiData_ForPursuitCommand>();
                    aiInfo.AiDatas.RemoveData <AiData_ForPatrolCommand>();
                    aiInfo.ChangeToState((int)AiStateId.Idle);
                    ClientScriptSystem.Instance.SendMessage("aimovestopped");
                }
            }
        }
Exemple #8
0
        public static void ExecObjMoveCommand(int objId, float x, float y, float z)
        {
            Vector3       pos  = new Vector3(x, y, z);
            CharacterInfo obj  = WorldSystem.Instance.GetCharacterById(objId);
            UserInfo      user = obj as UserInfo;

            if (null != user)
            {
                if (!user.UnityPathFinding)
                {
                    List <Vector3> waypoints = user.SpatialSystem.FindPath(user.GetMovementStateInfo().GetPosition3D(), pos, 1);
                    waypoints.Add(pos);
                    UserAiStateInfo       aiInfo = user.GetAiStateInfo();
                    AiData_ForMoveCommand data   = aiInfo.AiDatas.GetData <AiData_ForMoveCommand>();
                    if (null == data)
                    {
                        data = new AiData_ForMoveCommand(waypoints);
                        aiInfo.AiDatas.AddData(data);
                    }
                    data.WayPoints          = waypoints;
                    data.Index              = 0;
                    data.EstimateFinishTime = 0;
                    data.IsFinish           = false;
                    aiInfo.ChangeToState((int)AiStateId.MoveCommand);
                }
                else
                {
                    UserAiStateInfo       aiInfo = user.GetAiStateInfo();
                    AiData_ForMoveCommand data   = aiInfo.AiDatas.GetData <AiData_ForMoveCommand>();
                    if (null == data)
                    {
                        data = new AiData_ForMoveCommand(null);
                        aiInfo.AiDatas.AddData(data);
                    }

                    user.PathFindingFinished = false;
                    user.GetAiStateInfo().ChangeToState((int)AiStateId.PathFinding);
                    user.GetAiStateInfo().PreviousState = (int)AiStateId.MoveCommand;
                    GfxSystem.ForMoveCommandPathToTarget(user, pos);
                }
            }
            else
            {
                NpcInfo npc = obj as NpcInfo;
                if (null != npc)
                {
                    if (!npc.UnityPathFinding)
                    {
                        List <Vector3> waypoints = npc.SpatialSystem.FindPath(npc.GetMovementStateInfo().GetPosition3D(), pos, 1);
                        waypoints.Add(pos);
                        NpcAiStateInfo        aiInfo = npc.GetAiStateInfo();
                        AiData_ForMoveCommand data   = aiInfo.AiDatas.GetData <AiData_ForMoveCommand>();
                        if (null == data)
                        {
                            data = new AiData_ForMoveCommand(waypoints);
                            aiInfo.AiDatas.AddData(data);
                        }
                        data.WayPoints          = waypoints;
                        data.Index              = 0;
                        data.EstimateFinishTime = 0;
                        data.IsFinish           = false;
                        aiInfo.ChangeToState((int)AiStateId.MoveCommand);
                    }
                    else
                    {
                        NpcAiStateInfo        aiInfo = npc.GetAiStateInfo();
                        AiData_ForMoveCommand data   = aiInfo.AiDatas.GetData <AiData_ForMoveCommand>();
                        if (null == data)
                        {
                            data = new AiData_ForMoveCommand(null);
                            aiInfo.AiDatas.AddData(data);
                        }

                        npc.PathFindingFinished = false;
                        npc.GetAiStateInfo().ChangeToState((int)AiStateId.PathFinding);
                        npc.GetAiStateInfo().PreviousState = (int)AiStateId.MoveCommand;
                        GfxSystem.ForMoveCommandPathToTarget(npc, pos);
                    }
                }
            }
        }