Jixryo Prison
Bolingbroke on the prompt prison map with a day on GTA's clock, your own cell, jobs, payphones, a PA that is all in the game, NPC guards and solitary, and five ways out. Every sentence, hold and escape is decided on the server.
Version 0.11.1 Updated See it on its script page
On this page
Jixryo Prison replaces rcore_prison and qbx_prison for sentences. Booking sends people here, so does qbx_police's /jail through the included patch, and from the bus at the front gate to the walk out it all runs in the game: nothing is hosted and no outside service is used. It runs on the prompt prison map (Bolingbroke rebuilt, sold separately), reading every cell, gate and room out of the map's own files. It works with Evidence, Police, MDT and Cameras.
What players get
- Getting there. The bus pulls up at the front gate, you are taken to receiving, changed into prison clothes, your property is sealed once (booking's seal stays), the PA plays the intake tones, and you are taken to your cell. Blocks fill in order, two to a cell.
- Time. A month is a minute online. A chip on screen counts it down, and leaving and coming back puts you back in your cell. At zero you walk out of the front gate with your property and your own clothes back.
- Walking out without a route puts you back with ten months added, the PA calls it and the prison alarm sounds. Someone moved far away (a hospital, an admin) is put back with no penalty.
- The day runs on GTA's clock: a count at 21:00, lights out at 22:00 when every cell gate locks and jobs stop, and anyone out of their own cell after dark is taken to solitary by the guards with no months added. The gates open on their own at 07:00.
- Your cell, like a house for one cell. You keep the same cell all sentence and for 30 days after you leave, with your decor. Ten pieces a cell from the commissary or the wood shop, placed where you look with styles to pick. A locker only you open, and hiding spots under the mattress, behind the toilet and behind a picture you hung, which last as long as nobody finds them.
- The payphones on every block's dayroom wall: a real lb-phone call with your phone's favourite contacts on the dial, two credits to place it and one a minute, an hour of talk a day, none after lights out.
- The kiosk on each block's library table: your time, jobs, the commissary and what the PA played lately.
- Jobs in the map's own rooms, each round a few steps at stations the server picks: the kitchen, the laundry, the metal shop, the wood shop, the garden, the garage, the library, the janitor and the yard crew. The last step pays time off (never more than half a sentence in all) and commissary credit. A spoon sometimes comes out of the kitchen, a rusty screwdriver out of the metal shop, and the wood shop sometimes leaves you a piece for your cell.
- Fights. Three hits on another inmate within twenty seconds, or any hit on a guard, add months (five, or ten for a guard), the PA calls it, and the two nearest guards run in with stun guns. The first to reach you cuffs you and walks you on their arm to a solitary cell on the green mile for five minutes: no kiosk, no jobs, and walking off puts you back.
- Five ways out. A tunnel dug in your cell with a spoon over four days; a keycard lifted off a guard and swiped at a gate; the laundry truck's cart in its last ninety seconds; your cell toilet's screws and the crawlspace behind blocks A to C (the map's own escape); and from outside, a friend cutting the fence with bolt cutters or killing the power with thermite on the generator. Leaving through a route is an escape: the PA and the alarm, the tower guards fire for three minutes, a dispatch call and an MDT warrant. Caught later you serve what was left plus fifteen months.
What staff get
- The control room, upstairs in admin and at each block's control desk: pick the speaker zones, play a preset (count, lockdown, yard time, chow, lights out, fight, all clear, morning), hold B to speak live over the compound through pma-voice with a PA filter, see every inmate with Search, Solitary and Out buttons, the perimeter (power, fence gaps, the laundry truck with Inspect, who escaped), every guard post and what its guard is doing, and the log of what each announcement meant.
- The PA is all in the game. A tone pattern from the nearest speaker, then GTA's own police megaphone voice from it. Guards on duty away from the prison hear it on their radio. Lockdown and lights out lock every cell gate, all clear opens them, and lockdown sounds the alarm.
- Searches. "Search this cell" at a cell gate finds each hidden stash about two times in three and hands you what is in it. A shakedown from the control desk finds them about one time in three and destroys it, and finds a tunnel, which is filled in with months added and solitary. The guards also shake down a random cell now and then. Lockers lose contraband only.
- NPC guards on twelve posts: the front gate, the canteen, each block's dayroom, two walking yard patrols and the two towers with rifles. The server owns them, they are out only while someone is near the prison, and a downed guard's post is filled again after three minutes.
/prisonwallspaints a block's walls in one of the map's six colours,/prisonreleaselets someone out early, and qbx_police's/unjailcomes here through the patch.- The MDT shows "In Bolingbroke" with the inmate number, cell and months left on a person's profile, and gets a warrant on every escape.
- An audit trail: sentences, extensions, releases, escape attempts, escapes, fights, solitary, curfew, searches, shakedowns, announcements, the day's turns, cell decor, the walls, keycards, fence cuts, power cuts, payphone calls and the staff command.
Install
Stop
rcore_prisonandqbx_prisonif you run them, and take them out ofserver.cfg: two prisons would both take people.Your map. Run all six resources of the prompt prison map (sold separately):
prompt_bolingbroke_prison_interiors,prompt_prison_tower_23,prompt_prison_study,prompt_church_prison,prompt_prison_escapeandprompt_prison_escape_dlc. Every place comes from the map's own files intoshared/map.lua, which is generated: never edit it by hand. Inprompt_prison_escape'sconfig/config_s.lua, make the toilet inmates only:lua isPlayerInPrion = function(source) return GetResourceState('jixryo_prison') == 'started' and exports.jixryo_prison:IsInPrison(source) endPatch qbx_police with the included copy's marked lines, so
/jailand/unjailcome here while Prison runs.Items. The commissary sells
sandwich,water_bottle,coffeeandcigarette: use your names inConfig.commissary. The cell decor items (cell_rug,cell_cushion,cell_lamp,cell_plant,cell_art,cell_radio,cell_tv,cell_shelf,cell_stool,cell_crate) and the breakout items (bolt_cutters,thermite,rustyscrewdriver,prison_spoon,prison_keycard) are in the Jixryo inventory build; add them to any otherox_inventory. A decor item'sclient.exportpoints at Prison'suseDecor.Clothes.
Config.uniformsets the prison clothes per component for men and women. Set them for your clothing pack.lb-phone for the payphones: nothing to change in it.
Upload
jixryo_prisonas it is (its page is built) and start it after its dependencies, with OneSync on, since the guards are server-made peds:server.cfg ensure jixryo_core ensure jixryo_police ensure jixryo_evidence ensure jixryo_prison ensure jixryo_mdtIt needs
ox_lib,oxmysql,qbx_core,ox_inventory,ox_targetandjixryo_core. Police, Evidence, MDT, Cameras,lb-phone,pma-voiceandillenium-appearanceare found when they run.The database. On first start Prison makes
jixryo_prison_inmates,jixryo_prison_pa,jixryo_prison_homes,jixryo_prison_decorandjixryo_prison_phonethrough Core's numbered steps.Restart the whole server.
How other scripts' calls behave
Prison answers to qbx_prison's JailPlayer name, so anything that sentenced through qbx_prison lands here.
| Resource | What happens |
|---|---|
qbx_police | With the patch, /jail calls JailPlayer and /unjail calls ReleasePlayer while Prison runs. Its own jail code stays behind as the fallback. |
| Evidence | A booking with months calls JailPlayer(src, months, { by, booking }). Property booking sealed stays sealed, and Prison hands it back at release. |
| Police | A sentence takes the restraints off through Release. A guard reaching a fighter cuffs them through SetRestraint (cuffs behind, double-locked, "Prison guard"). |
| MDT | Reads GetInmate for a person's profile. An escape calls IssueWarrant for seven days. |
| Cameras | Killing the power calls SetBlackout over the compound plus 60 metres for five minutes, and ClearBlackout when it comes back. |
| Core's dispatch | An escape, a fence cut that trips the alarm and a power cut each raise a 10-98 alert through Jx.dispatch. |
lb-phone | The payphones use CreateCall (made for payphones: no phone needed, the other side sees "Bolingbroke"), EndCall and IsInCall, hear lb-phone:callAnswered and lb-phone:callEnded, and read phone_phones and phone_phone_contacts for the favourites. |
pma-voice | A guard on the live mic has their range raised over the compound; listeners in the zones hear them through a PA filter. |
illenium-appearance | A release reloads the player's saved skin for their own clothes. |
prompt_prison_escape | Its server event prompt_prison_escape:playerEscaped opens a fifteen-minute window in which leaving the compound counts as the toilet escape. |
qbx_core | injail holds the months left for scripts that read it; criminalrecord is set as qbx_police sets it; jx_property says the property is sealed. |
| Your time-sync script | The day reads GlobalState.currentTime, or a getTime export from weathersync, qb-weathersync or Renewed-Weathersync; without either, three players' games are asked and the middle answer taken. |
Its own API
Server exports, called as exports.jixryo_prison:Name(...).
| Export | What it does |
|---|---|
JailPlayer(src, months, opts) | Sentences someone online (or adds months to an inmate). opts: by, booking, quiet. qbx_prison's name. |
ReleasePlayer(src, by) | Lets an inmate out. |
IsInPrison(src) | Whether this server id is an inmate now. |
GetInmate(cid) | { number, months, left, cell, since } or nil. |
Announce(text, opts) | A cue on the PA: opts.zones, opts.cue = { tones, line, alarm }, opts.by. |
Client exports: IsInside(), and useDecor(data, slot), which ox_inventory calls when a decor item is used.
State everyone can read.
| Where | Key | What it carries |
|---|---|---|
GlobalState | jxCellGates | True while every cell gate is locked. |
GlobalState | jxPaLive | Who is on the live mic and for which zones. |
GlobalState | jxGuards | The network ids of the guards out now. |
GlobalState | jxFenceHoles, jxPrisonPower, jxLaundry, jxEscapees | Open gaps, the blackout, whether the truck is loading, the towers' targets. |
GlobalState | jxBlockWalls | Each block's wall colour. |
| A guard ped | jxGuard | { post, task, target, to }: what the server told that guard to do. |
Commands and keybinds
| Command | Who | What |
|---|---|---|
/prisonrelease <id> | Staff with group.admin | Releases an inmate. |
/prisonwalls <block> <colour> | Guards on duty, or staff with an ACE in Config.guards.ace | Paints block A to F default, orange, red, pink, white or green. |
/jail, /unjail | qbx_police's own, patched | Sentence or release through Prison. |
Prison binds no keys of its own. On its pages: the kiosk uses Q / E for tabs, the arrows and Enter to pick, sign on or buy, Esc to leave. Placing decor: left / right the style, the mouse wheel turns it, up / down the height, E places, Backspace cancels. The payphone: number keys or clicks dial, up / down picks a favourite, Enter calls, Esc hangs up and leaves, X hangs up while talking. The control room: click the speaker zones and the inmate buttons, 1 to 9 a preset, Enter plays it, hold B to speak live, Esc leaves. X climbs out of the laundry cart. Everything else is the third eye: the kiosk, a job's station, your locker and hiding spots, digging, a guard's keycard, a gate reader, the cart, the fence and the generator, a cell gate for guards.
Configuration
Everything is in config.lua; the places are picked from the generated shared/map.lua.
| Setting | Default | What it does |
|---|---|---|
Config.guards | police, sheriff, bcso, sasp, doc on duty; ACEs group.god, group.admin, jixryo.prison.admin | Who works the control room, searches cells and hears the PA on the radio. |
Config.zone | centre 1691, 2604, 45.6, radius 215 m | The compound. |
Config.time | 60 s a month, offline false, max 999 months | How a sentence is counted. |
Config.intake, Config.release | receiving, the pbus at the front gate, 9000 ms in receiving; the spot outside the gate | Arriving and leaving. |
Config.cellBlocks, Config.cellShare | A to F, 2 | Which blocks take inmates, in fill order, and how many share a cell. |
Config.gates | enabled, solitary locked | The prison's own cell gates in GTA's door system; off if you put them in ox_doorlock. |
Config.doors | none | ox_doorlock doors the presets lock and open (cells, yard). |
Config.uniform | GTA's components for men and women | Prison clothes. |
Config.escape | every 5 s, 10 months, 150 m | The fence check, the penalty for walking out, and how far counts as moved rather than escaped. |
Config.jobs | 9 jobs, maxCut 0.5 | Each job's steps, stations, times, animations, what you carry, time off and credit; the wood shop's product. |
Config.commissary | 11 items | What credit buys, decor included. |
Config.cellLife | kept 30 days, reach 2.4, 10 a cell, locker 10 slots, hide 4 slots and 4000 ms, search 8000 ms at 0.65 / 0.35 / 0.03, seven contraband items, six wall colours | Your cell, its searches and the decor items with their styles. |
Config.payphone | connect 2, 1 a minute, 60 min a day, ring 40 s, no night calls, reach 1.8, 8 favourites, "Bolingbroke" | The payphones and the handset prop. |
Config.control, Config.pa | the admin desk and a desk per block; GTA's megaphone voices, tones, radio squelch, 9 zones, speakers, the PRISON_ALARMS alarm for 20 s, live range 220 m, 8 presets, 5 automatic cues | The control room and the PA. |
Config.schedule | count 21, lights out 22, morning 7, grace 20 s, check every 30 s, cell reach 2.7 m, clock 2000 ms a minute | The day. Match msPerMinute to your time-sync script. |
Config.npc | s_m_m_prisguard_01, stun gun, carbine rifle in the towers, awake within 400 m, gone after 120 s, respawn 180 s, 12 posts | The guards. |
Config.fights | 3 hits in 20 s, 2 responders, reach 2.2, 90 s to respond, 75 s to escort, 5 months, 10 for a guard | Fights. |
Config.solitary | 5 minutes, leash 4.0 m, the green mile's 8 cells | Solitary. |
Config.breakout | 15 months on recapture, warrant 7 days, towers fire within 140 m for 180 s, 10-98; tunnel 20 s a dig at 4%, 25% a day; keycard 60% clean, 10 minutes, 60 s window, 35% alarm; laundry every 20 min, 90 s window, 35% caught; fence 15 s, gap 5 min, 50% alarm; power 20 s, out 5 min, cameras 60 m beyond the fence | Every route and its odds. |
Config.fromBooking | true | Booking sends people here. |
Security
- Sentences come only from the server: booking, the qbx_police patch, the exports and staff. Nothing a player's game sends puts anyone in or lets anyone out.
- The server keeps the time, counts seconds served, checks the fence and solitary every five seconds and mirrors
injail. - Fights come from FiveM's damage event read on the server. The take-down needs a guard within reach on the server's own positions. Guards' tasks are written by the server alone into state bags a player's game cannot change.
- Job rounds are checked at the station within three metres, long enough, at stations the server picks; time off is capped at half a sentence; purchases check credit and pockets; solitary blocks the kiosk and jobs.
- Guards are checked on every call: on duty and at a control desk. Announcements are presets only and rate-limited, one guard holds the live mic at a time, and the mic goes off when they leave the desk or the server.
- Your cell is the server's: decor goes only into your own cell, from your own pockets, in a style that exists, ten at most. Lockers and hiding spots name a group nobody has, so no game can open them by asking ox_inventory; only the server opens them after checking it is your cell and you are in it, and that a hiding spot's search took its time.
- The day is the server's: the clock from the sync script, or the middle of three games' answers and only from games it asked.
- Payphones are paid and timed on the server: credit and minutes checked before the call, the connect charge taken first and refunded if the call fails, the minutes billed from lb-phone's own events, and the server hangs up at the limit, after forty seconds unanswered, when you walk away, at lights out, or when you stop being an inmate.
- Breakouts are checked on the server: each hold's time, place and item, who may do it (inmates inside, anyone else outside), a keycard's expiry and its one-minute window, the laundry window, and escapes decided from where the server last saw you inside. The toilet window comes only from the map's server event, which no player's game can send.
- Property is sealed once: a second seal is refused, since ox_inventory's confiscation would overwrite the first with empty pockets.
- Logging out is clean: whoever plays next on that game is never dragged in, and a call, job or mic ends with the character.
Tests
One suite runs the real server code in real Lua 5.4 on a stand-in server with stand-in players' games, 22 tests, every one passing on 2026-10-31: an inmate keeping their cell and a released inmate's place held; what counts as inside a cell, checked for every one of the 234; decor placed, seen by everyone and picked up, and every refusal; the locker and the hiding spots only the server opens; a guard's search handing over stashes and taking only contraband from lockers; jobs in steps paying at the end and the wood shop's furniture; the day from count to morning with curfew to solitary; the clock as the middle of three games' answers; the walls; the toilet escape; the payphones (favourites, billing by the minute, the hang-ups, lights out and the hour a day); the config's items and jobs all real; and logging out mid-sentence, mid-call, mid-job, on the mic and during an intake, with nothing reaching the next character.
Check it in game
- Book a player with months: they ride the bus, fade into receiving in prison clothes, hear the intake tones and land in cell A-101 facing its gate, pockets empty, the chip counting down.
- At a control desk play "Lockdown": every cell gate locks, the yard hears three tones and the megaphone line from the nearest speaker and the alarm sounds, and a guard away from the prison hears it on the radio. Hold B and talk: the yard hears you through the PA filter.
- One inmate punches another three times: five months added, the PA calls it, two guards run in, one stuns and cuffs them and walks them to the green mile for five minutes.
- At the kiosk sign on to Kitchen, follow the blip through its three stations: "1 month off · 7 credits". Buy a sandwich. Run out past the fence: back in the cell with ten months added and the escape tones.
- Set the time to 21:00, 22:00 and 07:00 with your time-sync script: the count, the locked gates with an inmate in the yard taken to solitary, then the gates opening to the morning tones.
- Lower
Config.breakout.tunnel.perDayand dig through: outside the fence, the alarm, the towers firing, a dispatch call and the warrant in the MDT. From outside, cut the fence and plant thermite: the gap's red marker, the dark compound and "no power" on the prison cameras.