So I am working on an Inventory system similar to the ones in games like Destiny, Division, and Anthem. A players Character has Weapon and Armor slots, along with Cosmetic Items, plus say 9 slots of storage for each Item.
The Character Data will hold the Item Instance Id's in fields and arrays (sorting and assigning will be handled by the game-server or cloud scripts) along with the data for character abilities and other character specific items; while the Player Data holds shared inventory (consumables and any stored Items not on a character).
My flow is such that the Player Controller pulls the Character and Player Data/Inventory and passes it to the Server or Authority. The Server (or Authority) then goes through everything, Matching the Instance Id's from the Fields or Arrays and constructing the Weapons/Armor/Items and everything else, (reading the custom data to apply the items perks/stats) building the Inventory for the Character before passing it on to the Character for Storage, along with giving the character their abilities.
Any time a player wants to change their equipped items or use a consumable, the controller pulls the selected Items from the Character and passes it to the Server, the Server then verifies the Items are correct (the player actually has them/does the usage break any rules) before updating the Character or Player Data and applying the changes in-game.
It is a very rough rundown of what I am working on implementing but I wanted to be sure that there was no easier way do do this, or if I was completly wrong on how these systems work.