frakcar sellen
This commit is contained in:
@@ -54,13 +54,13 @@ export default function (globalData: IGlobalData) {
|
|||||||
var vehicles = accountData.vehicles;
|
var vehicles = accountData.vehicles;
|
||||||
if (vehicles.length > 0) {
|
if (vehicles.length > 0) {
|
||||||
menu.AddItem(vehiclesItem);
|
menu.AddItem(vehiclesItem);
|
||||||
menu.BindMenuToItem(getVehiclesMenu(vehicles, menu), vehiclesItem);
|
menu.BindMenuToItem(getVehiclesMenu(vehicles, "CLIENT:InteractionMenu_PlayerVehicleInteraction", true, menu), vehiclesItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (faction) {
|
if (faction) {
|
||||||
factionItem.SetRightLabel(faction);
|
factionItem.SetRightLabel(faction);
|
||||||
menu.AddItem(factionItem);
|
menu.AddItem(factionItem);
|
||||||
menu.BindMenuToItem(getFactionMenu(faction, menu), factionItem);
|
menu.BindMenuToItem(getFactionMenu(faction, accountData.factionVehicles, accountData.stateFaction, menu), factionItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (group) {
|
if (group) {
|
||||||
@@ -252,12 +252,18 @@ export default function (globalData: IGlobalData) {
|
|||||||
return licenseMenu;
|
return licenseMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFactionMenu(faction: string, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
function getFactionMenu(faction: string, vehData: VehicleData[], stateFaction: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||||
var factionMenu = new NativeUI.Menu("Fraktion", faction, new Point(50, 50), null, null);
|
var factionMenu = new NativeUI.Menu("Fraktion", faction, new Point(50, 50), null, null);
|
||||||
factionMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
factionMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
||||||
factionMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
factionMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
||||||
factionMenu.Visible = false;
|
factionMenu.Visible = false;
|
||||||
|
|
||||||
|
if (vehData.length > 0) {
|
||||||
|
var factionVehicleItem = new UIMenuItem("Fraktionsfahrzeuge", "Finden oder verkaufen");
|
||||||
|
factionMenu.AddItem(factionVehicleItem);
|
||||||
|
factionMenu.BindMenuToItem(getVehiclesMenu(vehData, "CLIENT:InteractionMenu_FactionVehicleInteraction", !stateFaction, parentMenu), factionVehicleItem);
|
||||||
|
}
|
||||||
|
|
||||||
factionMenu.ItemSelect.on((item, index) => {
|
factionMenu.ItemSelect.on((item, index) => {
|
||||||
if (index === 0) { // Inviten
|
if (index === 0) { // Inviten
|
||||||
var input = new InputHelper("Welchen Spieler möchtest du inviten (Name / ID)?", globalData);
|
var input = new InputHelper("Welchen Spieler möchtest du inviten (Name / ID)?", globalData);
|
||||||
@@ -322,15 +328,26 @@ export default function (globalData: IGlobalData) {
|
|||||||
return servicesMenu;
|
return servicesMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVehiclesMenu(vehicles: VehicleData[], parentMenu: NativeUI.Menu): NativeUI.Menu {
|
function getVehiclesMenu(vehicles: VehicleData[], eventName: string, allowSell: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||||
var menu = new Menu("Fahrzeuge", "Finde oder verkaufe deine Fahrzeuge", new Point(50, 50), null, null);
|
var desc = "Finden";
|
||||||
|
if (allowSell) {
|
||||||
|
desc += " oder Verkaufen";
|
||||||
|
}
|
||||||
|
|
||||||
var collection = new ItemsCollection(["Finden", "Verkaufen"]);
|
var menu = new Menu("Fahrzeuge", desc, new Point(50, 50), null, null);
|
||||||
|
|
||||||
|
var items: string[] = ["Finden"];
|
||||||
|
|
||||||
|
if (allowSell) {
|
||||||
|
items.push("Verkaufen");
|
||||||
|
}
|
||||||
|
|
||||||
|
var collection = new ItemsCollection(items);
|
||||||
|
|
||||||
vehicles.forEach(veh => {
|
vehicles.forEach(veh => {
|
||||||
var name: string = mp.game.vehicle.getDisplayNameFromVehicleModel(veh.Model);
|
var name: string = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(veh.Model));
|
||||||
|
|
||||||
var item = new UIMenuListItem(`${veh.Id.toString().padEnd(4)} | ${name}`, "", collection, null, { id: veh.Id });
|
var item = new UIMenuListItem(`${veh.Id.toString().padEnd(5)} | ${name}`, "", collection, null, { id: veh.Id });
|
||||||
|
|
||||||
menu.AddItem(item);
|
menu.AddItem(item);
|
||||||
});
|
});
|
||||||
@@ -371,7 +388,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (item == yesItem) {
|
if (item == yesItem) {
|
||||||
mp.events.callRemote("CLIENT:InteractionMenu_VehicleInteraction", id, selection);
|
mp.events.callRemote(eventName, id, selection);
|
||||||
confirmMenu.Close();
|
confirmMenu.Close();
|
||||||
parentMenu.Close(true);
|
parentMenu.Close(true);
|
||||||
closing = true;
|
closing = true;
|
||||||
@@ -393,7 +410,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mp.events.callRemote("CLIENT:InteractionMenu_VehicleInteraction", id, selection);
|
mp.events.callRemote(eventName, id, selection);
|
||||||
|
|
||||||
parentMenu.Close(true);
|
parentMenu.Close(true);
|
||||||
});
|
});
|
||||||
|
|||||||
2
ReallifeGamemode.Client/global.d.ts
vendored
2
ReallifeGamemode.Client/global.d.ts
vendored
@@ -19,7 +19,9 @@ declare type AccountData = {
|
|||||||
paycheck: Paycheck;
|
paycheck: Paycheck;
|
||||||
licenses: Licenses;
|
licenses: Licenses;
|
||||||
vehicles: VehicleData[];
|
vehicles: VehicleData[];
|
||||||
|
factionVehicles: VehicleData[];
|
||||||
nextPayday: number;
|
nextPayday: number;
|
||||||
|
stateFaction: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare type VehicleData = {
|
declare type VehicleData = {
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ namespace ReallifeGamemode.Database.Entities
|
|||||||
|
|
||||||
public List<int> GetOwners() => JsonConvert.DeserializeObject<List<int>>(Owners);
|
public List<int> GetOwners() => JsonConvert.DeserializeObject<List<int>>(Owners);
|
||||||
|
|
||||||
|
public int BuyPrice { get; set; }
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
|
|||||||
1847
ReallifeGamemode.Database/Migrations/20200506184310_FactionVehicleBuyPrice.Designer.cs
generated
Normal file
1847
ReallifeGamemode.Database/Migrations/20200506184310_FactionVehicleBuyPrice.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace ReallifeGamemode.Database.Migrations
|
||||||
|
{
|
||||||
|
public partial class FactionVehicleBuyPrice : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "BuyPrice",
|
||||||
|
table: "ServerVehicles",
|
||||||
|
nullable: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "BuyPrice",
|
||||||
|
table: "ServerVehicles");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1547,6 +1547,9 @@ namespace ReallifeGamemode.Database.Migrations
|
|||||||
{
|
{
|
||||||
b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle");
|
b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle");
|
||||||
|
|
||||||
|
b.Property<int>("BuyPrice")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<string>("Owners")
|
b.Property<string>("Owners")
|
||||||
.HasColumnType("longtext CHARACTER SET utf8mb4");
|
.HasColumnType("longtext CHARACTER SET utf8mb4");
|
||||||
|
|
||||||
|
|||||||
@@ -132,6 +132,13 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
Price = v.Price ?? 0
|
Price = v.Price ?? 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var factionVehicles = dbContext.FactionVehicles.ToList().Where(f => f.GetOwners().Contains(u.FactionId ?? -1)).Select(f => new
|
||||||
|
{
|
||||||
|
f.Id,
|
||||||
|
f.Model,
|
||||||
|
Price = f.BuyPrice
|
||||||
|
});
|
||||||
|
|
||||||
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];
|
||||||
|
|
||||||
@@ -143,6 +150,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
adminLevel = u.AdminLevel.GetName(),
|
adminLevel = u.AdminLevel.GetName(),
|
||||||
points = u.Points,
|
points = u.Points,
|
||||||
faction = u.Faction?.Name ?? "Zivilist",
|
faction = u.Faction?.Name ?? "Zivilist",
|
||||||
|
stateFaction = u.Faction?.StateOwned,
|
||||||
factionRank = u.GetFactionRank().RankName,
|
factionRank = u.GetFactionRank().RankName,
|
||||||
group = u.Group?.Name ?? "Keine",
|
group = u.Group?.Name ?? "Keine",
|
||||||
groupRank = u.GroupRank.GetName(),
|
groupRank = u.GroupRank.GetName(),
|
||||||
@@ -150,6 +158,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
paycheck,
|
paycheck,
|
||||||
licenses,
|
licenses,
|
||||||
vehicles,
|
vehicles,
|
||||||
|
factionVehicles = u.FactionLeader ? factionVehicles : null,
|
||||||
nextPayday = u.PaydayTimer
|
nextPayday = u.PaydayTimer
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using ReallifeGamemode.Database.Entities;
|
using ReallifeGamemode.Database.Entities;
|
||||||
@@ -32,6 +32,7 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
return context
|
return context
|
||||||
.Users
|
.Users
|
||||||
.Include(u => u.Faction)
|
.Include(u => u.Faction)
|
||||||
|
.ThenInclude(f => f.BankAccount)
|
||||||
.Include(u => u.FactionRank)
|
.Include(u => u.FactionRank)
|
||||||
.Include(u => u.Group)
|
.Include(u => u.Group)
|
||||||
.Include(u => u.House)
|
.Include(u => u.House)
|
||||||
|
|||||||
@@ -212,6 +212,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
PrimaryColor = 111,
|
PrimaryColor = 111,
|
||||||
SecondaryColor = 111,
|
SecondaryColor = 111,
|
||||||
Active = true,
|
Active = true,
|
||||||
|
BuyPrice = price
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
//else if (target == "Gruppe")
|
//else if (target == "Gruppe")
|
||||||
|
|||||||
@@ -344,8 +344,8 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
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")]
|
[RemoteEvent("CLIENT:InteractionMenu_PlayerVehicleInteraction")]
|
||||||
public void VehicleInteraction(Player player, int id, string selection)
|
public void PlayerVehicleInteraction(Player player, int id, string selection)
|
||||||
{
|
{
|
||||||
using var dbContext = new DatabaseContext(true);
|
using var dbContext = new DatabaseContext(true);
|
||||||
var user = player.GetUser(dbContext);
|
var user = player.GetUser(dbContext);
|
||||||
@@ -364,7 +364,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
else if (selection == "Verkaufen")
|
else if (selection == "Verkaufen")
|
||||||
{
|
{
|
||||||
var vehPrice = dbContext.ShopVehicles.Where(v => v.Model == userVehicle.Model).Select(v => v.Price).FirstOrDefault();
|
var vehPrice = userVehicle.Price;
|
||||||
var backPrice = (int)(vehPrice * 0.6);
|
var backPrice = (int)(vehPrice * 0.6);
|
||||||
|
|
||||||
user.BankAccount.Balance += backPrice;
|
user.BankAccount.Balance += backPrice;
|
||||||
@@ -377,6 +377,40 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
veh.Delete();
|
veh.Delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("CLIENT:InteractionMenu_FactionVehicleInteraction")]
|
||||||
|
public void FactionVehicleInteraction(Player player, int id, string selection)
|
||||||
|
{
|
||||||
|
using var dbContext = new DatabaseContext(true);
|
||||||
|
var user = player.GetUser(dbContext);
|
||||||
|
|
||||||
|
var factionVehicle = dbContext.FactionVehicles.ToList().Where(v => v.Id == id && v.GetOwners().Contains(user.FactionId.Value)).FirstOrDefault();
|
||||||
|
if (factionVehicle == null)
|
||||||
|
{
|
||||||
|
ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden");
|
||||||
|
}
|
||||||
|
|
||||||
|
GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle);
|
||||||
|
|
||||||
|
if (selection == "Finden")
|
||||||
|
{
|
||||||
|
player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y);
|
||||||
|
}
|
||||||
|
else if (selection == "Verkaufen")
|
||||||
|
{
|
||||||
|
var backPrice = factionVehicle.BuyPrice;
|
||||||
|
|
||||||
|
user.Faction.BankAccount.Balance += backPrice;
|
||||||
|
|
||||||
|
ChatService.SendMessage(player, $"~b~[INFO]~s~ Deine Fraktion hat durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
|
||||||
|
|
||||||
|
dbContext.FactionVehicles.Remove(factionVehicle);
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
|
veh.Delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:InteractionMenu_LSPD_Ticket3")]
|
[RemoteEvent("CLIENT:InteractionMenu_LSPD_Ticket3")]
|
||||||
public void InteractionMenu_LSPD_Ticket3(Player player, string jsonNameOrId, string stringAmount, string jsonReason)
|
public void InteractionMenu_LSPD_Ticket3(Player player, string jsonNameOrId, string stringAmount, string jsonReason)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user