Forja

Roblox tycoon dropper script

The heart of a tycoon: a door that claims the plot, a dropper that makes parts, and a collector that turns them into coins for whoever owns it.

Where it goes

  1. 1You need a Coins stat: the leaderboard script makes one.
  2. 2In Workspace, make a Folder named Plots with a Folder named Plot inside. In that, put three anchored Parts: Door, Dropper and Collector, with the Collector under the Dropper.
  3. 3Add a Script to each Part with the code named for it, and press Play. Touch the Door, then watch your coins.
Dropper · a Script in the Part named Dropper
-- From forja.us/tools/roblox-scripts/tycoon-dropper-- Drops a part every few seconds. The Collector turns it into coins.local Debris = game:GetService("Debris")local SECONDS = 2local VALUE = 5local dropper = script.Parentlocal plot = dropper.Parentwhile true do	task.wait(SECONDS)	-- Nobody owns the plot yet: nothing to drop.	if plot:GetAttribute("Owner") then		local drop = Instance.new("Part")		drop.Size = Vector3.new(1, 1, 1)		drop.Position = dropper.Position - Vector3.new(0, dropper.Size.Y / 2 + 1, 0)		drop:SetAttribute("Value", VALUE)		drop.Parent = workspace		Debris:AddItem(drop, 20)	endend
Collector · a Script in the Part named Collector
-- From forja.us/tools/roblox-scripts/tycoon-dropper-- Turns drops into coins for whoever owns this plot.local Players = game:GetService("Players")local collector = script.Parentlocal plot = collector.Parentcollector.Touched:Connect(function(hit)	local value = hit:GetAttribute("Value")	if not value then		return	end	hit:Destroy()	local owner = Players:GetPlayerByUserId(plot:GetAttribute("Owner") or 0)	local leaderstats = owner and owner:FindFirstChild("leaderstats")	local coins = leaderstats and leaderstats:FindFirstChild("Coins")	if coins then		coins.Value += value	endend)
PlotDoor · a Script in the Part named Door
-- From forja.us/tools/roblox-scripts/tycoon-dropper-- The first player to touch this door owns the plot, until they leave.local Players = game:GetService("Players")local door = script.Parentlocal plot = door.Parentdoor.Touched:Connect(function(hit)	if plot:GetAttribute("Owner") then		return	end	local character = hit:FindFirstAncestorOfClass("Model")	local player = character and Players:GetPlayerFromCharacter(character)	if not player then		return	end	-- One plot each.	for _, other in plot.Parent:GetChildren() do		if other:GetAttribute("Owner") == player.UserId then			return		end	end	plot:SetAttribute("Owner", player.UserId)end)Players.PlayerRemoving:Connect(function(player)	if plot:GetAttribute("Owner") == player.UserId then		plot:SetAttribute("Owner", nil)	endend)

How it works

  • Each drop carries its worth in an attribute named Value, so the Collector knows it's a drop and what to pay.
  • The plot remembers its owner in an attribute named Owner, which the Door sets and clears.
  • Debris:AddItem removes a drop after 20 seconds, so lost parts can't pile up and slow the server.

Make it yours

More plots
Copy the whole Plot folder inside Plots. The Door's check stops anyone from owning two.
Buy upgrades
Ask the script generator for a button that buys a faster dropper.
Want something more? The script generator can write it: “A tycoon plot with droppers, a collector and buttons that buy upgrades that stay after a player leaves”

Maps to try it on: simulator and tycoon maps

Start from a finished map, and your scripts have a game to run in.

More free Roblox scripts