CyberMax
CyberMax › Answers

Roblox tycoon script: droppers, a collector and buttons that cost cash

Updated 2026-10-19 · Roblox and game developers · by CyberMax

Short answer

A tycoon is three loops: droppers spawn a part every few seconds with a value attribute; a collector part adds that value to the owner's cash when a drop touches it and destroys the drop; buttons check the owner's cash on the server and unlock the next dropper. Tag each drop with its owner so nobody can collect someone else's cash.

Copy-paste code

Inside one player's tycoon model (server)

local tycoon = script.Parent -- has an ObjectValue "Owner", folders Droppers and Buttons, and a part Collector
local Debris = game:GetService("Debris")

local function startDropper(dropper)
	task.spawn(function()
		while dropper.Parent do
			local drop = Instance.new("Part")
			drop.Size = Vector3.new(1, 1, 1)
			drop.CFrame = dropper.Spout.CFrame - Vector3.new(0, 1, 0)
			drop:SetAttribute("Value", dropper:GetAttribute("Value") or 5)
			drop.Parent = tycoon.Drops
			Debris:AddItem(drop, 20)
			task.wait(dropper:GetAttribute("Every") or 2)
		end
	end)
end

tycoon.Collector.Touched:Connect(function(hit)
	local value = hit:GetAttribute("Value")
	local owner = tycoon.Owner.Value
	if value and hit.Parent == tycoon.Drops and owner then
		hit:Destroy()
		owner.leaderstats.Cash.Value += value
	end
end)

for _, button in tycoon.Buttons:GetChildren() do
	local bought = false
	button.Touched:Connect(function(hit)
		local owner = tycoon.Owner.Value
		local player = game.Players:GetPlayerFromCharacter(hit.Parent)
		if bought or player ~= owner then return end
		local price = button:GetAttribute("Price")
		if owner.leaderstats.Cash.Value < price then return end
		bought = true
		owner.leaderstats.Cash.Value -= price
		local unlock = tycoon.Locked:FindFirstChild(button:GetAttribute("Unlocks"))
		unlock.Parent = tycoon.Droppers
		startDropper(unlock)
		button:Destroy()
	end)
end

for _, d in tycoon.Droppers:GetChildren() do startDropper(d) end

Good to know

Save which buttons were bought (their names) with the player's data, and rebuild the tycoon from that list when they come back.

"Tycoon scripts" on script-sharing sites that promise infinite money in other people's games are exploits; this page is about building your own tycoon.

Millwren Tycoon Kit: A tycoon that earns, saves and rebirths

from $8

Millwren is a tested tycoon kit: plots with claim and release, physics-free droppers and upgraders with exact income maths, capped offline earnings, rebirths that can't double-fire, and saving with ordered restore.

Secure checkout · 14-day fix-or-refund if it doesn't work as described (terms)

Questions

Why do my drops sometimes not count?

Fast drops can pass through a thin collector; make the collector taller or use a conveyor that pushes drops into it.

How do rebirths work?

Reset cash and bought buttons, add a permanent multiplier, and multiply drop values by it.

Free: the Roblox Starter Kit

7 free Luau modules (damage, pets, shop formatting, admin audit log, tycoon guards and more) plus 3 free calculators, then 5 short emails with the scripting fixes we see go wrong most often.

You get one email to confirm first. Then the kit, and 5 short emails over two weeks. One-click unsubscribe in every email; we never share your address.

Related answers

How to make a shop GUI in Roblox that exploiters can't abuseBuild an in-game currency shop: the GUI sends only an item id, the server looks up the price, checks coins andA Roblox DataStore save script that never wipes player dataCopy-paste Luau for loading and saving player data with DataStoreService: retries, UpdateAsync, BindToClose an