References
https://developer.roblox.com/en-us/articles/Data-store
https://developer.roblox.com/en-us/onboarding/intro-to-saving-data
- ServerScriptService
```
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("PlayerData")
local function onPlayerJoin(player) -- Runs when players join
local leaderstats = Instance.new("Folder") --Sets up leaderstats folder
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local gold = Instance.new("IntValue") --Sets up value for leaderstats
gold.Name = "Gold"
gold.Parent = leaderstats
local playerUserId = "Player_" .. player.UserId --Gets player ID
local data = playerData:GetAsync(playerUserId) --Checks if player has stored data
if data then
-- Data exists for this player
gold.Value = data
else
-- Data store is working, but no current data for this player
gold.Value = 0
end
end
local function onPlayerExit(player) --Runs when players exit
local success, err = pcall(function()
local playerUserId = "Player_" .. player.UserId
playerData:SetAsync(playerUserId, player.leaderstats.Gold.Value) --Saves player data
end)
if not success then
warn('Could not save data!')
end
end
game.Players.PlayerAdded:Connect(onPlayerJoin)
game.Players.PlayerRemoving:Connect(onPlayerExit)
```
-- Storing More Values
```
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("PlayerData")
local function onPlayerJoin(player) -- Runs when players join
local leaderstats = Instance.new("Folder") --Sets up leaderstats folder
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue") --Sets up value for leaderstats
money.Name = "Money"
money.Parent = leaderstats
local exp = Instance.new("IntValue") --Sets up value for leaderstats
exp.Name = "Experience"
exp.Parent = leaderstats
local playerUserId = "Player_" .. player.UserId --Gets player ID
local data = playerData:GetAsync(playerUserId) --Checks if player has stored data
if data then
money.Value = data['Money']
exp.Value = data['Experience']
else
-- Data store is working, but no current data for this player
money.Value = 0
exp.Value = 0
end
end
local function create_table(player)
local player_stats = {}
for _, stat in pairs(player.leaderstats:GetChildren()) do
player_stats[stat.Name] = stat.Value
end
return player_stats
end
local function onPlayerExit(player) --Runs when players exit
local player_stats = create_table(player)
local success, err = pcall(function()
local playerUserId = "Player_" .. player.UserId
playerData:SetAsync(playerUserId, player_stats) --Saves player data
end)
if not success then
warn('Could not save data!')
end
end
game.Players.PlayerAdded:Connect(onPlayerJoin)
game.Players.PlayerRemoving:Connect(onPlayerExit)
```
'tech > game' 카테고리의 다른 글
21/08/02 Billboard GUI (for Overhead Healthbar) (0) | 2021.08.02 |
---|---|
21/08/02 BUILDING A THEME PARK IN ROBLOX! (0) | 2021.08.02 |
21/08/02 “502: API Services rejected request with error. HTTP 403 (Forbidden)” (0) | 2021.08.02 |
21/08/02 How To ModuleScript (0) | 2021.08.02 |
21/08/02 Pcalls - When and how to use them (0) | 2021.08.02 |