This is a datastore (That works 100%) is there a way for the datastore to insert a model into the player like it does with leaderstats, and save the weapons that are inputted into starter gear while in game? There are 2 scripts to this ill put them both down. Value in main script is a bool value.
MainScript:
local DataStore = game:GetService("DataStoreService"):GetDataStore("MoneyStore")
game.Players.PlayerAdded:connect(function(player)
local leaderstats = Instance.new("Model", player)
leaderstats.Name = "leaderstats"
local money = Instance.new("IntValue", leaderstats)
money.Name = "Points"
money.Value = 50
if script.UseDataStore.Value == true then
local key = "user_" ..player.userId
local savedValues = DataStore:GetAsync(key)
local valuesToSave = {money.Value}
if savedValues then
-- Save format: {money}
money.Value = savedValues[1]
else
DataStore:SetAsync(key, valuesToSave)
end
game.Players.PlayerRemoving:connect(function(player)
local money = player.leaderstats.Points
local valuesToSave = {money.Value}
local key = "user_" ..player.userId
DataStore:SetAsync(key, valuesToSave)
end)
end
end)
Script inside main script
if script.Parent.UseDataStore.Value == true then
function pAdded(player)
local leaderstats = player:FindFirstChild("leaderstats")
while true do
if leaderstats ~= nil and player.Character ~= nil then
break
end
wait(1)
end
local msg = Instance.new("Message",player.Character)
msg.Text = "Loading Data..."
player:WaitForDataReady()
local savedPoints
local savedPoints2
local successFunc = pcall(function() savedPoints = player:LoadNumber("money") end)
if not successFunc or savedPoints == nil or savedPoints2 == nil then
msg.Text = "Failed to load."
wait(5)
msg:remove()
else
if player.leaderstats:FindFirstChild("Points") ~= nil then
player.leaderstats.Points.Value = savedPoints
end
msg.Text = "Loaded"
wait(5)
msg:remove()
end
end
game.Players.PlayerAdded:connect(pAdded)
function pRemove(player)
if player:FindFirstChild("leaderstats") ~= nil then
if player.leaderstats:FindFirstChild("Points") ~= nil then
if not pcall(function() player:SaveNumber("Points", player.leaderstats.Points.Value) end) then end
end
end
end
game.Players.PlayerRemoving:connect(function(player)
pRemove(player)
end)
end
Value in main script is a bool value.
