I am busy with an open source survival game and would love to have my resources regenerate overtime.
I myself have no clue how to do such a thing and thought the best place to get help is here.
I have found 2 scripts that might could help me.
Script 1 found at: https://developer.roblox.com/en-us/recipes/Regenerate-Models-
local model, button, enabled = Workspace.Model, Workspace.Button, true local clone = model:Clone() button.Touched:connect(function(hit) if game.Players:FindFirstChild(hit.Parent.Name) and enabled then enabled = false model:Destroy() wait(5) local lclone = clone:Clone() lclone.Parent = Workspace model = lclone enabled = true end end)
Script 2 found at: https://www.roblox.com/games/429735644/DUSK-UNCOPYLOCKED
objects_to_regen = { --Name, regen time, model(false) Part(true) {'Rock', {120,240}, true}, {'Large Rock', {360,600}, true}, {'Stone', {180,300}, true}, {'Wheat', {120,240}, true}, {'Kelp', {120,240}, true}, {'Pond Water', {240,320}, true}, {'Corn', {240,360}, true}, {'Mushroom', {80,160}, true}, {'Onion', {240,360}, true}, {'Pumpkin', {300,420}, true}, {'Rice', {80,140}, true}, -- models {'Berry Bush', {180,240}, false}, {'Tree', {180, 300}, false}, {'Large Tree', {360,600}, false}, {'Fancy Tree', {240,360}, false}, {'Bush', {120,240}, false}, {'Coal Rock', {180, 300}, false}, {'Copper Rock', {240,360}, false}, {'Iron Rock', {440,600}, false}, {'Adurite Rock', {900,1300}, false}, {'Magnatite Rock', {3600,6000}, false}, } function check(input) for i,v in pairs(objects_to_regen) do if v[1] == input then return {true, v[2], v[3]} end end return {false, nil, nil} end function part(object, wt) local new = object:Clone() object.AncestryChanged:connect(function() --print(object.Name, ' was removed, regen.') wait(math.random(wt[1], wt[2])) new.Parent = workspace if new.Name == "Water" then local val = Instance.new("IntValue",new) val.Value = 400 val.Name = "Amount" end part(new, wt) end) end function model(object, wt) local new = object:Clone() object.ChildRemoved:connect(function() if object:FindFirstChild'DB' then return end Instance.new('ObjectValue', object).Name = 'DB' --print('An object from ',object.Name, ' was removed, regen.') wait(math.random(wt[1], wt[2])) object:Destroy() new.Parent = workspace new:MakeJoints() if new.Name == "Bush" then local weld = Instance.new("ManualWeld") weld.Part0 = new:WaitForChild("Leaves") weld.Part1 = new:WaitForChild("Wood") weld.C0 = new:WaitForChild("Leaves").CFrame:inverse() * new:WaitForChild("Wood").CFrame weld.Parent = new:WaitForChild("Leaves") end if new.Name == "Tree" then for i,v in pairs(new:GetChildren()) do if v.Name == "Orangeberry" then local weld = Instance.new("ManualWeld") weld.Part0 = v weld.Part1 = new:WaitForChild("Leaves") weld.C0 = v.CFrame:inverse() * new:WaitForChild("Leaves").CFrame weld.Parent = v end end end model(new, wt) end) end for i,v in pairs(workspace:GetChildren()) do local test = check(v.Name) if test[1] then if test[3] then part(v, test[2]) else model(v, test[2]) end end end
The most important thing here is that resources such as berries, iron ores, trees, sand, rocks and other resource types in the future can regenerated and gathered by new or existing players.
Already thanks for the help.
Link to the open source game: https://devforum.roblox.com/t/os-game-survival-game-prototype-0-0-2/347122