diff --git a/ReallifeGamemode.Client/Tuning/main.ts b/ReallifeGamemode.Client/Tuning/main.ts index eeed93c8..15b408a5 100644 --- a/ReallifeGamemode.Client/Tuning/main.ts +++ b/ReallifeGamemode.Client/Tuning/main.ts @@ -208,7 +208,7 @@ export default function tuning(globalData: IGlobalData) { var currentActiveModItem = new Array(); var currentSelectedItem: VehicleModMenuItem = null; - mp.events.add("showTuningMenu", (noMoney, basePrice) => { + mp.events.add("showTuningMenu", (noMoney, basePrice, onlyRepair: boolean) => { mp.events.call("hideTuningInfo", false); mp.gui.chat.show(false); @@ -230,127 +230,129 @@ export default function tuning(globalData: IGlobalData) { repairItem.BackColor = new Color(94, 94, 94); repairItem.HighlightedBackColor = new Color(105, 105, 105); - carModTypes.forEach((modType) => { - var mod: number = null; + if (!onlyRepair) { + carModTypes.forEach((modType) => { + var mod: number = null; - if (modType === 22) { // Lichter - var hlColor = localVehicle.getVariable("headlightColor"); - if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) { - mod = -1; - } else if (hlColor === 13) mod = 0; - else mod = hlColor + 1; - } else if (modType === 18) { // Turbo - var toggle = localVehicle.isToggleModOn(modType); - mod = toggle ? 0 : -1; - } else if (modType == -1) { // Lackierungen - var colorItem = new UIMenuItem("Lackierungen"); - var colorMenu = getColorMenu(); + if (modType === 22) { // Lichter + var hlColor = localVehicle.getVariable("headlightColor"); + if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) { + mod = -1; + } else if (hlColor === 13) mod = 0; + else mod = hlColor + 1; + } else if (modType === 18) { // Turbo + var toggle = localVehicle.isToggleModOn(modType); + mod = toggle ? 0 : -1; + } else if (modType == -1) { // Lackierungen + var colorItem = new UIMenuItem("Lackierungen"); + var colorMenu = getColorMenu(); - mainMenu.AddItem(colorItem); - mainMenu.BindMenuToItem(colorMenu, colorItem); + mainMenu.AddItem(colorItem); + mainMenu.BindMenuToItem(colorMenu, colorItem); - return; - } else if (modType == -2) { - var wheelsItem = new UIMenuItem("Reifen"); - var wheelsMenu = getWheelsMenu(localVehicle); + return; + } else if (modType == -2) { + var wheelsItem = new UIMenuItem("Reifen"); + var wheelsMenu = getWheelsMenu(localVehicle); - mainMenu.AddItem(wheelsItem); - mainMenu.BindMenuToItem(wheelsMenu, wheelsItem); - return; - } + mainMenu.AddItem(wheelsItem); + mainMenu.BindMenuToItem(wheelsMenu, wheelsItem); + return; + } - var num = localVehicle.getNumMods(modType); + var num = localVehicle.getNumMods(modType); - if (num === 0 && modType !== 18 && modType !== 22 && modType !== -1) return; + if (num === 0 && modType !== 18 && modType !== 22 && modType !== -1) return; - var modName = localVehicle.getModSlotName(modType) || "nix gefunden"; - modName = mp.game.ui.getLabelText(modName); + var modName = localVehicle.getModSlotName(modType) || "nix gefunden"; + modName = mp.game.ui.getLabelText(modName); - if (modName === "NULL") { - for (var x = 0; x < carModSlotName.length; x++) { - var tmpSlot = carModSlotName[x]; - if (tmpSlot.Slot == modType) { - modName = tmpSlot.Name; - break; + if (modName === "NULL") { + for (var x = 0; x < carModSlotName.length; x++) { + var tmpSlot = carModSlotName[x]; + if (tmpSlot.Slot == modType) { + modName = tmpSlot.Name; + break; + } } } - } - if (mod === null) { - mod = localVehicle.getMod(modType); - } - - var modNum = localVehicle.getNumMods(modType); - if (modType === 18) modNum = 1; - if (modType === 22) modNum = 14; - - var modMenu = new Menu(modName, carName, new Point(0, screenRes.y / 3), null, null); - - modMenu.Visible = false; - - var menuItem = new UIMenuItem(modName); - mainMenu.AddItem(menuItem); - mainMenu.BindMenuToItem(modMenu, menuItem); - - currentMod[modType] = mod; - - for (var x = -1; x < modNum; x++) { - var price = noMoney ? 0 : getModSlotPrice(modType, basePrice, x); - var modText = ""; - if (x === -1) { - modText = "Serie"; - } else { - modText = mp.game.ui.getLabelText(localVehicle.getModTextLabel(modType, x)); - if (modText === "NULL") modText = getModName(localVehicle, modType, x); + if (mod === null) { + mod = localVehicle.getMod(modType); } - var item = new VehicleModMenuItem(modText); - item.price = price; - modMenu.AddItem(item); - if (x === mod) { - item.SetRightBadge(BadgeStyle.Car); - currentActiveModItem[modType] = item; - modMenu.CurrentSelection = x; - } - else { - item.SetRightLabel("$" + moneyformat(price)); - } - } + var modNum = localVehicle.getNumMods(modType); + if (modType === 18) modNum = 1; + if (modType === 22) modNum = 14; - modMenu.IndexChange.on((index: number) => { - if (modType === 18) return; - if (modType === 22) { - setHeadlightsColor(localVehicle, index); - return; + var modMenu = new Menu(modName, carName, new Point(0, screenRes.y / 3), null, null); + + modMenu.Visible = false; + + var menuItem = new UIMenuItem(modName); + mainMenu.AddItem(menuItem); + mainMenu.BindMenuToItem(modMenu, menuItem); + + currentMod[modType] = mod; + + for (var x = -1; x < modNum; x++) { + var price = noMoney ? 0 : getModSlotPrice(modType, basePrice, x); + var modText = ""; + if (x === -1) { + modText = "Serie"; + } else { + modText = mp.game.ui.getLabelText(localVehicle.getModTextLabel(modType, x)); + if (modText === "NULL") modText = getModName(localVehicle, modType, x); + } + var item = new VehicleModMenuItem(modText); + item.price = price; + modMenu.AddItem(item); + + if (x === mod) { + item.SetRightBadge(BadgeStyle.Car); + currentActiveModItem[modType] = item; + modMenu.CurrentSelection = x; + } + else { + item.SetRightLabel("$" + moneyformat(price)); + } } - localVehicle.setMod(modType, index - 1); + + modMenu.IndexChange.on((index: number) => { + if (modType === 18) return; + if (modType === 22) { + setHeadlightsColor(localVehicle, index); + return; + } + localVehicle.setMod(modType, index - 1); + }); + + modMenu.MenuOpen.on(() => { + if (modType === 22) { + localVehicle.setLights(2); + } + }); + + modMenu.ItemSelect.on((item: VehicleModMenuItem, index: number) => { + if (currentMod[modType] == index - 1) { + return; + } + + currentSelectedItem = item; + mp.events.callRemote("setVehicleMod", modType, index, price); + }); + + modMenu.MenuClose.on(() => { + if (modType === 18) return; + if (modType === 22) { + localVehicle.setLights(1); + setHeadlightsColor(localVehicle, currentMod[22] + 1); + return; + } + localVehicle.setMod(modType, currentMod[modType]); + }); }); - - modMenu.MenuOpen.on(() => { - if (modType === 22) { - localVehicle.setLights(2); - } - }); - - modMenu.ItemSelect.on((item: VehicleModMenuItem, index: number) => { - if (currentMod[modType] == index - 1) { - return; - } - - currentSelectedItem = item; - mp.events.callRemote("setVehicleMod", modType, index, price); - }); - - modMenu.MenuClose.on(() => { - if (modType === 18) return; - if (modType === 22) { - localVehicle.setLights(1); - setHeadlightsColor(localVehicle, currentMod[22] + 1); - return; - } - localVehicle.setMod(modType, currentMod[modType]); - }); - }); + } mainMenu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => { if (item === repairItem) { diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index 3b482972..a3a8f49e 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -2272,7 +2272,7 @@ namespace ReallifeGamemode.Server.Commands } else { - player.TriggerEvent("showTuningMenu", true); + player.TriggerEvent("showTuningMenu", true, 0, false); } } diff --git a/ReallifeGamemode.Server/Managers/TuningManager.cs b/ReallifeGamemode.Server/Managers/TuningManager.cs index 603aee51..62c765f2 100644 --- a/ReallifeGamemode.Server/Managers/TuningManager.cs +++ b/ReallifeGamemode.Server/Managers/TuningManager.cs @@ -116,7 +116,18 @@ namespace ReallifeGamemode.Server.Managers { if (!player.IsInVehicle) return; - player.TriggerEvent("showTuningMenu", false, GetVehicleBasePrice(player.Vehicle)); + Vehicle vehicle = player.Vehicle; + + bool onlyRepair = false; + + ServerVehicle serverVehicle = vehicle.GetServerVehicle(); + if (serverVehicle is FactionVehicle factionVehicle && factionVehicle.BuyPrice == 0) + { + player.SendNotification("~r~Dieses Fahrzeug kann aktuell leider nicht getunt werden"); + onlyRepair = true; + } + + player.TriggerEvent("showTuningMenu", false, GetVehicleBasePrice(player.Vehicle), onlyRepair); } private int GetVehicleBasePrice(Vehicle vehicle) @@ -170,6 +181,7 @@ namespace ReallifeGamemode.Server.Managers player.TriggerEvent("SERVER:Tuning_ModSucessfull", slot, index); Vehicle pV = player.Vehicle; + if (index == 0) index--; if (slot != 18)