Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

My Leadestats won't save, why not?

So, for my game, I want my leaderstats to save. I've tried datastores and whatnot, but nothing ever works. I then resorted to using a plain leaderstats save. I reused my old leaderstat save from another one of my old games, and it worked in that game, but it doesn't work for this new game... It's a normal script in serverscriptservice. I had to repost this since I wasn't getting any more responses. Code:

local CashStore = game:GetService("DataStoreService"):GetDataStore("DataStore")

function PlayerEntered(player)
	repeat wait() until player.Character
	
	local stats = Instance.new("IntValue")
	stats.Parent = player
	stats.Name = "leaderstats"
	
	local cash = Instance.new("IntValue")
	cash.Parent = stats
	cash.Name = "Doubloons"
	
	if CashStore:GetAsync("Points_"..player.UserID) ~= nil then
		cash.Value = CashStore:GetAsync("Points_"..player.UserID)
	else
		cash.Value = 100
	end
	
	cash.Changed:connect(function(Val)
		CashStore:SetAsync("Points_"..player.UserID, Val)
	end)
	game.Players.PlayerRemoved:Connect(function()
    CashStore:SetAsync(player.UserID, cash.Value) 
end)
end

game.Players.PlayerAdded:connect(PlayerEntered)

Thank you!

5 comments

0

Try moving lines 23-25 to the end of the script.

0

@TTChaos, Hi, thanks for responding! Unfortunately, that doesn't work.

0

Can you send us a screenshot of you testing in studio

2 answers

✓ Accepted answer

Look into datastore2, its very very good

4 comments

0

Hi, thanks for replying. What's datastore2?

0

A little bit complex, but way more reliable and easy to use version of datastore

0

Thank you, I'll try that!

0

Thank you, DataStore2 works!!!! :D

Hello! Have you tried putting using the "PlayerRemoved" event outside of the PlayerAdded event? Also, your keys are different. You used different keys to save when leaving, and when the value changes. If you want to grab a key that looks like this: CashStore:GetAsync("Points_"..player.UserID) Then save a key that looks the same: CashStore:SetAsync("Points_"..player.UserID, cash.Value) If you don't know what I mean, it should look something like this.

local CashStore = game:GetService("DataStoreService"):GetDataStore("DataStore")

function PlayerEntered(player)
    repeat wait() until player.Character

    local stats = Instance.new("IntValue")
    stats.Parent = player
    stats.Name = "leaderstats"

    local cash = Instance.new("IntValue")
    cash.Parent = stats
    cash.Name = "Doubloons"

    if CashStore:GetAsync("Points_"..player.UserID) ~= nil then
        cash.Value = CashStore:GetAsync("Points_"..player.UserID)
    else
        cash.Value = 100
    end

    cash.Changed:connect(function(Val)
        CashStore:SetAsync("Points_"..player.UserID, Val)
    end)
end

function PlayerLeft(player)
    CashStore:SetAsync("Points_"..player.UserID, cash.Value)
end)

game.Players.PlayerRemoved:connect(PlayerLeft)
game.Players.PlayerAdded:connect(PlayerEntered)

Apologies if I made any mistakes, I wrote this with a burnt hand.

2 comments

0

Accept the answer above

0

Hi, thanks for responding again! Unfortunately, this doesn't work either. There's not a leaderstats in the game when I tested it.

This discussion is preserved as it was. New answers, comments, and votes are closed.