auto verkaufen
This commit is contained in:
@@ -29,6 +29,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
|
|
||||||
var licenseItem = new UIMenuItem("Lizenzen", "Lizenzen Informationen");
|
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) => {
|
mp.events.add("SERVER:InteractionMenu_OpenMenu", (accountDataJson: string, faction: string, group: string, factionInvite: boolean, groupInvite: boolean) => {
|
||||||
var accountData: AccountData = JSON.parse(accountDataJson);
|
var accountData: AccountData = JSON.parse(accountDataJson);
|
||||||
@@ -45,6 +46,12 @@ export default function (globalData: IGlobalData) {
|
|||||||
menu.AddItem(licenseItem);
|
menu.AddItem(licenseItem);
|
||||||
menu.BindMenuToItem(getLicenseMenu(accountData.licenses, menu), 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) {
|
if (faction) {
|
||||||
factionItem.SetRightLabel(faction);
|
factionItem.SetRightLabel(faction);
|
||||||
menu.AddItem(factionItem);
|
menu.AddItem(factionItem);
|
||||||
@@ -106,7 +113,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
menu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
menu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
||||||
if (item === acceptItem) {
|
if (item === acceptItem) {
|
||||||
mp.events.callRemote("CLIENT:InteractionMenu_AcceptInvite", acceptItem.SelectedValue);
|
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.show();
|
||||||
input.getValue(name => {
|
input.getValue(name => {
|
||||||
mp.events.callRemote("CLIENT:InteractionMenu_Show", "License", 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;
|
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,
|
InTuning: boolean,
|
||||||
HideGui: boolean,
|
HideGui: boolean,
|
||||||
InMenu: boolean,
|
InMenu: boolean,
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
InInput: boolean
|
InInput: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
declare interface AccountData {
|
declare type AccountData = {
|
||||||
regDate: string;
|
regDate: string;
|
||||||
adminLevel: string;
|
adminLevel: string;
|
||||||
faction: string;
|
faction: string;
|
||||||
@@ -17,9 +17,15 @@ declare interface AccountData {
|
|||||||
job: string;
|
job: string;
|
||||||
paycheck: Paycheck;
|
paycheck: Paycheck;
|
||||||
licenses: Licenses;
|
licenses: Licenses;
|
||||||
|
vehicles: VehicleData[];
|
||||||
}
|
}
|
||||||
|
|
||||||
declare interface Paycheck {
|
declare type VehicleData = {
|
||||||
|
Id: number;
|
||||||
|
Model: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type Paycheck = {
|
||||||
financialHelp: number;
|
financialHelp: number;
|
||||||
financialInterest: number;
|
financialInterest: number;
|
||||||
vehicleTaxation: number;
|
vehicleTaxation: number;
|
||||||
@@ -29,18 +35,18 @@ declare interface Paycheck {
|
|||||||
rentalFees: number;
|
rentalFees: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare interface Licenses {
|
declare type Licenses = {
|
||||||
drivingLicenseCar: boolean;
|
drivingLicenseCar: boolean;
|
||||||
drivingLicenseBike: boolean;
|
drivingLicenseBike: boolean;
|
||||||
flightLicensePlane: boolean;
|
flightLicensePlane: boolean;
|
||||||
weaponLicense: boolean;
|
weaponLicense: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare interface FactionRanks {
|
declare type FactionRanks = {
|
||||||
factionId: number,
|
factionId: number,
|
||||||
ranks: FactionRank[]
|
ranks: FactionRank[]
|
||||||
}
|
}
|
||||||
|
|
||||||
declare interface FactionRank {
|
declare type FactionRank = {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -16,6 +16,7 @@ using ReallifeGamemode.Server.Util;
|
|||||||
using ReallifeGamemode.Server.Inventory.Interfaces;
|
using ReallifeGamemode.Server.Inventory.Interfaces;
|
||||||
using ReallifeGamemode.Server.DrivingSchool;
|
using ReallifeGamemode.Server.DrivingSchool;
|
||||||
using ReallifeGamemode.Server.Types;
|
using ReallifeGamemode.Server.Types;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Event Key (Key.cs)
|
* @overview Life of German Reallife - Event Key (Key.cs)
|
||||||
* @author VegaZ
|
* @author VegaZ
|
||||||
@@ -107,9 +108,16 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
[RemoteEvent("keyPress:DOWN_ARROW")]
|
[RemoteEvent("keyPress:DOWN_ARROW")]
|
||||||
public void KeyPressDownArrow(Player player)
|
public void KeyPressDownArrow(Player player)
|
||||||
{
|
{
|
||||||
User u = player.GetUser();
|
using var dbContext = new DatabaseContext();
|
||||||
|
User u = player.GetUser(dbContext);
|
||||||
if (u == null) return;
|
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;
|
Paycheck paycheck = null;
|
||||||
if (Economy.Paychecks.ContainsKey(u.Id)) paycheck = Economy.Paychecks[u.Id];
|
if (Economy.Paychecks.ContainsKey(u.Id)) paycheck = Economy.Paychecks[u.Id];
|
||||||
|
|
||||||
@@ -125,7 +133,8 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
groupRank = u.GroupRank.GetName(),
|
groupRank = u.GroupRank.GetName(),
|
||||||
job = JobManager.GetJob(u.JobId ?? 0)?.Name ?? "Keiner",
|
job = JobManager.GetJob(u.JobId ?? 0)?.Name ?? "Keiner",
|
||||||
paycheck,
|
paycheck,
|
||||||
licenses
|
licenses,
|
||||||
|
vehicles
|
||||||
};
|
};
|
||||||
|
|
||||||
string faction = u.FactionLeader ? u.Faction.Name : null;
|
string faction = u.FactionLeader ? u.Faction.Name : null;
|
||||||
|
|||||||
@@ -335,6 +335,40 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
ChatService.BroadcastJob(msg, taxiJob);
|
ChatService.BroadcastJob(msg, taxiJob);
|
||||||
ChatService.SendMessage(player, "!{02FCFF}Du hast erfolgreich ein Taxi zu deiner aktuellen Position gerufen.");
|
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
|
#endregion
|
||||||
#region Spielerinteraktionen PFEILTASTE-LINKS
|
#region Spielerinteraktionen PFEILTASTE-LINKS
|
||||||
[RemoteEvent("openTradeInventory")]
|
[RemoteEvent("openTradeInventory")]
|
||||||
|
|||||||
Reference in New Issue
Block a user