Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Furnace script doesn't work after changing its parent?

So, I'm trying to make a generic tycoon from my own scripts, and when I use a button script to change the furnace's parent from game.ReplicatedStorage to game.Workspace.Tycoon (a folder). Before the button script, it worked perfectly fine. After the button script, it just doesn't work.

Furnace Script:

game.Players.PlayerAdded:Connect(function(player)
	script.Parent.Touched:Connect(function(hit)
		if hit.Name == "Ore" then
			local ProcessValue = hit.OreValue
			local Cash = player:WaitForChild("leaderstats").Cash
			Cash.Value = Cash.Value + ProcessValue.Value
			hit:Destroy()
		end
	end)
end)

Dropper Script (the script that drops the ores that the furnace is trying to process):

local OreTemplate = script.Parent.OreTemplate

local Stats = {
	BaseValue = script.Parent.Stats.BaseValue,
	DropRate = script.Parent.Stats.Rate
}

while wait(Stats.DropRate.Value) do
	local Ore = OreTemplate:Clone()
	Ore.Parent = workspace.Ores
	Ore.Transparency = 0
	Ore.CanCollide = true
	Ore.Anchored = false
	Ore.Name = "Ore"
	
	local OreValue = Instance.new("NumberValue",Ore)
	OreValue.Name = "OreValue"
	OreValue.Value = Stats.BaseValue.Value
end

Button Script (the script that changes the furnace's parent):

game.Players.PlayerAdded:Connect(function(player)
	local Cost = script.Parent.Cost
	local Cash = player:WaitForChild("leaderstats").Cash
	local ObjectToAdd = script.Parent.ObjectToAdd.Value
	script.Parent.Touched:Connect(function(hit)
		local hum = hit.Parent:FindFirstChild("Humanoid")
		if hum ~= nil then
			Cash.Value = Cash.Value - Cost.Value
			ObjectToAdd.Parent = workspace.Tycoon
			script.Parent:Destroy()
		end
	end)
	Cost.Changed:Connect(function()
		if Cost.Value >= Cash.Value then
			local beams = script.Parent.Beams:GetChildren()
			for i = 1, #beams do
				beams[i].Enabled = true
			end
			script.Parent.Color = Color3.new(0, 170, 0)
		elseif Cost.Value < Cash.Value then
			local beams = script.Parent.Beams:GetChildren()
			for i = 1, #beams do
				beams[i].Enabled = false
			end
			script.Parent.Color = Color3.new(255, 89, 89)
		end
	end)
end)

I did it also with the dropper, and all the scripts worked 100% fine. There are no errors in the output, too.

1 answer

Try removing the PlayerAdded event from the furnace script

This discussion is preserved as it was. New answers, comments, and votes are closed.