Help with making inventory system like murder mystery

How would you make an inventory system like murder mystery? How would you make it really secure so hackers can’t spawn in items, take items from other people ect? How would you go about managing and saving all that data? I’m assuming saving all the data on the player wouldn’t be secure enough especially if some of the items costed robux…

3 Likes

If you would ask me, I’d create a unique table for each player where their weapons are stored and I would update the table’s data whenever the player purchases a new weapon. To prevent exploiters from tampering the data, I would do this in a server script.

When saving the table, I’d prefer to use Data Stores to do autosaves every 1 minute or save when the player leaves the game. It would also be nice if I save the table after the player purchases a weapon. This is to minimize data losses when unexpected crashes happen.

2 Likes

How would you save data to a player? Do you mind giving me a short explanatory code sample? Thanks

1 Like

Honestly, topics like Data Saving are too complicated to explain in a short code since many details will be left out. I recommend you to check out @Alvin_Blox’s tutorial on saving data here. It really helped me a lot in understanding Data Stores.

However, if you really want a short code on how I would save the data to the player:

local DataStoreService = game:GetService("DataStoreService")
local PlayerData = DataStoreService:GetDataStore("PlayerData")

function SaveData(player)
	local Inventory = InventoryTable[player] -- This is the table where the player's weapon is stored in
	local PlayerId = "Player_"..player.UserId -- This is a key to uniquely identify a specific player

	local success, errormsg = pcall(function() -- Wrap the code in a pcall
		PlayerData:SetAsync(PlayerId, Inventory) -- Save the table to the key created earlier
	end)
end

game.Players.PlayerRemoving:Connect(SaveData) -- When a player leaves, the SaveData function will fire

Please note that not all details on Data Stores are present in this code sample.

2 Likes