How to make a “Steal a Brainrot”-style game in Roblox Studio
Buy characters that earn money, defend your base, and carry other players' items back to yours — the systems behind the genre, with a complete stealing script.
Updated November 1, 202610 min read
“Steal a …” games mix a tycoon (items earn cash every second) with player-versus-player stealing. Make it your own: use original characters and your own theme. Copying another game's name, characters or assets can get your game taken down.
The core loop
Every “Steal a…” game comes down to one loop that players repeat. Build this first, in grey blocks:
- Buy an item from the conveyor
- It earns cash every second in your base
- Steal from other bases and carry items home
- Lock your base and defend it
Systems you need
Bases
One plot per player with pads where owned items stand. Each base has an OwnerId attribute.
Items
Models tagged Item with OwnerId and Income attributes and a ProximityPrompt to steal them.
Income
Every second, each owned item adds its Income to its owner's cash.
Stealing
Holding the prompt on someone else's item attaches it to you; reaching your own base makes it yours.
Base lock
A timed force field or door that blocks thieves — the counter-play that makes stealing fair.
Build order
- 1
Bases and cash
Plots for 8 players, a claim on join, and Cash in leaderstats.
- 2
Items and income
Three item types with different income. Place one per base by hand and check money rises.
- 3
Stealing
The script below. Test with two players in Studio (Server & Clients).
- 4
Conveyor shop
Items ride past on a conveyor; a prompt buys them for cash.
- 5
Lock and rarity
A base lock with a cooldown, then rare items worth stealing.
The key script: Income per second and stealing items
Where it goes: ServerScriptService > Items (Script).
- Each item is a Model with a PrimaryPart (other parts welded to it), tagged
Item, with attributesOwnerId(number) andIncome(number), and aProximityPromptin its PrimaryPart. - Each base is a Part tagged
Basewith anOwnerIdattribute set when a player claims it. - Players have
leaderstats > Cash(IntValue).
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
-- 1. Income: every owned item pays its owner each second.
task.spawn(function()
while true do
task.wait(1)
for _, item in CollectionService:GetTagged("Item") do
local owner = Players:GetPlayerByUserId(item:GetAttribute("OwnerId") or 0)
if owner and not item:GetAttribute("CarriedBy") then
owner.leaderstats.Cash.Value += item:GetAttribute("Income") or 0
end
end
end
end)
-- 2. Stealing: hold the prompt on someone else's item to pick it up.
local function setupItem(item)
local prompt = item.PrimaryPart:FindFirstChildOfClass("ProximityPrompt")
prompt.ActionText = "Steal"
prompt.HoldDuration = 1.5
prompt.Triggered:Connect(function(player)
local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if not root or item:GetAttribute("CarriedBy") then return end
if item:GetAttribute("OwnerId") == player.UserId then return end
item:SetAttribute("Home", item:GetPivot()) -- to return it if the thief dies
item:SetAttribute("CarriedBy", player.UserId)
item:PivotTo(root.CFrame * CFrame.new(0, 4, 0))
for _, part in item:GetDescendants() do
if part:IsA("BasePart") then
part.Anchored = false
part.CanCollide = false
part.Massless = true -- so carrying doesn't pin the thief down
end
end
local weld = Instance.new("WeldConstraint")
weld.Name = "CarryWeld"
weld.Part0 = root
weld.Part1 = item.PrimaryPart
weld.Parent = item.PrimaryPart
player.Character.Humanoid.Died:Once(function()
if item:GetAttribute("CarriedBy") ~= player.UserId then return end
item.PrimaryPart.CarryWeld:Destroy()
item:SetAttribute("CarriedBy", nil)
item:PivotTo(item:GetAttribute("Home"))
for _, part in item:GetDescendants() do
if part:IsA("BasePart") then part.Anchored = true end
end
end)
end)
end
for _, item in CollectionService:GetTagged("Item") do setupItem(item) end
CollectionService:GetInstanceAddedSignal("Item"):Connect(setupItem)
-- 3. Delivering: touching your own base makes the item yours.
for _, base in CollectionService:GetTagged("Base") do
base.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player or base:GetAttribute("OwnerId") ~= player.UserId then return end
for _, item in CollectionService:GetTagged("Item") do
if item:GetAttribute("CarriedBy") == player.UserId then
item.PrimaryPart.CarryWeld:Destroy()
item:SetAttribute("CarriedBy", nil)
item:SetAttribute("OwnerId", player.UserId)
item:PivotTo(base.CFrame * CFrame.new(0, 3, 0))
for _, part in item:GetDescendants() do
if part:IsA("BasePart") then part.Anchored = true end
end
end
end
end)
endHow it works
- Carried items stop earning (
CarriedBy), so stealing is a race back to your base. - Dying returns the item to where it was taken from, which gives defenders a reason to fight.
- Next steps: free pads in each base instead of one drop point, a walk-speed penalty while carrying, and saving owned items.
How “Steal a…” games make Robux
- Base lock upgrades and longer lock durations.
- Rare item crates as developer products — show the odds clearly.
- 2× income game pass.
You receive 70% of what players spend on game passes and developer products; Roblox keeps 30%.
Common mistakes
Copying the original
Using another game's name, characters or uploaded assets breaks Roblox rules and can get the game removed. Make your own characters and theme.
No defense
If stealing is free and safe, new players lose everything in minutes and leave. Locks, cooldowns and slower carriers fix this.
Client-side ownership
Ownership and income must live on the server; a RemoteEvent that says “this item is mine now” is an exploit.
FAQ
Is it allowed to make a Steal a Brainrot copy?
Making a game in the same genre is fine. Copying another game's name, characters, models or images is not, and can get your game taken down. Use original characters and your own theme.
How does stealing work in these games?
A ProximityPrompt on another player's item attaches it to the thief. If the thief reaches their own base the item changes owner; if they die it goes back.
How do items earn money every second?
A server loop runs once per second and adds each owned item's Income to its owner's Cash. Keeping it on the server prevents cheating.