You can write your topic however you want, but you need to answer these questions:
-
What do you want to achieve? Keep it simple and clear!
Right now I am making a big tycoon game that I want to be saved when players leave. -
What is the issue? Include screenshots / videos if possible!
I don’t know how to save objects to data stores. -
What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I looked on the forum and I found out that I should save and make ids for things that players purchase. The only problem is, I don’t know how to do that.
Here is my code for purchases!
objects = {}
teamcolor = BrickColor.new(script.Parent.Name)
wait(1)
script.Parent.Essentials.Spawn.TeamColor = teamcolor
script.Parent.Essentials.Spawn.BrickColor = teamcolor
script.Parent.Essentials.BookCollector.CollectorPart.Touched:Connect(function(hit)
if hit:FindFirstChild("Cash") then
script.Parent.Cash.Value = script.Parent.Cash.Value + hit.Cash.Value
Instance.new("Sparkles", hit).Color = Color3.new(math.random(1, 255)/255, math.random(1, 255)/255)
game.Debris:AddItem(hit, 0.1)
end
end)
script.Parent.Essentials.Giver.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player ~= nil then
if script.Parent.Owner.Value == player then
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
local cashmoney = game.ServerStorage.MoneyStorage:FindFirstChild(player.Name)
if cashmoney ~= nil then
cashmoney.Value = cashmoney.Value + script.Parent.Cash.Value
player.leaderstats.Cash.Value = cashmoney.Value
script.Parent.Cash.Value = 0
script.Parent.Essentials.Giver.BrickColor = BrickColor.new("Bright red")
end
end
end
end
end
end)
script.Parent.Essentials.Giver.TouchEnded:Connect(function()
script.Parent.Essentials.Giver.BrickColor = BrickColor.new("Bright green")
end)
script.Parent:WaitForChild("Buttons")
for i,v in pairs(script.Parent.Buttons:GetChildren()) do
if v:FindFirstChild("Head") then
local object = script.Parent.Purchases:FindFirstChild(v.Object.Value)
if object ~= nil then
objects[object.Name] = object:Clone()
object:Destroy()
else
print("Button: "..v.Name.." is missing its object and has been removed!")
v.Head.CanCollide = false
v.Head.Transparency = 1
end
if v:FindFirstChild("Dependency") then
v.Head.CanCollide = false
v.Head.Transparency = 1
coroutine.resume(coroutine.create(function()
if script.Parent.PurchasedObjects:WaitForChild(v.Dependency.Value) then
v.Head.CanCollide = true
v.Head.Transparency = 0
end
end))
end
v.Head.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if v.Head.CanCollide == true then
if player ~= nil then
if script.Parent.Owner.Value == player then
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
local cashmoney = game.ServerStorage.MoneyStorage:FindFirstChild(player.Name)
if cashmoney ~= nil then
if cashmoney.Value >= v.Price.Value then
cashmoney.Value = cashmoney.Value - v.Price.Value
player.leaderstats.Cash.Value = cashmoney.Value
objects[v.Object.Value].Parent = script.Parent.PurchasedObjects
v.Head.CanCollide = false
v.Head.Transparency = 1
end
end
end
end
end
end
end
end)
end
end