301 releases · 35 resources

Changelog

What changed in every Oxide Studios resource, release by release. Read these before you update: migration steps and database changes are listed with each version.

Showing 76–100 of 122 releases

Oxide GoPostalv1.2.0

Minor

Added

  • Cancel Current Round (crew-aware): while loading or delivering, the crew leader — or a solo worker — can cancel the round from the supervisor menu or by targeting the van. Both crew members return to the clocked-in state, the pickup pallet is cleaned up for everyone, and the van stays. Deliveries already completed still pay at clock-out. Crew members can't cancel; they clock out to leave, exactly as before
  • Config.Cancel.cooldownSeconds in shared/config/job.lua (default 60) — how long the crew waits before starting a new round (or clocking in fresh) after cancelling. Tied to the character, so relogging doesn't skip it; set 0 to disable

Changed

  • Docs: the cancel feature is documented; a new "adding a second depot" guide with full field tables for depots, letter boxes and delivery zones; new troubleshooting entries; assorted corrections from the docs review

Oxide Pizza Jobv1.2.0

Minor

Added

  • Cancel Current Task: while on deliveries, cancel from the shift menu or by targeting the delivery vehicle — a confirmation prompt appears, the remaining orders are forfeited, and you stay clocked in with your vehicle. Deliveries already completed still pay at clock-out
  • Config.Cancel.cooldownSeconds in shared/config/job.lua (default 60) — how long a player waits before requesting new orders after cancelling. Tied to the character, so relogging doesn't skip it; set 0 to disable

Fixed

  • A customer walking up for a pizza handoff could be left standing at the door if the delivery was interrupted at the wrong moment — they are now always cleaned up

Changed

  • Docs: the cancel feature is documented; shop location configuration now has full field tables and an "adding another shop" walkthrough; new troubleshooting entries for stuck deliveries and the cancel cooldown

Oxide Newspaperv1.1.0

Minor

Added

  • Cancel Current Task: while on a route, cancel it from the shift menu or by targeting the delivery bike — a confirmation prompt appears, the route is forfeited, and you stay clocked in with your bike. Houses already delivered still pay at clock-out
  • Config.Cancel.cooldownSeconds in shared/config/job.lua (default 60) — how long a player waits before requesting a new route after cancelling. The wait is tied to the character, so relogging doesn't skip it; set 0 to disable

Changed

  • /newspaperbuilder and its location export now use the standard admin permission — the old admin.newspaperjob permission is no longer needed, and standard QBCore/QBX/ESX admins pass automatically (the chat hint no longer names the old permission)
  • Docs: the cancel feature is documented; depot configuration now has a field-by-field guide and an "adding another depot" walkthrough; new troubleshooting entries for stuck routes and the cancel cooldown; corrected the builder permission docs, o-link module list, and shipped depot/zone counts

Oxide Policev1.6.0

Minor

Added

  • Department bosses can set up their own department. A new Config.AllowBossSetup setting in shared/config.lua (off by default) lets a department boss open the admin panel (/padmin) without server admin permission. The boss sees only their own department and can manage its stations and interaction points, garages, doors, CCTV cameras, speed cameras, and jail policy. They can never create, delete, or rename a department, touch a treasury, or reach the server-wide sections (revive point, prisoner jobs, prison shop) — those stay admin-only, and everything a boss changes is enforced server-side and written to the log.
  • Officers can adjust jail time when booking. Both the MDT Charges tab and the in-station booking panel now have an editable sentence field, for time served or a plea agreement. The criminal record keeps the catalog values — only the served sentence changes, and every adjustment is logged with the officer and shown as "adjusted" in the department activity feed. On by default via Config.MDT.allowJailOverride in shared/config/mdt.lua; restrict it to higher ranks with permissions.overrideJail, and cap it with limits.maxJailPerCall. Set allowJailOverride = false to remove the field.
  • Charge catalog import and export (CSV). The MDT's charge catalog editor now has Export and Import buttons. Export copies the whole catalog as CSV to back up or move between servers; Import accepts a pasted or uploaded CSV (columns: code, title, category, description, fine_amount, jail_time) with a preview of what will be added, updated, or skipped before anything is written. Rows with an existing code update that charge. The import limit is configurable (limits.maxImportRows in shared/config/mdt.lua, default 500).
  • Individual MDT tabs can be turned off. A new Config.MDT.modules table in shared/config/mdt.lua lets you hide any MDT tab (warrants, BOLOs, videos, fines, etc.) for every officer. A hidden tab disappears from the navigation and its server functions are refused too, so it can't be reached by other means. Everything defaults to on — leaving the config alone changes nothing.
  • Spent casings can carry the firing weapon's serial number. With Config.Evidence.includeWeaponSerial in shared/config/evidence.lua (on by default), a casing records the serial of the gun that fired it — read server-side from a weapon the shooter is actually carrying, so a modified game client cannot fake or hide it. When that serial matches a firearm in the weapon registry, the evidence lab shows who the gun is registered to. Turn it off if your server doesn't use weapon registration.
  • Evidence lockers can seal when a case closes. With Config.Evidence.locker.sealOnCaseClose in shared/config/evidence.lua (off by default), closing a case seals its evidence locker: contents stay listed for reference, but nothing can be added or removed until the case is reopened. Admins can permanently empty a sealed locker with the new /purgeevidence <case number> command — the destroyed contents are written to the log first.
  • Other jobs can work on wheel clamps. A new externalJobs table in shared/config/field_tools.lua lets you allow non-police jobs (for example mechanics) to remove — and optionally fit — wheel clamps, with per-job "must be on duty" and "may also apply" switches. Allowed jobs get target options on clamped vehicles plus a fallback /removeclamp chat command (rename or disable it with externalCommand). Removal by these jobs never hands over the clamp item — that stays police equipment. Empty by default, so clamps remain police-only unless you add jobs.
  • Kneeling surrender pose. Holding the hands-up key now drops the player into a kneeling surrender instead of the standing pose; a tap still gives the standing pose. On by default; tune or disable it with the new KneelEnabled, HoldThreshold, and KneelSticky settings under Config.HandsUp in shared/config/interactions.lua.

Fixed

  • Forensic details are no longer readable by game clients. The information attached to dropped evidence — whose DNA is on it, whose fingerprints, weapon serials — was synced to every player's game client, where cheat software could read it off the map. Clients now only receive what they need to draw the evidence marker (position and type); the forensic details stay on the server until evidence is properly collected.

Notes

  • No database changes — existing servers update in place.
  • The new settings live in shared/config.lua, shared/config/mdt.lua, shared/config/evidence.lua, shared/config/field_tools.lua, and shared/config/interactions.lua. If you use customized copies of those files, copy the additions over to get them — fresh installs already include them.

Oxide Methv1.4.0

Minor

Added

  • Police alerts — cooking, breaking, bagging and drying can now tip off police with a configurable chance. Ships disabled; enable it in the new Dispatch section of /meth settings (or Config.Dispatch in shared/config.lua). Set one master chance or override per stage, with a per-site cooldown so one lab doesn't spam calls. Works with oxide-dispatch or any dispatch resource o-link supports; with no dispatch resource installed, online officers still get a notification and a map blip. Alerts use the equipment's real location.
  • Placement zone modes — new Config.ZoneMode chooses how placement zones work: blacklist (the previous behavior — block placement inside drawn zones, still the default), whitelist (allow placement only inside drawn zones), or off. The settings menu's Safe Zones section is now Placement Zones, with Zone mode, Blocked areas and Allowed areas. Careful: whitelist mode with no allowed areas drawn blocks placement everywhere — the menu warns you when that's the case.
  • Item usage whitelist — restrict any usable item in the resource (tables, crystallizer, gas mask, bagged meth, the manual) to specific jobs or gangs, with optional minimum rank and on-duty requirements. Ships empty (nothing restricted); edit it in the new Usage Whitelist section of /meth settings or Config.UsageWhitelist in shared/config.lua.
  • "Explosion on overheat" toggle — new option in the Cooking section (Config.Cooking.explosionOnOverheat). Turned off, hitting 100°C still ruins the batch and eats the ingredients, but nothing blows up. Default is on (unchanged behavior).
  • Bystanders now see the work — players cooking, breaking, bagging or managing drying trays play a working animation that nearby players can see, instead of standing frozen (Config.SceneAnims in shared/config.lua; each animation can be turned off).

Changed

  • Placement zones now store a named vertical band (minZ/maxZ). Old config files and previously saved zones are converted automatically — nothing to edit.
  • The zone editor in the settings menu was rebuilt: collapsible per-zone cards with Rename, Redraw, Teleport and Remove, and re-editing a zone opens at its stored heights.

Fixed

  • Emptying a list in the settings menu no longer breaks the editor.

Documentation

  • New Police Alerts sections in docs/ADMIN.md, docs/CONFIGURATION.md and docs/FEATURES.md; Placement Zones and the Usage Whitelist documented throughout; docs/TROUBLESHOOTING.md adds "Police alerts never fire" and "Police alerts fire too often".

Migration Guide

  • No SQL to run. Old zone shapes are read automatically and rewritten on your next settings save.
  • Police alerts and the usage whitelist ship disabled/empty — nothing changes until you turn them on in /meth settings.
  • Restart the server once after updating (new files and a rebuilt UI), not just a live resource refresh.

Oxide Weedv1.4.0

Minor

Added

  • Police alerts — planting, harvesting, drying and brick pressing can now tip off police with a configurable chance (wild plants never alert). Ships disabled; enable it in the new Dispatch section of /weed settings (or Config.Dispatch in shared/config.lua). Set one master chance or override per stage, with a per-site cooldown so one grow doesn't spam calls. Works with oxide-dispatch or any dispatch resource o-link supports; with no dispatch resource installed, online officers still get a notification and a map blip. Alerts use the plant or table's real location, and the default message deliberately doesn't name the drug.
  • Placement zone modes — new Config.ZoneMode chooses how placement zones work: blacklist (the previous behavior — block planting and placement inside drawn zones, still the default), whitelist (allow planting and placement only inside drawn zones), or off. The settings menu's Safe Zones section is now Placement Zones, with Zone mode, Blocked areas and Allowed areas. Careful: whitelist mode with no allowed areas drawn blocks placement everywhere — the menu warns you when that's the case.
  • Item usage whitelist — restrict any usable item in the resource (seeds, equipment, watering can, scissors, rolling items, joints and blunts, lamps, heaters, the manual) to specific jobs or gangs, with optional minimum rank and on-duty requirements. Ships empty (nothing restricted); edit it in the new Usage Whitelist section of /weed settings or Config.UsageWhitelist in shared/config.lua.
  • Bystanders now see the work — players at the brick press, drying rack, freeze dryer or crossbreeding station play a working animation that nearby players can see, instead of standing frozen (Config.SceneAnims in shared/config.lua; each animation can be turned off).
  • Item browser in the settings menu — item fields (yields, store stock, seeds, recipes and more) now have a browse button that opens a searchable catalog of your framework's items, with icons, instead of typing item names by hand.

Changed

  • Wild plant zones and placement zones now store a named vertical band (minZ/maxZ) instead of a thickness value. Old config files and previously saved zones are converted automatically — nothing to edit.
  • The zone editor in the settings menu was rebuilt: collapsible per-zone cards with Rename, Redraw, Teleport and Remove, and re-editing a zone opens at its stored heights.

Fixed

  • Placing the store or scientist NPC with the settings menu's Place button stored the position too low, sinking the NPC into the ground — placed NPCs now stand at the right height.
  • Emptying a list in the settings menu no longer breaks the editor.

Documentation

  • New Police Alerts sections in docs/ADMIN.md, docs/CONFIGURATION.md and docs/FEATURES.md; Placement Zones and the Usage Whitelist documented throughout; docs/TROUBLESHOOTING.md adds "Nothing can be planted or placed anywhere", "A player can't use an item they're holding", "Police alerts never fire" and "Police alerts fire too often". Spanish locale updated alongside English.

Migration Guide

  • No SQL to run. Old zone shapes are read automatically and rewritten on your next settings save.
  • Police alerts and the usage whitelist ship disabled/empty — nothing changes until you turn them on in /weed settings.
  • Restart the server once after updating (new files and a rebuilt UI), not just a live resource refresh.

Oxide Cocainev1.2.0

Minor

Added

  • Police alerts — stomping, cooking, brick pressing and packaging can now tip off police with a configurable chance. Ships disabled; enable it in the new Dispatch section of /cocaine settings (or Config.Dispatch in shared/config.lua). Set one master chance or override per stage, with a per-site cooldown so one lab doesn't spam calls. Works with oxide-dispatch or any dispatch resource o-link supports; with no dispatch resource installed, online officers still get a notification and a map blip. Alerts use the station's real location, and the default message deliberately doesn't name the drug.
  • Placement zone modes — new Config.ZoneMode chooses how placement zones work: blacklist (the previous behavior — block placement inside drawn zones, still the default), whitelist (allow placement only inside drawn zones), or off. The settings menu's Safe Zones section is now Placement Zones, with Zone mode, Blocked areas and Allowed areas. Careful: whitelist mode with no allowed areas drawn blocks placement everywhere — the menu warns you when that's the case.
  • Item usage whitelist — restrict any usable item in the resource (station kits, bagged product, crack, the manual) to specific jobs or gangs, with optional minimum rank and on-duty requirements. Ships empty (nothing restricted); edit it in the new Usage Whitelist section of /cocaine settings or Config.UsageWhitelist in shared/config.lua.
  • Bystanders now see the work — other players watching a stomp now see the leaf pile change and the alkali/water pours, a running brick press animates for everyone nearby, and players at the stove or packaging table play a working animation instead of standing frozen (Config.SceneAnims in shared/config.lua; each animation can be turned off).
  • Item browser in the settings menu — item fields now have a browse button that opens a searchable catalog of your framework's items, with icons, instead of typing item names by hand.

Changed

  • Wild coca zones now store a named vertical band (minZ/maxZ) instead of a thickness value. Old config files and previously saved zones are converted automatically — nothing to edit.
  • The zone editor in the settings menu was rebuilt: collapsible per-zone cards with Rename, Redraw, Teleport and Remove, and re-editing a zone opens at its stored heights.

Fixed

  • Emptying a list in the settings menu no longer breaks the editor.

Documentation

  • New Police Alerts sections in docs/ADMIN.md, docs/CONFIGURATION.md and docs/FEATURES.md; Placement Zones and the Usage Whitelist documented throughout; docs/TROUBLESHOOTING.md adds "Police alerts never fire" and "Police alerts fire too often".

Migration Guide

  • No SQL to run. Old zone shapes are read automatically and rewritten on your next settings save.
  • Police alerts and the usage whitelist ship disabled/empty — nothing changes until you turn them on in /cocaine settings.
  • Restart the server once after updating (new files and a rebuilt UI), not just a live resource refresh.

Oxide Blackmarketv1.7.0

Minor

Added

  • Reserve a tier for certain jobs or gangs - every reputation tier now has an optional job list and gang list (Config.Tiers), so part of a dealer's stock can be sold only to the groups you name. Reputation is still required; the lists are an extra condition on top of it.
  • Filling both lists lets in anyone holding a listed job or a listed gang. Leaving both empty (the default) keeps a tier open to everyone, so existing setups are unchanged.
  • Restricting one tier hides only that tier's items - the tiers above it stay available to players who qualify for them.
  • Both lists are editable live in /blackmarket settings under Reputation (Advanced tab) - changes apply the next time a player opens a dealer, no restart needed.
  • Gang lists have no effect on ESX, which has no gang system - use the job list there instead.

Fixed

  • Emptying a list in the settings menu no longer breaks it - after clearing every entry from a list and saving, reopening the menu left that list unable to accept new entries until a restart. This affected text lists (such as the police job list) and placed-point lists (dealer spawn points, arrest drop-offs) - on the latter it also blocked placing new points back in the world.

Oxide Dispatchv1.4.0

Minor

Added

  • The AI radio dispatcher can now run in languages other than English. A new Config.AIDispatch.Chained.STT.Language setting in shared/config/ai_dispatch.lua tells the speech-to-text stage which language your officers speak over the radio — set it to a two-letter code like 'es' (Spanish), 'fr' (French), 'de' (German), 'pt' (Portuguese), or 'ja' (Japanese); roughly 57 languages are supported. To make the dispatcher reply in your language, also translate the system prompt in shared/config/ai_dispatch_prompt.lua (or add an instruction like "Always respond in Spanish"). The reply voice needs no configuration — it speaks whatever language the AI's reply is written in. A full walkthrough lives in the new "Language support" section of docs/AI_DISPATCH.md.

Notes

  • Existing servers can update in place — no SQL changes required for the 1.4.0 release.
  • Config.AIDispatch.Chained.STT.Language only applies to chained mode — Realtime mode detects the spoken language automatically and needs no setting.
  • The new setting won't exist in your current shared/config/ai_dispatch.lua. Leaving it out keeps current behavior — the dispatcher listens for English exactly as before.

Oxide Methv1.3.0

Minor

Added

  • Live in-game settings editor — /meth settings — every setting now lives in the database and is editable in-game by admins. Changes save instantly and apply to all players live, with no restart. Values are checked before saving and bad ones are rejected with a reason. Sections cover everything: general, safe zones, equipment, items & stages, cooking, drying, breaking, bagging, additives, variants & purity, progression, usage & effects, gas mask & fumes, and animations. Edited equipment props respawn live; equipment mid-minigame is left alone and updates when the player finishes.
  • Safe zones drawn in-world with a fly-around polygon tool. Requires an up-to-date o-link; the menu tells you if yours is too old.
  • New server exports GetSetting(key) and SetSetting(key, value) for other resources — see docs/EXPORTS.md.
  • All database tables are now created automatically on first start — fresh installs no longer run any SQL. sql/install.sql stays in the download for reference.

Changed

  • Config files are now factory defaults. On the first start after updating, everything in shared/config.lua and shared/config/*.lua — including your customizations — is imported into the database automatically. From then on the database is the source of truth: editing the config files does nothing on an existing install. The files still seed fresh installs, supply defaults for settings added by future updates, and back the per-setting "Reset to default" button.
  • Commands renamed to /meth <subcommand> — /methstats → /meth stats, /methkit → /meth kit, /meth_sellkit → /meth sellkit, /setmethlvl → /meth setlevel, plus the new /meth settings. The old names no longer exist. Typing /meth alone lists the subcommands, and feedback messages are now localized.
  • Shrinking the drying tray capacity in settings is blocked while a higher tray slot is in use, so nobody's drying meth can be orphaned.

Documentation

  • All docs rewritten around the settings editor: docs/CONFIGURATION.md explains the database-backed model and how to reset to defaults, docs/INSTALLATION.md drops the SQL step, docs/ADMIN.md walks through the editor and safe-zone drawing, docs/TROUBLESHOOTING.md covers "I changed a setting in config.lua and nothing happened" and "the settings panel won't open", and docs/EXPORTS.md documents the new exports.

Migration Guide

  • No SQL to run. On the first start after updating, the oxide_settings table is created automatically and your existing config values — customizations included — are imported into it.
  • From then on, change settings with /meth settings in-game; config file edits no longer apply on an existing install.
  • Update o-link to the latest version to enable in-world safe-zone drawing. Everything else works on an older o-link; the menu just shows a notice.

Oxide Weedv1.3.0

Minor

Added

  • Live in-game settings editor — /weed settings — every setting now lives in the database and is editable in-game by admins. Changes save instantly and apply to all players live, with no restart. Values are checked before saving and bad ones are rejected with a reason. 17 sections cover everything: general, dirty money, plant care, plants, strains, genetics, progression, equipment, drying, drying rack, freeze dryer, store, scientist, wild plants, safe zones, lamps and smoking. Editing the store or scientist moves the NPC on the spot; editing wild plants regrows them against the new zones.
  • In-world editing — wild plant zones and safe zones are drawn with a fly-around polygon tool, and coordinate settings get a Place button. Requires an up-to-date o-link; the menu tells you if yours is too old.
  • New server exports GetSetting(key) and SetSetting(key, value) for other resources — see docs/EXPORTS.md.
  • All 8 database tables are now created automatically on first start — fresh installs no longer run any SQL. sql/install.sql stays in the download for reference.

Changed

  • Config files are now factory defaults. On the first start after updating, everything in shared/config.lua and shared/config/*.lua — including your customizations — is imported into the database automatically. From then on the database is the source of truth: editing the config files does nothing on an existing install. The files still seed fresh installs, supply defaults for settings added by future updates, and back the per-setting "Reset to default" button.
  • All commands renamed to /weed <subcommand> — /weedstats → /weed stats, /weed_kit → /weed kit, /weed_seeds → /weed seeds, /weed_givebuds → /weed givebuds, /weed_grow → /weed grow, /weed_water → /weed water, /weed_dry → /weed dry, /weed_fasttick → /weed fasttick, /weed_setxp → /weed setxp, /weed_info → /weed info, /weed_sellkit → /weed sellkit, /weed_clearplants → /weed clearplants, /weed_clearlamps → /weed clearlamps, /weed_clearequipment → /weed clearequipment, plus the new /weed settings. The old names no longer exist. Typing /weed alone lists the subcommands.
  • Admin subcommands run in-game only; running one from the server console now prints a message instead of silently doing nothing.
  • Command feedback messages are now localized (English and Spanish included).
  • The /weed fasttick testing speed-up is command-only and can never be accidentally saved as a permanent setting.

Documentation

  • All docs rewritten around the settings editor: docs/CONFIGURATION.md explains the database-backed model and how to reset everything to defaults, docs/INSTALLATION.md drops the SQL step, docs/ADMIN.md documents the /weed command and the editor, and docs/TROUBLESHOOTING.md covers "I edited a config file and nothing changed" and "the settings menu won't open".

Migration Guide

  • No SQL to run. On the first start after updating, the oxide_settings table is created automatically and your existing config values — customizations included — are imported into it.
  • From then on, change settings with /weed settings in-game; config file edits no longer apply on an existing install.
  • Update o-link to the latest version to enable the in-world Place and zone-drawing buttons. Everything else works on an older o-link; the menu just shows a notice.

Oxide Cocainev1.1.0

Minor

Added

  • Live in-game settings editor — /cocaine settings — every setting now lives in the database and is editable in-game by admins. Changes save instantly and apply to all players live, with no restart. Values are checked before saving and bad ones are rejected with a reason. 12 sections cover everything: recipes and amounts, minigame tuning (stomp, cook temperature game, bagging, brick press), cutting agents, extractor timers, wild coca zones and yields, progression, usage effects, station props, safe zones and world labels. Edited stations respawn for everyone live, waiting for any in-progress minigame to finish first; edited wild coca zones regrow the bushes on the spot.
  • Zones drawn in-world — wild coca spawn zones and no-placement zones use a fly-around polygon tool, with a Teleport button on every zone row. Requires an up-to-date o-link; the menu tells you if yours is too old.
  • New server exports GetSetting(key) and SetSetting(key, value) for other resources — see docs/EXPORTS.md.
  • All 5 database tables are now created automatically on first start — fresh installs no longer run any SQL. sql/install.sql stays in the download for reference.

Changed

  • Config files are now factory defaults. On the first start after updating, everything in shared/config.lua and shared/config/*.lua — including your customizations — is imported into the database automatically. From then on the database is the source of truth: editing the config files does nothing on an existing install. The files still seed fresh installs, supply defaults for settings added by future updates, and back the per-setting "Reset to default" button.
  • Commands renamed to /cocaine <subcommand> — /cokestats → /cocaine stats, /cokekit → /cocaine kit, /setcokelvl → /cocaine setlevel, plus the new /cocaine settings. The old names no longer exist. Typing /cocaine alone lists the subcommands.
  • Admin command messages are now localized via locales/en.json (they were hardcoded English).
  • The settings menu refuses to open while you're mid-stomp, mid-cook or mid-bagging, so a station is never changed out from under you.

Documentation

  • All docs rewritten around the settings editor: docs/CONFIGURATION.md explains the database-backed model and reorganizes every setting by menu section, docs/INSTALLATION.md drops the SQL step, docs/ADMIN.md documents the /cocaine command and the editor, docs/TROUBLESHOOTING.md covers "I changed a setting in a config file and nothing happened" and "the settings menu won't open", and docs/EXPORTS.md documents the new exports.

Migration Guide

  • No SQL to run. On the first start after updating, the oxide_settings table is created automatically and your existing config values — customizations included — are imported into it.
  • From then on, change settings with /cocaine settings in-game; config file edits no longer apply on an existing install.
  • Update o-link to the latest version to enable in-world zone drawing. Everything else works on an older o-link; the menu just shows a notice.
  • A full restart of the resource is required once after updating (new files and a rebuilt UI), not just a live refresh.

Oxide Policev1.5.0

Minor

Added

  • Disabled fleet vehicle groups can now be re-enabled or permanently deleted. In the admin panel's Vehicles screen, disabling a group no longer removes it from the list — it stays dimmed with a "Disabled" badge. Admins can re-enable it, or permanently delete it, which removes every unit from the database and despawns any of that group's vehicles still in the world. Deletion is blocked while any unit is checked out.

Changed

  • The trash button on a vehicle group is now an explicit "Disable". The confirmation dialog explains the group stays in the list and can be re-enabled or deleted forever, replacing the old "This action cannot be undone." wording.
  • The duty toggle moved into the police radial menu. When Config.RequireStationClockIn is off, going on or off duty is now the first item in the police actions menu (default key Config.ActionMenuKey = 'F2') instead of a separate radial entry, and the menu is now titled "Police". Off-duty officers can open the menu to clock in; all other actions still require being on duty.

Notes

  • No database changes — existing servers update in place.

Oxide Roadside Assistancev1.2.0

Minor

Added

  • Flatbed towing mode: Config.Vehicle.mode in shared/config/vehicles.lua selects 'flatbed' (new default) or 'towtruck'. The flatbed is a custom streamed truck with an animated tilting bed and a hands-on winch — lower the bed, carry the hook to the stranded car, attach it, winch it aboard, raise the bed and deliver
  • Flatbed geometry, winch and timing options in the new shared/config/flatbed.lua
  • In-game settings editor: /roadside settings (admin only) opens a live editor covering nearly every option — payments, levels, calls, vehicles, tow yards, breakdown scenes, NPCs, uniforms and more. Changes save to the database, apply immediately for everyone, and every setting can be reset to its config-file default. Coordinates can be placed in-world with a ghost preview (requires an updated o-link)
  • Config.Calls.enabledJobTypes in shared/config/job.lua — restrict dispatch calls to specific job types (fuel, wheel, towing, battery)
  • Config.Calls.deliveredVehicleDespawn — delivered vehicles now fade out smoothly after a configurable delay instead of vanishing
  • Config.StrandedMarker — the stranded-vehicle indicator is now a name card shown while holding H nearby, replacing the always-on floating marker
  • A flatbed-specific tutorial card for the first towing job in flatbed mode
  • THIRDPARTY-LICENSES.md crediting the MIT-licensed flatbed model

Changed

  • Settings now live in the database: on first boot the resource imports your current config values into a new oxide_settings table, which becomes the source of truth from then on. Editing config files afterward only supplies defaults for brand-new options — use /roadside settings for everything else
  • /roadsidetutorials and /roadsidetutorialreset are now /roadside tutorials and /roadside tutorialreset
  • The /roadsidebuilder command and its admin.roadsidejob permission were removed — tow yards and breakdown scenes are now edited live in /roadside settings
  • The work truck is now managed by the server: it survives a crew member crashing or disconnecting, transfers to the crew partner, and is reliably cleaned up on clock-out, respawn, disconnect and resource restart

Fixed

  • Complaint suspension timers could be misread when loaded from the database on newer database library versions; they now count down correctly
  • Job-completion rejections (rate limited, not on shift, too far away) now show an error notification instead of failing silently

Documentation

  • All docs rewritten: new Settings Editor guide in docs/ADMIN.md, new Flatbed, Winch and Stranded Vehicle Marker sections in docs/CONFIGURATION.md, builder sections removed

Migration Guide

  • No SQL to run: the new oxide_settings table is created automatically at boot (sql/install.sql was updated for fresh installs), and your existing customized config values are imported as the starting settings
  • Flatbed mode is the new default. To keep the classic tow truck, set Config.Vehicle.mode = 'towtruck' in shared/config/vehicles.lua before your first boot on this version, or change it afterward in /roadside settings

Oxide Pizza Jobv1.1.0

Minor

Added

  • Per-level vehicle liveries and extras: each level in shared/config/levels.lua now supports vehicleLivery and vehicleExtras for the company vehicle
  • Payment routing options in shared/config/job.lua: payoutAccount, tipAccount and fineAccount choose which account (bank or cash) shift payouts, tips and fines use — defaults match the old behavior
  • Config, locale and SQL files are now viewable in escrowed builds
  • The delivery waypoint distance text and keybind label are now translatable (nui.dist_km, nui.dist_m, keymap.show_waypoint in locales/en.json)

Changed

  • The welcome email now arrives with your first order batch and names your first delivery destination (translators: email.welcome gained a %s placeholder)
  • The vehicle-destruction fine can no longer take more money than the player has; notifications now report the amount actually charged
  • Builder commands (/pizzacreate, /pizzavehicle, /pizzadeliv, /pizzaexport, /pizzacancel) now use the standard admin permission — the old admin.pizzajob permission is no longer needed
  • Stronger server-side checks against spoofed delivery completions and fake vehicle-destroyed reports

Fixed

  • Complaint suspension timers could be misread after a server restart on newer database library versions; they now count down correctly
  • Exiting a vehicle while carrying a pizza now correctly restores the Store Pizza prompt and re-blocks vehicle entry until stored
  • Restarting the resource mid-session now reliably restores the pizzeria NPC

Oxide Blackmarketv1.6.0

Minor

Added

  • Multiple dealers at once - the map now hosts several dealers at the same time (3 by default, Config.DealerCount). Each dealer has his own spot, his own stock, and moves on his own timer, so buying one dealer out doesn't empty the others.
  • In-game settings menu - /blackmarket settings (admin only) opens a full settings editor: change almost any setting live, add or move dealer spawn points and arrest drop-offs by placing them in the world, and edit the buy/sell catalogs with a searchable item picker. Changes save to the database and apply immediately - no restart needed.
  • Settings stored in the database - configuration now lives in a shared oxide_settings table (created automatically on first start; sql/install.sql is included for manual setups). shared/config.lua and shared/items.lua are now the factory defaults: they are imported on the first start and fill in new settings after updates. Set them up before your first start, then manage settings in-game or in the database.
  • Living economy:
    • Sell prices react to supply - flooding the market with an item drops its sell price for everyone, and the price recovers over time (Config.Market).
    • Dealers restock toward their maximum stock on a timer (Config.RestockEnabled, Config.RestockInterval, Config.RestockPercent).
    • Optional per-player daily sell caps to curb money printing (Config.DailySellCap, off by default).
  • Optional oxide-police integration - with Config.ArrestPoliceIntegration = true, the department cut from an arrest is paid into the arresting officer's real oxide-police department treasury. Everything works without oxide-police installed.
  • Shop categories and search - the buy and sell lists are grouped under category headings and have a search box. Every entry in shared/items.lua now has a category field.
  • Startup catalog check - on start the resource checks every item name in your buy/sell catalogs (and your dirty-money item) against your inventory system and warns about any name it doesn't recognize, so typos surface immediately instead of failing silently at the counter.

Changed

  • Arresting a dealer is now a transport job - instead of an instant arrest, the officer cuffs the surrendered dealer, escorts him on foot, loads him into a vehicle, and drives him to a drop-off point (Config.ArrestDropOffs) to collect the reward. The dealer breaks free if the officer wanders off (Config.EscortBreakFreeDistance) or the transport takes too long (Config.EscortMaxDuration). Who gets paid on delivery is configurable (Config.ArrestRewardRecipient: officer, society, or both).
  • Pager intel reworked - the reply now covers the nearest dealer and arrives as an anonymous phone email whose precision scales with reputation (Config.PagerIntel): general area at Tier 2, street and district at Tier 3, street plus a GPS waypoint at Tier 4. The player plays a texting animation with a progress bar while waiting, and the reply delay is configurable (Config.PagerResponseDelay).
  • Admin commands consolidated - the old commands are replaced by /blackmarket subcommands: /blackmarket relocate (moves all dealers), /blackmarket status, /blackmarket goto (teleports to the nearest dealer), /blackmarket setrep, /blackmarket checkrep, and the new /blackmarket settings.
  • Shop UI rebuilt with a new look - same buy/sell flow as before.
  • A surrendered dealer now waits 15 seconds (was 10) before trying to break free, and no longer tries once he's been cuffed.
  • New required dependency: oxmysql - add ensure oxmysql before this resource.

Removed

  • /relocatedealer, /dealerstatus, /godealer, /setblackmarketrep, /checkblackmarketrep - replaced by the /blackmarket subcommands above. Update any admin macros or documentation that used the old names.

Oxide Policev1.4.0

Minor

Added

  • Firearm registration desk. Civilians can register the guns they carry at a station for a small fee, which is paid into the department's funds. Only legal, serial-numbered guns that haven't been registered before can be registered — illegal guns can't. You add these desks from the admin menu, under a station's services.
  • Weapon registry and a new Weapons tab in the MDT. Every registered gun is tracked by its serial number, so officers always have a record of who it belongs to — even after the gun is sold or destroyed. Officers can search by serial number or owner name and mark a gun as stolen, seized, or revoked. The registry fills up on its own from the registration desk and from guns booked into evidence.
  • More than one of each point per station. Clock-in, armory, boss menu, evidence locker, evidence lab, and personal locker can each be placed more than once at the same station.
  • Prisoner sentence commands. /addtime adds or removes time from a prisoner's sentence, and /setsentence sets it to a specific length. Both work even when the prisoner is offline, and release the prisoner if the time reaches zero. Usable by admins, or by officers of a high enough rank.
  • New developer exports for the weapon registry, for third-party integrations. See docs/EXPORTS.md.

Changed

  • Evidence lockers now work per case. Each case has its own evidence locker instead of one shared locker per station. Officers pick a case before opening, processing, or logging evidence.
  • Officers go on and off duty at a station by default. The duty command and shortcut are turned off in favor of clocking in at a station. You can switch this back if you prefer (see Notes).
  • Automatic hiring from job changes. Setting a player's job to one of your departments now hires them, transfers them, or updates their rank automatically. Switching a player to a different, unrelated job no longer removes them as an officer, so multi-job setups work cleanly.
  • Per-action duty rules. Each officer interaction can now be set to require being on duty, or not, on its own. This lets you allow certain actions (such as restraining with zip-ties) for off-duty or civilian players while keeping the rest for on-duty officers.
  • Impounding unowned vehicles. If you allow impounding vehicles that nobody owns, they are now simply removed instead of causing an error.

Fixed

  • Evidence screen title. The top of the evidence screen showed placeholder text instead of a proper title.
  • Dispatch alerts. Alerts on the MDT dispatch screen no longer flicker while the list refreshes.

Database

  • When upgrading, run the new file in sql/migrations/ (004_weapon_registry.sql). It adds the weapon registry and the firearm registration desk. Fresh installs already include it. Run it once.

Notes

  • Important — existing evidence. Because evidence lockers now work per case, anything left in the old per-station lockers will no longer be reachable in game after updating. The items are not deleted, but there is no automatic move and no in-game way to reach them. If you have evidence stored at stations, take it out before updating.
  • These updates add a few new settings. If you use customized config files, review the additions below — fresh installs already include them.
  • Station-only duty is now on by default in shared/config.lua. To let officers toggle duty from anywhere instead, set:
    Config.RequireStationClockIn = false
    
  • Add the firearm registration settings in shared/config/field_actions.lua, in the station services section:
    firearmRegistrationEnabled = true,
    firearmRegistrationFee = 250, -- taken per gun, paid into the department's funds
    

Oxide Dispatchv1.3.0

Minor

Added

  • AI dispatch MDT tools now also work with wasabi_mdt and lb-tablet — auto-detected when installed (joining the existing oxide-police and ps-mdt support).
  • The AI dispatcher now speaks a quick acknowledgement ("Running that plate", "Pulling those records") the instant it starts a lookup, so there's no dead air on the radio while it works. Phrases are fully customizable in shared/config/ai_dispatch_acks.lua.
  • AI dispatcher audio now sounds like it's coming over a real comms radio — radio filter, light static, and mic-open / squelch effects around each transmission. Tune it (or turn it off) under Config.AIDispatch.RadioFX.
  • Per-detector cooldowns — give each auto-detection (shooting, drive-by, melee, explosion, vehicle theft) its own cooldown via Config.Detection.cooldownsMs, instead of one shared timer for all of them.
  • Detection chance — every detector now accepts a chance value (0.0–1.0) controlling how often a qualifying event actually creates an alert, so auto-detection can feel less constant.
  • Server-side duplicate suppression — repeated identical auto-detect alerts from the same person within a short window are now dropped automatically, even if a cheating client bypasses the normal cooldown. Configurable via Config.Detection.ServerDedup.

Changed

  • The AI dispatcher now sounds much more like a real human dispatcher and less like a chatbot — assistant-style phrasing ("I'll go ahead and…", "Is there anything else?", etc.) has been removed.
  • Melee auto-detection is more accurate — it no longer fires on air punches or missed swings; an actual hit on a target is now required.

Notes

  • Existing servers can update in place — no SQL changes required for the 1.3.0 release.
  • All new settings ship enabled with sensible defaults — no action is needed unless you want to customize them.

Oxide Blackmarketv1.5.0

Minor

Fixed

  • Dealer not interactable for players who joined or teleported in late - players outside scope when the dealer spawned or relocated couldn't open the trade menu. The dealer is now identified consistently for every player who reaches them.
  • Dealer not wandering after spawn - the dealer would freeze in place until interacted with. They now begin wandering as soon as someone is nearby.
  • One-shot kills not registering - a single fatal hit on the dealer sometimes failed to trigger death detection (no loot, no hit squad, body left on the ground). All death types are now detected reliably.
  • Hit squad never arriving - the retaliation squad would spawn and sit there. They now actually drive to the player and engage.
  • Hit squad spawning on top of the player - spawn distance is now consistent regardless of where the dealer dies.
  • Hit squad teleporting members into the driver seat mid-firefight - killing the driver during on-foot combat no longer warps another member into the car. Driver swaps only happen when the squad actually needs to drive.

Added

  • Config.HitSquadMaxChaseDuration - releases the squad after this many ms in vehicle mode without reaching the player (safety net for bad pathing). Defaults to 90000.

Changed

  • Config.HitSquadDriveSpeed default lowered from 80.0 to 30.0 (m/s). The old default was ~180 mph and caused the AI to constantly lose control on corners.
  • Config.HitSquadSpawnDistMin / HitSquadSpawnDistMax defaults lowered from 350 / 450 to 200 / 300. Closer spawns reliably trigger chase behavior.

Oxide Dispatchv1.2.0

Minor

Added

  • AI dispatch MDT tools now also work with ps-mdt — auto-detected when installed.
  • Bring-your-own MDT support: drop a small bridge file in server/modules/ai_dispatch/mdt/ to wire any other MDT into the AI dispatch tools. See docs/MDT_BRIDGE_DEV.md.
  • New config block Config.AIDispatch.Integrations.Mdt — list of MDT backends in priority order.

Changed

  • Config.AIDispatch.Integrations.OxidePolice replaced by Integrations.Mdt. oxide-police is enabled by default in the new list, so no action is needed unless you customized the old flag.

Oxide Policev1.3.0

Minor

Added

  • Vehicle extras editor in the admin panel. Admin → Vehicles now has an extras editor alongside the existing livery field. Force individual extras on or off per fleet vehicle — useful for hiding player-business liveries or decals on custom replacement models.
  • Duty toggle from anywhere. The /duty command is now available to all hired officers (no longer debug-only) and a global radial menu shortcut is added when on the force. Officers can clock in / out without visiting a station's clock-in zone.
  • New MDT server exports for third-party integrations: CreateBolo, GetActiveBolos, ClearBolo, SearchPerson, GetPersonProfile, SearchVehicle. See docs/EXPORTS.md.

Fixed

  • Officers were being auto-fired when external multi-job scripts swapped their active job between names. Officer records are now only cleared when the framework job is explicitly set to unemployed.

Oxide Dispatchv1.1.0

Minor

Added

  • Optional AI Radio Dispatcher — assign one OpenAI-backed dispatcher per department radio channel; officers press PTT and the AI listens, replies verbally, and files dispatch alerts on their behalf. Off by default; switches on once you set set oxide:ai-dispatch:openai_key sk-... in server.cfg.
  • Two AI provider modes selectable per channel: Realtime (sub-second voice, premium pricing) and Chained (~2s voice, much lower per-transmission cost).
  • AI MDT toolset on police channels when oxide-police is installed — plate lookup, person lookup, dossier, BOLO create/list/clear, custody check, on-duty officer list.
  • Per-channel and global identifier whitelist for restricting AI dispatch access on top of normal radio access.
  • New EMS dispatch codes: 10-53 Person Down, 10-54 Cardiac Arrest, 10-56 Trauma / Injury, 10-58 Overdose.
  • New fire / hazmat dispatch codes: 10-73 Vehicle Fire, 10-74 Brush / Wildfire, 10-75 Hazmat Incident, 10-76 Rescue / Extrication.
  • Compatibility shims for legacy EMS alert flows on QBCore, QBX, and ESX so existing ambulance scripts now reach Oxide Dispatch automatically.
  • New documentation file docs/AI_DISPATCH.md covering AI setup, cost estimates, voice options, and the privacy notice you must show to players.

Changed

  • Renamed 10-70 from "Fire" to "Structure Fire" to match the new fire code family.
  • AI dispatch channel defaults: ships with 911 = LSPD, 921 = EMS, 931 = Fire enabled. BCSO / SASP entries shipped commented out.

Notes

  • Existing servers can update in place — no SQL changes required for the 1.1.0 release.
  • If you used the old 10-70 "Fire" code in custom scripts, the code itself is unchanged; only the catalog title is now "Structure Fire".

Oxide Policev1.2.0

Minor

Added

  • License management in the MDT. Officers can grant and revoke driver, weapons, business, pilot, and boating licenses from a person's profile. License types are configurable in shared/config/licenses.lua.
  • /cuff and /uncuff commands for on-duty officers to cuff or uncuff the nearest player.
  • Officer target menu. On-duty officers get cuff, search, and escort options when targeting another player through your server's target system. Toggle and tweak distance/actions in shared/config/interactions.lua (Config.OfficerTargetMenu).
  • Tablet animation while using bodycam, CCTV, and the MDT — officers visibly hold a tablet instead of standing idle. Toggle per feature in shared/config/bodycam.lua, shared/config/cctv.lua, and shared/config/mdt.lua.

Changed

  • Fleet vehicles now spawn client-side for smoother sync and fewer race conditions on plate/key assignment.

Database

  • Run sql/migrations/003_random_plates.sql to upgrade existing installations. Rewrites old PREFIX-### fleet plates to random 8-character alphanumeric plates so plate-keyed key systems work correctly (GTA's plate font has no dash glyph).

Oxide Policev1.1.0

Minor

Added

  • Video Storage tab in the MDT (replaces the Bodycam tab). Now stores bodycam clips and bait car dashcam recordings together, with a source filter for switching between them. Search now matches by name, plate, or recorder.
  • Bait car integration — dashcam clips captured by oxide-baitcar are uploaded to the same library and visible to officers in the MDT.
  • Citizen email notifications for traffic enforcement. Speed camera violations and manually issued citations now email the offender's in-game inbox with the invoice number and amount. Toggle per type in shared/config.lua (Config.CitizenEmail).
  • Hidden characters in the MDT. Admins can hide specific character IDs from MDT search, profiles, and vehicle owner lookups. Optional rank-based bypass lets senior officers still see hidden records. Configure in shared/config/mdt.lua (Config.MDT.hidden).
  • Offline jail time reduction. When enabled, sentences continue counting down for offline players and records auto-release when the timer expires. Configure in shared/config/custody.lua (Config.Custody.ReduceOfflineTime, Config.Custody.SecondsPerMonth).
  • Admin /jail and /unjail commands for placing or releasing a player by ID with permission checks and notifications.

Database

  • Run sql/migrations/001_video_storage.sql to upgrade existing installations. Adds source and metadata columns to police_bodycam_recordings so the table can hold both bodycam and bait car clips.

Oxide Vendingv1.5.0

Minor

Changed

  • Updated all progress bar calls to use the new o-link API format (disable, anim, flag instead of disableControls, animation, flags)
  • Added thread yields (Wait(0)) between each data loading step during startup to prevent server hitches on resource start
  • Placement system rewritten to match the standard used by other oxide resources: camera raycast preview with a green/red validity outline, scroll wheel to rotate, E to place, Backspace to cancel, and olink.helptext for on-screen controls. Replaces the two-stage "follow the player" flow.
  • Migrated from community_bridge to o-link — All framework abstraction now uses o-link instead of community_bridge. Dependencies updated to oxmysql, ox_lib, and `o-link
  • NUI locale loader refactored to match the canonical pattern used by oxide-weed / oxide-meth / oxide-drugselling / oxide-weaponprinting. The frontend now fetches locales/{lang}.json dynamically from the NUI side via a new getLocale client callback (returning the ox:locale convar), with automatic English fallback. Replaces the previous Lua-push pattern (SendNUIMessage({action='setLocales', ...})) which filtered and sent nui.* keys at startup. The t() helper now supports both %s and %d positional formatting

Removed

  • Config.Placement.FollowOffset and Config.Placement.RotationSensitivity (no longer used by the new placement system)
  • Unused placement.lock_position, placement.rotate_place, and notify.placement_started locale keys (replaced by placement.controls)
  • Unused DrawText3D helper from client/utils.lua