From f5fa718d01579440ba65e9d3fabec48e88618ff5 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Tue, 7 May 2019 20:01:03 +0200 Subject: [PATCH] Add Money Exchange. Fix Handmoney.ts Event param --- .../Interaction/playerinteraction.ts | 3 +- .../Interaction/worldinteraction.ts | 8 ++--- .../Managers/ATMManager.cs | 5 +-- .../Managers/InteractionManager.cs | 36 ++++++++++++++++--- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/playerinteraction.ts b/ReallifeGamemode.Client/Interaction/playerinteraction.ts index c6540801..9b46878c 100644 --- a/ReallifeGamemode.Client/Interaction/playerinteraction.ts +++ b/ReallifeGamemode.Client/Interaction/playerinteraction.ts @@ -279,8 +279,9 @@ export default function playerInteraction(globalData: GlobalData) { } else if (tradeSelectHover === "decline") { tradeSelection = "decline"; } - mp.events.callRemote('tradeDecision', tradeSelection, JSON.stringify(receivedTradeItems), tradeRequester); + mp.events.callRemote('tradeDecision', tradeSelection, JSON.stringify(receivedTradeItems), tradeRequester, receivedTradePrize); tradeRequest = false; + receivedTradePrize = null; mp.gui.cursor.show(false, false); } } diff --git a/ReallifeGamemode.Client/Interaction/worldinteraction.ts b/ReallifeGamemode.Client/Interaction/worldinteraction.ts index 86c7d23a..bd32aa22 100644 --- a/ReallifeGamemode.Client/Interaction/worldinteraction.ts +++ b/ReallifeGamemode.Client/Interaction/worldinteraction.ts @@ -25,26 +25,22 @@ switch (site) { //GELD EINZAHLEN in1 case 0: - mp.events.call("SERVER:SET_HANDMONEY", inputField1 * -1); //GEHT NACH HANDMONEY.TS mp.events.callRemote("CLIENT:ATM_MANAGER:ATM_ACTION", site, inputField1, inputField2); break; //GELD AUSZAHLEN in1 case 1: mp.events.callRemote("CLIENT:ATM_MAN:CHECK_BALANCE", inputField1); - //mp.events.call("SERVER:SET_HANDMONEY", inputField1); //GEHT NACH HANDMONEY.TS - //mp.events.callRemote("CLIENT:ATM_ACTION", site, inputField1, inputField2) break; - //GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag case 2: break; } }); - mp.events.add("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", (inputField1) => { - mp.events.call("SERVER:SET_HANDMONEY", inputField1); //GEHT NACH HANDMONEY.TS + mp.events.add("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", (balance) => { + mp.events.call("SERVER:SET_HANDMONEY", balance); //GEHT NACH HANDMONEY.TS }); mp.events.add("SERVER:WORLD_INTERACTION:ATM_ERROR", (errorId, p2) => { diff --git a/ReallifeGamemode.Server/Managers/ATMManager.cs b/ReallifeGamemode.Server/Managers/ATMManager.cs index d6efd2e5..3c7bd028 100644 --- a/ReallifeGamemode.Server/Managers/ATMManager.cs +++ b/ReallifeGamemode.Server/Managers/ATMManager.cs @@ -100,8 +100,7 @@ namespace ReallifeGamemode.Server.Managers client.TriggerEvent("SERVER:WORLD_INTERACTION:ATM_ERROR", 0, checkATM.Balance); } else - { - client.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", inputField1); + { AtmAction(client, 1, inputField1, 0); } } @@ -125,6 +124,7 @@ namespace ReallifeGamemode.Server.Managers updateHandMoneyIn.Handmoney -= inputField1; updateBankMoneyIn.Balance += inputField1; updateATMBalanceIn.Balance += inputField1; + client.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", updateHandMoneyIn.Handmoney); break; //GELD AUSZAHLEN in1 @@ -135,6 +135,7 @@ namespace ReallifeGamemode.Server.Managers updateHandMoneyOut.Handmoney += inputField1; updateBankMoneyOut.Balance -= inputField1; updateATMBalanceOut.Balance -= inputField1; + client.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", updateHandMoneyOut.Handmoney); break; //GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 0c707632..b9d31d10 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -1,10 +1,12 @@ using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Models; using ReallifeGamemode.Server.Services; using System; using System.Collections.Generic; using System.Text; +using System.Linq; /** * @overview Life of German Reallife - Managers Interaction (InteractionManager.cs) @@ -39,16 +41,40 @@ namespace ReallifeGamemode.Server.Managers } [RemoteEvent("tradeDecision")] - public void TradeDecision(Client player, string tradeSelection, string tradeItemArray, string tradeRequesterName) + public void TradeDecision(Client player, string tradeSelection, string tradeItemArray, string tradeRequesterName, int tradePrize) { var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); Client tradeRequester = ClientService.GetClientByNameOrId(tradeRequesterName); if (tradeSelection == "accept") { - InventoryManager.GetUserItems(player); - tradeRequester.TriggerEvent("clearTradeItems"); - player.TriggerEvent("showTradeItems", tradeItemArray); - //TODO: Geld abziehen + if(player.GetUser().Handmoney < tradePrize) + { + tradeRequester.TriggerEvent("unlockTradeItems"); + tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen."); + player.SendNotification("~r~Du hast nicht genügend Bargeld! ~s~Handel abgebrochen."); + } + else + { + InventoryManager.GetUserItems(player); + tradeRequester.TriggerEvent("clearTradeItems"); + player.TriggerEvent("showTradeItems", tradeItemArray); + + using (var dbContext = new DatabaseContext()) + { + var playerUserId = player.GetUser().Id; + var tradeRUserId = tradeRequester.GetUser().Id; + var playerUser = dbContext.Users.FirstOrDefault(u => u.Id == playerUserId); + var tradeRequesterUser = dbContext.Users.FirstOrDefault(u => u.Id == tradeRUserId); + + playerUser.Handmoney -= tradePrize; + player.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradePrize * -1); + + tradeRequesterUser.Handmoney += tradePrize; + tradeRequester.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradePrize); + + dbContext.SaveChanges(); + } + } } else {