So, basically, you would need to make an inventory system that acts like your backpack. So first, we would need to remove the Backpack CoreGui, because of what’s the point in having an inventory system and a backpack at the same time?!
Next, we would need to use some type of loop or table to get all the items the player has. (I would use a remote function to send to the server, and return the name, and features of the tools that are located in the player’s backpack.)
In my opinion, I would have some type of event to a server script/module and have a folder in ServerStorage with all the tools for the game to make sure that any tools from exploiters are not being added.
I would have a Backpack.ChildAdded/Removed event to add in any tools or remove as quickly as possible. I would reload the UI every CharacterAdded as UIObjects can be removed on respawn, especially if they’re made by
I would also have some type of datastore system, where you would save the tools Name onPlayerRemoving, so when you need to load the items when the player rejoins, you can just use the folder you have in the serverstorage to locate names and assign tools accordingly. I’d also have a
game:BindToClose(function() as well as a 10+ second wait time, just in case.
I would also have messages for each time you equipped something, dropped, removed, etc. for quality UX.
Anyways, these are ideas just for you to get in your mind. Of course, you are free to do as you like, but mainly, I would have some type of system for datastore, a method to organizing tools and properties in some type of table/organizer, and providing good UIs and User Experience.