Free — https://dragonheartstudios.net/scripts/7516060
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DHS-PrisonJobs is a standalone prison work-program pack extracted from Dragon Heart Studios’ full prison simulation, DHS-PrisonSim. It ships 10 fully playable inmate work programs — multi-stage interaction loops with item transformations, carry props, and payout on deposit — without requiring any other DHS resource or any database.
Drop it on any server running QBox, QBCore, or ESX via community_bridge. Configure your prison MLO’s coordinates in a single escrow-ignored file and the jobs are live. Two optional config hooks let you wire sentence-time reduction and metadata-flag gating for prison RP servers while keeping the defaults open for general use.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Five jobs ported from DHS-PrisonSim v1.2.11:
▸ Metal Shop — grab metal bar → flatten and cut (3 s progress bar) → drill and engrave with player-input license plate text via ox_lib input dialog → export crate payout
▸ Wood Shop — grab log → saw into planks → craft chair (2 planks), table (4 planks), or storage box (6 planks, carries unique metadata ID) at workbench → export crate payout
▸ Laundry — grab random batch of 1–4 dirty garments (jumpsuit + guard-uniform pipelines) → washer (10 s) → dryer (10 s) → folding table (10 s) → export crate payout; carry prop (laundry basket) tracks the batch
▸ Mining — grab reusable pickaxe → mine rock nodes (10 s) → export crate payout per rock; pickaxe is never consumed
▸ Recycling — grab recyclable material → compact into block (10 s) → export crate payout
Five new basic-loop jobs (V2 roadmap borrows):
▸ Yard Cleaner — grab cleaning kit → tidy trash piles and benches across work zones (6 s each) → carry cap 5 trash bags → dumpster deposit payout; kit gates debris visibility — litter props only appear to players carrying the cleaning kit; per-player 3-minute respawn cycle on cleaned spots
▸ Infirmary Cleaning — pull 5 medical wipes from supplies cabinet → wipe surfaces (5 s each, 1 wipe consumed → 1 soiled wipe produced) → biohazard bin deposit payout; server-side wipePendingCount per-player token prevents both cold replay and mid-cycle injection
▸ Mail Sorting — grab unsorted mail bundle (carry prop) → sort at station (8 s) → deliver to outbox; carry prop detaches on sort completion
▸ Mess Hall Server — grab empty tray (carry prop) → fill at prep station (5 s, prop swaps to filled tray on server confirmation) → deliver to serving counter
▸ Kitchen Cook — grab raw ingredients (carry prop) → prep counter (6 s, prop swaps) → stove (10 s, prop swaps to cooked meal) → deliver to mess-hall pickup; highest payout in the pack (4 per meal vs 2 for other jobs)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
All operator-facing config lives in escrow-ignored shared/ files:
▸ shared/config.lua — Config.PayoutAccount (cash/bank/custom), Config.SentenceTimeReduction (default OFF, configurable event name for PrisonSim or any custom prison system), Config.RequireMetadataFlag (default OFF, metadata key/value gate for prison RP servers), Config.Debug, Config.Locale
▸ shared/jobs_config.lua — per-job Enabled toggle, Payouts, SentenceReduction, ProgressBarSettings (durations), TargetDistances; YardCleaner.MaxCarry, InfirmaryCleaning.SupplyPullAmount / SupplyPullCap; per-stage DHS-Minigames gameId and difficulty bindings
▸ shared/locations_config.lua — all interaction coords; MLO-agnostic; V1 jobs ship with prompt-prison placeholders, V2-borrowed jobs ship with vector3(0.0, 0.0, 0.0) placeholders and REPLACE WITH YOUR COORDS markers
▸ client/editablefunctions_cl.lua — OnJobStart(jobName), OnJobStageComplete(jobName, stage) (escrow-ignored)
▸ server/editablefunctions_sv.lua — OnJobComplete(src, jobName, payoutAmount), OnPayoutCalculated(src, jobName, baseAmount) — return a number to override payout; clean injection point for VIP multipliers, XP grants, and faction bonuses (escrow-ignored)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Server-Side Security
14 stage-bypass exploits patched across all ported jobs. Every GiveX server event re-validates that the prior stage’s item was consumed before the next is granted. Additional hardening:
▸ Per-source stage-token system — Request* handlers set a token after consuming the input item; Give* handlers require and atomically consume the token; tokens auto-expire after 30 seconds and clear on playerDropped and onResourceStop
▸ tryAddItem inventory-full safety — no silent item drops or crashes when inventory is full; error notification fires instead
▸ Server-confirmed carry prop attach — props attach only after server-side Granted event; Denied response fires error notification
▸ License plate input validation — empty strings, overlong strings (>7 chars), and non-string payloads rejected server-side independently of client-side checks
▸ Infirmary wipePendingCount per-player token mechanism — prevents replay attacks and mid-cycle injection; wipe-count snapshot compared at GiveSoiledWipes time; tokens cleared on playerDropped and onResourceStop
▸ WoodShop per-kind stage tokens — a chair craft token cannot satisfy a table or storage request; direct event calls with no matching token are silently discarded
▸ JobsConfig.<Job>.Enabled = false enforced server-side — direct event fire on a disabled job is blocked at the handler
▸ Config.RequireMetadataFlag gate checked at every server entry point when enabled
▸ Payout amounts clamped to non-negative; OnPayoutCalculated hook return values re-clamped so customer overrides cannot produce negative payouts
▸ Progress bar duration clamped to 100ms minimum — zero or negative values cannot be used as instant-complete exploit paths
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| State | Client CPU |
|---|---|
| Idle (no active job) | 0.00ms |
| Active job loop (carry prop, progress bar running) | 0.01ms |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Requirements
| Resource | Required |
|---|---|
ox_lib |
Yes |
community_bridge |
Yes |
oxmysql |
No |
| DHS-PrisonSim | No — optional for sentence-time hook only |
| DHS-Minigames | No — auto-detected if present |
| FXServer: Artifact 6116 or newer. Lua 5.4. |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Support
Dragon Heart Studios Discord for support, updates, and to follow DHS-PrisonSim V2 development:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Code is accessible | No |
| Subscription-based | No |
| Lines (approximately) | ~6,700 |
| Requirements | FXServer Artifact 6116+ · ox_lib · community_bridge |
| Support | Yes |







