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); } }
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"); } } }
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); } } } }