We are gonna make the save section for the datastore now so the datastore saves your stats.
game.Players.PlayerRemoving:connect(function(player)
Find datastoreservice and leaderstats.
local datastore = game:GetService("DataStoreService"):GetDataStore(player.Name.."Stats"
Now you gotta find the players stats to save.
local statstorage = player:FindFirstChild("Stats"):GetChildren()
We gotta save every single stat of the players stats, and how we gonna save every single one of them?? yes, u gonna use GetChildren() which finds all the stats of the player We are gonna use "i,v for" to get the stat and save them.
for i = 1, #statstorage do
datastore:SetAsync(statstorage[i].Name, statstorage[i].Value)
print("saved data number "..i)
Then print and end.
end
print("Stats successfully saved")
end)
Now we are gonna make the load part, which loads ur stats when the player joins!
Add player function like before and find Datastoreservice.
game.Players.PlayerAdded:connect(function(player)
local datastore = game:GetService("DataStoreService"):GetDataStore(player.Name.."Stats")
add waitforchild so the datastore doesnt directly try to find the stats and do errors
player:WaitForChild("Stats")
wait(1)
local stats = player:FindFirstChild("Stats"):GetChildren()
Find stats like before
for i = 1, #stats do
stats[i].Value = datastore:GetAsync(stats[i].Name)
print("stat number "..i.." has been found")
aaaand END
end
end)
if u dont wanna spend soo much time at this bad tutorial then just copy this. the results would be
game.Players.PlayerRemoving:connect(function(player)
local datastore = game:GetService("DataStoreService"):GetDataStore(player.Name.."Stats")
local statstorage = player:FindFirstChild("Stats"):GetChildren()
for i = 1, #statstorage do
datastore:SetAsync(statstorage[i].Name, statstorage[i].Value)
print("saved data number "..i)
end
print("Stats successfully saved")
end)
game.Players.PlayerAdded:connect(function(player)
local datastore = game:GetService("DataStoreService"):GetDataStore(player.Name.."Stats")
player:WaitForChild("Stats")
wait(1)
local stats = player:FindFirstChild("Stats"):GetChildren()
for i = 1, #stats do
stats[i].Value = datastore:GetAsync(stats[i].Name)
print("stat number "..i.." has been found")
end
end)
Happy coding!
Edit: fixed spelling errors.