예제 #1
0
        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!");
        }
예제 #2
0
 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));
 }