Merged feature/business-system into develop
This commit is contained in:
143
Client/Business/main.js
Normal file
143
Client/Business/main.js
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
var keyBound = false;
|
||||||
|
|
||||||
|
var closeMenu = false;
|
||||||
|
|
||||||
|
var businessName;
|
||||||
|
var businessMoney;
|
||||||
|
var mainMenu;
|
||||||
|
var bankMenu;
|
||||||
|
|
||||||
|
const NativeUI = require("nativeui");
|
||||||
|
const Menu = NativeUI.Menu;
|
||||||
|
const UIMenuItem = NativeUI.UIMenuItem;
|
||||||
|
const UIMenuListItem = NativeUI.UIMenuListItem;
|
||||||
|
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
|
||||||
|
const UIMenuSliderItem = NativeUI.UIMenuSliderItem;
|
||||||
|
const BadgeStyle = NativeUI.BadgeStyle;
|
||||||
|
const Point = NativeUI.Point;
|
||||||
|
const ItemsCollection = NativeUI.ItemsCollection;
|
||||||
|
const Color = NativeUI.Color;
|
||||||
|
const ListItem = NativeUI.ListItem;
|
||||||
|
|
||||||
|
const InputHelper = require("inputhelper");
|
||||||
|
|
||||||
|
mp.events.add('business_showHelp', (bizName, bizMoney) => {
|
||||||
|
mp.game.ui.setTextComponentFormat('STRING');
|
||||||
|
mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um dein Business zu verwalten');
|
||||||
|
mp.game.ui.displayHelpTextFromStringLabel(0, true, true, -1);
|
||||||
|
|
||||||
|
businessName = bizName;
|
||||||
|
businessMoney = bizMoney;
|
||||||
|
|
||||||
|
mp.keys.bind(0x45, false, keyPressHandler);
|
||||||
|
keyBound = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('business_removeHelp', (unbind) => {
|
||||||
|
mp.game.ui.clearHelp(true);
|
||||||
|
mp.gui.chat.show(true);
|
||||||
|
|
||||||
|
if (keyBound && unbind) {
|
||||||
|
if (typeof mainMenu !== "undefined") mainMenu.Close();
|
||||||
|
if (typeof bankMenu !== "undefined") {
|
||||||
|
closeMenu = true;
|
||||||
|
bankMenu.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
mp.keys.unbind(0x45, false, keyPressHandler);
|
||||||
|
keyBound = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('business_updateMoney', (newMoney) => {
|
||||||
|
businessMoney = newMoney;
|
||||||
|
});
|
||||||
|
|
||||||
|
function keyPressHandler() {
|
||||||
|
mp.events.call('business_removeHelp', false);
|
||||||
|
mp.gui.chat.show(false);
|
||||||
|
|
||||||
|
if (typeof mainMenu !== "undefined" && mainMenu.Visible) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof bankMenu !== "undefined" && bankMenu.Visible) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mainMenu = new Menu("Businessverwaltung", businessName, new Point(50, 50));
|
||||||
|
|
||||||
|
var bankAccountItem = new UIMenuItem("Businesskasse", "Verwalte die Businesskasse");
|
||||||
|
bankAccountItem.SetRightLabel("~g~~h~" + businessMoney);
|
||||||
|
mainMenu.AddItem(bankAccountItem);
|
||||||
|
|
||||||
|
//var partnerItem = new UIMenuItem("Inteilhaber", "Verwalte den Inteilhaber");
|
||||||
|
//partnerItem.SetRightLabel("Niemand");
|
||||||
|
//mainMenu.AddItem(partnerItem);
|
||||||
|
|
||||||
|
mainMenu.Open();
|
||||||
|
|
||||||
|
mainMenu.ItemSelect.on((item, index) => {
|
||||||
|
if (item === bankAccountItem) {
|
||||||
|
// manage bank account
|
||||||
|
|
||||||
|
bankMenu = new Menu("Bankkonto", businessName, new Point(50, 50));
|
||||||
|
|
||||||
|
var infoItem = new UIMenuItem("Aktueller Kontostand");
|
||||||
|
infoItem.SetRightLabel("~g~~h~" + businessMoney);
|
||||||
|
bankMenu.AddItem(infoItem);
|
||||||
|
|
||||||
|
var depositItem = new UIMenuItem("Einzahlen", "Zahle Geld auf die Businesskasse ein");
|
||||||
|
bankMenu.AddItem(depositItem);
|
||||||
|
|
||||||
|
var withdrawItem = new UIMenuItem("Auszahlen", "Zahle Geld von der Businesskasse aus");
|
||||||
|
bankMenu.AddItem(withdrawItem);
|
||||||
|
|
||||||
|
bankMenu.ItemSelect.on((item, index) => {
|
||||||
|
if (item === depositItem) {
|
||||||
|
var depositInput = new InputHelper("Wie viel Geld möchtest du auf deine Businesskasse einzahlen?");
|
||||||
|
depositInput.show();
|
||||||
|
depositInput.getValue((data) => {
|
||||||
|
var amount = parseInt(data);
|
||||||
|
if (isNaN(amount)) {
|
||||||
|
mp.game.graphics.notify('~r~Du musst eine Nummer eingeben!');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mp.events.callRemote('Business_DepositMoney', amount);
|
||||||
|
});
|
||||||
|
} else if (item === withdrawItem) {
|
||||||
|
var withdrawInput = new InputHelper("Wie viel Geld möchtest du von deiner Businesskasse abheben?");
|
||||||
|
withdrawInput.show();
|
||||||
|
withdrawInput.getValue((data) => {
|
||||||
|
var amount = parseInt(data);
|
||||||
|
if (isNaN(amount)) {
|
||||||
|
mp.game.graphics.notify('~r~Du musst eine Nummer eingeben!');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mp.events.callRemote('Business_WithdrawMoney', amount);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
bankMenu.MenuClose.on(() => {
|
||||||
|
if (closeMenu) {
|
||||||
|
closeMenu = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mainMenu.Visible = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
bankMenu.Visible = true;
|
||||||
|
mainMenu.Visible = false;
|
||||||
|
|
||||||
|
} else if (item === partnerItem) {
|
||||||
|
// manage partner
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mainMenu.MenuClose.on(() => {
|
||||||
|
mp.events.call('business_removeHelp', false);
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -30,3 +30,5 @@ require('./Save/main.js');
|
|||||||
require('./Speedometer/index.js');
|
require('./Speedometer/index.js');
|
||||||
|
|
||||||
require('./Tuning/main.js');
|
require('./Tuning/main.js');
|
||||||
|
|
||||||
|
require('./Business/main.js');
|
||||||
|
|||||||
66
Client/inputhelper/index.js
Normal file
66
Client/inputhelper/index.js
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
class InputHelper {
|
||||||
|
constructor(title) {
|
||||||
|
this.title = title;
|
||||||
|
|
||||||
|
this.cefTitleCall = this.cefTitleCall.bind(this);
|
||||||
|
mp.events.add('cef_request_title', this.cefTitleCall);
|
||||||
|
|
||||||
|
this.cefCallback = this.cefCallback.bind(this);
|
||||||
|
mp.events.add('cef_inputhelper_sendvalue', this.cefCallback);
|
||||||
|
|
||||||
|
this.finish = this.finish.bind(this);
|
||||||
|
this.show = this.show.bind(this);
|
||||||
|
this.valueGetter = this.valueGetter.bind(this);
|
||||||
|
this.getValue = this.getValue.bind(this);
|
||||||
|
|
||||||
|
this.value = undefined;
|
||||||
|
|
||||||
|
mp.events.add('render', this.disableControls);
|
||||||
|
}
|
||||||
|
|
||||||
|
disableControls() {
|
||||||
|
for (var i = 0; i <= 33; i++) {
|
||||||
|
mp.game.controls.disableAllControlActions(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
show() {
|
||||||
|
if (this.created) return;
|
||||||
|
this.created = true;
|
||||||
|
this.browser = mp.browsers.new('package://inputhelper/web/inputhelper.html');
|
||||||
|
}
|
||||||
|
|
||||||
|
finish() {
|
||||||
|
if (this.browser) {
|
||||||
|
mp.events.remove('cef_inputhelper_sendvalue');
|
||||||
|
mp.events.remove('cef_request_title');
|
||||||
|
mp.events.remove('render', this.disableControls);
|
||||||
|
this.browser.destroy();
|
||||||
|
this.created = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cefTitleCall() {
|
||||||
|
this.browser.execute(`setTitle('${this.title}')`);
|
||||||
|
}
|
||||||
|
|
||||||
|
cefCallback(val) {
|
||||||
|
this.value = val;
|
||||||
|
this.finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
valueGetter() {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
setInterval(() => {
|
||||||
|
if (this.value !== undefined) resolve(this.value);
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async getValue(callback) {
|
||||||
|
var getVal = await this.valueGetter();
|
||||||
|
callback(getVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports = InputHelper;
|
||||||
50
Client/inputhelper/web/inputhelper.css
Normal file
50
Client/inputhelper/web/inputhelper.css
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#black {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: -1;
|
||||||
|
background-color: rgba(0, 0, 0, .3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-main {
|
||||||
|
display: block;
|
||||||
|
width: 70%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
|
||||||
|
background-color: rgba(0, 0, 0, .8);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-main h1 {
|
||||||
|
color: white;
|
||||||
|
font-size: 24px;
|
||||||
|
font-family: "Arial";
|
||||||
|
font-weight: lighter;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-main input {
|
||||||
|
width: 100%;
|
||||||
|
background-color: black;
|
||||||
|
outline: 0;
|
||||||
|
border: grey 1px solid;
|
||||||
|
color: white;
|
||||||
|
padding: 5px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-family: "Arial";
|
||||||
|
font-weight: lighter;
|
||||||
|
}
|
||||||
|
|
||||||
32
Client/inputhelper/web/inputhelper.html
Normal file
32
Client/inputhelper/web/inputhelper.html
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" href="inputhelper.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="black"></div>
|
||||||
|
<div class="input-main">
|
||||||
|
<h1></h1>
|
||||||
|
<input id="input-value" autofocus>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="package://Dependences/jquery-3.3.1.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function () {
|
||||||
|
mp.trigger('cef_request_title');
|
||||||
|
|
||||||
|
$('#input-value').keydown(function (e) {
|
||||||
|
if (e.keyCode != 13) return;
|
||||||
|
var currentValue = $('#input-value').val();
|
||||||
|
if (currentValue) {
|
||||||
|
mp.trigger('cef_inputhelper_sendvalue', currentValue);
|
||||||
|
console.log("triggered event: " + currentValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function setTitle(title) {
|
||||||
|
$('.input-main h1').text(title);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
3
Main.cs
3
Main.cs
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@@ -21,6 +22,8 @@ namespace reallife_gamemode
|
|||||||
public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829);
|
public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829);
|
||||||
public static readonly float DEFAULT_SPAWN_HEADING = 340.8f;
|
public static readonly float DEFAULT_SPAWN_HEADING = 340.8f;
|
||||||
|
|
||||||
|
public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE");
|
||||||
|
|
||||||
[ServerEvent(Event.ResourceStart)]
|
[ServerEvent(Event.ResourceStart)]
|
||||||
public void OnResourceStart()
|
public void OnResourceStart()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ namespace reallife_gamemode.Model
|
|||||||
|
|
||||||
public DatabaseContext()
|
public DatabaseContext()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
@@ -28,6 +29,14 @@ namespace reallife_gamemode.Model
|
|||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
base.OnModelCreating(modelBuilder);
|
base.OnModelCreating(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity<Server.Entities.BusinessBankAccount>()
|
||||||
|
.HasIndex(b => b.BusinessId)
|
||||||
|
.IsUnique(true);
|
||||||
|
|
||||||
|
modelBuilder.Entity<Server.Entities.User>()
|
||||||
|
.HasIndex(u => u.BusinessId)
|
||||||
|
.IsUnique(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//User
|
//User
|
||||||
@@ -66,6 +75,9 @@ namespace reallife_gamemode.Model
|
|||||||
public DbSet<Server.Saves.SavedVehicle> Vehicles { get; set; }
|
public DbSet<Server.Saves.SavedVehicle> Vehicles { get; set; }
|
||||||
public DbSet<Server.Entities.ShopVehicle> ShopVehicles { get; set; }
|
public DbSet<Server.Entities.ShopVehicle> ShopVehicles { get; set; }
|
||||||
|
|
||||||
|
// Business
|
||||||
|
public DbSet<Server.Entities.BusinessBankAccount> BusinessBankAccounts { get; set; }
|
||||||
|
|
||||||
// Control Panel
|
// Control Panel
|
||||||
public DbSet<Server.Entities.News> News { get; set; }
|
public DbSet<Server.Entities.News> News { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
102
Server/Business/BusinessBase.cs
Normal file
102
Server/Business/BusinessBase.cs
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Model;
|
||||||
|
using reallife_gamemode.Server.Entities;
|
||||||
|
using reallife_gamemode.Server.Extensions;
|
||||||
|
using reallife_gamemode.Server.Util;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Business
|
||||||
|
{
|
||||||
|
public abstract class BusinessBase : IBankAccountOwner
|
||||||
|
{
|
||||||
|
private TextLabel _informationLabel;
|
||||||
|
private Marker _marker;
|
||||||
|
private ColShape _colShape;
|
||||||
|
|
||||||
|
public abstract int Id { get; }
|
||||||
|
public abstract string Name { get; }
|
||||||
|
|
||||||
|
public abstract Vector3 Position { get; }
|
||||||
|
|
||||||
|
public IBankAccount GetBankAccount(DatabaseContext databaseContext = null)
|
||||||
|
{
|
||||||
|
if (databaseContext == null)
|
||||||
|
{
|
||||||
|
using (databaseContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
_informationLabel = NAPI.TextLabel.CreateTextLabel(Name, Position.Add(new Vector3(0, 0, 0.5)), 20.0f, 1.3f, 0, new Color(255, 255, 255));
|
||||||
|
_marker = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, Position.Subtract(new Vector3(0, 0, 1.5)), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255), true);
|
||||||
|
|
||||||
|
_colShape = NAPI.ColShape.CreateSphereColShape(Position.Subtract(new Vector3(0, 0, 1.5)), 3f);
|
||||||
|
_colShape.OnEntityEnterColShape += EntityEnterBusinessColShape;
|
||||||
|
_colShape.OnEntityExitColShape += EntityExitBusinessColShape;
|
||||||
|
|
||||||
|
if (GetBankAccount() == null)
|
||||||
|
{
|
||||||
|
NAPI.Util.ConsoleOutput("Creating Bank Account for Business: " + Name);
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
|
||||||
|
dbContext.BusinessBankAccounts.Add(new BusinessBankAccount()
|
||||||
|
{
|
||||||
|
BusinessId = Id,
|
||||||
|
Balance = 0
|
||||||
|
});
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EntityExitBusinessColShape(ColShape colShape, Client client)
|
||||||
|
{
|
||||||
|
client.TriggerEvent("business_removeHelp", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EntityEnterBusinessColShape(ColShape colShape, Client client)
|
||||||
|
{
|
||||||
|
if (GetOwner() != null && GetOwner().Id == client.GetUser()?.Id && !client.IsInVehicle)
|
||||||
|
{
|
||||||
|
client.TriggerEvent("business_showHelp", Name, (GetBankAccount()?.Balance ?? 0).ToMoneyString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(int? money = null)
|
||||||
|
{
|
||||||
|
if (money == null) money = GetBankAccount()?.Balance ?? 0;
|
||||||
|
User owner = GetOwner();
|
||||||
|
string infoText = Name + "\n" + "Besitzer: " + (owner == null ? "Niemand" : owner.Name) + "\nKasse: ~g~" + money.ToMoneyString();
|
||||||
|
_informationLabel.Text = infoText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public User GetOwner(DatabaseContext dbContext = null)
|
||||||
|
{
|
||||||
|
if(dbContext == null)
|
||||||
|
{
|
||||||
|
using (dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void Load();
|
||||||
|
}
|
||||||
|
}
|
||||||
21
Server/Business/ShopBusiness.cs
Normal file
21
Server/Business/ShopBusiness.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using GTANetworkAPI;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Business
|
||||||
|
{
|
||||||
|
class ShopBusiness : BusinessBase
|
||||||
|
{
|
||||||
|
public override int Id => 2;
|
||||||
|
|
||||||
|
public override string Name => "24/7 Business";
|
||||||
|
|
||||||
|
public override Vector3 Position => new Vector3(-443, 1134, 326);
|
||||||
|
|
||||||
|
public override void Load()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
Server/Business/TelefonBusiness.cs
Normal file
21
Server/Business/TelefonBusiness.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using GTANetworkAPI;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Business
|
||||||
|
{
|
||||||
|
public class TelefonBusiness : BusinessBase
|
||||||
|
{
|
||||||
|
public override int Id => 1;
|
||||||
|
|
||||||
|
public override string Name => "Telefon Business";
|
||||||
|
|
||||||
|
public override Vector3 Position => new Vector3(-423, 1130, 326);
|
||||||
|
|
||||||
|
public override void Load()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ using reallife_gamemode.Server.Services;
|
|||||||
using reallife_gamemode.Server.Util;
|
using reallife_gamemode.Server.Util;
|
||||||
using reallife_gamemode.Server.Managers;
|
using reallife_gamemode.Server.Managers;
|
||||||
using reallife_gamemode.Server.Saves;
|
using reallife_gamemode.Server.Saves;
|
||||||
|
using reallife_gamemode.Server.Business;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Admin Commands (Admin.cs)
|
* @overview Life of German Reallife - Admin Commands (Admin.cs)
|
||||||
@@ -172,6 +173,22 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Command("businesslist", "~m~Benutzung: ~s~/businesslist")]
|
||||||
|
public void CmdAdminBusinessList(Client player)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.SendChatMessage("~m~__________ ~s~Businesses ~m~__________");
|
||||||
|
foreach (Business.BusinessBase b in BusinessManager.Businesses)
|
||||||
|
{
|
||||||
|
player.SendChatMessage(b.Id.ToString().PadRight(3) + " | " + b.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -1622,6 +1639,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
NAPI.Chat.SendChatMessageToPlayer(player, "~w~Das Wetter konnte nicht geändert werden");
|
NAPI.Chat.SendChatMessageToPlayer(player, "~w~Das Wetter konnte nicht geändert werden");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier]")] //TODO: Überarbeiten ?? SetPlayerVelocity ??
|
[Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier]")] //TODO: Überarbeiten ?? SetPlayerVelocity ??
|
||||||
public void CmdAdminAspeed(Client player, float modifier)
|
public void CmdAdminAspeed(Client player, float modifier)
|
||||||
{
|
{
|
||||||
@@ -1639,7 +1657,8 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
|
|
||||||
player.Vehicle.EnginePowerMultiplier = modifier;
|
player.Vehicle.EnginePowerMultiplier = modifier;
|
||||||
}
|
}
|
||||||
[Command("setmoney")]
|
|
||||||
|
[Command("setmoney", "~m~Benutzung: ~s~/setmoney [Name] [Menge]")]
|
||||||
public void SetPlayerMoney(Client player, string receiver, int amount)
|
public void SetPlayerMoney(Client player, string receiver, int amount)
|
||||||
{
|
{
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
@@ -1663,7 +1682,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
target.SendChatMessage("~b~[ADMIN]~s~ Dein Geld wurde von Admin " + player.Name + " auf ~g~$" + amount + "~s~ gesetzt.");
|
target.SendChatMessage("~b~[ADMIN]~s~ Dein Geld wurde von Admin " + player.Name + " auf ~g~$" + amount + "~s~ gesetzt.");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("givemoney")]
|
[Command("givemoney", "~m~Benutzung: ~s~/givemoney [Name] [Menge]")]
|
||||||
public void GivePlayerMoney(Client player, string receiver, int amount)
|
public void GivePlayerMoney(Client player, string receiver, int amount)
|
||||||
{
|
{
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
@@ -1671,6 +1690,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
ChatService.NotAuthorized(player);
|
ChatService.NotAuthorized(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client target = ClientService.GetClientByNameOrId(receiver);
|
Client target = ClientService.GetClientByNameOrId(receiver);
|
||||||
if (target == null || !target.IsLoggedIn())
|
if (target == null || !target.IsLoggedIn())
|
||||||
{
|
{
|
||||||
@@ -1686,6 +1706,106 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
player.SendChatMessage("~b~[ADMIN]~s~ Du hast " + target.Name + " ~g~$" + amount + "~s~ gegeben.");
|
player.SendChatMessage("~b~[ADMIN]~s~ Du hast " + target.Name + " ~g~$" + amount + "~s~ gegeben.");
|
||||||
target.SendChatMessage("~b~[ADMIN]~s~ Admin " + player.Name + " hat dir ~g~$" + amount + "~s~ gegeben.");
|
target.SendChatMessage("~b~[ADMIN]~s~ Admin " + player.Name + " hat dir ~g~$" + amount + "~s~ gegeben.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Command("setbusinessowner", "~m~Benutzung: ~s~/setbusinessowner [Name] [Business ID]")]
|
||||||
|
public void CmdAdminSetbusinessowner(Client player, string name, int businessid)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Client target = ClientService.GetClientByNameOrId(name);
|
||||||
|
if (target == null || !target.IsLoggedIn())
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotFound(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(target.GetUser().BusinessId != null)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Der Spieler besitzt momentan schon ein Business: ~o~" + BusinessManager.GetBusiness(target.GetUser().BusinessId).Name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BusinessBase business = BusinessManager.GetBusiness(businessid);
|
||||||
|
if(business == null)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Business existiert nicht. ~m~/businesslist");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(business.GetOwner() != null)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Das Business hat momentan noch einen Besitzer: ~o~" + business.GetOwner().Name + "~s~. Entferne diesen Besitzer erst mit ~m~/clearbusiness");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
using(var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
Entities.User targetUser = target.GetUser(dbContext);
|
||||||
|
targetUser.BusinessId = businessid;
|
||||||
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
business.Update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("clearbusiness", "~m~Benutzung:~s~ /clearbusiness [Business ID]")]
|
||||||
|
public void CmdAdminClearbusiness(Client player, int businessid)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BusinessBase business = BusinessManager.GetBusiness(businessid);
|
||||||
|
if (business == null)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Business existiert nicht. ~m~/businesslist");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
using(var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
Entities.User owner = business.GetOwner(dbContext);
|
||||||
|
if(owner == null)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Business hat momentan keinen Besitzer.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
owner.BusinessId = null;
|
||||||
|
business.GetBankAccount(dbContext).Balance = 0;
|
||||||
|
|
||||||
|
owner.GetClient()?.SendChatMessage("~b~[ADMIN]~s~ Dir wurde von ~y~" + player.Name + "~s~ dein Business entzogen.");
|
||||||
|
player.SendChatMessage("~b~[ADMIN]~s~ Du hast ~y~" + owner.Name + "~s~ sein Business ~o~" + business.Name + "~s~ entzogen.");
|
||||||
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
business.Update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("givebusinessbankbalance", "~m~Benutzung: ~s~/givebusinessbankbalance [Business ID] [Menge]")]
|
||||||
|
public void CmdAdminGivebusinessbankbalance(Client player, int businessid, int amount)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BusinessBase business = BusinessManager.GetBusiness(businessid);
|
||||||
|
if (business == null)
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Business existiert nicht. ~m~/businesslist");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BankManager.TransferMoney(null, business, amount, "Admin");
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ALevel1338
|
#region ALevel1338
|
||||||
|
|||||||
31
Server/Entities/BusinessBankAccount.cs
Normal file
31
Server/Entities/BusinessBankAccount.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using reallife_gamemode.Server.Business;
|
||||||
|
using reallife_gamemode.Server.Managers;
|
||||||
|
using reallife_gamemode.Server.Util;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Entities
|
||||||
|
{
|
||||||
|
public class BusinessBankAccount : IBankAccount
|
||||||
|
{
|
||||||
|
[NotMapped]
|
||||||
|
private int _balance;
|
||||||
|
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
public int Balance {
|
||||||
|
get => _balance;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_balance = value;
|
||||||
|
BusinessManager.GetBusiness(BusinessId).Update(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int BusinessId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,11 +3,9 @@ using reallife_gamemode.Model;
|
|||||||
using reallife_gamemode.Server.Extensions;
|
using reallife_gamemode.Server.Extensions;
|
||||||
using reallife_gamemode.Server.Util;
|
using reallife_gamemode.Server.Util;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Entities User (User.cs)
|
* @overview Life of German Reallife - Entities User (User.cs)
|
||||||
@@ -59,6 +57,8 @@ namespace reallife_gamemode.Server.Entities
|
|||||||
public int? FactionRankId { get; set; }
|
public int? FactionRankId { get; set; }
|
||||||
public FactionRank FactionRank { get;set; }
|
public FactionRank FactionRank { get;set; }
|
||||||
|
|
||||||
|
public int? BusinessId { get; set; }
|
||||||
|
|
||||||
public Faction GetFaction()
|
public Faction GetFaction()
|
||||||
{
|
{
|
||||||
using(var context = new DatabaseContext())
|
using(var context = new DatabaseContext())
|
||||||
@@ -146,5 +146,10 @@ namespace reallife_gamemode.Server.Entities
|
|||||||
return databaseContext.UserBankAccounts.FirstOrDefault(u => u.UserId == this.Id);
|
return databaseContext.UserBankAccounts.FirstOrDefault(u => u.UserId == this.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Client GetClient()
|
||||||
|
{
|
||||||
|
return NAPI.Player.GetPlayerFromName(Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
18
Server/Extensions/IntegerExtension.cs
Normal file
18
Server/Extensions/IntegerExtension.cs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Extensions
|
||||||
|
{
|
||||||
|
public static class IntegerExtension
|
||||||
|
{
|
||||||
|
public static string ToMoneyString(this int? money)
|
||||||
|
{
|
||||||
|
return ToMoneyString(money ?? 0);
|
||||||
|
}
|
||||||
|
public static string ToMoneyString(this int money)
|
||||||
|
{
|
||||||
|
return string.Format(Main.SERVER_CULTURE, "{0:C0}", money).Replace('€', '$');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Server.Business;
|
||||||
using reallife_gamemode.Server.Entities;
|
using reallife_gamemode.Server.Entities;
|
||||||
using reallife_gamemode.Server.Extensions;
|
using reallife_gamemode.Server.Extensions;
|
||||||
using reallife_gamemode.Server.Util;
|
using reallife_gamemode.Server.Util;
|
||||||
@@ -13,11 +14,44 @@ using reallife_gamemode.Server.Util;
|
|||||||
* @copyright (c) 2008 - 2018 Life of German
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
namespace reallife_gamemode.Server.Managers
|
namespace reallife_gamemode.Server.Managers
|
||||||
{
|
{
|
||||||
public class BankManager : Script
|
public class BankManager
|
||||||
{
|
{
|
||||||
|
public static TransactionResult SetMoney(Client admin, IBankAccountOwner owner, int amount, string reason = "Von Admin gesetzt")
|
||||||
|
{
|
||||||
|
using (var transferMoney = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT;
|
||||||
|
|
||||||
|
IBankAccount account = owner.GetBankAccount(transferMoney);
|
||||||
|
|
||||||
|
if (account == null) return TransactionResult.SENDER_NO_BANKACCOUNT;
|
||||||
|
|
||||||
|
var transactionLog = new Logs.BankAccountTransactionHistory
|
||||||
|
{
|
||||||
|
Sender = "ADMIN: " + admin.Name,
|
||||||
|
SenderBalance = 0,
|
||||||
|
Receiver = owner.Name,
|
||||||
|
ReceiverBalance = amount,
|
||||||
|
NewReceiverBalance = amount,
|
||||||
|
NewSenderBalance = 0,
|
||||||
|
MoneySent = amount,
|
||||||
|
Fee = 0,
|
||||||
|
Origin = reason
|
||||||
|
};
|
||||||
|
|
||||||
|
// add log
|
||||||
|
transferMoney.BankAccountTransactionLogs.Add(transactionLog);
|
||||||
|
|
||||||
|
account.Balance += amount;
|
||||||
|
|
||||||
|
transferMoney.SaveChanges();
|
||||||
|
|
||||||
|
return TransactionResult.SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static TransactionResult TransferMoney(IBankAccountOwner sender, IBankAccountOwner receiver, int amount, string origin)
|
public static TransactionResult TransferMoney(IBankAccountOwner sender, IBankAccountOwner receiver, int amount, string origin)
|
||||||
{
|
{
|
||||||
using (var transferMoney = new Model.DatabaseContext())
|
using (var transferMoney = new Model.DatabaseContext())
|
||||||
|
|||||||
112
Server/Managers/BusinessManager.cs
Normal file
112
Server/Managers/BusinessManager.cs
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Server.Business;
|
||||||
|
using reallife_gamemode.Server.Entities;
|
||||||
|
using reallife_gamemode.Server.Extensions;
|
||||||
|
using reallife_gamemode.Server.Util;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Managers
|
||||||
|
{
|
||||||
|
class BusinessManager : Script
|
||||||
|
{
|
||||||
|
public static List<BusinessBase> Businesses { get; private set; }
|
||||||
|
|
||||||
|
public static void LoadBusinesses()
|
||||||
|
{
|
||||||
|
Businesses = new List<BusinessBase>();
|
||||||
|
|
||||||
|
IEnumerable<Type> allTypes = Assembly.GetExecutingAssembly().GetTypes().Where(type => type.IsClass && !type.IsAbstract && type.IsSubclassOf(typeof(BusinessBase)));
|
||||||
|
foreach (Type item in allTypes)
|
||||||
|
{
|
||||||
|
NAPI.Util.ConsoleOutput($"Loading Business {item.Name}");
|
||||||
|
if (Activator.CreateInstance(item) is BusinessBase o)
|
||||||
|
{
|
||||||
|
if (GetBusiness(o.Id) != null)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException($"Double Business ID found: {o.Id} | {o.Name}");
|
||||||
|
}
|
||||||
|
Businesses.Add(o);
|
||||||
|
o.Setup();
|
||||||
|
o.Load();
|
||||||
|
o.Update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T GetBusiness<T>() where T : BusinessBase
|
||||||
|
{
|
||||||
|
return (T)Businesses.Find(b => b.GetType() == typeof(T));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BusinessBase GetBusiness(int? id)
|
||||||
|
{
|
||||||
|
return Businesses.Find(b => b.Id == id);
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("Business_DepositMoney")]
|
||||||
|
public void BusinessDepositMoney(Client player, int amount)
|
||||||
|
{
|
||||||
|
User user = player.GetUser();
|
||||||
|
if(user == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BusinessBase playerBusiness = GetBusiness(user.BusinessId);
|
||||||
|
|
||||||
|
TransactionResult result = BankManager.TransferMoney(user, playerBusiness, amount, "Überweisung");
|
||||||
|
|
||||||
|
if(result == TransactionResult.NEGATIVE_MONEY_SENT)
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Es können nur positive Beträge überwiesen werden");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Du hast nicht genug Geld");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(result == TransactionResult.SUCCESS)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("business_updateMoney", playerBusiness.GetBankAccount().Balance.ToMoneyString());
|
||||||
|
player.SendNotification("~g~Du hast erfolgreich ~s~" + amount.ToMoneyString() + " ~g~ überwiesen");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("Business_WithdrawMoney")]
|
||||||
|
public void BusinessWithdrawMoney(Client player, int amount)
|
||||||
|
{
|
||||||
|
User user = player.GetUser();
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BusinessBase playerBusiness = GetBusiness(user.BusinessId);
|
||||||
|
|
||||||
|
TransactionResult result = BankManager.TransferMoney(playerBusiness, user, amount, "Überweisung");
|
||||||
|
|
||||||
|
if (result == TransactionResult.NEGATIVE_MONEY_SENT)
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Es können nur positive Beträge überwiesen werden");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Es ist nicht genug Geld auf der Businesskasse vorhanden");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (result == TransactionResult.SUCCESS)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("business_updateMoney", playerBusiness.GetBankAccount().Balance.ToMoneyString());
|
||||||
|
player.SendNotification("~g~Du hast erfolgreich ~s~" + amount.ToMoneyString() + " ~g~ überwiesen");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,6 +22,9 @@
|
|||||||
<HintPath>..\Bootstrapper.dll</HintPath>
|
<HintPath>..\Bootstrapper.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Migrations\" />
|
||||||
|
</ItemGroup>
|
||||||
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(ConfigurationName)' == 'Debug'">
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(ConfigurationName)' == 'Debug'">
|
||||||
<Exec Command="del "..\..\client_packages\*" /Q /S
xcopy "$(OutDir)*" "..\..\bridge\resources\reallife-gamemode" /Y /Q
del "..\..\client_packages\*.*" /Q
xcopy "..\..\reallife-gamemode\reallife-gamemode\Client\*" "..\..\client_packages\" /S /Q /Y
" />
|
<Exec Command="del "..\..\client_packages\*" /Q /S
xcopy "$(OutDir)*" "..\..\bridge\resources\reallife-gamemode" /Y /Q
del "..\..\client_packages\*.*" /Q
xcopy "..\..\reallife-gamemode\reallife-gamemode\Client\*" "..\..\client_packages\" /S /Q /Y
" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|||||||
Reference in New Issue
Block a user