diff --git a/ReallifeGamemode.Client/inventory/inventory.ts b/ReallifeGamemode.Client/inventory/inventory.ts index 7a9abfc3..a629ed9b 100644 --- a/ReallifeGamemode.Client/inventory/inventory.ts +++ b/ReallifeGamemode.Client/inventory/inventory.ts @@ -3,24 +3,23 @@ export default function inventory(globalData: GlobalData): void { var invBrowser: BrowserMp = null; - var handelBrowser: BrowserMp = null; var itemIdArr; var itemAmountArr; var money; mp.events.add("openTradeWindow", (money1, itemIdArr1, itemAmountArr1) => { if (!globalData.InMenu) { - if (handelBrowser !== null) { + if (invBrowser !== null) { try { - handelBrowser.destroy() - handelBrowser = null; + invBrowser.destroy() + invBrowser = null; } finally { mp.gui.cursor.show(false, false); } return; } mp.gui.cursor.show(true, true); - handelBrowser = mp.browsers.new("package://assets/html/inventory/handel/handelakzeptieren.html"); + invBrowser = mp.browsers.new("package://assets/html/inventory/handel/handelakzeptieren.html"); itemIdArr = itemIdArr1; itemAmountArr = itemAmountArr1; @@ -54,24 +53,24 @@ export default function inventory(globalData: GlobalData): void { invBrowser.execute(`setItems("${JSON.stringify(itemIdArr)}","${JSON.stringify(itemAmountArr)}");`); }); mp.events.add("CEF:BrowserLoadedTrade", () => { - handelBrowser.execute(`setItems("${JSON.stringify(itemIdArr)}","${JSON.stringify(itemAmountArr)}","${JSON.stringify(money)}");`); + invBrowser.execute(`setItems("${JSON.stringify(itemIdArr)}","${JSON.stringify(itemAmountArr)}","${JSON.stringify(money)}");`); }); mp.events.add("CEF:acceptTrade", () => { - if (handelBrowser !== null) { + if (invBrowser !== null) { mp.events.callRemote('acceptTrade'); - handelBrowser.destroy() - handelBrowser = null; + invBrowser.destroy() + invBrowser = null; mp.gui.cursor.show(false, false); } }); mp.events.add("CEF:declineTrade", () => { - if (handelBrowser !== null) { + if (invBrowser !== null) { mp.events.callRemote('declineTrade'); - handelBrowser.destroy() - handelBrowser = null; + invBrowser.destroy() + invBrowser = null; mp.gui.cursor.show(false, false); } }); diff --git a/ReallifeGamemode.Server/Managers/ManagerOfInventory.cs b/ReallifeGamemode.Server/Managers/ManagerOfInventory.cs index 155cf3a8..335c0de0 100644 --- a/ReallifeGamemode.Server/Managers/ManagerOfInventory.cs +++ b/ReallifeGamemode.Server/Managers/ManagerOfInventory.cs @@ -97,13 +97,14 @@ namespace ReallifeGamemode.Server.Managers TradeItems[user.Id] = (itemIdArr, itemAmountArr); TradeValue[user.Id] = value; target.SetData("tradePartner", user.Id); - target.SetData("trade", user.LogUserId); + target.SetData("trade", client.Name); SendTradeOffer(target,client); } public void SendTradeOffer(Client client, Client sender) { client.SetData("inTrade", true); + sender.SetData("inTrade", true); ChatService.SendMessage(client, $"~b~ Du hast eine Handelsanfrage von {sender.Name} bekommen."); ChatService.SendMessage(client, $"~b~ Drücke '~w~N~b~' um die Handelsanfrage zu akzeptieren."); User user = sender.GetUser(); @@ -152,15 +153,16 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("declineTrade")] public void ServerEvent_declineTrade(Client client) { - int id = client.GetData("trade"); - Client target = ClientService.GetClientByNameOrId(""+id); + string name = client.GetData("trade"); + Client target = ClientService.GetClientByNameOrId(name); if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(client); return; } + client.SetData("inTrade", false); + target.SetData("inTrade", false); SendBackToSender(target); - } public static void OpenTradeAccept(Client client) @@ -170,17 +172,29 @@ namespace ReallifeGamemode.Server.Managers (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; Timer tradeTimer = TradeTimer[id]; tradeTimer.Stop(); - client.SetData("inTrade", false); + tradeTimer.Start(); client.TriggerEvent("openTradeWindow", TradeValue[id], itemIdArr, itemAmountArr); } [RemoteEvent("acceptTrade")] public void ServerEvent_AcceptTrade(Client client) { + client.SetData("inTrade", false); + User user = client.GetUser(); int id = client.GetData("tradePartner"); (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; - + Timer tradeTimer = TradeTimer[id]; + tradeTimer.Stop(); + string name = client.GetData("trade"); + Client target = ClientService.GetClientByNameOrId(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(client); + return; + } + target.SetData("inTrade", false); + ChatService.SendMessage(target, $"{client.Name} hat deine Anfrage angenommen."); using (var context = new DatabaseContext()) { for (int x = 0; x < itemIdArr.Length; x++)