I think I did it correctly, Sorry for the trouble. I’m just new to using datastores.
game.Players.PlayerRemoving:Connect(function(plr)
local plrInventory = char.Inventory:GetChildern()
for Index, Value in ipairs(plrInventory) do
local invData = game:GetService("DataStoreService"):GetDataStore("inventory-main")
local invDatakey = "data-"..plr.UserId
local GetSave = invData:GetAsync(invDatakey)
invData:SetAsync(invDatakey, Value.Value)
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
local plrInventory = plr.Character.Inventory:GetChildern()
for Index, Value in ipairs(plrInventory) do
local invData = game:GetService("DataStoreService"):GetDataStore("inventory-main")
local invDatakey = "data-"..plr.UserId
pcall(function()
invData:SetAsync(invDatakey, Value.Value)
end)
end
end)
if GetSave then
local dataToLoad = S_H:JSONDecode(GetSave)
for i, item in pairs(dataToLoad) do
addItem(inv, dataToLoad[i].name, dataToLoad[i].count)
end
local alert = script.alert:Clone()
alert.alert.Text = "Successfully Loaded your inventory from last gameplay save!"
alert.Parent = plr.PlayerGui.HUDGui.Notification
print("Data saved for "..plr.Name.."'s inventory loaded!")
game.Players.PlayerRemoving:Connect(function(plr)
local plrInventory = plr.Character.Inventory:GetChildern()
local data = {}
for Index, Value in ipairs(plrInventory) do
local stuff =
{
[Value.Name] = {Value.Value}
}
table.insert(data, 1, stuff)
end
pcall(function()
local invData = game:GetService("DataStoreService"):GetDataStore("inventory-test2")
local invDatakey = "data-"..plr.UserId
local encodedData = S_H:JSONEncode(data)
invData:SetAsync(invDatakey, encodedData)
end)
end)
Joining:
local inv = getInventory(char)
local invData = game:GetService("DataStoreService"):GetDataStore("inventory-test2")
local invDatakey = "data-"..plr.UserId
local GetSave = invData:GetAsync(invDatakey)
if GetSave then
local dataToLoad = S_H:JSONDecode(GetSave)
for i, item in pairs(dataToLoad) do
addItem(inv, dataToLoad[i].name, dataToLoad[i].count)
end
local alert = script.alert:Clone()
alert.alert.Text = "Successfully Loaded your inventory from last gameplay save!"
alert.Parent = plr.PlayerGui.HUDGui.Notification
print("Data saved for "..plr.Name.."'s inventory loaded!")
else
local alert = script.alert:Clone()
alert.alert.Text = "No data saved, loading default data"
alert.Parent = plr.PlayerGui.HUDGui.Notification
local newData = {
["Slot 1"] = {
name = "GrassBlock",
count = 1
},
}
local dataToSave = S_H:JSONEncode(newData)
pcall(function()
invData:SetAsync(invDatakey, dataToSave)
end)
local alert = script.alert:Clone()
alert.alert.Text = "Successfully Loaded your inventory from last gameplay save!"
alert.Parent = plr.PlayerGui.HUDGui.Notification
print("Data Saved for ".. plr.Name)
print("Data saved for "..plr.Name.."'s inventory loaded!")
end
Putting local invDatakey = “data-”…plr.UserId
local encodedData = S_H:JSONEncode(data) at top of pcall won’t do anything, I did move invData to top of the script and testing it right now.