Some times data prints like that:

I just wrote data script to you
local DataStoreService = game:GetService("DataStoreService")
local PlayerDataStore = DataStoreService:GetGlobalDataStore("PlayerDataStore")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TeleportService = game:GetService("TeleportService")
local function SaveData(plr)
local success, errormessage = pcall(function()
local data = {
FirstPlay = ReplicatedStorage["HiddenStats"..plr.UserId].FirstPlay.Value;
SaveColorX = ReplicatedStorage["HiddenStats"..plr.UserId].StarterKimonoColorX.Value;
SaveColorY = ReplicatedStorage["HiddenStats"..plr.UserId].StarterKimonoColorY.Value;
SaveColorZ = ReplicatedStorage["HiddenStats"..plr.UserId].StarterKimonoColorZ.Value;
RPName = tostring(ReplicatedStorage["HiddenStats"..plr.UserId].RoleplayName.Value);
SkinT = ReplicatedStorage["HiddenStats"..plr.UserId].SkinTone.Value;
CharacterA1 = ReplicatedStorage["HiddenStats"..plr.UserId].CharacterArea1.Value;
ClanS = ReplicatedStorage["HiddenStats"..plr.UserId].ClanSpin.Value;
ClanName = tostring(ReplicatedStorage["HiddenStats"..plr.UserId].Clan.Value);
}
PlayerDataStore:SetAsync(plr.UserId,data)
end)
if success then
print("SAVED")
else
warn(errormessage)
end
end
Players.PlayerAdded:Connect(function(Player)
local HiddenStats = Instance.new("Folder",ReplicatedStorage)
HiddenStats.Name = "HiddenStats"..Player.UserId
Player.CharacterAdded:Connect(function(Character)
local data
local success, errormessage = pcall(function()
data = PlayerDataStore:GetAsync(Player.UserId)
end)
if success and data then
ReplicatedStorage["HiddenStats"..Player.UserId].FirstPlay.Value = data.FirstPlay
ReplicatedStorage["HiddenStats"..Player.UserId].RoleplayName.Value = tostring(data.RPName)
ReplicatedStorage["HiddenStats"..Player.UserId].SkinTone.Value = tostring(data.SkinT)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorX.Value = tonumber(data.SaveColorX)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorY.Value = tonumber(data.SaveColorY)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorZ.Value = tonumber(data.SaveColorZ)
ReplicatedStorage["HiddenStats"..Player.UserId].ClanSpin.Value = tonumber(data.ClanS)
ReplicatedStorage["HiddenStats"..Player.UserId].Clan.Value = tostring(data.ClanName)
ReplicatedStorage["HiddenStats"..Player.UserId].CharacterArea1.Value = data.CharacterA1
for _,Part in pairs(Player.Character:GetChildren()) do
if Part.ClassName == "MeshPart" then
Part.BrickColor = BrickColor.new(tostring(data.SkinT))
end
end
local LoadColour = Color3.fromRGB(data.SaveColorX,data.SaveColorY,data.SaveColorZ)
Character.Pants.Color3 = LoadColour
Character.Shirt.Color3 = LoadColour
print("Data loaded,",data.FirstPlay,data.RPName,data.ClanName,data.CharacterA1)
if data == nil then
Player:Kick(" Data can't loaded try again."..tostring(errormessage))
else
print("Data loaded")
end
else
end
local MainUI = game.ServerStorage.MainUI:Clone()
MainUI.Parent = Player.PlayerGui
end
end)
I got a problem like you, and I’ve been searching around for months. To fix this put:
game:BindToClose(function()
wait(10)
end)
So they said that when all players are left. The servers are closed automatically, which will not make the data saved. However the function yield the server to close for 10 seconds. Which gave time for the saving
Like that?
game:BindToClose(function()
wait(10)
for i, Player in pairs(game.Players:GetChildren()) do
if ReplicatedStorage["HiddenStats"..Player.UserId].FirstPlay.Value == true and ReplicatedStorage["HiddenStats"..Player.UserId].CharacterArea1.Value == true then
SaveData(Player)
if ReplicatedStorage:FindFirstChild(string.match(Player.UserId)) then
ReplicatedStorage:FindFirstChild(string.match(Player.UserId)):Destroy()
end
end
end
end)
No, do this!
--all your codes here
game:BindToClose(function()
wait(10)
end)
still nil value for me… im gonna give you full script.
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local PlayerDataStore = DataStoreService:GetGlobalDataStore("PlayerDataStore")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TeleportService = game:GetService("TeleportService")
local function SaveData(plr)
local success, errormessage = pcall(function()
local data = {
FirstPlay = ReplicatedStorage["HiddenStats"..plr.UserId].FirstPlay.Value;
SaveColorX = ReplicatedStorage["HiddenStats"..plr.UserId].StarterKimonoColorX.Value;
SaveColorY = ReplicatedStorage["HiddenStats"..plr.UserId].StarterKimonoColorY.Value;
SaveColorZ = ReplicatedStorage["HiddenStats"..plr.UserId].StarterKimonoColorZ.Value;
RPName = tostring(ReplicatedStorage["HiddenStats"..plr.UserId].RoleplayName.Value);
SkinT = ReplicatedStorage["HiddenStats"..plr.UserId].SkinTone.Value;
CharacterA1 = ReplicatedStorage["HiddenStats"..plr.UserId].CharacterArea1.Value;
ClanS = ReplicatedStorage["HiddenStats"..plr.UserId].ClanSpin.Value;
ClanName = tostring(ReplicatedStorage["HiddenStats"..plr.UserId].Clan.Value);
}
PlayerDataStore:SetAsync(plr.UserId,data)
end)
if success then
print("SAVED")
else
warn(errormessage)
end
end
Players.PlayerAdded:Connect(function(Player)
local leaderstats = Instance.new("Folder",Player)
leaderstats.Name = "leaderstats"
local HiddenStats = Instance.new("Folder",ReplicatedStorage)
HiddenStats.Name = "HiddenStats"..Player.UserId
local FirstPlay = Instance.new("BoolValue",HiddenStats)
FirstPlay.Name = "FirstPlay"
local ClanSpin = Instance.new("IntValue",HiddenStats)
ClanSpin.Name = "ClanSpin"
ClanSpin.Value = 2
local Clan = Instance.new("StringValue",HiddenStats)
Clan.Name = "Clan"
Clan.Value = ""
local CharacterArea1 = Instance.new("BoolValue",HiddenStats)
CharacterArea1.Name = "CharacterArea1"
Player.CharacterAdded:Connect(function(Character)
repeat wait(.1) until Character.Pants or Character.Shirt
local RoleplayName = Instance.new("StringValue",HiddenStats)
RoleplayName.Name = "RoleplayName"
RoleplayName.Value = "nil"
local SkinTone = Instance.new("StringValue",HiddenStats)
SkinTone.Name = "SkinTone"
SkinTone.Value = "Light orange"
local StarterKimonoColorX = Instance.new("IntValue",HiddenStats)
StarterKimonoColorX.Name = "StarterKimonoColorX"
StarterKimonoColorX.Value = 255
local StarterKimonoColorY = Instance.new("IntValue",HiddenStats)
StarterKimonoColorY.Name = "StarterKimonoColorY"
StarterKimonoColorY.Value = 255
local StarterKimonoColorZ = Instance.new("IntValue",HiddenStats)
StarterKimonoColorZ.Name = "StarterKimonoColorZ"
StarterKimonoColorZ.Value = 255
local data
local success, errormessage = pcall(function()
data = PlayerDataStore:GetAsync(Player.UserId)
end)
if success and data then
ReplicatedStorage["HiddenStats"..Player.UserId].FirstPlay.Value = data.FirstPlay
ReplicatedStorage["HiddenStats"..Player.UserId].RoleplayName.Value = tostring(data.RPName)
ReplicatedStorage["HiddenStats"..Player.UserId].SkinTone.Value = tostring(data.SkinT)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorX.Value = tonumber(data.SaveColorX)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorY.Value = tonumber(data.SaveColorY)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorZ.Value = tonumber(data.SaveColorZ)
ReplicatedStorage["HiddenStats"..Player.UserId].ClanSpin.Value = tonumber(data.ClanS)
ReplicatedStorage["HiddenStats"..Player.UserId].Clan.Value = tostring(data.ClanName)
ReplicatedStorage["HiddenStats"..Player.UserId].CharacterArea1.Value = data.CharacterA1
for _,Part in pairs(Player.Character:GetChildren()) do
if Part.ClassName == "MeshPart" then
Part.BrickColor = BrickColor.new(tostring(data.SkinT))
end
end
local LoadColour = Color3.fromRGB(data.SaveColorX,data.SaveColorY,data.SaveColorZ)
Character.Pants.Color3 = LoadColour
Character.Shirt.Color3 = LoadColour
print("Data loaded,",data.FirstPlay,data.RPName,data.ClanName,data.CharacterA1)
if data == nil then
Player:Kick(" Data can't loaded try again."..tostring(errormessage))
else
print("Data loaded")
end
else
end
local MainUI = game.ServerStorage.MainUI:Clone()
MainUI.Parent = Player.PlayerGui
end)
end)
ReplicatedStorage.ClanSpin.OnServerEvent:Connect(function(Player,Clan)
if ReplicatedStorage["HiddenStats"..Player.UserId].ClanSpin.Value > 0 then
ReplicatedStorage["HiddenStats"..Player.UserId].Clan.Value = tostring(Clan)
ReplicatedStorage["HiddenStats"..Player.UserId].ClanSpin.Value = ReplicatedStorage["HiddenStats"..Player.UserId].ClanSpin.Value - 1
end
end)
ReplicatedStorage.SkinTone.OnServerEvent:Connect(function(Player,SkinTone)
for _,Part in pairs(Player.Character:GetChildren()) do
if Part.ClassName == "MeshPart" then
Part.BrickColor = BrickColor.new(tostring(SkinTone))
ReplicatedStorage["HiddenStats"..Player.UserId].SkinTone.Value = tostring(SkinTone)
end
end
end)
ReplicatedStorage.RoleplayName.OnServerEvent:Connect(function(Player,Message)
ReplicatedStorage["HiddenStats"..Player.UserId].RoleplayName.Value = tostring(Message)
Player.Character.Humanoid.DisplayName = tostring(Message)
if Message ~= nil or Message ~= "nil" then
ReplicatedStorage["HiddenStats"..Player.UserId].CharacterArea1.Value = true
end
if Message == nil then
ReplicatedStorage["HiddenStats"..Player.UserId].CharacterArea1.Value = false
end
if ReplicatedStorage["HiddenStats"..Player.UserId].RoleplayName.Value == "nil" or ReplicatedStorage["HiddenStats"..Player.UserId].RoleplayName.Value == nil then
ReplicatedStorage["HiddenStats"..Player.UserId].CharacterArea1.Value = false
end
end)
ReplicatedStorage.Play.OnServerEvent:Connect(function(Player,FirstPlay)
if FirstPlay == false then
ReplicatedStorage.Play:FireAllClients(Player,FirstPlay)
ReplicatedStorage["HiddenStats"..Player.UserId].SkinTone.Value = "Light orange"
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorX.Value = math.random(50,255)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorY.Value = math.random(50,255)
ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorZ.Value = math.random(50,255)
Player.Character.Pants.Color3 = Color3.fromRGB(ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorX.Value,ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorY.Value,ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorZ.Value)
Player.Character.Shirt.Color3 = Color3.fromRGB(ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorX.Value,ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorY.Value,ReplicatedStorage["HiddenStats"..Player.UserId].StarterKimonoColorZ.Value)
end
if FirstPlay == true then
local teleportData
local success, errormessage = pcall(function()
teleportData = PlayerDataStore:GetAsync(Player.UserId)
end)
if success and teleportData then
local teleportOptions = Instance.new("TeleportOptions")
teleportOptions:SetTeleportData(teleportData)
wait(0.2)
TeleportService:TeleportAsync(8785832664,{Player},teleportOptions)
else
Player:Kick("Can't teleport."..errormessage)
end
end
end)
ReplicatedStorage.ApplyCharacter.OnServerEvent:Connect(function(Player)
ReplicatedStorage["HiddenStats"..Player.UserId].FirstPlay.Value = true
SaveData(Player)
ReplicatedStorage.ApplyCharacter:FireAllClients(Player)
end)
game:BindToClose(function()
wait(10)
end)
Is there any errors on the code? I think it might be that the data just already saved the nil value.