Merge branch 'develop' into 'master'

Fix autos

See merge request log-gtav/reallife-gamemode!68
This commit is contained in:
hydrant
2021-05-09 00:36:48 +00: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 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) {

View File

@@ -2272,7 +2272,7 @@ namespace ReallifeGamemode.Server.Commands
}
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;
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)