REIFEN TUNING
This commit is contained in:
@@ -43,7 +43,7 @@ export default function tuning(globalData: IGlobalData) {
|
|||||||
{ Slot: 15, Name: "Federung", Price: 2000 },
|
{ Slot: 15, Name: "Federung", Price: 2000 },
|
||||||
{ Slot: 18, Name: "Turbo", BasePercentage: 45, PriceIncreasePerLevel: 0 },
|
{ Slot: 18, Name: "Turbo", BasePercentage: 45, PriceIncreasePerLevel: 0 },
|
||||||
{ Slot: 22, Name: "Licht", Price: 500 },
|
{ Slot: 22, Name: "Licht", Price: 500 },
|
||||||
{ Slot: -2, Name: "Reifen", Price: 1000 },
|
{ Slot: -2, Name: "Reifen", Price: 3000 },
|
||||||
{ Slot: -1, Name: "Lackierung", Price: 1000 },
|
{ Slot: -1, Name: "Lackierung", Price: 1000 },
|
||||||
{ Slot: 25, Name: "Nummernschildhalter", Price: 500 },
|
{ Slot: 25, Name: "Nummernschildhalter", Price: 500 },
|
||||||
{ Slot: 27, Name: "Innenausstatung", Price: 500 },
|
{ Slot: 27, Name: "Innenausstatung", Price: 500 },
|
||||||
@@ -117,6 +117,49 @@ export default function tuning(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const wheelTypes = [
|
||||||
|
{
|
||||||
|
Name: "Sport",
|
||||||
|
Type: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Muscle",
|
||||||
|
Type: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Lowrider",
|
||||||
|
Type: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "SUV",
|
||||||
|
Type: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Offroad",
|
||||||
|
Type: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Tuner",
|
||||||
|
Type: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "High End",
|
||||||
|
Type: 7,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Benny's Originals",
|
||||||
|
Type: 8,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Benny's Bespoke",
|
||||||
|
Type: 9,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Street",
|
||||||
|
Type: 11,
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
var mainMenu: NativeUI.Menu;
|
var mainMenu: NativeUI.Menu;
|
||||||
|
|
||||||
mp.events.add('showTuningInfo', () => {
|
mp.events.add('showTuningInfo', () => {
|
||||||
@@ -209,10 +252,11 @@ export default function tuning(globalData: IGlobalData) {
|
|||||||
return;
|
return;
|
||||||
} else if (modType == -2) {
|
} else if (modType == -2) {
|
||||||
var wheelsItem = new UIMenuItem("Reifen");
|
var wheelsItem = new UIMenuItem("Reifen");
|
||||||
var wheelsMenu = getWheelsMenu();
|
var wheelsMenu = getWheelsMenu(localVehicle);
|
||||||
|
|
||||||
mainMenu.AddItem(wheelsItem);
|
mainMenu.AddItem(wheelsItem);
|
||||||
mainMenu.BindMenuToItem(wheelsMenu, wheelsItem);
|
mainMenu.BindMenuToItem(wheelsMenu, wheelsItem);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var num = localVehicle.getNumMods(modType);
|
var num = localVehicle.getNumMods(modType);
|
||||||
@@ -497,11 +541,99 @@ export default function tuning(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getWheelsMenu(): NativeUI.Menu {
|
var currentWheelType = null;
|
||||||
|
var currentWheel = null;
|
||||||
|
var currentWheelItem: NativeUI.UIMenuItem = null;
|
||||||
|
var wheelPrice = getModSlotPrice(-2, 0, 0);
|
||||||
|
var currentSelectedWheelItem: NativeUI.UIMenuItem = null;
|
||||||
|
|
||||||
|
function getWheelsMenu(vehicle: VehicleMp): NativeUI.Menu {
|
||||||
var wheelsMenu = new NativeUI.Menu("Reifen", "rollin on dem rims", new NativeUI.Point(0, screenRes.y / 3));
|
var wheelsMenu = new NativeUI.Menu("Reifen", "rollin on dem rims", new NativeUI.Point(0, screenRes.y / 3));
|
||||||
|
|
||||||
|
currentWheelType = vehicle.getWheelType();
|
||||||
|
currentWheel = vehicle.getMod(23);
|
||||||
|
currentWheelItem = null;
|
||||||
|
|
||||||
|
wheelTypes.forEach(wheelType => {
|
||||||
|
var type = wheelType.Type;
|
||||||
|
|
||||||
|
var modsLoaded = false;
|
||||||
|
|
||||||
|
var menuOpenTime: number = null;
|
||||||
|
|
||||||
|
var typeItem = new UIMenuItem(wheelType.Name);
|
||||||
|
wheelsMenu.AddItem(typeItem);
|
||||||
|
|
||||||
|
var wheelTypeMenu = new Menu(wheelType.Name, "skyr", new Point(0, screenRes.y / 3));
|
||||||
|
|
||||||
|
wheelsMenu.BindMenuToItem(wheelTypeMenu, typeItem);
|
||||||
|
|
||||||
|
wheelTypeMenu.IndexChange.on((index: number) => {
|
||||||
|
vehicle.setMod(23, index);
|
||||||
|
});
|
||||||
|
|
||||||
|
wheelTypeMenu.MenuOpen.on(() => {
|
||||||
|
menuOpenTime = Date.now();
|
||||||
|
vehicle.setWheelType(type);
|
||||||
|
if (modsLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var wheelNums = vehicle.getNumMods(23);
|
||||||
|
|
||||||
|
for (var i = 0; i < wheelNums; i++) {
|
||||||
|
var modText = "";
|
||||||
|
|
||||||
|
modText = mp.game.ui.getLabelText(vehicle.getModTextLabel(23, i));
|
||||||
|
if (modText === "NULL") modText = getModName(vehicle, 23, i);
|
||||||
|
|
||||||
|
var item = new VehicleModMenuItem(modText);
|
||||||
|
|
||||||
|
if (type == currentWheelType && i == currentWheel) {
|
||||||
|
currentWheelItem = item;
|
||||||
|
currentWheelItem.SetRightBadge(BadgeStyle.Car);
|
||||||
|
} else {
|
||||||
|
item.SetRightLabel("$" + moneyformat(wheelPrice));
|
||||||
|
}
|
||||||
|
|
||||||
|
wheelTypeMenu.AddItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
modsLoaded = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
wheelTypeMenu.ItemSelect.on((item, index: number) => {
|
||||||
|
if (Date.now() - menuOpenTime < 500 || item == currentWheelItem) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
currentSelectedWheelItem = item;
|
||||||
|
mp.events.callRemote("CLIENT:Tuning_SetVehicleWheels", type, index, wheelPrice);
|
||||||
|
});
|
||||||
|
|
||||||
|
wheelTypeMenu.MenuClose.on(() => {
|
||||||
|
vehicle.setWheelType(currentWheelType);
|
||||||
|
vehicle.setMod(23, currentWheel);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
return wheelsMenu;
|
return wheelsMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mp.events.add("SERVER:Tuning_SetWheelsSuccessfull", (type, index) => {
|
||||||
|
currentWheelType = type;
|
||||||
|
currentWheel = index;
|
||||||
|
|
||||||
|
if (currentWheelItem) {
|
||||||
|
currentWheelItem.SetRightLabel("$" + moneyformat(wheelPrice));
|
||||||
|
currentWheelItem.SetRightBadge(BadgeStyle.None);
|
||||||
|
}
|
||||||
|
|
||||||
|
currentWheelItem = currentSelectedWheelItem;
|
||||||
|
currentWheelItem.SetRightBadge(BadgeStyle.Car);
|
||||||
|
currentWheelItem.SetRightLabel("");
|
||||||
|
})
|
||||||
|
|
||||||
function getColorMenu(): NativeUI.Menu {
|
function getColorMenu(): NativeUI.Menu {
|
||||||
var currentColors = mp.players.local.vehicle.getColours(0, 0);
|
var currentColors = mp.players.local.vehicle.getColours(0, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,11 @@
|
|||||||
if (taxiLight) vehicle.setTaxiLights(taxiLight);
|
if (taxiLight) vehicle.setTaxiLights(taxiLight);
|
||||||
|
|
||||||
var mod18 = vehicle.getVariable('mod18');
|
var mod18 = vehicle.getVariable('mod18');
|
||||||
|
var wheelType = vehicle.getVariable('wheelType');
|
||||||
|
|
||||||
|
if (wheelType !== undefined) {
|
||||||
|
vehicle.setWheelType(wheelType);
|
||||||
|
}
|
||||||
|
|
||||||
if (mod18 !== undefined) {
|
if (mod18 !== undefined) {
|
||||||
vehicle.toggleMod(18, mod18);
|
vehicle.toggleMod(18, mod18);
|
||||||
@@ -22,8 +27,13 @@
|
|||||||
if (!veh) {
|
if (!veh) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (slot == -2) {
|
||||||
|
veh.setWheelType(newval);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
veh.toggleMod(slot, newval);
|
||||||
|
}
|
||||||
|
|
||||||
veh.toggleMod(slot, newval);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.addDataHandler("vehicleTaxiLight", (entity: VehicleMp, state: boolean) => {
|
mp.events.addDataHandler("vehicleTaxiLight", (entity: VehicleMp, state: boolean) => {
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
colShape.OnEntityExitColShape += (cs, c) =>
|
colShape.OnEntityExitColShape += (cs, c) =>
|
||||||
{
|
{
|
||||||
if(c.IsInVehicle)
|
if (c.IsInVehicle)
|
||||||
{
|
{
|
||||||
c.TriggerEvent("hideTuningInfo", true);
|
c.TriggerEvent("hideTuningInfo", true);
|
||||||
}
|
}
|
||||||
@@ -56,23 +56,23 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
private static bool IsPlayerAllowedToTuneVehicle(Player c, Vehicle vehicle, DatabaseContext dbContext)
|
private static bool IsPlayerAllowedToTuneVehicle(Player c, Vehicle vehicle, DatabaseContext dbContext)
|
||||||
{
|
{
|
||||||
User user = c.GetUser();
|
User user = c.GetUser();
|
||||||
if(user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerVehicle serverVehicle = vehicle.GetServerVehicle(dbContext);
|
ServerVehicle serverVehicle = vehicle.GetServerVehicle(dbContext);
|
||||||
if(serverVehicle == null)
|
if (serverVehicle == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(serverVehicle is UserVehicle userVehicle && userVehicle.UserId == user.Id)
|
if (serverVehicle is UserVehicle userVehicle && userVehicle.UserId == user.Id)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(serverVehicle is FactionVehicle factionVehicle && factionVehicle.GetOwners().Contains(user.FactionId ?? 0))
|
if (serverVehicle is FactionVehicle factionVehicle && factionVehicle.GetOwners().Contains(user.FactionId ?? 0))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -117,23 +117,23 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
private int GetVehicleBasePrice(Vehicle vehicle)
|
private int GetVehicleBasePrice(Vehicle vehicle)
|
||||||
{
|
{
|
||||||
if(vehicle == null)
|
if (vehicle == null)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerVehicle serverVehicle = vehicle.GetServerVehicle();
|
ServerVehicle serverVehicle = vehicle.GetServerVehicle();
|
||||||
if(serverVehicle == null)
|
if (serverVehicle == null)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(serverVehicle is UserVehicle userVehicle)
|
if (serverVehicle is UserVehicle userVehicle)
|
||||||
{
|
{
|
||||||
return userVehicle.Price ?? 0;
|
return userVehicle.Price ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(serverVehicle is FactionVehicle factionVehicle)
|
if (serverVehicle is FactionVehicle factionVehicle)
|
||||||
{
|
{
|
||||||
return factionVehicle.BuyPrice;
|
return factionVehicle.BuyPrice;
|
||||||
}
|
}
|
||||||
@@ -257,5 +257,69 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("CLIENT:Tuning_SetVehicleWheels")]
|
||||||
|
public void TuningManagerSetVehicleWheels(Player player, int wheelType, int wheelIndex, int price)
|
||||||
|
{
|
||||||
|
if (!player.IsInVehicle)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vehicle vehicle = player.Vehicle;
|
||||||
|
|
||||||
|
using var dbContext = new DatabaseContext();
|
||||||
|
|
||||||
|
User user = player.GetUser(dbContext);
|
||||||
|
if (user.BankAccount.Balance < price)
|
||||||
|
{
|
||||||
|
player.SendNotification("Du hast nicht genug Geld für dieses Tuningteil!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
user.BankAccount.Balance -= price;
|
||||||
|
player.TriggerEvent("SERVER:Tuning_SetWheelsSuccessfull", wheelType, wheelIndex);
|
||||||
|
|
||||||
|
ServerVehicle serverVehicle = vehicle.GetServerVehicle(dbContext);
|
||||||
|
|
||||||
|
VehicleMod typeMod = dbContext.VehicleMods.Where(m => m.ServerVehicleId == serverVehicle.Id && m.Slot == -2).FirstOrDefault();
|
||||||
|
if (typeMod == null)
|
||||||
|
{
|
||||||
|
typeMod = new VehicleMod()
|
||||||
|
{
|
||||||
|
ServerVehicleId = serverVehicle.Id,
|
||||||
|
Slot = -2,
|
||||||
|
ModId = wheelType
|
||||||
|
};
|
||||||
|
|
||||||
|
dbContext.VehicleMods.Add(typeMod);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeMod.ModId = wheelType;
|
||||||
|
}
|
||||||
|
|
||||||
|
VehicleMod wheelMod = dbContext.VehicleMods.Where(m => m.ServerVehicleId == serverVehicle.Id && m.Slot == 23).FirstOrDefault();
|
||||||
|
if (wheelMod == null)
|
||||||
|
{
|
||||||
|
wheelMod = new VehicleMod()
|
||||||
|
{
|
||||||
|
ServerVehicleId = serverVehicle.Id,
|
||||||
|
Slot = 23,
|
||||||
|
ModId = wheelIndex
|
||||||
|
};
|
||||||
|
|
||||||
|
dbContext.VehicleMods.Add(wheelMod);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wheelMod.ModId = wheelIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
vehicle.SetSharedData("wheelType", wheelType);
|
||||||
|
NAPI.ClientEvent.TriggerClientEventForAll("vehicleToggleMod", vehicle, -2, wheelType);
|
||||||
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user