Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public enum Nodetype { AnyRoad,Highway , Road, Offroad, Water }
- public static Vector3 GenerateSpawnPos(Vector3 desiredPos, Nodetype roadtype, bool sidewalk)
- {
- Vector3 finalpos = Vector3.Zero;
- OutputArgument outArgA = new OutputArgument();
- int NodeNumber = 1;
- int type = 0;
- if (roadtype == Nodetype.AnyRoad) type = 1;
- if (roadtype == Nodetype.Road || roadtype == Nodetype.Highway) type = 0;
- if (roadtype == Nodetype.Offroad) { type = 1; }
- if (roadtype == Nodetype.Water) type = 3;
- int NodeID = Function.Call<int>(Hash.GET_NTH_CLOSEST_VEHICLE_NODE_ID, desiredPos.X, desiredPos.Y, desiredPos.Z, NodeNumber, type, 300f, 300f);
- if ( roadtype== Nodetype.Offroad || roadtype == Nodetype.Highway )
- {
- for (int i = 0; i < 100; i++)
- {
- if(roadtype == Nodetype.Highway)
- {
- Function.Call(Hash.GET_VEHICLE_NODE_POSITION, NodeID, outArgA);
- Vector3 properPos = outArgA.GetResult<Vector3>();
- if (!RoadHasFlag(properPos, PathnodeFlags.Freeway)) // !Function.Call<bool>(Hash._GET_IS_SLOW_ROAD_FLAG, NodeID))
- {
- NodeID = Function.Call<int>(Hash.GET_NTH_CLOSEST_VEHICLE_NODE_ID, desiredPos.X, desiredPos.Y, desiredPos.Z, NodeNumber, type, 300f, 300f);
- NodeNumber++;
- }
- else break;
- }
- if (roadtype == Nodetype.Offroad )
- {
- if (!Function.Call<bool>(Hash._GET_IS_SLOW_ROAD_FLAG, NodeID))
- {
- NodeID = Function.Call<int>(Hash.GET_NTH_CLOSEST_VEHICLE_NODE_ID, desiredPos.X, desiredPos.Y, desiredPos.Z, NodeNumber, type, 300f, 300f);
- NodeNumber++;
- }
- else break;
- }
- }
- }
- Function.Call(Hash.GET_VEHICLE_NODE_POSITION, NodeID, outArgA);
- finalpos = outArgA.GetResult<Vector3>();
- if (sidewalk) finalpos = World.GetNextPositionOnSidewalk(finalpos);
- return finalpos;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement