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:

  1. Buy an item from the conveyor
  2. It earns cash every second in your base
  3. Steal from other bases and carry items home
  4. 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. 1

    Bases and cash

    Plots for 8 players, a claim on join, and Cash in leaderstats.

  2. 2

    Items and income

    Three item types with different income. Place one per base by hand and check money rises.

  3. 3

    Stealing

    The script below. Test with two players in Studio (Server & Clients).

  4. 4

    Conveyor shop

    Items ride past on a conveyor; a prompt buys them for cash.

  5. 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 attributes OwnerId (number) and Income (number), and a ProximityPrompt in its PrimaryPart.
  • Each base is a Part tagged Base with an OwnerId attribute set when a player claims it.
  • Players have leaderstats > Cash (IntValue).
ServerScriptService > Items (Script)
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)
end

How 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.

Keep reading