I spent a short bit of time looking at the new Beta API for a 'Mission Menu' and figuring out how to direct traffic. When you crash you can call for an ambulance.
Details and test mission download here:
http://simhq.com/forum/ubbthreads.ph...ml#Post3387861
The interesting part of the script is here:
Code:
else if (menuItemIndex == 6)
{
GamePlay.gpHUDLogCenter("Ambulance Dispatched!");
Player[] all = { player };
AiActor amb = GamePlay.gpActorByName("0_Chief"); // Our ambulance, defined as
first vehicle in mission
if (amb != null)
{
AiGroup g = (AiGroup)amb; // Everything with waypoints is always in groups
AiWayPoint[] waypoints = g.GetWay(); // Get the waypoints it had
foreach (AiWayPoint waypoint in waypoints)
{
//GamePlay.gpLogServer(all, "waypoint: x=" + waypoint.P.x.ToString() + " y=" +
waypoint.P.y.ToString(), null);
x = waypoint.P.x;
y = waypoint.P.y;
z = waypoint.P.z; // Remember this for late, as we need a good height from somewhere
}
Player me = GamePlay.gpPlayer();
AiActor where = me.Place();
Point3d pos = where.Pos(); // Get our position, i.e. where to send the ambulance
Point3d target = new Point3d(pos.x, pos.y, z); // Set our target to be us
//GamePlay.gpLogServer(all, "me: x=" + pos.x.ToString() + " y=" + pos.y.ToString()
+ " z=" + pos.z.ToString(), null);
// Note: Set the z height to be the last waypoint height rather than it's real height,
Pos seems a PoS
Point3d last_known = new Point3d(amb.Pos().x, amb.Pos().y, z);
AiGroundWayPoint[] newWaypoints = { new AiGroundWayPoint(ref last_known, 50.0, 0.0, 10.0),
new AiGroundWayPoint(ref target, 50.0, 0.0, 10.0) };
g.SetWay(newWaypoints); // Off we go, on new route!
AiWayPoint[] resetWaypoints = g.GetWay(); // Just diagnostics, i.e. can be removed
but basically to check they took
foreach (AiWayPoint waypoint in resetWaypoints)
{
//GamePlay.gpLogServer(all, "New waypoint: x=" + waypoint.P.x.ToString() + " y="
+ waypoint.P.y.ToString(), null);
}
}
setMainMenu(player);
}
Hope that helps put someone on the right spline.