/** * @overview Life of German Reallife - Tuning tuning.js * @author hydrant * @copyright (c) 2008 - 2018 Life of German */ var keyBound = false; var carModTypes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 23, 25, 27, 28, 30, 33, 34, 35, 38, 46, 48, 62]; var carModSlotName = [ { Slot: 0, Name: "Spoiler" }, // 0 { Slot: 1, Name: "Frontstoßstange"}, // 1 { Slot: 2, Name: "Heckstoßstange"}, // 2 { Slot: 3, Name: "Seitenschweller"}, // 3 { Slot: 4, Name: "Auspuff"}, // 4 { Slot: 5, Name: "Rahmen"}, // 5 { Slot: 6, Name: "Kühlergrill"}, // 6 { Slot: 7, Name: "Motorhaube"}, // 7 { Slot: 8, Name: "Linker Kotflügel"}, // 8 { Slot: 9, Name: "Rechter Kotflügel"}, // 9 { Slot: 10, Name: "Dach"}, // 10 { Slot: 11, Name: "Motor" }, // 11 { Slot: 12, Name: "Bremsen"}, // 12 { Slot: 13, Name: "Getriebe"}, // 13 { Slot: 14, Name: "Hupe"}, // 14 { Slot: 15, Name: "Federung"}, // 15 { Slot: 18, Name: "Turbo"}, // 18 { Slot: 22, Name: "Licht"}, // 22 { Slot: 23, Name: "Reifen"} // 23 ]; var customPartNames = [ { Model: 1093792632, Names: [ { Slot: 8, Name: "Lüftungsschlitze" } ] }, { Model: 159274291, Names: [ { Slot: 8, Name: "Kotflügel" } ] }, { Model: 223240013, Names: [ { Slot: 9, Name: "Heckkotflügel" } ] }, { Model: 1031562256, Names: [ { Slot: 5, Name: "Stoßdämpfer" } ] } ]; var bikeModTypes = []; const NativeUI = require("nativeui"); const Menu = NativeUI.Menu; const UIMenuItem = NativeUI.UIMenuItem; const UIMenuListItem = NativeUI.UIMenuListItem; const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem; const UIMenuSliderItem = NativeUI.UIMenuSliderItem; const BadgeStyle = NativeUI.BadgeStyle; const Point = NativeUI.Point; const ItemsCollection = NativeUI.ItemsCollection; const Color = NativeUI.Color; const ListItem = NativeUI.ListItem; var mainMenu; mp.events.add('showTuningInfo', () => { mp.game.ui.setTextComponentFormat('STRING'); mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um dein Fahrzeug zu modifizieren'); mp.game.ui.displayHelpTextFromStringLabel(0, true, true, -1); mp.keys.bind(0x45, false, keyPressHandler); keyBound = true; }); mp.events.add('hideTuningInfo', (unbind) => { mp.game.ui.clearHelp(true); mp.gui.chat.show(true); if (typeof mainMenu !== "undefined" && unbind) { mainMenu.Visible = false; } if (keyBound && unbind) { mp.keys.unbind(0x45, false, keyPressHandler); keyBound = false; } }); function keyPressHandler() { mp.events.callRemote("startPlayerTuning"); } mp.events.add("showTuningMenu", () => { mp.events.call("hideTuningInfo" , false); mp.gui.chat.show(false); var localPlayer = mp.players.local; var localVehicle = localPlayer.vehicle; if (typeof mainMenu !== "undefined" && mainMenu.Visible) { return; } mainMenu = new Menu("Fahrzeugwerkstatt", "Modifiziere dein Fahrzeug", new Point(50, 50)); carModTypes.forEach((modType) => { if (localVehicle.getModSlotName(modType) !== "undefined") { var slotName = mp.game.ui.getLabelText(localVehicle.getModSlotName(modType)); if (slotName === "NULL") { slotName = getCustomName(localVehicle.model, modType); if (slotName === undefined) slotName = getSlotName(modType); } var menuItem = new UIMenuItem(slotName); if(localVehicle.getNumMods(modType) !== 0) mainMenu.AddItem(menuItem); } }); mainMenu.Visible = true; mainMenu.ItemSelect.on(item => { var modSlot = getSlotId(item.Text); var modNum = localVehicle.getNumMods(modSlot); var modMenu = new Menu(item.Text, "Änderung: " + item.Text, new Point(50, 50)); modMenu.AddItem(new UIMenuItem("Serie", "")); for (var i = 0; i < modNum; i++) { var modName = localVehicle.getModTextLabel(modSlot, i); var realModName = mp.game.ui.getLabelText(modName); var modItem = new UIMenuItem(realModName, ""); modMenu.AddItem(modItem); } modMenu.IndexChange.on(index => { mp.events.callRemote("setVehicleMod", modSlot, index); }); modMenu.MenuClose.on(() => { mainMenu.Visible = true; modMenu.Visible = false; }); mainMenu.Visible = false; modMenu.Visible = true; }); mainMenu.MenuClose.on(() => { mp.events.call("hideTuningInfo", false); }); }); mp.events.add("playerLeaveVehicle", () => { mp.events.call("hideTuningInfo", true); }); function getSlotName(slot) { var toReturn = "undefined"; carModSlotName.forEach((name) => { if (name.Slot === slot) toReturn = name.Name; }); return toReturn; } function getSlotId(slotName) { var toReturn = "undefined"; carModSlotName.forEach((name) => { if (name.Name === slotName) toReturn = name.Slot; }); if (toReturn === "undefined") { toReturn = getCustomId(mp.players.local.vehicle.model, slotName); if (toReturn === undefined) { carModTypes.forEach((modType) => { if (mp.game.ui.getLabelText(mp.players.local.vehicle.getModSlotName(modType)) === slotName) toReturn = getSlotId(getSlotName(modType)); }); } } return toReturn; } function getCustomName(model, slot) { var toReturn = undefined; customPartNames.forEach((cpn) => { if (cpn.Model === model) { cpn.Names.forEach((names) => { if (names.Slot === slot) toReturn = names.Name; }); } }); return toReturn; } function getCustomId(model, name) { var toReturn = undefined; customPartNames.forEach((cpn) => { if (cpn.Model === model) { cpn.Names.forEach((names) => { if (names.Name === name) toReturn = names.Slot; }); } }); return toReturn; }