Basic Usage

DataStore2 is meant to be easy to use. The basic usage can be seen from the following example code.

The code below does the following:

  • Fires a remote event called "CoinAmount" to players when they join and when their amount of coins updates.
  • Listens for a "BuyProduct" remote to let players buy products.
  • Buying products reduces their amount of coins, which will then fire the remote event.
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)