Aldebaraan Posted December 21, 2020 Share Posted December 21, 2020 (edited) How do i give mods to some vehicles like helicopters and planes (e.g. minigun for havok and explosive mg for hunter)? Also, how do i make the police helicopter always spawn with the black/white livery instead of the ambulance (red/white)? Vehicle heli = World.CreateVehicle("polmav", Game.Player.Character.Position + offset); Edited December 21, 2020 by Aldebaraan Link to comment Share on other sites More sharing options...
mcal Posted December 21, 2020 Share Posted December 21, 2020 (edited) When i want to find out how to do something to a vehicle, like enable a weapon or something i output all the relative info about said vehicle to an xml, then enable the feature with a trainer, then output all the info again and see what changed. XDocument vehiclesXML = XDocument.Load("Vehicles.xml"); var rootElement = vehiclesXML.Root; rootElement.RemoveAll(); var parentElement = new XElement("Vehicle"); var modsElement = new XElement("Mods"); var toggleModsElement = new XElement("ToggleMods"); var neonsElement = new XElement("Neons"); parentElement.Add(new XElement("Destroyed", "false")); parentElement.Add(new XElement("Handle", veh.Handle.ToString())); parentElement.Add(new XElement("Name", veh.DisplayName)); parentElement.Add(new XElement("Hash", veh.Model.Hash)); parentElement.Add(new XElement("PosX", veh.Position.X)); parentElement.Add(new XElement("PosY", veh.Position.Y)); parentElement.Add(new XElement("PosZ", veh.Position.Z)); parentElement.Add(new XElement("Heading", veh.Heading)); parentElement.Add(new XElement("PrimaryCol", veh.PrimaryColor)); parentElement.Add(new XElement("SecondaryCol", veh.SecondaryColor)); parentElement.Add(new XElement("Health", veh.BodyHealth)); parentElement.Add(new XElement("EngineHealth", veh.EngineHealth)); parentElement.Add(new XElement("WheelType", veh.WheelType)); parentElement.Add(new XElement("RimCol", veh.RimColor)); parentElement.Add(new XElement("SmokeCol", veh.TireSmokeColor)); parentElement.Add(new XElement("NeonCol", veh.NeonLightsColor)); parentElement.Add(new XElement("TrimCol", veh.TrimColor)); parentElement.Add(new XElement("DashCol", veh.DashboardColor)); parentElement.Add(new XElement("NumPlateType", veh.NumberPlateType)); parentElement.Add(new XElement("NumPlate", veh.NumberPlate)); parentElement.Add(new XElement("WindowTint", veh.WindowTint)); parentElement.Add(new XElement("DirtLevel", veh.DirtLevel)); parentElement.Add(new XElement("CanTiresBurst", veh.CanTiresBurst)); parentElement.Add(new XElement("Fuel", veh.FuelLevel)); parentElement.Add(new XElement("Livery", veh.Livery)); if (Function.Call<bool>(Hash.GET_VEHICLE_MOD_VARIATION, veh.Handle, (int)VehicleMod.FrontWheels)) { parentElement.Add(new XElement("CustomTire", true)); } else { parentElement.Add(new XElement("CustomTire", false)); } foreach (VehicleMod mod in Enum.GetValues(typeof(VehicleMod))) { modsElement.Add(new XElement(mod.ToString(), veh.GetMod(mod))); } foreach (VehicleToggleMod mod in Enum.GetValues(typeof(VehicleToggleMod))) { toggleModsElement.Add(new XElement(mod.ToString(), veh.IsToggleModOn(mod))); } foreach (VehicleNeonLight neon in Enum.GetValues(typeof(VehicleNeonLight))) { neonsElement.Add(new XElement(neon.ToString(), veh.IsNeonLightsOn(neon))); } parentElement.Add(modsElement); parentElement.Add(toggleModsElement); parentElement.Add(neonsElement); rootElement.Add(parentElement); vehiclesXML.Save("Vehicles.xml"); This is pretty much what i use.. And for the livery, just set the livery. Edited December 21, 2020 by mcal Aldebaraan and LeeC22 2 Link to comment Share on other sites More sharing options...
Aldebaraan Posted December 21, 2020 Author Share Posted December 21, 2020 8 hours ago, mcal said: When i want to find out how to do something to a vehicle, like enable a weapon or something i output all the relative info about said vehicle to an xml, then enable the feature with a trainer, then output all the info again and see what changed. XDocument vehiclesXML = XDocument.Load("Vehicles.xml"); var rootElement = vehiclesXML.Root; rootElement.RemoveAll(); var parentElement = new XElement("Vehicle"); var modsElement = new XElement("Mods"); var toggleModsElement = new XElement("ToggleMods"); var neonsElement = new XElement("Neons"); parentElement.Add(new XElement("Destroyed", "false")); parentElement.Add(new XElement("Handle", veh.Handle.ToString())); parentElement.Add(new XElement("Name", veh.DisplayName)); parentElement.Add(new XElement("Hash", veh.Model.Hash)); parentElement.Add(new XElement("PosX", veh.Position.X)); parentElement.Add(new XElement("PosY", veh.Position.Y)); parentElement.Add(new XElement("PosZ", veh.Position.Z)); parentElement.Add(new XElement("Heading", veh.Heading)); parentElement.Add(new XElement("PrimaryCol", veh.PrimaryColor)); parentElement.Add(new XElement("SecondaryCol", veh.SecondaryColor)); parentElement.Add(new XElement("Health", veh.BodyHealth)); parentElement.Add(new XElement("EngineHealth", veh.EngineHealth)); parentElement.Add(new XElement("WheelType", veh.WheelType)); parentElement.Add(new XElement("RimCol", veh.RimColor)); parentElement.Add(new XElement("SmokeCol", veh.TireSmokeColor)); parentElement.Add(new XElement("NeonCol", veh.NeonLightsColor)); parentElement.Add(new XElement("TrimCol", veh.TrimColor)); parentElement.Add(new XElement("DashCol", veh.DashboardColor)); parentElement.Add(new XElement("NumPlateType", veh.NumberPlateType)); parentElement.Add(new XElement("NumPlate", veh.NumberPlate)); parentElement.Add(new XElement("WindowTint", veh.WindowTint)); parentElement.Add(new XElement("DirtLevel", veh.DirtLevel)); parentElement.Add(new XElement("CanTiresBurst", veh.CanTiresBurst)); parentElement.Add(new XElement("Fuel", veh.FuelLevel)); parentElement.Add(new XElement("Livery", veh.Livery)); if (Function.Call<bool>(Hash.GET_VEHICLE_MOD_VARIATION, veh.Handle, (int)VehicleMod.FrontWheels)) { parentElement.Add(new XElement("CustomTire", true)); } else { parentElement.Add(new XElement("CustomTire", false)); } foreach (VehicleMod mod in Enum.GetValues(typeof(VehicleMod))) { modsElement.Add(new XElement(mod.ToString(), veh.GetMod(mod))); } foreach (VehicleToggleMod mod in Enum.GetValues(typeof(VehicleToggleMod))) { toggleModsElement.Add(new XElement(mod.ToString(), veh.IsToggleModOn(mod))); } foreach (VehicleNeonLight neon in Enum.GetValues(typeof(VehicleNeonLight))) { neonsElement.Add(new XElement(neon.ToString(), veh.IsNeonLightsOn(neon))); } parentElement.Add(modsElement); parentElement.Add(toggleModsElement); parentElement.Add(neonsElement); rootElement.Add(parentElement); vehiclesXML.Save("Vehicles.xml"); This is pretty much what i use.. And for the livery, just set the livery. I tried that. Spawned a akula unmodified, entered it and fetched the data using your code + Game.Player.Character.CurrentVehicle. Tried again with fully loaded akula. The only things that changed was the color, position and plate. Link to comment Share on other sites More sharing options...
mcal Posted December 21, 2020 Share Posted December 21, 2020 Did you check the Roof modification? <roof></roof> Thats where all vehicles weapons are located. Im not familiar with that vehicle in particular but thats where the Oppressors(mkI and mk II), FH-1 helicopter and the Deluxo's weapons are customised. Aldebaraan 1 Link to comment Share on other sites More sharing options...
LeeC22 Posted December 21, 2020 Share Posted December 21, 2020 (edited) Akula weapons are in Mod numbers 5 (Secondary Weapons), 9 (Bombs) and 10 (Primary Weapons), which are Frame, RightFender and Roof converting to SHVDN enum values, if that helps to spot any changes. Mod numbers start at 0. Edited December 21, 2020 by LeeC22 Aldebaraan 1 Link to comment Share on other sites More sharing options...
Aldebaraan Posted December 25, 2020 Author Share Posted December 25, 2020 On 12/21/2020 at 5:17 PM, LeeC22 said: Akula weapons are in Mod numbers 5 (Secondary Weapons), 9 (Bombs) and 10 (Primary Weapons), which are Frame, RightFender and Roof converting to SHVDN enum values, if that helps to spot any changes. Mod numbers start at 0. Thanks! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now