Hello, I am making a skin system that saves your skins & equipped skins, however, whenever I rejoin, the game doesn’t load my data, yet the console yields no errors both in game & in studio. Any clue as to why this does not work?
PlayerService.PlayerAdded:Connect(function(Player) -- Load Data
local Data = Instance.new("Folder")
Data.Parent = Player
Data.Name = "Data"
local JuggernautsFolder = Instance.new("Folder")
JuggernautsFolder.Parent = Data
JuggernautsFolder.Name = "Juggernauts"
local PlayerSkins = Instance.new("Folder")
PlayerSkins.Parent = Data
PlayerSkins.Name = "PlayerSkins"
local EquippedGun = Instance.new("StringValue")
EquippedGun.Name = "EquippedGun"
EquippedGun.Parent = Data
local EquippedKnife = Instance.new("StringValue")
EquippedKnife.Name = "EquippedKnife"
EquippedKnife.Parent = Data
local EquippedJuggernaut = Instance.new("StringValue")
EquippedJuggernaut.Name = "EquippedJuggernaut"
EquippedJuggernaut.Parent = Data
local Coins = Instance.new("NumberValue")
Coins.Name = "Coins"
Coins.Parent = Data
local CurrentXP = Instance.new("NumberValue")
CurrentXP.Name = "CurrentXP"
CurrentXP.Parent = Data
local TotalXP = Instance.new("NumberValue")
TotalXP.Name = "TotalXP"
TotalXP.Parent = Data
local ReqXP = Instance.new("NumberValue")
ReqXP.Name = "ReqXP"
ReqXP.Parent = Data
local Level = Instance.new("NumberValue")
Level.Name = "Level"
Level.Parent = Data
local MVPStatus = Instance.new("NumberValue")
MVPStatus.Name = "MVPStatus"
MVPStatus.Parent = Data
local PlayerData = nil
pcall(function()
PlayerData = JuggernautDatastore:GetAsync(Player.UserId.."-PlayerData")
end)
if PlayerData == nil then
ReqXP.Value = 100
local DefaultGunSkin = Skins:FindFirstChild("Default Gun"):Clone()
local DefaultKnifeSkin = Skins:FindFirstChild("Default Knife"):Clone()
local Barrelnaut = Juggernauts:FindFirstChild("Barrelnaut"):Clone()
DefaultGunSkin.Parent = PlayerSkins
DefaultKnifeSkin.Parent = PlayerSkins
Barrelnaut.Parent = JuggernautsFolder
EquippedGun.Value = "Default Gun"
EquippedKnife.Value = "Default Knife"
EquippedJuggernaut.Value = "Barrelnaut"
if AlphaKnifeObtainability == true then
if not PlayerSkins:FindFirstChild("Alpha Knife") then
BadgeService:AwardBadge(Player.UserId,AlphaKnifeBadgeID)
local AlphaKnife = Skins:FindFirstChild("Alpha Knife"):Clone()
AlphaKnife.Parent = PlayerSkins
end
end
else
Coins.Value = PlayerData[1]
Level.Value = PlayerData[2]
CurrentXP.Value = PlayerData[3]
TotalXP.Value = PlayerData[4]
ReqXP.Value = PlayerData[5]
EquippedGun.Value = tostring(PlayerData[6])
EquippedKnife.Value = tostring(PlayerData[7])
EquippedJuggernaut.Value = tostring(PlayerData[8])
local SkinsData = PlayerData[9]
local JuggernautData = PlayerData[10]
for _,Skin in pairs(SkinsData) do
if Skins:FindFirstChild(Skin) then
local CurrentSkin = Skins:FindFirstChild(Skin):Clone()
CurrentSkin.Parent = PlayerSkins
else
warn("Cannot find skin, removing from inventory.")
end
end
for _,Juggernaut in pairs(JuggernautData) do
if Juggernauts:FindFirstChild(Juggernaut) then
local CurrentJuggernaut = Juggernauts:FindFirstChild(Juggernaut):Clone()
CurrentJuggernaut.Parent = JuggernautsFolder
end
end
end
while wait() do
if CurrentXP.Value >= ReqXP.Value then
if Level.Value < 100 then
CurrentXP.Value = CurrentXP.Value-ReqXP.Value
ReqXP.Value = ReqXP.Value+200
Level.Value = Level.Value+1
end
end
end
end)
game.Players.PlayerRemoving:Connect(function(Player) -- Save Data
local Data = Player:WaitForChild("Data")
local JuggernautsFolder = Data:WaitForChild("Juggernauts")
local PlayerSkins = Data:WaitForChild("PlayerSkins")
local EquippedGun = Data:WaitForChild("EquippedGun")
local EquippedKnife = Data:WaitForChild("EquippedKnife")
local EquippedJuggernaut = Data:WaitForChild("EquippedJuggernaut")
local Coins = Data:WaitForChild("Coins")
local Level = Data:WaitForChild("Level")
local TotalXP = Data:WaitForChild("TotalXP")
local ReqXP = Data:WaitForChild("ReqXP")
local CurrentXP = Data:WaitForChild("CurrentXP")
local SkinsTable = {}
local JuggernautTable = {}
if #PlayerSkins:GetChildren() > 0 then
for I,Skin in pairs(PlayerSkins:GetChildren()) do
table.insert(SkinsTable,I,Skin.Name)
end
end
if #JuggernautsFolder:GetChildren() > 0 then
for I,Juggernaut in pairs(JuggernautsFolder:GetChildren()) do
table.insert(JuggernautTable,I,Juggernaut)
end
end
local PlayerData = {Coins.Value,Level.Value,CurrentXP.Value,TotalXP.Value,ReqXP.Value,tostring(EquippedGun.Value),tostring(EquippedKnife.Value),tostring(EquippedJuggernaut.Value),SkinsTable,JuggernautTable}
JuggernautDatastore:SetAsync(Player.UserId.."-PlayerData",PlayerData)
end)