local function Save(p)
--Save Data--
local DataStore = game:GetService("DataStoreService"):GetDataStore(p.userId.."MHDRP_V0.0.1")
local Stats1 = p.PlayerData:GetChildren()
local s1 = {}
for i=1,#Stats1 do
local n = Stats1[i].Name
s1[n] = Stats1[i].Value
end
DataStore:SetAsync("Stats1",s1)
--
local Stats2 = p.PlayerInventory:GetChildren()
local s2 = {}
for iii=1,#Stats2 do
local n2 = Stats2[iii].Name
s2[n2] = Stats2[iii].Value
end
DataStore:SetAsync("Stats2",s2)
--
local Stats3 = p.PlayerInventoryPerm:GetChildren()
local s3 = {}
for i=1,#Stats3 do
local n3 = Stats3[i].Name
s3[n3] = Stats3[i].Value
end
DataStore:SetAsync("Stats3",s3)
-- End Here --
end
function onPlayerEntered(newPlayer)
--Clone Data--
local vs = script:WaitForChild("PlayerData"):Clone()
vs.Parent = newPlayer
local vs2 = script:WaitForChild("PlayerInventory"):Clone()
vs2.Parent = newPlayer
local vs3 = script:WaitForChild("PlayerInventoryPerm"):Clone()
vs3.Parent = newPlayer
--Setup Intial Data--
local Stats1 = vs:GetChildren()
local S1 = {}
for i=1,#Stats1 do
local n = Stats1[i].Name
S1[n] = Stats1[i].Value
end
--
local Stats2 = vs2:GetChildren()
local S2 = {}
for ii=1,#Stats2 do
local n2 = Stats2[ii].Name
S2[n2] = Stats2[ii].Value
end
--
local Stats3 = vs3:GetChildren()
local S3 = {}
for iii=1,#Stats3 do
local n3 = Stats3[iii].Name
S3[n3] = Stats3[iii].Value
end
--Get Data--
if newPlayer.Name ~= "Player" then
local DataStore = game:GetService("DataStoreService"):GetDataStore(newPlayer.userId.."MHDRP_V0.0.1")-- Custom data
if DataStore:GetAsync("Stats1") == nil then
DataStore:SetAsync("Stats1", S1)
end
S1 = DataStore:GetAsync("Stats1")
----------------------------------------------------
if DataStore:GetAsync("Stats2") == nil then
DataStore:SetAsync("Stats2", S2)
end
S2 = DataStore:GetAsync("Stats2")
----------------------------------------------------
if DataStore:GetAsync("Stats3") == nil then
DataStore:SetAsync("Stats3", S3)
end
S3 = DataStore:GetAsync("Stats3")
end
--Safely Load Data--
local vv = vs:GetChildren()
for i=1,#vv do
local n = vv[i].Name
if S1[n] ~= nil then
vv[i].Value = S1[n]
end
end
--
local vv2 = vs2:GetChildren()
for i=1,#vv2 do
local n2 = vv2[i].Name
if S2[n2] ~= nil then
vv2[i].Value = S2[n2]
end
end
--
local vv3 = vs3:GetChildren()
for i=1,#vv3 do
local n3 = vv3[i].Name
if S3[n3] ~= nil then
vv3[i].Value = S3[n3]
end
end
end
game.Players.PlayerAdded:connect(onPlayerEntered)
for _,player in pairs(game.Players:GetChildren()) do
onPlayerEntered(player)
end
game.Players.PlayerRemoving:connect(function(p)
Save(p)
end)
https://gyazo.com/7d78d59c02a5770063dbbd08cbd1a711.png
Help! My datastore would save PlayerData but won't save PlayerInventory! No errors are shown, every thing is in place! No idea what's happening.
"Stat2" is what's weird, everything is cloned into the game. PlayerData and PlayerInventory are cloned into the player when they joined, and an intValue is cloned into PlayerInventory when they interact with objects.
