private async void ChangeCustomColours(Vehicle vehicle, string action, bool changePrimary = true, bool changeSecondary = true) { VehicleModCollection mods = vehicle.Mods; Color colour; if (action == "input") { colour = await GetInputColour(); } else { colour = Trainer.CommaSeparatedStringToColor(action); await Task.FromResult(0); } if (changePrimary) { mods.CustomPrimaryColor = colour; } if (changeSecondary) { mods.CustomSecondaryColor = colour; } }
private void SetChrome(Vehicle vehicle) { var chrome = VehicleColor.Chrome; VehicleModCollection mods = vehicle.Mods; mods.ClearCustomPrimaryColor(); mods.ClearCustomSecondaryColor(); mods.PrimaryColor = chrome; mods.SecondaryColor = chrome; }
private string ToModString(VehicleModCollection mods) { var modList = new Dictionary <string, string>(); if (mods.IsPrimaryColorCustom) { modList["CustomPrimary"] = Trainer.ColorToRgbString(mods.CustomPrimaryColor); } else { modList["PrimaryColour"] = Convert.ToString((int)mods.PrimaryColor); } if (mods.IsSecondaryColorCustom) { modList["CustomSecondary"] = Trainer.ColorToRgbString(mods.CustomSecondaryColor); } else { modList["SecondaryColour"] = Convert.ToString((int)mods.SecondaryColor); } modList["PearlescentColour"] = Convert.ToString((int)mods.PearlescentColor); modList["Livery"] = Convert.ToString(mods.Livery); modList["PlateText"] = mods.LicensePlate; modList["PlateStyle"] = Convert.ToString((int)mods.LicensePlateStyle); modList["RimColour"] = Convert.ToString((int)mods.RimColor); modList["WindowTint"] = Convert.ToString((int)mods.WindowTint); modList["DashboardColour"] = Convert.ToString((int)mods.DashboardColor); modList["NeonColour"] = Trainer.ColorToRgbString(mods.NeonLightsColor); modList["TyreSmokeColour"] = Trainer.ColorToRgbString(mods.TireSmokeColor); modList["TyreSmoke"] = mods[VehicleToggleModType.TireSmoke].IsInstalled ? "true" : "false"; modList["Turbo"] = mods[VehicleToggleModType.Turbo].IsInstalled ? "true" : "false"; modList["XenonHeadlights"] = mods[VehicleToggleModType.XenonHeadlights].IsInstalled ? "true" : "false"; modList["TrimColour"] = Convert.ToString((int)mods.TrimColor); modList["ColourCombo"] = Convert.ToString(mods.ColorCombination); modList["WheelType"] = Convert.ToString((int)mods.WheelType); for (var i = 0; i < 4; i++) { modList[$"NeonEnabled{i}"] = mods.IsNeonLightsOn((VehicleNeonLight)i) ? "true" : "false"; } foreach (var mod in mods.GetAllMods()) { var modTypeInt = (int)mod.ModType; modList[$"Mod#{modTypeInt}"] = Convert.ToString(mod.Index); } return(JsonConvert.SerializeObject(modList)); }
private CallbackDelegate OnVehRim(IDictionary <string, object> data, CallbackDelegate callback) { Vehicle vehicle = Game.PlayerPed.CurrentVehicle; int iColour = Convert.ToInt32(data["action"]); var colour = (VehicleColor)iColour; if (vehicle == null) { Trainer.AddNotification("~r~Not in a vehicle!"); } else { VehicleModCollection mods = vehicle.Mods; mods.RimColor = colour; } callback("ok"); return(callback); }
private async Task RainbowTick() { await BaseScript.Delay(100); if (!( Config["RainbowPaint"] == "true" || Config["RainbowChrome"] == "true" || Config["RainbowNeon"] == "true" || Config["RainbowNeonInverse"] == "true" )) { return; } Ped ped = Game.PlayerPed; Vehicle vehicle = ped.CurrentVehicle; if (vehicle == null || vehicle.Driver != ped) { return; } Color rgb = RainbowRGB(RainbowSpeed); VehicleModCollection mods = vehicle.Mods; if (Config["RainbowPaint"] == "true" || Config["RainbowChrome"] == "true") { mods.CustomPrimaryColor = rgb; mods.CustomSecondaryColor = rgb; } if (Config["RainbowNeonInverse"] == "true") { rgb = InvertColour(rgb); mods.NeonLightsColor = rgb; } else if (Config["RainbowNeon"] == "true") { mods.NeonLightsColor = rgb; } await BaseScript.Delay(150); }
private CallbackDelegate OnVehTint(IDictionary <string, object> data, CallbackDelegate callback) { Vehicle vehicle = Game.PlayerPed.CurrentVehicle; int iTint = Convert.ToInt32(data["action"]); var tint = (VehicleWindowTint)iTint; if (vehicle == null) { Trainer.AddNotification("~r~Not in a vehicle!"); } else { Trainer.DebugLine($"Setting tint to {tint} / {iTint}"); VehicleModCollection mods = vehicle.Mods; mods.InstallModKit(); mods.WindowTint = tint; } callback("ok"); return(callback); }
private CallbackDelegate OnVehModOther(IDictionary <string, object> data, CallbackDelegate callback) { Vehicle vehicle = Game.PlayerPed.CurrentVehicle; if (vehicle != null) { VehicleModCollection mods = vehicle.Mods; var action = (string)data["action"]; var split = action.Split('='); var iModType = int.Parse(split[0]); var iModIndex = int.Parse(split[1]); mods.InstallModKit(); mods[(VehicleModType)iModType].Index = iModIndex; BaseScript.TriggerEvent("virakal:vehicleModsChanged", iModType, iModIndex); } callback("ok"); return(callback); }
public Dictionary <string, List <MenuItem> > GetOtherModsMenus() { var menus = new Dictionary <string, List <MenuItem> >(); Vehicle vehicle = Game.PlayerPed.CurrentVehicle; if (vehicle == null) { menus["vehicles.mods.other"] = new List <MenuItem>() { new MenuItem() { text = "Please enter a vehicle to view mods", } }; } else { VehicleModCollection mods = vehicle.Mods; var modTypeMenu = new List <MenuItem>(); foreach (var mod in mods.GetAllMods()) { var modMenu = new List <MenuItem>(); for (var i = -1; i < mod.ModCount; i++) { var name = mod.GetLocalizedModName(i); if (name == string.Empty) { name = $"{mod.LocalizedModTypeName} {i}"; } if (mod.Index == i) { name += " (Current)"; } modMenu.Add(new MenuItem() { text = name, action = $"vehmodother {(int)mod.ModType}={i}", }); } menus[$"vehicles.mods.other.{mod.ModType}"] = modMenu; modTypeMenu.Add(new MenuItem() { text = mod.LocalizedModTypeName, sub = $"vehicles.mods.other.{mod.ModType}", }); } modTypeMenu.Sort((x, y) => x.text.CompareTo(y.text)); menus["vehicles.mods.other"] = modTypeMenu; } return(menus); }
private async Task <CallbackDelegate> OnVehLivery(IDictionary <string, object> data, CallbackDelegate callback) { Vehicle vehicle = Game.PlayerPed.CurrentVehicle; if (vehicle == null) { Trainer.AddNotification("~r~Not in a vehicle!"); callback("ok"); return(callback); } int handle = vehicle.Handle; string livery = (string)data["action"]; bool success = int.TryParse(livery, out int iLivery); if (!success) { Trainer.AddNotification($"~r~Invalid livery number: {livery}!"); callback("ok"); return(callback); } VehicleModCollection mods = vehicle.Mods; var maxLivery = mods.LiveryCount; callback("ok"); if (maxLivery == -1) { Trainer.DebugLine($"No basic liveries supported, {mods[VehicleModType.Livery].ModCount} mod liveries instead."); mods.InstallModKit(); if (mods[VehicleModType.Livery].ModCount > 0) { mods[VehicleModType.Livery].Index = iLivery; } else { Trainer.AddNotification($"~r~{vehicle.LocalizedName} does not support liveries!"); } } else if (iLivery >= maxLivery) { Trainer.AddNotification($"~r~{vehicle.LocalizedName} does not have enough liveries to set to {iLivery}!"); } else { mods.Livery = iLivery; await mods.RequestAdditionTextFile(); if (mods.LocalizedLiveryName != "") { Trainer.AddNotification($"~g~Set {vehicle.LocalizedName} livery to {mods.LocalizedLiveryName} ({iLivery}/{maxLivery - 1})!"); } else { Trainer.AddNotification($"~g~Set {vehicle.LocalizedName} livery to {iLivery}/{maxLivery - 1}!"); } } return(callback); }
private async void ApplyModString(Vehicle vehicle, string modString) { var modList = JsonConvert.DeserializeObject <Dictionary <string, string> >(modString); VehicleModCollection mods = vehicle.Mods; if (modList.ContainsKey("ColourCombo")) { Trainer.DebugLine($"Setting Colour Combination to {modList["ColourCombo"]}"); var combo = int.Parse(modList["ColourCombo"]); mods.ColorCombination = combo; } if (modList.ContainsKey("CustomPrimary")) { Trainer.DebugLine($"Setting CustomPrimary to {modList["CustomPrimary"]}"); var colour = Trainer.CommaSeparatedStringToColor(modList["CustomPrimary"]); mods.CustomPrimaryColor = colour; } if (modList.ContainsKey("PrimaryColour")) { Trainer.DebugLine($"Setting PrimaryColour to {modList["PrimaryColour"]}"); var primary = int.Parse(modList["PrimaryColour"]); mods.PrimaryColor = (VehicleColor)primary; } if (modList.ContainsKey("CustomSecondary")) { Trainer.DebugLine($"Setting CustomSecondary to {modList["CustomSecondary"]}"); var colour = Trainer.CommaSeparatedStringToColor(modList["CustomSecondary"]); mods.CustomSecondaryColor = colour; } if (modList.ContainsKey("SecondaryColour")) { Trainer.DebugLine($"Setting SecondaryColour to {modList["SecondaryColour"]}"); var secondary = int.Parse(modList["SecondaryColour"]); mods.SecondaryColor = (VehicleColor)secondary; } if (modList.ContainsKey("PearlescentColour")) { Trainer.DebugLine($"Setting PearlescentColour to {modList["PearlescentColour"]}"); var pearlescent = int.Parse(modList["PearlescentColour"]); mods.PearlescentColor = (VehicleColor)pearlescent; } if (modList.ContainsKey("Livery")) { Trainer.DebugLine($"Setting Livery to {modList["Livery"]}"); var livery = int.Parse(modList["Livery"]); mods.Livery = livery; } if (modList.ContainsKey("PlateText")) { Trainer.DebugLine($"Setting PlateText to {modList["PlateText"]}"); mods.LicensePlate = modList["PlateText"]; } if (modList.ContainsKey("PlateStyle")) { Trainer.DebugLine($"Setting PlateStyle to {modList["PlateStyle"]}"); var plateStyle = int.Parse(modList["PlateStyle"]); mods.LicensePlateStyle = (LicensePlateStyle)plateStyle; } if (modList.ContainsKey("RimColour")) { Trainer.DebugLine($"Setting RimColour to {modList["RimColour"]}"); var rimColour = int.Parse(modList["RimColour"]); mods.RimColor = (VehicleColor)rimColour; } if (modList.ContainsKey("TrimColour")) { Trainer.DebugLine($"Setting TrimColour to {modList["TrimColour"]}"); var trimColour = int.Parse(modList["TrimColour"]); mods.TrimColor = (VehicleColor)trimColour; } if (modList.ContainsKey("WheelType")) { Trainer.DebugLine($"Setting wheel type to {modList["WheelType"]}"); var wheelType = int.Parse(modList["WheelType"]); mods.WheelType = (VehicleWheelType)wheelType; } // Installing the modkit allows additional mods mods.InstallModKit(); await BaseScript.Delay(0); if (modList.ContainsKey("WindowTint")) { Trainer.DebugLine($"Setting WindowTint to {modList["WindowTint"]}"); var windowTint = int.Parse(modList["WindowTint"]); mods.WindowTint = (VehicleWindowTint)windowTint; } if (modList.ContainsKey("DashboardColour")) { Trainer.DebugLine($"Setting DashboardColour to {modList["DashboardColour"]}"); var dashboardColour = int.Parse(modList["DashboardColour"]); mods.DashboardColor = (VehicleColor)dashboardColour; } if (modList.ContainsKey("NeonColour")) { Trainer.DebugLine($"Setting NeonColour to {modList["NeonColour"]}"); var colour = Trainer.CommaSeparatedStringToColor(modList["NeonColour"]); mods.NeonLightsColor = colour; } if (modList.ContainsKey("TyreSmokeColour")) { Trainer.DebugLine($"Setting TyreSmokeColour to {modList["TyreSmokeColour"]}"); var colour = Trainer.CommaSeparatedStringToColor(modList["TyreSmokeColour"]); mods.TireSmokeColor = colour; } for (var i = 0; i < 4; i++) { if (modList.ContainsKey($"NeonEnabled{i}")) { Trainer.DebugLine($"Setting NeonEnabled{i} to {modList[$"NeonEnabled{i}"]}"); mods.SetNeonLightsOn((VehicleNeonLight)i, modList[$"NeonEnabled{i}"] == "true"); } else { // We don't know about this neon so assume it isn't on Trainer.DebugLine($"Skipping NeonEnabled{i} because it isn't set"); mods.SetNeonLightsOn((VehicleNeonLight)i, false); } } if (modList.ContainsKey("TyreSmoke")) { Trainer.DebugLine($"Setting TyreSmoke to {modList["TyreSmoke"]}"); mods[VehicleToggleModType.TireSmoke].IsInstalled = modList["TyreSmoke"] == "true"; } if (modList.ContainsKey("Turbo")) { Trainer.DebugLine($"Setting Turbo to {modList["Turbo"]}"); mods[VehicleToggleModType.Turbo].IsInstalled = modList["Turbo"] == "true"; } if (modList.ContainsKey("XenonHeadlights")) { Trainer.DebugLine($"Setting XenonHeadlights to {modList["XenonHeadlights"]}"); mods[VehicleToggleModType.XenonHeadlights].IsInstalled = modList["XenonHeadlights"] == "true"; } var modPrefix = "Mod#"; Trainer.DebugLine("Starting applying mods"); foreach (KeyValuePair <string, string> kv in modList) { if (kv.Key.StartsWith(modPrefix)) { var modTypeInt = int.Parse(kv.Key.Substring(modPrefix.Length)); var modType = (VehicleModType)modTypeInt; mods[modType].Index = Convert.ToInt32(kv.Value); Trainer.DebugLine($"Setting mod {modTypeInt} ({modType}) ({mods[modType].LocalizedModTypeName}) to {kv.Value} ({mods[modType].LocalizedModName})"); } } Trainer.DebugLine("Finished applying mods"); }