v2.28.0
Marked as a pre-release since I can't be certain about bugs or exploits.
This update is primarily about "inventory sync" or "multi-accessible inventories".
Multiple players should now be able to access the same inventory at the same time, and any changes made will be synced between all players using the inventory (and the owner, if it's a player). You still cannot access another player's inventory if they are using it.
- The UI has been updated to prevent a visual error / desync between server and UI states.
- Use in production at your own peril, it needs testing for desync issues, exploits, etc.
Features
- web: display items for which the grade isn't met as disabled (LukeWasTaken)
- client: nested custom context buttons (#1266) #1266 (Alexander)
- server: initial multi-access inventory tweaks (Linden)
- server/inventory: sync inventory state between players (Linden)
- server: sync slot updates with all players using inventory (Linden)
- server/inventory: GetSlotForItem (Linden)
- client: add event for "forceOpenInventory" (Linden)
- server: add forceOpenInventory export (Linden)
- server/inventory: export GetSlotForItem and GetEmptySlot (Linden)
- client: allow notification suppression in updateInventory (Linden)
Bug Fixes
- server/inventory: check inventory id ref before attempting to load (Linden)
- web: live update inventory weight when using SetMaxWeight (LukeWasTaken)
- client: check weapon specialAmmo is a string (Linden)
- server/items: nil metadata (#1246) #1246 (Maciej Ratyński)
- server/inventory: require utils module (Linden)
- server: check inv.open isn't equal to source (Linden)
- server/shops: remove guard clause (Linden)
- server/hooks: nil fromInventory when using shop (#1248) #1248 (FjamZoo)
- client/esx: update Weapons module ref (Linden)
- server/items: handle missing item.name for qb items (Linden)
- client: check if weapon is melee before incrementing value (Linden)
- client: don't override durability when updating currentWeapon (Linden)
- server/inventory: set correct container weight on failed swap slots (Linden)
- client: crafting distance check (#1272) #1272 (Martijn)
- client: always reset invBusy after item use (Linden)
- server: prevent opening other player inventory when it is open (Linden)
- client: refresh correct inventory/slots during updateSlots (Linden)
- server/inventory: swapslots sync with owner (Linden)
- server/inventory: remove itemNotify from swapSlots (Linden)
- web: rely on server updates to the slots when in game (LukeWasTaken)
- server/inventory: newdrop return data (Linden)
- client: buying, confiscating inv, and returning inv items data (Linden)
- server: don't close inventory when opening a drop or container (Linden)
- server/inventory: clear containerSlot on inventory close (Linden)
- client: update inventory when buying items (Linden)
- server/inventory: stack items with AddItem (Linden)
- server/inventory: sync swapItems with owner (Linden)
- server/inventory: ignore sync slots for owner if they triggered it (Linden)
- client/qb: prevent inventory access while in last stand state (#1284) #1284 (Manason)
- client/qb: qb last stand checking (#1285) #1285 (Manason)
Code Refactoring
- server/items: remove non-string specialAmmo from weapons (Linden)
- server: type safety and minor tweak to inv.open (Linden)
- server/shops: more type safety (Linden)
- client: invBusy tweaks when using item (Linden)
- client: item notifications (Linden)
- server/inventory: lock inventory-slots during swap event (Linden)
- syncSlots tweak (Linden)
- server/inventory: match swapItems response to sync event (Linden)
- client: combine updateInventory iterators (Linden)
- server/inventory: cancel swap if another swap is active (Linden)
- client: only refresh shop slots on buyItem (Linden)
- server/inventory: allow giving items to open inventories (Linden)
- update ox_lib dependency (Linden)
- server/inventory: reduce nesting in swapItems event (Linden)
- server/inventory: prevent giveItem when slots are in-use (Linden)
- client/weapon: revert weapon object (Linden)
- client: improve updateInventory readability / var names (Linden)
- server/inventory: disable notifications for sameInventory sync (Linden)
- handle itemNotify on the server only (Linden)
- client: remove lib.disableControls (Linden)
Chores
- web: update to pnpm v8 (Luke)
- type improvements (Linden)
- locales: updated pl.json (#1273) #1273 (Maciej Ratyński)
- type improvements (Linden)
- server/inventory: remove debug prints (Linden)
Commits
- 4462c6e: Merge branch 'feat/multi-access' into main (Linden)