I am having no errors yet it wont save.
local DS = game:GetService("DataStoreService"):GetDataStore("StorageThing")
game.Players.PlayerAdded:Connect(function(plr)
local stats = Instance.new("IntValue")
stats.Name = "leaderstats"
stats.Parent = plr
local Soul = Instance.new("IntValue")
Soul.Name = "Screams"
Soul.Parent = stats
local keyboi = "player-"..plr.userId
local savedvalues = DS:GetAsync(keyboi)
if savedvalues then
Soul.Value = savedvalues
else
DS:SetAsync(keyboi,Soul.Value)
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
local keyboi = "player-"..plr.userId
DS:SetAsync(keyboi,{plr.leaderstats.Souls.Value})
end)

2 comments
Are your variables correct? Do they match up according to what you have in your game?
you never created a stat named "Souls" you named one "Screams" tho