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;
        }
Exemple #3
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #10
0
        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");
        }