Now that we have buttons, prices, and cash in place, it’s time to make our Tycoon actually generate money! In this part, we’ll set up a dropper and conveyor system so players can earn income. Link to Part 3
Step 1: Add a Dropper Model
- Open the Toolbox and search for a dropper model.
- Be careful! Many toolbox models include unsafe scripts.
- Once inserted, open the Explorer and expand the dropper model.
- Delete any scripts or unnecessary objects (fire, sparkles, etc.).
- Keep only Parts.
Alternatively, you can build your own dropper from scratch.
- Place the dropper onto your plot and rename it to:
Dropper
Step 2: Build a Conveyor
- Insert a Part and scale it into a flat rectangle for the conveyor belt.
- Duplicate side walls using
Ctrl + D
(orCmd + D
on Mac) so pieces don’t fall off. - Group everything into a model named:
Conveyor
- Make sure Anchored is checked for all parts.
Step 3: Make the Conveyor Move
- Select the main belt part (the moving surface).
- Rename it to:
Belt
- Insert a Script inside the Belt, name it
BeltScript
, and add:
-- BeltScript
-- Makes parts slide across the conveyor
script.Parent.Velocity = Vector3.new(0, 0, 10) -- adjust axis/speed if needed
Press Run and drop a part on the conveyor. It should move along the belt.
Step 4: Set Up a Dropper Script
We want the dropper to spawn parts (the items players collect for money).
- Create a template part:
- Insert a small block, color it however you want (e.g. Neon Blue).
- Rename it:
DropperTemplate
- Move it into ServerStorage.
- Insert a Script into the Dropper, name it
DropperScript
, and add:
-- DropperScript
local template = game.ServerStorage:WaitForChild("DropperTemplate")
while task.wait(2) do
local newDrop = template:Clone()
newDrop.CFrame = script.Parent.Drop.CFrame * CFrame.new(0, -2, 0) -- spawn slightly below drop point
newDrop.Parent = script.Parent:WaitForChild("DropperParts")
-- Tag this as a droppable item
newDrop:SetAttribute("DropPart", true)
-- Cash value per drop (comes from dropper attribute)
newDrop:SetAttribute("CashToGive", script.Parent:GetAttribute("CashPerDrop"))
end
- In the Dropper’s Properties → Attributes, add:
- Name =
CashPerDrop
- Type = Number
- Example Value =
2
- Name =
Now the dropper will generate parts worth 2 Cash each.
Step 5: Add a Collector
This is where dropped parts are converted into money.
- Duplicate one of your conveyor parts.
- Move it to the end as a Collector Zone.
- Rename it:
Collector
- Insert a Script, name it
CollectorScript
, and add:
-- CollectorScript
-- Awards cash when drop parts touch the collector
script.Parent.Touched:Connect(function(hit)
if hit:GetAttribute("CashToGive") then
-- Find owning plot
local plot = script.Parent.Parent.Parent
if not plot or not plot:GetAttribute("OwnerUserId") then return end
local player = game.Players:GetPlayerByUserId(plot:GetAttribute("OwnerUserId"))
if not player or not player:FindFirstChild("leaderstats") then return end
-- Award cash
player.leaderstats.Cash.Value += hit:GetAttribute("CashToGive")
-- Remove collected part
hit:Destroy()
end
end)
Step 6: Enable Scripts When Purchased
Since droppers and conveyors are bought with buttons, we don’t want their scripts running before they’re unlocked.
- Set all scripts (
BeltScript
,DropperScript
,CollectorScript
) to Disabled = true. - In your PlotHandler, when cloning unlocked items, enable their scripts:
for _, obj in ipairs(itemClone:GetDescendants()) do
if obj:IsA("BaseScript") then
obj.Enabled = true
end
end
Step 7: Test the System
- Buy the Conveyor button → belt starts moving.
- Buy the Dropper button → parts drop every 2 seconds.
- Dropped parts hit the Collector → your Cash increases by 2.
Recap
- Built a dropper and conveyor system.
- Used templates to spawn drop parts.
- Created a Collector that awards Cash.
- Ensured scripts only run after purchase.
Next Step
Your Tycoon now generates money! Next, we’ll add data saving so player progress (cash & purchases) is saved between sessions.