auto verkaufen
This commit is contained in:
@@ -29,6 +29,7 @@ export default function (globalData: IGlobalData) {
|
||||
|
||||
var licenseItem = new UIMenuItem("Lizenzen", "Lizenzen Informationen");
|
||||
|
||||
var vehiclesItem = new UIMenuItem("Fahrzeuge", "Zeige deine Fahrzeuge an");
|
||||
|
||||
mp.events.add("SERVER:InteractionMenu_OpenMenu", (accountDataJson: string, faction: string, group: string, factionInvite: boolean, groupInvite: boolean) => {
|
||||
var accountData: AccountData = JSON.parse(accountDataJson);
|
||||
@@ -45,6 +46,12 @@ export default function (globalData: IGlobalData) {
|
||||
menu.AddItem(licenseItem);
|
||||
menu.BindMenuToItem(getLicenseMenu(accountData.licenses, menu), licenseItem);
|
||||
|
||||
var vehicles = accountData.vehicles;
|
||||
if (vehicles.length > 0) {
|
||||
menu.AddItem(vehiclesItem);
|
||||
menu.BindMenuToItem(getVehiclesMenu(vehicles, menu), vehiclesItem);
|
||||
}
|
||||
|
||||
if (faction) {
|
||||
factionItem.SetRightLabel(faction);
|
||||
menu.AddItem(factionItem);
|
||||
@@ -106,7 +113,7 @@ export default function (globalData: IGlobalData) {
|
||||
menu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
||||
if (item === acceptItem) {
|
||||
mp.events.callRemote("CLIENT:InteractionMenu_AcceptInvite", acceptItem.SelectedValue);
|
||||
menu.Close();
|
||||
menu.Close(true);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -199,7 +206,7 @@ export default function (globalData: IGlobalData) {
|
||||
input.show();
|
||||
input.getValue(name => {
|
||||
mp.events.callRemote("CLIENT:InteractionMenu_Show", "License", name);
|
||||
parentMenu.Close();
|
||||
parentMenu.Close(true);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -278,4 +285,30 @@ export default function (globalData: IGlobalData) {
|
||||
return servicesMenu;
|
||||
}
|
||||
|
||||
function getVehiclesMenu(vehicles: VehicleData[], parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||
var menu = new Menu("Fahrzeuge", "Finde oder verkaufe deine Fahrzeuge", new Point(50, 50), null, null);
|
||||
menu.Visible = false;
|
||||
|
||||
var collection = new ItemsCollection(["Finden", "Verkaufen"]);
|
||||
|
||||
vehicles.forEach(veh => {
|
||||
var name: string = mp.game.vehicle.getDisplayNameFromVehicleModel(veh.Model);
|
||||
|
||||
var item = new UIMenuListItem(`${veh.Id.toString().padEnd(4)} | ${name}`, "", collection, null, { id: veh.Id });
|
||||
|
||||
menu.AddItem(item);
|
||||
});
|
||||
|
||||
menu.ItemSelect.on((item: NativeUI.UIMenuListItem, index: number) => {
|
||||
var id = item.Data.id;
|
||||
var selection = item.SelectedValue;
|
||||
|
||||
mp.events.callRemote("CLIENT:InteractionMenu_VehicleInteraction", id, selection);
|
||||
|
||||
parentMenu.Close(true);
|
||||
});
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
18
ReallifeGamemode.Client/global.d.ts
vendored
18
ReallifeGamemode.Client/global.d.ts
vendored
@@ -1,4 +1,4 @@
|
||||
declare interface IGlobalData {
|
||||
declare type IGlobalData = {
|
||||
InTuning: boolean,
|
||||
HideGui: boolean,
|
||||
InMenu: boolean,
|
||||
@@ -7,7 +7,7 @@
|
||||
InInput: boolean
|
||||
}
|
||||
|
||||
declare interface AccountData {
|
||||
declare type AccountData = {
|
||||
regDate: string;
|
||||
adminLevel: string;
|
||||
faction: string;
|
||||
@@ -17,9 +17,15 @@ declare interface AccountData {
|
||||
job: string;
|
||||
paycheck: Paycheck;
|
||||
licenses: Licenses;
|
||||
vehicles: VehicleData[];
|
||||
}
|
||||
|
||||
declare interface Paycheck {
|
||||
declare type VehicleData = {
|
||||
Id: number;
|
||||
Model: number;
|
||||
};
|
||||
|
||||
declare type Paycheck = {
|
||||
financialHelp: number;
|
||||
financialInterest: number;
|
||||
vehicleTaxation: number;
|
||||
@@ -29,18 +35,18 @@ declare interface Paycheck {
|
||||
rentalFees: number;
|
||||
}
|
||||
|
||||
declare interface Licenses {
|
||||
declare type Licenses = {
|
||||
drivingLicenseCar: boolean;
|
||||
drivingLicenseBike: boolean;
|
||||
flightLicensePlane: boolean;
|
||||
weaponLicense: boolean;
|
||||
}
|
||||
|
||||
declare interface FactionRanks {
|
||||
declare type FactionRanks = {
|
||||
factionId: number,
|
||||
ranks: FactionRank[]
|
||||
}
|
||||
|
||||
declare interface FactionRank {
|
||||
declare type FactionRank = {
|
||||
|
||||
}
|
||||
@@ -16,6 +16,7 @@ using ReallifeGamemode.Server.Util;
|
||||
using ReallifeGamemode.Server.Inventory.Interfaces;
|
||||
using ReallifeGamemode.Server.DrivingSchool;
|
||||
using ReallifeGamemode.Server.Types;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
/**
|
||||
* @overview Life of German Reallife - Event Key (Key.cs)
|
||||
* @author VegaZ
|
||||
@@ -107,9 +108,16 @@ namespace ReallifeGamemode.Server.Events
|
||||
[RemoteEvent("keyPress:DOWN_ARROW")]
|
||||
public void KeyPressDownArrow(Player player)
|
||||
{
|
||||
User u = player.GetUser();
|
||||
using var dbContext = new DatabaseContext();
|
||||
User u = player.GetUser(dbContext);
|
||||
if (u == null) return;
|
||||
|
||||
var vehicles = dbContext.UserVehicles.Where(veh => veh.UserId == u.Id).OrderBy(veh => veh.Id).Select(v => new
|
||||
{
|
||||
v.Id,
|
||||
v.Model
|
||||
});
|
||||
|
||||
Paycheck paycheck = null;
|
||||
if (Economy.Paychecks.ContainsKey(u.Id)) paycheck = Economy.Paychecks[u.Id];
|
||||
|
||||
@@ -125,7 +133,8 @@ namespace ReallifeGamemode.Server.Events
|
||||
groupRank = u.GroupRank.GetName(),
|
||||
job = JobManager.GetJob(u.JobId ?? 0)?.Name ?? "Keiner",
|
||||
paycheck,
|
||||
licenses
|
||||
licenses,
|
||||
vehicles
|
||||
};
|
||||
|
||||
string faction = u.FactionLeader ? u.Faction.Name : null;
|
||||
|
||||
@@ -335,6 +335,40 @@ namespace ReallifeGamemode.Server.Managers
|
||||
ChatService.BroadcastJob(msg, taxiJob);
|
||||
ChatService.SendMessage(player, "!{02FCFF}Du hast erfolgreich ein Taxi zu deiner aktuellen Position gerufen.");
|
||||
}
|
||||
|
||||
[RemoteEvent("CLIENT:InteractionMenu_VehicleInteraction")]
|
||||
public void VehicleInteraction(Player player, int id, string selection)
|
||||
{
|
||||
using var dbContext = new DatabaseContext(true);
|
||||
var user = player.GetUser(dbContext);
|
||||
|
||||
var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault();
|
||||
if (userVehicle == null)
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden");
|
||||
}
|
||||
|
||||
Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle);
|
||||
|
||||
if (selection == "Finden")
|
||||
{
|
||||
player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y);
|
||||
}
|
||||
else if (selection == "Verkaufen")
|
||||
{
|
||||
var vehPrice = dbContext.ShopVehicles.Where(v => v.Model == userVehicle.Model).Select(v => v.Price).FirstOrDefault();
|
||||
var backPrice = (int)(vehPrice * 0.6);
|
||||
|
||||
user.BankAccount.Balance += backPrice;
|
||||
|
||||
ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
|
||||
|
||||
dbContext.UserVehicles.Remove(userVehicle);
|
||||
dbContext.SaveChanges();
|
||||
|
||||
veh.Delete();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region Spielerinteraktionen PFEILTASTE-LINKS
|
||||
[RemoteEvent("openTradeInventory")]
|
||||
|
||||
Reference in New Issue
Block a user