This commit is contained in:
Luke
2021-05-09 04:40:20 +02:00
3 changed files with 122 additions and 108 deletions

View File

@@ -208,7 +208,7 @@ export default function tuning(globalData: IGlobalData) {
var currentActiveModItem = new Array<VehicleModMenuItem>(); var currentActiveModItem = new Array<VehicleModMenuItem>();
var currentSelectedItem: VehicleModMenuItem = null; var currentSelectedItem: VehicleModMenuItem = null;
mp.events.add("showTuningMenu", (noMoney, basePrice) => { mp.events.add("showTuningMenu", (noMoney, basePrice, onlyRepair: boolean) => {
mp.events.call("hideTuningInfo", false); mp.events.call("hideTuningInfo", false);
mp.gui.chat.show(false); mp.gui.chat.show(false);
@@ -230,127 +230,129 @@ export default function tuning(globalData: IGlobalData) {
repairItem.BackColor = new Color(94, 94, 94); repairItem.BackColor = new Color(94, 94, 94);
repairItem.HighlightedBackColor = new Color(105, 105, 105); repairItem.HighlightedBackColor = new Color(105, 105, 105);
carModTypes.forEach((modType) => { if (!onlyRepair) {
var mod: number = null; carModTypes.forEach((modType) => {
var mod: number = null;
if (modType === 22) { // Lichter if (modType === 22) { // Lichter
var hlColor = localVehicle.getVariable("headlightColor"); var hlColor = localVehicle.getVariable("headlightColor");
if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) { if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) {
mod = -1; mod = -1;
} else if (hlColor === 13) mod = 0; } else if (hlColor === 13) mod = 0;
else mod = hlColor + 1; else mod = hlColor + 1;
} else if (modType === 18) { // Turbo } else if (modType === 18) { // Turbo
var toggle = localVehicle.isToggleModOn(modType); var toggle = localVehicle.isToggleModOn(modType);
mod = toggle ? 0 : -1; mod = toggle ? 0 : -1;
} else if (modType == -1) { // Lackierungen } else if (modType == -1) { // Lackierungen
var colorItem = new UIMenuItem("Lackierungen"); var colorItem = new UIMenuItem("Lackierungen");
var colorMenu = getColorMenu(); var colorMenu = getColorMenu();
mainMenu.AddItem(colorItem); mainMenu.AddItem(colorItem);
mainMenu.BindMenuToItem(colorMenu, colorItem); mainMenu.BindMenuToItem(colorMenu, colorItem);
return; return;
} else if (modType == -2) { } else if (modType == -2) {
var wheelsItem = new UIMenuItem("Reifen"); var wheelsItem = new UIMenuItem("Reifen");
var wheelsMenu = getWheelsMenu(localVehicle); var wheelsMenu = getWheelsMenu(localVehicle);
mainMenu.AddItem(wheelsItem); mainMenu.AddItem(wheelsItem);
mainMenu.BindMenuToItem(wheelsMenu, wheelsItem); mainMenu.BindMenuToItem(wheelsMenu, wheelsItem);
return; 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"; var modName = localVehicle.getModSlotName(modType) || "nix gefunden";
modName = mp.game.ui.getLabelText(modName); modName = mp.game.ui.getLabelText(modName);
if (modName === "NULL") { if (modName === "NULL") {
for (var x = 0; x < carModSlotName.length; x++) { for (var x = 0; x < carModSlotName.length; x++) {
var tmpSlot = carModSlotName[x]; var tmpSlot = carModSlotName[x];
if (tmpSlot.Slot == modType) { if (tmpSlot.Slot == modType) {
modName = tmpSlot.Name; modName = tmpSlot.Name;
break; break;
}
} }
} }
}
if (mod === null) { if (mod === null) {
mod = localVehicle.getMod(modType); 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);
} }
var item = new VehicleModMenuItem(modText);
item.price = price;
modMenu.AddItem(item);
if (x === mod) { var modNum = localVehicle.getNumMods(modType);
item.SetRightBadge(BadgeStyle.Car); if (modType === 18) modNum = 1;
currentActiveModItem[modType] = item; if (modType === 22) modNum = 14;
modMenu.CurrentSelection = x;
}
else {
item.SetRightLabel("$" + moneyformat(price));
}
}
modMenu.IndexChange.on((index: number) => { var modMenu = new Menu(modName, carName, new Point(0, screenRes.y / 3), null, null);
if (modType === 18) return;
if (modType === 22) { modMenu.Visible = false;
setHeadlightsColor(localVehicle, index);
return; 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) => { mainMenu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
if (item === repairItem) { if (item === repairItem) {

View File

@@ -2272,7 +2272,7 @@ namespace ReallifeGamemode.Server.Commands
} }
else else
{ {
player.TriggerEvent("showTuningMenu", true); player.TriggerEvent("showTuningMenu", true, 0, false);
} }
} }

View File

@@ -116,7 +116,18 @@ namespace ReallifeGamemode.Server.Managers
{ {
if (!player.IsInVehicle) return; 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) private int GetVehicleBasePrice(Vehicle vehicle)
@@ -170,6 +181,7 @@ namespace ReallifeGamemode.Server.Managers
player.TriggerEvent("SERVER:Tuning_ModSucessfull", slot, index); player.TriggerEvent("SERVER:Tuning_ModSucessfull", slot, index);
Vehicle pV = player.Vehicle; Vehicle pV = player.Vehicle;
if (index == 0) index--; if (index == 0) index--;
if (slot != 18) if (slot != 18)