I want to make my data stores more safe, so I've wanted to use the wiki's version. But the issue is
the wiki does this:
sessionData[player] = 1000
but I want to add more to it, so I've tried to do this:
sessionData[player].Money = 1000
is there any way I can expand this data store or any way I can save it like this:
sessionData[player].Money = 1000
instead of doing it like this:
sessionData[player] = 1000
so I can add more things to the table
I know how to do the basic data stores but this one kind of confuses me please help;-;
this is the full script from the wiki (edited by me) btw:
local rs = game:GetService('ReplicatedStorage') local house = rs.house local price = house.price local filteringname = rs.filtering.filtername local suc = rs.filtering.success local resetavatar = rs.avatareditor.resetavatar local ava = rs:WaitForChild("avatareditor") local makeavatar = ava:waitForChild("makeavatar") -- Create variable for the DataStore. local DataStoreService = game:GetService('DataStoreService') local playerData = DataStoreService:GetDataStore('PlayerData') -- Create variable to configure how often the game autosaves the player data. -- Number of times we can retry accessing a DataStore before we give up and create -- an error. local DATASTORE_RETRIES = 3 -- Table to hold all of the player information for the current session. local sessionData = {} -- Function the other scripts in our game can call to change a player's stats. This -- function is stored in the returned table so external scripts can use it. -- Function to retry the passed in function several times. If the passed in function -- is unable to be run then this function returns false and creates an error. local function dataStoreRetry(dataStoreFunction) local tries = 0 local success = true local data = nil repeat tries = tries + 1 success = pcall(function() data = dataStoreFunction() end) if not success then wait(1) end until tries == DATASTORE_RETRIES or success if not success then error('Could not access DataStore! Warn players that their data might not get saved!') end return success, data end -- Function to retrieve player's data from the DataStore. local function getPlayerData(player) return dataStoreRetry(function() return playerData:GetAsync(player.UserId) end) end -- Function to save player's data to the DataStore. local function savePlayerData(player) if sessionData[player] then return dataStoreRetry(function() return playerData:SetAsync(player.UserId, sessionData[player]) end) end end -- Function to add player to the sessionData table. First check if the player has -- data in the DataStore. If so, we'll use that. If not, we'll add the player to -- the DataStore. local function setupPlayerData(player) local success, data = getPlayerData(player) if not success then -- Could not access DataStore, set session data for player to false. sessionData[player] = false else if not data then print("SETTING IT UP") -- DataStores are working, but no data for this player sessionData[player].Money = 1000 sessionData[player].hasa = true sessionData[player].normalavatar = true savePlayerData(player) local number = sessionData[player].Money price:FireClient(player,number) else print("LOADING IT UP") -- DataStores are working and we got data for this player sessionData[player] = data local number = sessionData[player].Money price:FireClient(player,number) end end end -- Function to run in the background to periodically save player's data. -- Bind setupPlayerData to PlayerAdded to call it when player joins. game.Players.PlayerAdded:connect(setupPlayerData) -- Call savePlayerData on PlayerRemoving to save player data when they leave. -- Also delete the player from the sessionData, as the player isn't in-game anymore. game.Players.PlayerRemoving:connect(function(player) savePlayerData(player) sessionData[player] = nil end)
You want to write it like this:
sessionData[player] = { Money = 1000, hasa = true, normalavatar = true }
Or this:
sessionData[player] = {} sessionData[player].Money = 1000 sessionData[player].hasa = true sessionData[player].normalavatar = true