private async void OnStartTrain() { Debug.WriteLine("The train has arrived."); // Remove existing trains API.DeleteAllTrains(); // Load all train models var tasks = TrainModels.Select(model => model.Request(5000)); bool[] success = await Task.WhenAll(tasks); if (!success.All((x) => x)) { Debug.WriteLine("Failed to load a train model. Bailing!"); return; } var trains = new List <int>(3); // Create the main train Vector3 spawn = TrainSpawns.ElementAt(Random.Next(TrainSpawns.Count())); bool faceForward = Random.Next(0, 1) == 1; int variation = Random.Next(0, 22); int metroVariation = 24; trains.Add(API.CreateMissionTrain(variation, spawn.X, spawn.Y, spawn.Z, faceForward)); // Create metro trains trains.Add(API.CreateMissionTrain(metroVariation, MetroSpawn1.X, MetroSpawn1.Y, MetroSpawn1.Z, true)); trains.Add(API.CreateMissionTrain(metroVariation, MetroSpawn2.X, MetroSpawn2.Y, MetroSpawn2.Z, true)); // Add drivers and set as mission entities foreach (var train in trains) { API.CreatePedInsideVehicle( train, 26, // Human ped type (uint)DriverModel.Hash, (int)VehicleSeat.Driver, true, true ); API.SetEntityAsMissionEntity(train, true, true); // Add blip to train (delete this later) var blip = new Blip(API.AddBlipForEntity(train)) { Color = BlipColor.FranklinGreen, Name = "Train", Sprite = BlipSprite.Tonya }; } Debug.WriteLine("Loaded trains!"); }
private void SetupTrainSpawns() { TrainSpawns.Add(new Vector3(2533, 2833, 38)); TrainSpawns.Add(new Vector3(2606, 2927, 40)); TrainSpawns.Add(new Vector3(2463, 3872, 38.8f)); TrainSpawns.Add(new Vector3(1164, 6433, 32)); TrainSpawns.Add(new Vector3(537, -1324.1f, 29.1f)); TrainSpawns.Add(new Vector3(219.1f, -2487.7f, 6)); }