So, on Pet Simulator you can buy new areas and the door deletes and when you rejoin it saves how do you make it stay removed as long as its bought? Here is my DataStore..

Handler..

    local storage = require(script:WaitForChild("Storage"))
    
    for i,v in pairs(game.Players:GetPlayers()) do
    
        if storage:GetData(v.UserId) == nil then
    
	        storage:LoadData(v.UserId)
    
        end
    
    end
    
      
    
    game.Players.PlayerAdded:connect(function(player)
    
        storage:LoadData(player.UserId)
    
    end)
    
      
    
    game.Players.PlayerRemoving:connect(function(player)
    
        storage:SaveData(player.UserId)
    
    end)
    
      
    
    game.Close:connect(function()
    
        storage:SaveAllData()
    
    end)

Settings as it's called..

    local module = {
    
    Key = '2|4hXzO/N)t#Z9V*A8>Yz+G8&o&6',
    
    Version = '1'
    
    }
    
      
    
    return module

Storage..

local storage = {}

local settings = require(script.Parent:WaitForChild("Settings"))

  

local DataStoreService = game:GetService("DataStoreService")

local Datastore = DataStoreService:GetDataStore(settings.Key..settings.Version)

  

local function createData(id)

    local player = nil

    for i,v in pairs(game.Players:GetPlayers()) do

	    if v.UserId == id then

		    player = v

	    end

    end

    local tab = {

name = player.Name,

userId = player.UserId

}

    local success, save = pcall(function()

	    Datastore:SetAsync(tab.userId,tab)

    end)

    if not success then

	    warn("An error occurred with saving " ..id.. " data: "..save)

    else

	    warn("Successfully created " ..id.. " data: "..game:GetService("HttpService"):JSONEncode(tab))

    end

    table.insert(storage,#storage+1,tab)

    return tab

end

  

local module = {}

  

function module:GetData(id)

    local data = nil

	for i,v in pairs(storage) do

	    if v.userId == id then

		    data = v

	    end

    end

    return data

end

  

function module:UpdateData(tab)

    for i,v in pairs(storage) do

	    if v.userId == tab.userId then

		    table.remove(storage,i)

	    end

    end

    table.insert(storage,#storage+1,tab)

    return tab

end

  

function module:SaveData(id)

    local data = nil

    for i,v in pairs(storage) do

	    if v.userId == id then

		    data = v

		    table.remove(storage,i)

	    end

    end

    local success, save = pcall(function()

	    Datastore:UpdateAsync(data.userId, function(oldData)

	    local newValue = data

	    return newValue

    end)

end)

if not success then

    warn("An error occurred with saving " ..id.. " data: "..save)

else

    warn("Successfully saved " ..id.. " data: "..game:GetService("HttpService"):JSONEncode(data))

end

return data

end

  

function module:LoadData(id)

    local data = nil

    data = Datastore:GetAsync(id)

    if data == nil then

	    data = createData(id)

    else

	    table.insert(storage,#storage+1,data)

    end

    return data

end

  

function module:DeleteData(id)

    local data = nil

    data = Datastore:RemoveAsync(id)

    return data

end

  

function module:SaveAllData()

    for i,v in pairs(storage) do

	    local success, save = pcall(function()

		    Datastore:UpdateAsync(v.userId, function(oldData)

		    local newValue = v

		    return newValue

	    end)

    end)

    if not success then

	    warn("An error occurred with saving " ..v.userId.. " data: "..save)

	else

	    warn("Successfully saved " ..v.userId.. " data: "..game:GetService("HttpService"):JSONEncode(v))

    end

end

return nil

end

  

return module

2 comments

0

Sorry I messed up the question xD

0

I put the code into a code block.