diff --git a/ReallifeGamemode.Client/Gui/Inventory/inventory.ts b/ReallifeGamemode.Client/Gui/Inventory/inventory.ts index 3c7db32f..2a4400b8 100644 --- a/ReallifeGamemode.Client/Gui/Inventory/inventory.ts +++ b/ReallifeGamemode.Client/Gui/Inventory/inventory.ts @@ -39,6 +39,9 @@ export default function inventory(globalData: GlobalData) { var dragTradeItem = null; //Ob aktuell ein Item aus dem Handelfenster gezogen wird var spriteScaleX = rWidth / 8; var spriteScaleY = rWidth / 8 * aspectRatioFactor; + var syncStatus = false; //Synchronisation mit der Datenbank + var syncCount = 0; //Wieviele Slots noch gesynced werden müssen + var syncDeg = 0; var inventoryWeight; //Das aktuelle Inventargewicht, berechnet aus allen Metainfos des items[[]] Array var items = [[]]; //Items aus der Datenbank @@ -181,6 +184,10 @@ export default function inventory(globalData: GlobalData) { items.splice(arrIndex, 1); } } + }); + + mp.events.add("SERVER:INVENTORY_SYNC", () => { + syncCount--; }); mp.events.add("render", () => { @@ -202,6 +209,28 @@ export default function inventory(globalData: GlobalData) { centre: false }); + if (syncCount != 0) { + syncDeg += 3; + if (syncDeg === 360) syncDeg = 0; + + mp.game.graphics.drawText("~s~synchronisiere ~g~ " + syncCount, [rxC + 0.165, ryC - (rWidth / 1.20) + 0.035], { + font: 7, + color: [112, 128, 144, 254], + scale: [0.4, 0.4], + outline: true, + centre: false + }); + mp.game.graphics.drawSprite("itemimages", "refresh", rxC + 0.165, ryC - (rWidth / 1.20) + 0.01, spriteScaleX * 0.4, spriteScaleY * 0.4, syncDeg, 255, 255, 255, 255); + } else { + mp.game.graphics.drawText("~s~synchronisiert", [rxC + 0.165, ryC - (rWidth / 1.20) + 0.035], { + font: 7, + color: [112, 128, 144, 254], + scale: [0.4, 0.4], + outline: true, + centre: false + }); + } + //SLOTS [RECHTECKE] [SLOTZAHLEN] var slots; @@ -882,6 +911,7 @@ export default function inventory(globalData: GlobalData) { items.push([tradeItems[dragItem][0], tradeItems[dragItem][1], tradeItems[dragItem][2], tradeItems[dragItem][3], actFreeSlot.toString(), tradeItems[dragItem][5]]); tradeItems.splice(dragItem, 1); } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; @@ -896,6 +926,7 @@ export default function inventory(globalData: GlobalData) { items[stackToItem][3] = newAmount.toString(); tradeItems.splice(dragItem, 1); } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; @@ -910,6 +941,7 @@ export default function inventory(globalData: GlobalData) { tradeItems[stackToTradeItem][3] = newAmount.toString(); tradeItems[dragItem][4] = "-1"; } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; @@ -921,6 +953,7 @@ export default function inventory(globalData: GlobalData) { } else { tradeItems[dragItem][4] = actFreeTradeSlot; } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; @@ -983,6 +1016,7 @@ export default function inventory(globalData: GlobalData) { tradeItems.splice(hoverItem, 1); } } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; @@ -998,6 +1032,7 @@ export default function inventory(globalData: GlobalData) { tradeItems.splice(hoverItem, 1); } } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); bufferItem = null; dragItem = null; @@ -1014,6 +1049,7 @@ export default function inventory(globalData: GlobalData) { tradeItems[hoverItem][4] = "-1"; } } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; bufferItem = null; @@ -1031,6 +1067,7 @@ export default function inventory(globalData: GlobalData) { tradeItems[hoverItem][4] = "-1"; } } + syncCount++; mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; diff --git a/ReallifeGamemode.Client/dlcpacks/itemimages/dlc.rpf b/ReallifeGamemode.Client/dlcpacks/itemimages/dlc.rpf index 4aa64675..60b986d7 100644 --- a/ReallifeGamemode.Client/dlcpacks/itemimages/dlc.rpf +++ b/ReallifeGamemode.Client/dlcpacks/itemimages/dlc.rpf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad67a68580431746ceea4e52b889f694ce7521430d0d6c6a6cf3582db450f97a -size 76800 +oid sha256:4612c3fbb3081be7c20cf690e36947e4436c0ef092cefdbc5cf1794ef880f9f7 +size 78848 diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index 41070c64..ccd24a62 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -193,6 +193,7 @@ namespace ReallifeGamemode.Server.Managers } } context.SaveChanges(); + player.TriggerEvent("SERVER:INVENTORY_SYNC"); } }