local function save(plr)
local items = {}
local essence = plr.Character:FindFirstChild("Head").essence
local function RGBstringToColor3(RGBstring)
return tostring(RGBstring:ToHex())
end
local essencecolor = RGBstringToColor3(essence.BillBoardGui.Essence.TextColor3)
local essencesave = {
EssenceName = essence.BillBoardGui.Essence.Text,
EssenceColor = essencecolor,
EssenceFont = essence.BillBoardGui.Essence.Font.Name,
Chance = essence.chance.BillBoardGui.Chance.Text,
}
local backpack = plr.Backpack
for i, item in backpack:GetChildren() do
table.insert(items, item.Name)
print(item.Name)
end
for i, itemers in ipairs(items) do
print(itemers)
end
local datatobesaved = {
Rolls = plr.leaderstats.Rolls.Value,
ItemTable = items,
CurrentEssence = essencesave,
}
local playerid = "Player_" .. plr.UserId
local success, err = pcall(function()
rollstore:UpdateAsync(playerid, function(old)
for i, v in pairs(datatobesaved) do
if i == nil or v == nil then
datatobesaved = old
print('datasave = old')
end
end
--you can add individual checks to make sure each data element
--is there and ready to be saved.
return datatobesaved
end)
end)
if success then
print("data saved! (server)")
else
print("data failed to save!")
end
end
players.PlayerRemoving:Connect(save)
You cannot access the player Character, because the player is gone, it’s impossible. If you want to get the character after the player leaves, just clone it before they leave, and make sure Archivable Is false, like @TimeFrenzied said.
sadly your code doesnt work
i want the text on top of ur head to save with its color, text, etc
(which is located in the plr.Character as it is a billboardgui)
local players = game:GetService("Players")
local function load(plr)
local folder = Instance.new("Folder", plr)
local character = plr.CharacterAdded:Wait()
--Archive
plr.Archivable = true
character.Archivable = true
--Archive
folder.Name = 'leaderstats'
local rolls = Instance.new("IntValue", folder)
rolls.Name = 'Rolls'
rolls.Value = 0
local luckmultiplier = Instance.new("IntValue", folder)
luckmultiplier.Name = 'Luck'
luckmultiplier.Value = 1
local playerid = "Player_" .. plr.UserId
local data
local success, err = pcall(function()
data = rollstore:GetAsync(playerid)
end)
if data then
if data['Rolls'] then
rolls.Value = data['Rolls']
else
rolls.Value = 0
end
if data['ItemTable'] then
print('ItemTable is not nil')
for i,v in ipairs(data['ItemTable']) do
local foods = game.ReplicatedStorage.food
local tools = foods.tools
print(v .. ' is in itemtable.')
for i, tool in pairs(tools:GetChildren()) do
if tool.Name == v then
print('creating tool')
newtool = tool:Clone()
newtool.Name = v
newtool.Handle.Anchored = false
newtool.Parent = plr.Backpack
module.ItemUse(newtool.Handle:FindFirstChild("LuckBooster").Value, newtool, newtool.Handle:FindFirstChild('Time').Value, plr, v)
else
print('nope')
end
end
end
else
print('its nil rn')
end
if data['CurrentEssence'] then
local essencemodule = require(script.ModuleScript)
local essence = character.Head:WaitForChild('essence')
local name = data['CurrentEssence']['EssenceName']
print(name)
essencemodule.Configure(data['CurrentEssence'], essence)
end
else
rolls.Value = 0
end
for i, theitems in pairs(plr.Backpack:GetChildren()) do
print(theitems.Name .. 'ARE IN THE BACKPACK' )
end
-- playerclonefr = plr.Character:Clone()
end
players.PlayerAdded:Connect(load)