Skip to content

Walls Reference ​

Breakable walls are placed in-game - from the Walls tab of /bombadmin, with /wall_place, with a wall-kit item, or from another script with the placeWall export - and any explosion can blow a hole through them.

How a Wall Works ​

  • A wall is a run: one straight stretch of one style, 3 m tall and as long as the gap it closes - any length in steps of 0.25 m, up to 40 m
  • The run is laid seamlessly from modular pieces (2 m, 1 m, 0.5 m, and 0.25 m wide), so to players it is one wall, not a row of blocks
  • When a run is breached it is re-laid around the hole, wherever along it the blast was - a charge at one end opens that end
  • A run can be breached again further along, and a blast into an existing hole makes it bigger
  • Walls placed through the panel, the commands, or the wall kits are saved (data/walls.json) and come back after a restart
  • A breached wall rebuilds itself after 15 minutes by default (RepairAfter), and the clock survives a restart

Toughness ​

Every style has a toughness from 1 to 4. An explosion has a power: a blast breaches every intact wall within its reach whose toughness its power meets. Reach is measured to the nearest point of the wall - 2 m + 0.9 m per point of power (a sticky bomb: 4.7 m).

ExplosionPowerExplosionPower
Pipe bomb2Car2
Grenade / grenade launcher2Truck / tanker / train3
Sticky bomb3Petrol pump / gas tank / barrel / propane2
Proximity mine3Plane / ship / blimp3
Rocket3Bike / hi-octane / explosive rounds / firework1
Tank shell / plane rocket / Valkyrie cannon4Molotov, fire, smoke, flares0 (never)

A planted bomb hits with the power of its yield. Every value is in configs/shared/breaking.lua - see Configuration.

Wall Styles ​

Each style below is shown as a 2 m piece, intact and breached with a doorway. Under each one:

  • Style key (e.g. brick_red) - the name you use in code: every wall export (placeWall, placeWallBetween, setWallStyle, startWallPlacement, ...), the /wall_place command, and the config
  • Wall-kit item (e.g. wallkit_brick_red) - the inventory item a player uses to put up one 2 m section of that style (see Add Items). You only need it if players place walls themselves - it is never passed to an export

Style key, not item name

Exports take the style key: placeWall('brick_red', ...) - not 'wallkit_brick_red'.

Toughness 1 - light ​

Anything that goes bang gets through: a pipe bomb, a car going up, a hi-octane blast, explosive rounds.

Corrugated iron sheetingCorrugated iron sheeting, breached
Corrugated iron sheetingStyle key corrugated_metal - for exports
Wall-kit item wallkit_corrugated_metal
Breaks into metal fragments and sparks.
Old rendered wallOld rendered wall, breached
Old rendered wallStyle key stucco_old - for exports
Wall-kit item wallkit_stucco_old
Breaks into plaster dust. Paintable: 19 colours.
Painted plank wallPainted plank wall, breached
Painted plank wallStyle key wood_painted - for exports
Wall-kit item wallkit_wood_painted
Breaks into splinters. Paintable: 21 colours.
Steel roller shutterSteel roller shutter, breached
Steel roller shutterStyle key roller_shutter - for exports
Wall-kit item wallkit_roller_shutter
Breaks into metal fragments and sparks. Paintable: 20 colours.
Stud wall (plasterboard)Stud wall (plasterboard), breached
Stud wall (plasterboard)Style key drywall - for exports
Wall-kit item wallkit_drywall
Breaks into plaster dust. Paintable: 20 colours.
Timber plank wallTimber plank wall, breached
Timber plank wallStyle key wood_planks - for exports
Wall-kit item wallkit_wood_planks
Breaks into splinters.

Toughness 2 - masonry ​

Takes a grenade, a car, a barrel, or propane - not a bike or a firework.

Cinder block wallCinder block wall, breached
Cinder block wallStyle key cinder_block - for exports
Wall-kit item wallkit_cinder_block
Breaks into masonry and rock. Paintable: 20 colours.
Dry-stacked stone wallDry-stacked stone wall, breached
Dry-stacked stone wallStyle key ledgestone - for exports
Wall-kit item wallkit_ledgestone
Breaks into masonry and rock.
Painted brick wallPainted brick wall, breached
Painted brick wallStyle key brick_painted - for exports
Wall-kit item wallkit_brick_painted
Breaks into masonry and rock. Paintable: 21 colours.
Red brick wallRed brick wall, breached
Red brick wallStyle key brick_red - for exports
Wall-kit item wallkit_brick_red
Breaks into masonry and rock.
Rusted sheet-steel wallRusted sheet-steel wall, breached
Rusted sheet-steel wallStyle key rusted_sheet - for exports
Wall-kit item wallkit_rusted_sheet
Breaks into metal fragments and sparks.
White tiled wallWhite tiled wall, breached
White tiled wallStyle key tile_white - for exports
Wall-kit item wallkit_tile_white
Breaks into plaster dust. Paintable: 20 colours.

Toughness 3 - heavy ​

Takes a sticky bomb, a rocket, a truck, a proximity mine, or the railgun.

Fitted basalt wallFitted basalt wall, breached
Fitted basalt wallStyle key basalt_stone - for exports
Wall-kit item wallkit_basalt_stone
Breaks into masonry and rock.
Painted concrete wallPainted concrete wall, breached
Painted concrete wallStyle key concrete_painted - for exports
Wall-kit item wallkit_concrete_painted
Breaks into masonry and rock. Paintable: 20 colours.
Poured concrete wallPoured concrete wall, breached
Poured concrete wallStyle key concrete - for exports
Wall-kit item wallkit_concrete
Breaks into masonry and rock.
Rough stone block wallRough stone block wall, breached
Rough stone block wallStyle key stone_block - for exports
Wall-kit item wallkit_stone_block
Breaks into masonry and rock.
Sandstone block wallSandstone block wall, breached
Sandstone block wallStyle key sandstone - for exports
Wall-kit item wallkit_sandstone
Breaks into masonry and rock.

Toughness 4 - fortified ​

Only a tank shell, a plane rocket, the Valkyrie cannon - or a well-packed bomb.

Castle ashlar wallCastle ashlar wall, breached
Castle ashlar wallStyle key castle_stone - for exports
Wall-kit item wallkit_castle_stone
Breaks into masonry and rock.
Reinforced concrete wallReinforced concrete wall, breached
Reinforced concrete wallStyle key concrete_reinforced - for exports
Wall-kit item wallkit_concrete_reinforced
Breaks into masonry and rock.
Riveted steel plate wallRiveted steel plate wall, breached
Riveted steel plate wallStyle key steel_plate - for exports
Wall-kit item wallkit_steel_plate
Breaks into metal fragments and sparks.

Paint Colours ​

Painted styles come in any of these colours, picked when the wall is placed (the panel shows a swatch for each) or later with Repaint. A style lists the colours it was built in - see Colors in configs/shared/walls.lua.

White whiteCream creamSand sandMustard yellow yellowPeach peachTerracotta terracottaBarn red redBurgundy burgundyDusty pink pinkLilac lilacNavy navyDusty blue blueTeal tealMint mintSage green sageBottle green greenOlive oliveGrey greyCharcoal charcoalBlack blackBrown brown

Hole Shapes ​

Every style ships ten hole shapes. Below they are shown on the red brick wall. Numbers 5 and 6 are 4 m units; 9 and 10 only ever open at a run's end.

Hole shape 1: breach
1 · breach(also doorway) Doorway-sized - walk through it.
Hole shape 2: split
2 · splitTall and narrow - squeeze through sideways.
Hole shape 3: wide
3 · wideMost of a 2 m unit gone.
Hole shape 4: low
4 · lowKnee- to waist-high - crawl or shoot through.
Hole shape 5: vehicle
5 · vehicleA 4 m unit: a car drives through, the wall still spans above it.
Hole shape 6: collapse
6 · collapseA 4 m unit, open to the sky: a van or a truck fits.
Hole shape 7: window
7 · windowDoes not reach the ground: see and shoot through, not walk.
Hole shape 8: top
8 · topThe top edge blown out, the wall below still standing: climb, see, and shoot over.
Hole shape 9: end
9 · endThe end of the run knocked off, top to bottom - open to the side.
Hole shape 10: corner
10 · cornerThe upper corner at an end come away on a diagonal.

Which Hole a Blast Leaves ​

A game explosion picks its shape by how much power it has to spare over the wall's toughness:

Power to spareHole
0 - only just througha split, a low hole, or a window (one at random)
1a doorway
2blown wide
3 or morevehicle-sized, or the whole section comes down

A 4 m shape that does not fit the run - or the gap between two holes - falls back to the biggest 2 m one. A blast into a hole that is already there makes it the shape the blast would have left, or one size up from what is there, whichever is more.

Bombs and Walls ​

A planted bomb breaches only a wall it is set against - stuck on it, or standing right at its foot - and the hole opens where the bomb is. How much explosive the builder packed into it (its yield) decides how hard it hits and which hole it leaves - and where on the wall it sits matters too:

YieldPowerAt the footHigher upAt the topNear an endUpper corner
1 block2crawl holewindowtop edgeas at its heightas at its height
2 blocks3doorwaywindowtop edgeas at its heightas at its height
3 blocks4blown wideblown widetop edgeend knocked offcorner
4 blocks4vehicle-sizedvehicle-sizedtop edgeend knocked offcorner
5 blocks5vehicle-sizedvehicle-sizedtop edgeend knocked offcorner
6 blocks5whole section downwhole section downwhole section downwhole section downwhole section down

While a player aims a bomb, the walls it would breach - and the hole each would get - are previewed on the wall.

Placing from a Script ​

Put walls up from your own resource with the server exports. Pass the wall's style key from Wall Styles, e.g. 'brick_red' - not its wall-kit item name.

Between two points ​

placeWallBetween closes the gap between two points: the wall runs from the first to the second, and its length and heading are worked out for you.

lua
-- Brick up a doorway: two points on the ground, one at each side of it
local wallId = exports['sd-bombs']:placeWallBetween('brick_red',
    vec3(253.2, 225.4, 101.8), -- one side of the gap
    vec3(256.9, 224.1, 101.8), -- the other side
    { tag = 'my-heist' }
)
print(('Wall %d placed'):format(wallId))

The length is rounded up to the next 0.25 m, so the wall always closes the gap. The wall's foot goes at the lower of the two points' heights - give ground-level points, or pass z in the options.

Ground height

A player's position (GetEntityCoords(ped)) is about 1 m above the ground. Copying it straight in leaves the wall floating - take 1 m off its z, or pass the ground height as z.

At a position ​

placeWall puts a wall of a given length centred on a point, facing a heading:

lua
-- A 6 m painted brick wall, navy, centred on this spot and facing 90 degrees
local wallId = exports['sd-bombs']:placeWall('brick_painted', vec4(-1182.4, -884.2, 13.8, 90.0), {
    length = 6.0,
    color = 'navy',       -- a colour the style comes in (see Paint Colours)
    persistent = true,      -- saved in data/walls.json, back after a restart
})

Options ​

OptionDefaultDescription
length2placeWall only: metres, rounded up to 0.25 (max 40)
color-A paint colour the style comes in
persistentfalseSave it so it comes back after a restart
tag-Your own label - remove all your walls at once with removeWallsByTag('my-heist')
scriptOnlyfalseExplosions and bombs never breach it - only your script does. See Only Your Script Opens It
autoRepairtruefalse = it never rebuilds itself: it stays breached until repairWall
zthe lower pointplaceWallBetween only: the height of the wall's foot

Walls a script rebuilds every time

Leave persistent off and give your walls a tag: put them up when your heist starts, and tear them down with removeWallsByTag when it resets. Nothing is left behind in data/walls.json.

Breaching from a Script ​

You do not need this to blow walls up

Bombs and explosions breach walls on their own. A planted bomb opens the wall it is set against when it goes off, and grenades, sticky bombs, rockets, and exploding vehicles do the same - no script, no setup. See Bombs and Walls and Toughness.

This section is for developers who want a wall to open without an explosion, or exactly the way they choose - a thermite or cutting-torch minigame that opens a wall when it is won, a truck driven through a wall in a scripted scene, a heist that always leaves the same hole in the same spot.

Only Your Script Opens It ​

By default a wall your script places still breaks to any explosion - a player with a grenade can open your vault wall early. To keep a wall strictly to your script, place it with scriptOnly = true: game explosions and planted bombs never breach it, and the bomb planting preview leaves it out. Only breachWall / breakWall - and staff from the admin panel - open it.

lua
local vaultWall = exports['sd-bombs']:placeWallBetween('concrete_reinforced',
    vec3(253.2, 225.4, 100.8), vec3(256.9, 224.1, 100.8), {
    tag = 'my-heist',
    scriptOnly = true,   -- explosions and bombs never breach it: only your script does
    autoRepair = false,  -- and it stays open until you call repairWall
})

-- When the thermite minigame is won:
exports['sd-bombs']:breachWall(vaultWall, 'doorway', { along = 1.8, type = 'thermite' })

-- When the heist resets:
exports['sd-bombs']:repairWall(vaultWall)

Change it later with setWallRules, e.g. setWallRules(vaultWall, { scriptOnly = false }) once the alarm is cut. To turn explosion breaching off for every wall on the server instead, set Explosions.Enabled = false and Bomb.Enabled = false in configs/shared/breaking.lua - see Configuration.

Opening a Wall ​

Open a wall your way with the breachWall export - pick the shape by name and where along the wall it goes:

lua
-- A doorway 3 m along wall 12
exports['sd-bombs']:breachWall(12, 'doorway', { along = 3.0 })

-- Knock the far end off
exports['sd-bombs']:breachWall(12, 'end', { side = 'end' })

-- Let the wall pick, the way a rocket would
exports['sd-bombs']:breachWall(12, nil, { power = 3 })

Staff Commands ​

CommandWhat it does
/wall_place [style key]Place one 2 m wall module with the placement tool, e.g. /wall_place brick_red (none: the last one used)
/wall_removeRemove the wall nearest to you
/wall_breakBreach the wall nearest to you
/wall_repair [all]Rebuild the nearest breached wall, or every one
/wall_clearRemove every wall, saved ones included
/wall_stylesList the style keys

All wall commands are restricted to group.admin by default (Commands.Restricted in configs/shared/placement.lua). The admin panel's Walls tab does all of this and more - place runs of any length with a live 3D preview, resize, extend, restyle, repaint, and move them.