datastores roblox tutorial code example

Example 1: roblox datastores 2 tutorial

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local ServerScriptService = game:GetService("ServerScriptService")

local DataStore2 = require(ServerScriptService.DataStore2)

-- Always "combine" any key you use! To understand why, read the "Gotchas" page.
DataStore2.Combine("DATA", "coins")

Players.PlayerAdded:Connect(function(player)
	local coinStore = DataStore2("coins", player)

	local function callRemote(value)
		ReplicatedStorage.CoinAmount:FireClient(player, value)
	end

	-- Fire a remote event to the player telling them how many coins they have.
	-- If this is their first time playing the game, they'll start out with 100.
	callRemote(coinStore:Get(100))

	-- Everytime the coin store updates, we'll send the RemoteEvent again.
	coinStore:OnUpdate(callRemote)
end)

-- This is a RemoteEvent where a player can purchase a product by its name.
local Products = require(ReplicatedStorage.Products)

ReplicatedStorage.BuyProduct.OnServerEvent:connect(function(player, productName)
	if not Products[productName] then return end -- Make sure the player is buying a real product

	local coinStore = DataStore2("coins", player)
	local productPrice = Products[productName].price

	if coinStore:Get(100) >= productPrice then
		print("Buying product", productName)
		coinStore:Increment(-productPrice)
	end
end)

Example 2: Roblox DataStore

local DataStoreService = game:GetService("DataStoreService")
DataStore = DataStoreService:GetDataStore('DataStore')
local RunService = game:GetService("RunService")
--[[ This Imports The Data ]]--
game.Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local stage = Instance.new("IntValue")
	stage.Name = "Stage"
	stage.Value = DataStore:GetAsync(player.UserId) or 1
	stage.Parent = leaderstats
end)
--[[ This Saves The Data ]]--
game.Players.PlayerRemoving:Connect(function(player)
	local stage = player.leaderstats:WaitForChild("Stage")
	warn("Stage Value Changed")
	DataStore:SetAsync(player.UserId, stage.Value)
	print("Saved ".. stage.Value .. " Stage For " .. player.Name)
end)
--[[ This Avoids Data Loss ]]--
game:BindToClose(function()
	if RunService:IsStudio() then
		wait(7)
	end
end)

Tags:

Lua Example