protected override Vehicle spawnAirTraffic() { // randomly select a jet to spawn CustomWeaponJet selectedJet = _jets[rng.Next(0, _jets.Length)]; // determine the position and orientation to spawn the vehicle Vector3 spawnPos = getSpawnPosition(); float spawnHeading = (float)rng.NextDouble() * 360f; // spawn vehicle Vehicle veh = World.CreateVehicle(selectedJet.model, spawnPos, spawnHeading); if (veh == null) { string modelName = selectedJet.modelName; GTA.UI.Notification.Show("~r~Jet Intercept: unable to spawn vehicle: " + modelName); return(null); } // configure vehicle configureVehicle(veh); // spawn pilot in vehicle Ped pilot = spawnPilotInVehicle(veh); // give the pilot a task pilotTasking(veh, pilot); // if applicable, make pilot switch weapon if (selectedJet.weaponName != "") { bool pilotSwitchedWeapon = pilotSetVehicleWeapon(pilot, selectedJet.weaponHash); if (!pilotSwitchedWeapon) // if unsuccessful { GTA.UI.Notification.Show("~r~Jet Intercept: pilot of " + selectedJet.modelName + " unable to switch to weapon " + selectedJet.weaponName); } } // draw blip on vehicle if (_drawBlip) { drawCustomBlip(veh); } return(veh); }
protected CustomWeaponJet[] readCwjFromString(string models) { // split the string on comma delimiter, then generate hash from each model name List <string> modelStrings = models.Split(',').ToList(); // custom weapons: split each modelString on colon ":" CustomWeaponJet[] cwj = new CustomWeaponJet[modelStrings.Count]; for (int i = 0; i < modelStrings.Count; i++) { List <string> modelStringSplit = modelStrings[i].Trim().Split(':').ToList(); cwj[i] = new CustomWeaponJet() { modelString = modelStrings[i], modelName = modelStringSplit[0], model = Game.GenerateHash(modelStringSplit[0]), weaponName = modelStringSplit.Count >= 2 ? modelStringSplit[1] : "", weaponHash = modelStringSplit.Count >= 2 ? (Hash)Game.GenerateHash(modelStringSplit[1]) : (Hash)0 }; } return(cwj); }