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 51–75 of 301 releases

Oxide Roadside Assistancev1.7.0

Minor

Added

  • Works with Oxide HUD (free): job timer, incoming call card and tutorial pop-ups, placed in the /hud editor (needs o-link 1.12.1 or newer). A switched-off call card still rings.
  • Config.UseHudAccent (shared/config.lua, default on), config file only.
  • Fastest believable trip (Config.Calls.maxTravelSpeed, 50 m/s) in /roadside settings → Calls & Dispatch.
  • The Tow delivery point can be cleared in /roadside settings (the × button). Towed cars then go to each worker's own tow yard. Reset to default brings the point back.

Changed

  • Owed pay after a disconnect, logout or character switch is paid at the next login, once only. Logging out now ends the shift, and a crew partner keeps the truck and the call.
  • Each crew member is paid from their own record of the shift (own level, tips and streak, co-op bonus on own pay). The Oxide Phone Gigs app shows each partner's own pay.
  • Shifts that end without a clock-out send the text summary in either summary mode, including a restart.
  • Refused admin attempts are logged once per player, per action, per minute.

Fixed

  • A restart pays every player on shift.
  • Editing Tow yards during shifts no longer breaks shifts. Deleting a yard ends and pays its shifts and tells the players.
  • The pop-up summary opens with Config.menuStyle = 'menu'.
  • A payment the framework refuses is kept for the next login.

Oxide Vendingv1.7.0

Minor

Added

  • Business dashboard as an app on Oxide Tablet when it runs; /vdb opens it (Config.Dashboard.UseTablet to turn it off).
  • The business dashboard map covers Cayo Perico. Config.MapMode (combined, separate or disabled; default follows o-link) is used on the first start; change it later with oxide-vending:mapmode <mode> from the console, or as an admin in game.
  • Optional weather effect on NPC sales with Oxide Weather (off by default, config/weather.lua): rain lowers sales, and heat raises drink sales. Edit the file and restart; other scripts can adjust it while the server runs with the SetSetting export.
  • Works with Oxide HUD (free): the machine placement hint can be moved or switched off in /hud and follows the accent (Config.UseHudAccent). Needs o-link 1.12.1 or newer.

Changed

  • The dashboard map now comes from o-link and loads only what is on screen; the resource download is far smaller. Needs o-link 1.8.0 or newer, or the dashboard won't load.
  • The map and its status counts show only machines in the region on screen.
  • Business account deposits and withdrawals take whole dollars only.
  • The placement hint can be translated.

Fixed

  • Business banking: on some frameworks, fractional deposits and withdrawals could create money, and a deposit could credit the business without taking the player's money. A withdrawal the framework refuses now goes back into the business account.
  • The dashboard's wholesale orders and price changes accepted fractional numbers that the menu refuses.
  • Players saw raw text instead of messages for the business account menu, a failed bank deposit and a failed restock.
  • Since 1.4.0, sql/reset.sql rebuilt vending_businesses without the balance column, so business balances weren't saved after a reset. It now matches sql/install.sql. If you ran the old reset.sql, run once: ALTER TABLE vending_businesses ADD COLUMN balance BIGINT NOT NULL DEFAULT 0;
  • Employees without the View balance permission could see the business balance and transactions.

Removed

  • Config.Notifications (never used; you can delete it).
  • The bundled map tiles and an unused 28 MB map image (o-link supplies the map).

Oxide Weedv1.7.0

Minor

Added

  • Works with Oxide HUD (free): the stage header, the controls (key prompts and hose bar), the level-up banner and the XP pop-ups can be moved or switched off in /hud. They share spots with other jobs' cards and hide with the HUD (pause, cinematics, death, character select), as do the gauges and labels over plants. Needs o-link 1.12.1 or newer; without Oxide HUD nothing changes.
  • Config.UseHudAccent (shared/config.lua, default on): the weed HUD takes the Oxide HUD accent instead of green. Config file only.

Changed

  • The SetSetting export refuses UseHudAccent and SceneAnims, which are config-file only.

Fixed

  • Edits to Config.SceneAnims now apply after a restart; a copy saved by an earlier version is ignored.
  • The smoking prompt can be translated (smoke_prompt, Spanish included), and it clears when smoking is cut short by a logout or restart.

Oxide GoPostalv1.6.0

Minor

Added

  • Works with Oxide HUD (free): the delivery card and tutorial cards can be moved or switched off in /hud (needs o-link 1.12.1 or newer).
  • Config.UseHudAccent (shared/config.lua, default on), config file only.
  • Fastest believable trip in /postaljob settings → Payment (Config.Payment.maxTravelSpeed, 50 m/s).

Changed

  • Crew pay: each carrier is paid on their own level and streak, only for the deliveries credited to them.
  • Config.shiftSummary = 'nui' shows the pop-up with either menu style and no longer also sends it to the phone. Shifts that end without a clock-out always get the text summary.
  • Depots can be edited during shifts. Deleting one ends and pays its shifts.
  • The job creates all its database tables itself; nothing to import.
  • Refused admin and builder attempts are logged once per player, per action, per minute.

Fixed

  • Pay is no longer lost on a disconnect, logout or character switch; it is paid at the next login. Going down still forfeits it.
  • A restart pays every shift, and one slow payment no longer leaves the rest unpaid.
  • A leaving crew leader's deliveries were paid twice.
  • A depot added only in the settings menu threw a server error on a package round. It now tells the player it has no parcel routes yet and warns in the console, naming the depot.
  • /postalbuilder Import Config and Export All now keep each depot's menu camera.
  • Saving depots during shifts reset the slot counts.
  • A payment the framework refuses is kept for the next login.

Oxide Pizza Jobv1.6.0

Minor

Added

  • Works with Oxide HUD (free): the delivery timer and tutorial cards can be moved or switched off in /hud (needs o-link 1.12.1 or newer).
  • Config.UseHudAccent (shared/config.lua, default on), config file only.
  • Fastest believable trip in /pizza settings → Payment (Config.Payment.maxTravelSpeed, 50 m/s).

Changed

  • Shops can be edited during shifts. Deleting one ends and pays its shifts.
  • The job creates all its database tables itself; nothing to import.
  • Refused /pizza settings attempts are logged once per player, per action, per minute.

Fixed

  • Pay is no longer lost on a disconnect, logout or character switch; it is paid at the next login. Going down still forfeits it.
  • A restart now pays every running shift. It used to pay nothing.
  • A payment the framework refuses is kept for the next login.
  • /pizzaexport exports every current shop with its menu camera, not only the shops captured since the restart, so pasting it and pressing Reset to default can no longer wipe shops. It also handles names with apostrophes and a missing heading or level.

Oxide Newspaperv1.5.0

Minor

Added

  • Works with Oxide HUD (free): the route card and tutorial cards can be moved or switched off in /hud (needs o-link 1.12.1 or newer).
  • Config.UseHudAccent (shared/config.lua, default on), config file only.
  • Fastest believable trip in /newspaper settings → Payment (Config.Payment.maxTravelSpeed, 50 m/s).

Changed

  • Depots can be edited during shifts. Deleting one ends and pays its shifts.
  • The job creates all its database tables itself; nothing to import.
  • Refused admin and builder attempts are logged once per player, per action, per minute.

Fixed

  • Pay is no longer lost on a disconnect, logout or character switch; it is paid at the next login.
  • A restart now pays every running shift and sends the pay stub. It used to pay nothing.
  • A payment the framework refuses (including at the payout after a hospital respawn) is kept for the next login.
  • Running out of papers showed the raw text error.out_of_ammo; it now shows a proper message.

Oxide EMSv1.2.0

Minor

Added

  • Vehicle types Bike, Quad and Plane, alongside Car, Boat and Helicopter. Set each catalog entry's type in /ems settings → Fleet, and each vehicle's type in /ems admin → Fleet. The Fleet screen now has a Type dropdown and marks groups whose vehicles have mixed types.
  • /ems writeoff <plate> (admins and the server console) writes off a unit the server can't see lost, for example one sunk in a river or in an add-on map's water.
  • Works with Oxide HUD (free). Players move the downed card and the placement hint in /hud, the HUD editor previews them, and their key badges take the server's accent colour (Config.UseHudAccent in shared/config.lua, default true). Needs o-link 1.12.1 or newer. Without Oxide HUD nothing changes.
  • The database tables are created automatically on first start.

Changed

  • Hires from the management desk are job offers. The player has 60 seconds to accept or decline, and the boss is told the result. /ems hire still hires straight away.
  • A vehicle's type is set by admins only, and every unit spawns as its saved type. The medic's game no longer reports or corrects it. A catalog entry with an unknown type can no longer be bought; before, it silently became a car.
  • Units are written off only from what the server sees: a wrecked engine, body or fuel tank, or the unit sitting in the sea, the Alamo Sea or a reservoir. A driver's report alone no longer writes one off. For anywhere else, use /ems writeoff.
  • Taking a vehicle out means standing within 10 m of the garage's interaction point.
  • Wear Civilian Clothes works only while you're wearing a department uniform.
  • A rank change applies at once to an on-duty medic: garage, vehicle and uniform rank checks, and the next salary.
  • With a banking account, the treasury can no longer go below zero, even if your banking resource allows overdrafts.
  • How long unpaid back pay stays owed now follows the value set in /ems settings, not the config file's.
  • Refused admin and boss actions, payouts and refunds are written to the server log.

Fixed

  • The treasury can no longer be overdrawn by withdrawals, payroll runs or fleet purchases landing at the same moment.
  • Two medics checking out at the same moment can no longer get the same unit or bay. A unit is returned only once, and a wrecked unit can no longer come back as available.
  • Two fleet recoveries at once no longer charge for the same units, and back pay can no longer be paid twice.
  • Two hires at once can no longer put one character in two departments or give two medics the same badge number.
  • On QBCore, Qbox and ESX, pressing an item twice quickly no longer uses it twice; one bandage used to heal twice.
  • Fleet units are recognised from the server's own records. A modified game client could disguise another car as a unit, or wipe a parked unit's health so the server wrote it off.
  • A modified game client can no longer report impossible fuel or health for a unit, or save an oversized vehicle look.
  • A treasury withdrawal the bank refuses goes back into the treasury, and the boss sees "The bank refused the payment. The treasury was refunded." Before, it reported success and the money was lost.
  • Back pay that can't be delivered stays owed and its money goes back to the treasury, instead of being lost.
  • Aiming the admin panel's entity picker at a person no longer risks crashing the game.
  • Medics examining hypothermia or smoke inhalation from oxide-medical see the condition's name instead of a raw text key.

When you update

  • Run sql/migrations/0006_vehicle_types.sql once. Until you do, vehicles an admin added to a boat or helicopter garage that nobody has taken out are still saved as cars. The migration saves them as boats or helicopters, or as planes when the same model already flies as a plane in your fleet. Don't run it twice: a second run would undo an admin's choice of Car in such a garage.

  • Check your fleet types. 1.1.1 had no Bike, Quad or Plane, so look for:

    • motorbikes and quads saved as cars;
    • planes listed as helicopter in the catalog.

    Fix them in /ems settings → Fleet and /ems admin → Fleet.

  • Restart the whole server after updating; new files are added.

  • If you translated locales/en.json, copy in the new keys.

Oxide Medicalv1.2.0

Minor

Added

  • Smoke inhalation. A resource that reports players breathing smoke, such as Oxide Fire, gives them a smoke_inhalation sickness that follows how much they breathed. It starts as a cough, then shortness of breath, then dizziness and weakness, then failing to breathe. From moderate up it costs health, and blood oxygen drops at each stage. It clears in clean air, or at once when a medic treats it. Tune it in the new shared/config/exposure.lua. Without a resource that reports smoke, nothing changes.
  • ReportExposure export for developers whose resources create smoke, also available as olink.medical.ReportExposure with o-link 1.12.1 or newer. See docs/EXPORTS.md.
  • itemimages/ox_inventory_items.lua: paste-ready ox_inventory definitions for the medical items, next to their images.
  • The database tables are created automatically on first start.

Fixed

  • Hypothermia's shivering symptom shows its name instead of a raw text key.
  • The saved hypothermia settings are no longer rewritten in the database on every server start.
  • /med test no longer deletes a real fracture the tested player already had; it removes only the conditions it added.

When you update

  • If you keep your own edited copies of shared/config/sickness.lua and shared/config/vitals.lua, copy the new smoke_inhalation entries into them.
  • There's no database migration in this version.

Glitchv1.0.1

PatchOxide Phone

Fixed

  • Glitch no longer fails to start ("migrations failed", duplicate column) when sql/migrations/0002_characters.sql was imported by hand or an earlier start stopped part-way. The file can run any number of times, and Glitch completes a partial one on its next start.

Changed

  • Installation guide: both migration files are listed, importing them by hand is safe more than once, and the database user also needs permission to change tables.

Oxide Firev1.0.0

Major

First release.

Added

  • A fire department built in game. Grades, salaries, uniforms, gear-room loadouts and a setup checklist per department in /fire admin. Badge numbers are given automatically; bosses edit badges and callsigns from the management desktop. Hire and dismiss with /fire hire and /fire dismiss, or from the boss desktop, where a hire is a job offer the player accepts.
  • Stations with clock-in points, a call board, personal lockers, a gear room and a management desk. Clock in at a clock-in point. /fire duty clocks out anywhere, and clocks in anywhere when Require station clock-in is turned off.
  • Radio channels with oxide-radio. Departments own numbered channels with a rank requirement and an optional duty requirement, set up in /fire admin → Radio. Firefighters are tuned to their department's default channel when they clock in.
  • Persistent apparatus. Engines, ladders, brush units, rescues and chief cars, bought from a catalog, taken out of station bays and kept in the world across restarts. Engines, ladders and brush units carry water, foam and hose outlets, and every unit has an equipment compartment. Each catalog entry has a vehicle type: Car, Bike, Quad, Boat, Helicopter or Plane. The catalog ships an engine (firetruk) and a chief car (lguard). Add your own fire vehicles in /fire settings, and set hose outlet positions for add-on trucks in /fire admin → Models.
  • Synced fires that every player sees the same way, with Casual, Standard and Realistic difficulty. On Standard and Realistic, smouldering hot spots come back unless they are soaked or pulled apart with the axe.
  • Hot spot markers. Each smouldering spot shows burnt ash, embers and a faint glow, steams when it is soaked, and breaks up when it is pulled apart with the axe. Change it or turn it off in Config.Fire.hotspot.
  • Vehicle, brush and structure fire calls at incident sites and wildfire zones, from an automatic call generator, with dispatch alerts. Build sites with the incident editor in /fire admin → Incident Sites: fly around the site and place its spot, fire points, victim spots and a vehicle fire's wreck. Problems are shown before you save.
  • Hoses with jet, fog and foam patterns that cool every burning spot the water reaches. Also hydrants from the map (plus any you list in Config.Hydrants.extra), supply lines, fire extinguishers, and the water cannon on the stock firetruk. Water pushes props, vehicles and people.
  • Breathing air (SCBA). A backpack and mask every player sees, an air timer, a head-out warning and a low-air alarm others can hear, refilled at the gear room or an apparatus. Smoke hurts anyone breathing it without a mask, or gives them smoke inhalation with oxide-medical.
  • Rescue carries and drags for downed players, and victim search in structure fires, with an alert to medics and a handoff to them.
  • Station life. A station bell for new calls, phone page-outs, paid rig checks, and lightning that starts brush fires with oxide-weather.
  • Firefighting feedback. Points for knocking spots down, deductions for mistakes, and a fire card showing how far the fire is knocked down. Feedback only, never paid, and it can be switched off.
  • Treasury, payroll and back pay. The treasury is a bank account (starting at 30,000) or a department balance, and it never goes below zero. A payout the bank refuses goes back into the treasury. Unpaid back pay stays owed for 30 days.
  • Admin tools. Live incidents (start, stop and spread fires), the call generator, and /fire writeoff <plate> for a unit lost where the server can't see it.
  • /fire settings edits department, duty, payroll, station, apparatus, call, safety and station-life settings in game, saved in the database. Fire, hose and tool tuning stays in the config files.
  • Works with Oxide HUD (free). Players move or hide the firefighting panels in /hud, and the panels take the server's accent colour (Config.UseHudAccent). Without Oxide HUD they sit where Config.HudLayout puts them.
  • Optional integrations:
    • oxide-dispatch or another dispatch resource. Without one, firefighters get a notification and a map blip.
    • oxide-weather, for wind, rain and lightning.
    • Phone page-outs.
    • oxide-tablet, for the Fire Command app.
    • Banking resources, for department treasuries.
    • EMS jobs, for rescue handoffs.
    • oxide-medical, for smoke inhalation.
    • g-multijob, with multi-department enrollment on.
  • Exports to start, read and clear fires, start calls, report lightning, and read stats and settings. See docs/EXPORTS.md.
  • Runs on QBCore, Qbox and ESX. The database tables are created on first start.

Before you start

  • Add a fire job to your framework with the department's name. Register the scba item and copy its image; itemimages/ox_inventory_items.lua has the ox_inventory entry. See docs/INSTALLATION.md.
  • On ESX, use an inventory o-link supports, not ESX's built-in one.
  • Use banking accounts is on by default. Without a supported banking resource, turn it off in /fire settings, or the treasury stays at 0 and no salaries are paid.
  • Restart the whole server after installing, so the nozzle, couplings and SCBA backpack load.
  • Needs o-link 1.12.1 or newer.

Oxide HUDv1.0.0

Major

Added

  • First release of oxide-hud, a free player HUD that every player builds for themselves in game.
  • Runs on QBCore, Qbox and ESX through o-link 1.12.0 or newer. No database and no items to set up.
  • In-game editor (/hud): add, drag, resize, snap to a grid and to other blocks, align and space, group, lock and hide, with undo and redo and keyboard shortcuts.
  • 66 pieces of data: health, armour, hunger, thirst, stress, oxygen and stamina; speed, RPM, gear, fuel, engine and body health, throttle, odometer and 14 vehicle lamps; aircraft and boat instruments; cash, bank, server ID and character name; weapon, ammo and clip; street, area and heading; voice, radio and the clock; and the player's own text.
  • 13 styles with their own options: ring, bar, shape, dial, value, indicator, compass, tape, artificial horizon, scale, voice, image and decor.
  • Groups that lay blocks out in rows, columns, grids, honeycombs, rings or stacks, with frames behind them, closing the gap when a block hides.
  • Rules on every block: hide above or below a value, warning and critical levels, and a pulse, starting from Config.AutoHide.
  • 42 templates: status sets, player and finance cards, location boxes, ID cards, weapon panels, and speedometers for every vehicle: Sweep, Ghost, Instrument and Rail for cars and bikes, Helm for boats and submarines, Glass for helicopters and planes, plus a Classic set of eleven more.
  • New players get the speedometer that fits each vehicle: Sweep in cars and on bikes, Helm on water, Glass in the air.
  • A layout on foot, one in a vehicle, and one per vehicle type (car, bike, boat, submarine, helicopter, plane), each following the one above it until changed.
  • Sample data in the editor (driving, flying, boating, armed, underwater, low needs, on the radio and more) to place blocks without leaving the editor.
  • Server accent colour with an optional lock (Config.Theme), and each player's own accent and data colours.
  • Saved layouts and share codes for the whole HUD or one group.
  • A server default HUD from a share code (Config.DefaultLayout) that every player who never edited their HUD follows, and an optional editing lock (Config.LockEditing).
  • Layouts pinned to the screen's edges and sized to its height, so a HUD looks the same at every resolution.
  • Hides by itself at character select, in the pause menu, while dead or downed, and while another script's menu has the mouse; GTA's own street and area names return while it is hidden.
  • Other resources' notifications, progress bars, job timers and cards are placed clear of the HUD; players can move them, hide them while editing or switch them off in game.
  • Speed units (Config.SpeedUnit), boat and aircraft units (Config.Units), stall and pull up warnings (Config.Flight), an optional server logo (Config.ServerLogo) and reserved screen areas (Config.ReservedAreas).
  • Reads voice from pma-voice or SaltyChat, fuel from most fuel resources and the seatbelt from qbx_seatbelt or qb-smallresources, all optional.
  • Developer API: olink.hud.AddPanel places any resource's panels around the HUD, with a complete example in docs/API.md.
  • English locale (locales/en.json) covering every HUD and editor text.

Oxide Dispatchv1.5.0

Minor

Added

  • AI dispatch is no longer tied to OpenAI. Each chained stage (speech-to-text, language model, text-to-speech) has its own Provider in shared/config/ai_dispatch.lua: openai, groq, openrouter, deepinfra, lemonfox, the self-hosted ollama, lmstudio, kokoro and speaches, or custom with your own BaseUrl. Keys go in oxide:ai-dispatch:<provider>_key convars (for example oxide:ai-dispatch:groq_key). Self-hosted providers need none. The language model must support tool calling.
  • Realtime mode can run through another gateway: set Realtime.Provider = 'custom' and an https:// Realtime.BaseUrl. Realtime always needs a key, a custom gateway included; without one the server console shows an error when the resource starts.
  • New AI dispatch options: LLM.Temperature, LLM.MaxTokens (set either to false to leave it out of the request), TTS.Format, Realtime.TranscriptionModel, and per-channel chainedVoice and realtimeVoice.
  • 911 and 311 calls from oxide-phone go through the same dispatch rules as /911 and /311, including their rate limit. The departments the phone names for each line (Config.Emergency in oxide-phone) receive its calls too.
  • The caller's phone number is saved on civilian alerts that are not anonymous and shown next to their name on the alert pop-up, the Dispatch Hub list and the alert's detail panel, when your server runs a phone resource.
  • With a phone resource installed, responder replies arrive on the caller's phone from the department. Without one, they show on screen as before.
  • With oxide-weather, alerts record the weather at the scene (conditions, temperature, wind) and show it on the alert. Turn it off with Config.Weather.Context.
  • Optional storm alerts: severe weather from oxide-weather raises a WEATHER alert for police, EMS and fire, updates as the storm changes and closes when it ends. Off by default (Config.Weather.Storms).
  • oxide-dispatch:weather shows and changes the weather settings from the server console, or in game for admins. Changes are saved and apply straight away; the file only sets the values for the first start.
  • AI dispatch can answer "what's it about?": a new get_alert_details tool reads back an alert's message, street, caller and number, age, vehicle, weather at the scene and the units on it. It only sees alerts sent to that channel's department, and anonymous callers stay anonymous. list_active_alerts now gives each alert's message and age too.
  • Optional spoken alert announcements: with Config.AIDispatch.AnnounceAlerts = true, the AI dispatcher reads every new alert out on the channels it is sent to. Off by default. In chained mode it costs one text-to-speech request per alert per channel with someone listening.
  • With oxide-weather, the AI dispatcher knows the current weather where the officer is, so "what's the weather like?" gets a real answer. Config.Weather.Context turns it off.
  • Two new 911 categories for fire: Brush / Wildfire (10-74) and Rescue / Extrication (10-76).
  • The fire group recognises lsfd and firefighter as well as fire, and any department name you add to Config.ResponderGroups.fire.jobs is treated as fire everywhere, including the AI dispatcher's channel rules.
  • 911 and 311 calls save the street and area the caller is in, from the phone, /911, /311 and the radial menu alike. It shows on the alert pop-up, the Dispatch Hub and to the AI dispatcher. A call waits at most Config.Civilian.locationTimeoutMs (1 second) for it and goes through without a street otherwise.
  • Map mode: inherit, combined, separate or disabled, set with oxide-dispatch:mapmode from the server console or by an admin in game. In separate mode the Hub has a Mainland / Cayo Perico picker.

Changed

  • The alert pop-up map, Hub map and heatmap now use o-link's shared map, which includes Cayo Perico. This resource no longer ships its own map images.
  • AI dispatch errors now name the stage that is missing a key (missing_key_stt, missing_key_llm, missing_key_tts) instead of missing_openai_key, and the startup log lists each stage's provider.
  • The startup key check only looks at the modes your channels use, so a chained-only server is no longer warned about a missing realtime key.
  • In chained mode, a request to a provider gives up after 20 seconds and is retried once, so a rate limit or an unreachable provider ends in an error instead of a long silence on the radio. Set them with Chained.RequestTimeoutSec and Chained.MaxRetries.
  • OpenAI receives the reply length cap as max_completion_tokens, so OpenAI's newer models can run the dispatcher.
  • The note an AI dispatcher gets for a new alert includes the street, and for a 911 or 311 call the caller, their number and what they said.
  • The dispatcher keeps at most 30 background notes (the officer's location, other officers' radio traffic, alerts filed or cancelled), so a long shift on the channel no longer makes every request larger. Set it with Chained.LLM.MaxSystemNotes.

Fixed

  • Alerts on Cayo Perico now show on the dispatch maps.
  • In chained mode, another officer talking while the dispatcher was running a lookup could make the dispatcher's next reply fail.
  • An officer on an AI dispatch channel who placed a 911 call themselves never got that call into their dispatcher's awareness. Only the officer whose own AI dispatcher filed an alert is skipped now.
  • Fire alerts reached firefighters who were off duty. With Config.Broadcast.onDutyOnly, the fire group now follows your framework's duty toggle (frameworkDuty = true in Config.ResponderGroups), and a firefighter who clocks in gets the open alerts straight away. If your fire job has no way to go on duty, set frameworkDuty = false on the fire group.
  • /911 and /311 with a written description, and phone calls, always went to police. They now go to the departments the words point to: a fire to fire, a medical call to EMS, both when both are mentioned. Calls with no recognised words still go to police. The words are each category's new keywords in Config.Civilian.
  • Alerts for police, EMS and fire together never reached fire, because the job cap cut the list at 12. Config.Broadcast.maxJobsPerAlert is now 32, and a trim is logged.

Documentation

  • docs/AI_DISPATCH.md: new "Choosing a provider", "Spoken alert announcements" and "Weather" sections, the realtime key rule, the get_alert_details tool, and what a rate limit looks like.
  • docs/CONFIGURATION.md: the new AI settings, per-provider keys, Config.Civilian.locationTimeoutMs, shared/config/weather.lua and "Shared map mode".
  • docs/ADMIN.md: the oxide-dispatch:weather and oxide-dispatch:mapmode commands.
  • docs/EXPORTS.md: the CivilianCall export, GetSetting / SetSetting for the weather settings, and the caller number and weather on alerts.
  • docs/FEATURES.md: phone calls, caller numbers, street names, replies on the phone, weather on alerts, alert details and announcements for the AI dispatcher.
  • docs/INSTALLATION.md: the o-link versions this release needs, and updating an existing database.
  • docs/TROUBLESHOOTING.md: the new AI error codes.

Migration Guide

  1. Back up your database.
  2. Update o-link first. The maps need 1.8.0 or newer. Phone calls, caller numbers and replies on the phone need 1.11.0 or newer.
  3. On first start, two columns are added to dispatch_alerts automatically (caller_number and weather_context). Your database user needs ALTER permission. To add them by hand instead, run sql/migrate_caller_number.sql and sql/migrate_weather_context.sql once. Both are safe to run more than once.
  4. If you keep your own config files, also copy the new shared/config/weather.lua. Your current shared/config/ai_dispatch.lua keeps working as before. To get the fire-routing fixes, also bring over maxJobsPerAlert = 32 in shared/config.lua (the old 12 still drops fire from alerts for police, EMS and fire), the keywords lists and the two new 911 categories in shared/config/panic.lua, and the fire group's new job names and frameworkDuty = true in shared/config/jobs.lua.
  5. Restart the whole server, not only the resource. This version adds new files.

Oxide EMSv1.1.1

Patch

Fixed

  • Clocking in at a facility now requires standing at one of its clock-in points. A modified game client could clock in from anywhere before. With Require facility clock-in turned off, /ems duty still works anywhere.
  • Treasury deposits and withdrawals, admin funding, salaries, fleet purchases, supply prices and grade salaries only accept a real amount of money: a whole number above zero. A modified game client could send an invalid number that slipped past the old check and broke the treasury balance or a medic's bank balance.
  • A deposit only reaches the treasury once the money has actually left the depositor's bank.
  • A fleet purchase is limited to 50 vehicles at a time. An oversized order of a free catalog vehicle could stall the server.
  • Bosses can change only their own badge number and callsign, and those of medics ranked below them. Before, they could change anyone's in the department, including higher ranks.
  • Pressing ESC to cancel an in-world placement no longer closes the whole /ems settings menu.
  • The /ems settings menu now closes when the character logs out instead of staying on screen.
  • A setting the database fails to save keeps its old value and shows as rejected in /ems settings, instead of looking saved until the next restart. The SetSetting export returns false when the save fails.
  • Salaries, back pay and treasury deposits and payouts show a description in players' bank history ("Paycheck", "Back pay", "Department deposit", "Department payout").

Changed

  • With wage garnishment turned on in oxide-banking, EMS salaries now count as wages and can be garnished for loans in collections.

Added

  • itemimages/ox_inventory_items.lua: paste-ready ox_inventory definitions for the seven EMS and medical items.
  • The /ems settings editor's buttons, placeholders and messages can be translated: 26 new settings_ui.* keys in locales/en.json, plus five treasury.* keys for the bank-history descriptions.
  • A security warning in the log when someone who isn't an admin tries to open or change /ems settings.

Documentation

  • docs/FEATURES.md, docs/INSTALLATION.md and docs/TROUBLESHOOTING.md: where down and death alerts go with oxide-dispatch, with no dispatch resource, and with another one.
  • docs/ESX_INSTALL.md and docs/QBX_INSTALL.md point to itemimages/ox_inventory_items.lua for the item definitions.
  • docs/ADMIN.md: clock-in points, the boss rank rule for roster edits, and the fleet purchase limit.
  • docs/EXPORTS.md: SetSetting returns false when a save fails.

Oxide Phonev1.0.2

Patch

Fixed

  • Changing the phone camera's mode no longer sends the EMS distress signal. Camera mode was on G, the distress key in oxide-ems; it is now on F7 for every player, including those who already joined your server. Players who had moved camera mode to another key need to set it again in FiveM's key bindings.

Added

  • Config.Camera.modeKey (default 'F7') sets the starting key for camera mode. Change it in /phone settings → Device → Media → Camera, then restart the phone. Players can still rebind it in FiveM's key bindings.

Documentation

  • docs/FEATURES.md, docs/ADMIN.md and docs/CONFIGURATION.md show F7 for camera mode and the new Config.Camera.modeKey.

Oxide Drugsellingv2.1.0

Minor

Added

  • Optional xpUnits on item rows in shared/config/drugs.lua lets larger packages award more sale XP. Items without it still count as one unit each.
  • Config.OnDrugSold and sale logs include the progression units counted for XP, separately from the number of items sold.

Changed

  • Weed sales award 10 XP per gram used to make the package: 10 for a gram, 30 for an eighth, 60 for a quarter, 120 for a half, 240 for an ounce and 350 for a brick. Meth, cocaine and pills keep their existing XP.
  • Sale XP rounds to a whole number. Invalid xpUnits values count as one and produce one server warning per item.

Fixed

  • Failed settings saves restore the previous active value and report failure. Resetting a setting also reports a failed save.
  • Settings buttons, tooltips, item searches and zone tools use locale text.
  • The settings editor closes when the character logs out.

Documentation

  • Updated configuration, exports and feature guides with package XP weights, sale-hook fields and progression examples.

Migration Guide

  • Merge weed xpUnits values 1, 3, 6, 12, 24 and 35 into your custom shared/config/drugs.lua, and set weed progression.xpPerUnit to 10. Keeping your old rows preserves per-item XP instead.
  • Config.Drugs remains file-only; database settings do not apply this configuration change for you.
  • Merge the new settings.ui.* keys into custom locales.
  • Restart oxide-drugselling after updating. No SQL or new items are required when upgrading from 2.0.0.

Oxide Methv1.7.0

Minor

Added

  • Complete paste-ready ox_inventory item definitions in items/ox_inventory_items.lua, covering equipment, ingredients, additives, production items and variants.

Changed

  • Settings buttons, tooltips, item searches, empty lists and placement-zone tools use locale text.

Fixed

  • Nearby players no longer see a floating, cursor-controlled bottle while someone pours ingredients.
  • A failed police-alert chance no longer starts the dispatch cooldown; the cooldown begins when an alert is sent.
  • Gangs-only usage restrictions require gang membership instead of allowing players through an empty job list.
  • Settings initialization no longer overwrites existing saved rows when a settings load returns empty.
  • Failed database saves retain the previous active setting and report failure.
  • Decimal settings no longer display long rounding tails.
  • Escape cancels a world picker without closing the settings panel, and character logout closes the panel.

Documentation

  • Updated installation guidance with the complete inventory template and configuration guidance with the corrected dispatch cooldown behavior.

Migration Guide

  • No SQL or new item names are required when upgrading from 1.6.0. Existing database settings remain.
  • For a fresh ox_inventory installation, copy entries from items/ox_inventory_items.lua into ox_inventory/data/items.lua, keeping one definition per item, and copy supplied item images into ox_inventory/web/images/.
  • Merge the new settings_ui_* keys into custom locales.
  • Restart oxide-meth after updating. Restart the whole server if you change inventory item definitions.

Oxide Weedv1.6.0

Minor

Added

  • Water hose — connect a hose to a water tank and water loose plants with Jet or Shower spray. Water and XP follow the amount actually delivered, and nearby players see the hose, nozzle and spray.
  • Grow tents — the Grow Box holds two plants at level 2, the Grow Tent holds four at level 4, and the Large Grow Tent holds eight at level 6. Each has built-in lighting, weather protection and a close-up growing scene, with opening doors or flaps.
  • Carbon filters — unlocked at level 5, filters suppress tent smell and reduce police alerts.
  • Police can seize tents, their plants and filters. Configure eligible jobs, duty requirements and seizure time in /weed settings.
  • Custom streamed models for every plant stage, wild plants, nursery pots, soil, lamps, heaters, drying racks, freeze dryers, water tanks, hoses, watering cans and tent plants.
  • Config.ModelSwaps lets owners replace models unavailable on their game build. Missing models produce a clear server warning and are skipped.
  • Grower Profile — /weed stats now opens Overview, Strains, Goals and Ranks, showing journal firsts, personal bests, lifetime totals, mastery, signature strains, perks and unlocks. XP gains and level-ups have their own feedback.
  • Level perks add slower care decay at level 6, better trimming at 7, more seed chances at 8, kept male plants and another tent at 9, and better care and cheaper cloning at 10.
  • Gelato, Wedding Cake and Durban Poison seed packs unlock at levels 7, 8 and 9. Each contains three seeds; these strains do not appear among wild plants.
  • Strain mastery — Familiar, Skilled and Master unlock after 5, 15 and 40 harvests, with strain bonuses, badges and one-time XP rewards. Each strain's first-ever harvest also earns a bonus, capped at three strains per day.
  • Grower goals — three daily and two weekly goals scale with progression. Players can swap one daily goal; sale goals work when oxide-drugselling is running.
  • Master ranks — after level 10, every 4,000 XP earns another rank, up to five. Choose another tent, 15% faster drying, an extra bud, Wild Genes or free lab reports.
  • The scientist can reset master perk choices for $25,000 dirty money. Extra tents must be packed before removing their capacity perk.
  • Signature strains — level 10 growers can register mastered crossbreeds under unique, moderated names for $50,000 dirty money, with two registrations per character by default. Sales build street reputation and seizures reduce it; optional sale pricing adds up to 15%.
  • Grower app for oxide-phone and oxide-tablet, with the same profile, goals and rank choices, plus level and daily-goal widgets. Neither device resource is required; signature registration and perk resets remain at the scientist.
  • Optional weather effects on exposed loose plants, gang influence on harvests and brick production, and skills mirroring. These integrations ship disabled.
  • Permanent /weed tank, /weed setlevel and /weed unregister admin tools. /weed setxp and /weed setlevel support a target player and server-console use.

Changed

  • Rebuilt the growing and processing scenes, world displays, minigames, store and scientist menus.
  • Drying racks hang buds upside down from four bars. Freeze dryers have opening doors, sliding trays and individual bud loading and collection; cancelling a scene keeps its contents.
  • Soil fills the nursery pot as fertilizer is poured. Planting and care cameras frame the whole pot, harvested buds fit the new plants, heaters face the table, and wild plants follow sloped ground.
  • Harvest XP reflects quality, drying XP is paid on collection, and journal firsts and personal bests earn bonuses. Repeated loading and lamp actions no longer farm XP; care XP requires a plant below 90%.
  • Store level requirements now match equipment and strain usage requirements.
  • Config.MaxPlantsPerPlayer defaults to 40 and counts loose and tent plants together; 0 disables the limit. Optional level-based loose-plant limits ship disabled, and existing plants are kept.
  • Tote capacity is measured in grams. The new factory default is 50,000 g; legacy kilogram settings convert without changing their saved capacity.
  • Wild Genes now uses a configurable 3.0 range multiplier. Saved unchanged 1.25 defaults migrate; owner tuning remains.

Fixed

  • Watering-can item use and plant-care watering now spend and deliver the same amounts. Water is saved to the correct inventory slot, and a failed save gives no free water.
  • Picked-up tanks retain their water on inventories that support item metadata. Placement claims each stored tank once, and pickup blocks simultaneous filling, refilling and hose use.
  • Tote contents use the inventory bridge. Supported inventories prevent picking up a non-empty tote.
  • All planting paths enforce seed, strain, level and usage restrictions. Watering, fertilizing and equipment actions check the player's routing bucket, and harvests cannot be claimed twice.
  • Tent options respect ownership and access, while ownerless tents can still be packed or fitted with a filter.
  • Kept male plants regrow pollen after an hour without producing another pot. The timer and once-only XP survive restarts.
  • XP awards consistently check level-ups, and admin XP reductions update the player's progression immediately.
  • Goal draws, swaps, progress and rewards cannot race each other. Completed goals pay once across reset boundaries and reloads.
  • Failed payments refuse lab reports, cloning, signature registration and perk resets.
  • Freeze-dryer buds rest on the tray floor throughout loading, drying and collection. Saved unchanged default positions repair automatically; custom fitting remains.
  • Nearby players see held tools and pouring props in the correct place. Cursor-controlled scene props stay local instead of floating around other players.
  • A failed police-alert chance no longer starts the dispatch cooldown, and gangs-only usage restrictions no longer allow players through an empty job list.
  • Settings initialization preserves saved rows, failed saves retain the previous active value, cancelling a world picker keeps the settings menu open, and character logout closes it.

Documentation

  • Updated installation, configuration, admin, exports and troubleshooting guides, the grower's manual, and English and Spanish text.
  • Added integration guidance and complete paste-ready ox_inventory item definitions.

Migration Guide

  • Add water_hose, grow_box, grow_tent, grow_tent_large, carbon_filter, gelato_seed_pack, wedding_cake_seed_pack and durban_poison_seed_pack to your inventory. All except carbon_filter must be usable.
  • Copy the supplied icons from item images/ into your inventory's image folder, including replacements for both water-container icons. ox_inventory definitions are in item images/ox_inventory_items.lua.
  • On qb-inventory, set unique = true for watering_can, water_container_small and water_container_large so each item keeps its own water.
  • Restart the whole server after updating. The new stream files require a full restart; restarting only oxide-weed is insufficient. Placement requires o-link 1.9 or newer.
  • On boot, oxide-weed creates weed_hoses, weed_tents, weed_carried_tanks, weed_grower, weed_strain_mastery, weed_grower_goals and weed_grower_ranks.
  • Boot migrations add growth_state, tent_id, tent_slot, grower_bonus and pollen_ready_at to drug_plants, plus registered_by, registered_at, reputation, name_key and a unique name index to drug_strains. The shared drugs_progression table is unchanged.
  • Normal upgrades need no manual SQL when the database user has CREATE and ALTER permissions. For manual installation use sql/install.sql; for manual upgrades use sql/phase_7_growth.sql, sql/migrate_water_hose.sql, sql/migrate_grow_tents.sql, sql/migrate_carried_tanks.sql, sql/migrate_grower.sql, sql/migrate_pollen_regrow.sql, sql/migrate_strain_mastery.sql, sql/migrate_grower_goals.sql, sql/migrate_master_ranks.sql and sql/migrate_signature_strains.sql.
  • Saved settings remain authoritative. Unchanged vanilla models, scene layouts and factory XP values migrate to their new defaults; custom choices remain. Review custom drying-rack and freeze-dryer layouts.
  • Drying-rack trayCount, budsPerTray and trays settings migrate to barCount, budsPerBar and bars. Watering amounts now come from PlantSettings.water.sources; obsolete WateringCan.waterCost and fillAmount settings are removed.
  • FreezeDryer.requiredLevel moves to Equipment.freeze_dryer.requiredLevel, preserving a higher saved requirement.
  • New tent, filter, premium-strain and store defaults are seeded once; later removals remain removed. The hose is added during the legacy tank-model migration. Servers with custom tank models should add it to their saved store list themselves.
  • Existing XP, levels and lifetime totals remain. New journal and mastery history starts with this update; old actions are not reconstructed.
  • Update oxide-drugselling and merge its weed xpUnits configuration for sale XP by weight. Signature price bonuses also require the PriceFor modifier described in docs/CONFIGURATION.md.
  • Custom integrations reading GetPlayerProgression must use translated unlock label values in place of labelKey; unlocks also include kind. Merge the new locale keys into custom translations.

Oxide Phonev1.0.1

Patch

Fixed

  • The Phone Wiper icon (items/phone_wiper.png) was flat clip art that did not match the other item icons. It is now a photoreal icon in the same style.

Added

  • An icon for the phone item (items/phone.png), showing the bundled phone. Until now the phone used your inventory's stock phone picture.

Documentation

  • INSTALLATION.md, ASSETS.md and items/ox_inventory_items.lua list all five item icons.

To update: copy phone.png and phone_wiper.png from items/ into your inventory's image folder (ox_inventory/web/images/ or qb-inventory/html/images/), replacing the old files.

Oxide Bankingv2.2.0

Minor

Added

  • Phone app - When oxide-phone is running, players can install a Banking app from the phone's App Store: Home (total balance and account cards), Activity (search and filters), Payments (send to a payment ID or recent payee, request money as a bill, move money between your own accounts including savings, pay bills, cancel scheduled transfers), Insights (six months of spending by category) and More (payment ID, shared-account members, cards, loan instalments). Turn it off with Config.Phone.UsePhone. Deposits and withdrawals are never offered on the phone.
  • Balance widget - A small or medium phone home-screen widget with the player's balance. Players can hide the amount.
  • Phone notifications - Money received, scheduled transfers delivered and failed recurring payments, plus the existing bill, loan and investment notices. Opening the matching screen clears them.
  • ox_inventory item template - itemimages/ox_inventory_items.lua holds a paste-ready bank_card entry, with itemimages/bank_card.png.

Changed

  • Whole-dollar amounts - Every amount is whole dollars, at least $1, and fees are charged in whole dollars too. An amount with cents or under $1 is refused with a message saying so, before any money moves.
  • Recurring payments follow the transfer rules - They now check frozen accounts, MaxTransferAmount and the daily transfer limit, and ask for the security PIN at TwoFactorThreshold or more when a payment is set up or its amount is raised.
  • Failed recurring payments - When a recurring payment cannot be made, no money moves and the payer is told why if they are online. The next payment date still moves on.
  • Business reports - Expenses, reports and job activity on the Business screen cover only your current job's account, and only for that job's boss. Business-tier players and players listed on a job or gang account no longer see them.
  • Transfer notes - Notes are limited to 60 characters.
  • Refused transfers - The bank screen now shows why a transfer was refused.

Fixed

  • Business screen privacy - A job boss could see other players' personal account activity from the Business screen.
  • Transfers - The recipient is paid only after the money has left the sender's account, and the sender is refunded, fee included, if it cannot be delivered.
  • Recurring payments - A recurring payment no longer pays the recipient when the payer's money could not be taken, and each payment runs only once per due date.
  • Scheduled transfers - A scheduled transfer that cannot be delivered is now marked failed and refunded. It used to be marked completed with the money gone. A transfer can no longer be both delivered and refunded.
  • Failed refunds - When a payment cannot be delivered and returning the money also fails, the player is no longer told the money is back. Every admin online is alerted and the case is written to bank_audit_log as refund_failed (see docs/ADMIN.md).
  • Amounts with cents - A deposit, withdrawal or transfer with cents could record one amount and move another. Amounts are now whole dollars from start to finish.
  • Notifications - Paying a bill no longer clears the notice for an unrelated investment, and an investment notice no longer replaces a bill notice.
  • Job invoices - Invoices to a job account whose name differs only in capital letters (for example LSPD and lspd) can be paid again after a restart.

Documentation

  • docs/CONFIGURATION.md - Added Config.Phone.UsePhone and the whole-dollar rule.
  • docs/FEATURES.md - Added the phone app, the whole-dollar rule, the transfer note limit, the recurring payment rules and failed refunds.
  • docs/ADMIN.md - New "Failed Refunds" section: what admins see and how to find the cases in bank_audit_log.
  • docs/INSTALLATION.md - Added the phone app section and its o-link 1.11.0 requirement, and the ox_inventory step now uses itemimages/ox_inventory_items.lua.

Migration Guide

  1. No database changes.
  2. Copy the new Config.Phone block from config/config.lua into your own config. Without it, the phone app is on.
  3. The phone app needs o-link 1.11.0 or newer and oxide-phone. On an older o-link everything else works and the app does not appear.
  4. Restart the whole server, not only the resource. This version adds new files.

Oxide Policev1.12.0

Minor

Added

  • Phone numbers on the MDT. A person's profile shows their phone numbers, read from whichever phone resource your server runs. Nothing shows without a phone. This needs o-link 1.11.0 or newer.

Fixed

  • Fine emails are no longer attempted on servers without a phone resource, so the console no longer shows a warning on every fine.

Documentation

  • docs/FEATURES.md, docs/INSTALLATION.md and docs/CONFIGURATION.md: the phone numbers on the MDT person profile, the o-link version they need, and fine emails on servers without a phone.

Oxide Blackmarketv1.9.2

Patch

Changed

  • The Burner Pager's item image now ships in itemimages/blackmarket_pager.png, with a paste-ready ox_inventory entry in itemimages/ox_inventory_items.lua.
  • Every button and placeholder in /blackmarket settings can now be translated in locales/en.json.
  • Attempts to open or change /blackmarket settings without admin rights are now written to the log.

Fixed

  • Pager tips without a phone. On servers with no phone resource, the tip now shows as a notification with the location, instead of telling the player to check an inbox that never gets the email. With a phone, the tip still arrives as an email.
  • A /blackmarket settings change the database fails to save is now reported as failed, instead of applying until the next restart. Resetting a setting reports a failed save the same way.
  • Pressing ESC to cancel an in-world placement no longer closes /blackmarket settings as well.
  • /blackmarket settings now closes when your character logs out.

Documentation

  • docs/FEATURES.md and docs/INSTALLATION.md: how pager tips arrive with and without a phone, and where the item image now lives.

Oxide Animal Controlv1.6.0

Minor

Added

  • Shift messages arrive as texts from the office on phones that support texts. Other phones get them as mail, as before.
  • An incoming call also rings the player's phone (the crew leader's in a crew). Accept or decline it on the call card as before.
  • Texts and call rings need o-link 1.11.0 or newer and Config.usePhone on.
  • Gigs app support for Oxide Phone: the app shows the offices, the player's current call and pay so far, and their level. Shift updates and incoming calls appear in the app instead of as texts and phone notifications; the pay summary still arrives as a text.
  • New read-only server exports GetInfo, GetShift and GetProgression, plus SetUpdateHandler so another resource, such as a phone app, can show shift updates itself.

Changed

  • The settings editor's remaining English text (the Admin badge, Move up, Move down, Remove, Place in world, Teleport here, and the empty-list and entry labels) now comes from locales/en.json and can be translated.
  • The server log now records refused /animalcontrol settings attempts by non-admins, and whether each settings change came from the menu or another resource.

Fixed

  • If a setting can't be saved to the database, the editor says it couldn't be saved and the old value stays. Before, the server used the new value even though it was never saved.
  • When the settings editor refuses a change, it now shows the actual reason. Before, every refusal said to end active shifts first.
  • A setting reset that fails now shows a message instead of doing nothing.
  • Logging out with the settings editor open now closes it instead of leaving it on screen.

Documentation

  • docs/EXPORTS.md: GetInfo, GetShift, GetProgression and SetUpdateHandler.
  • README.md, docs/CONFIGURATION.md, docs/FEATURES.md, docs/INSTALLATION.md, docs/TROUBLESHOOTING.md: shift messages as texts or mail, the incoming-call ring, the Gigs app on Oxide Phone, o-link 1.11.0 for texts and the ring, Oxide Phone and qs-smartphone-pro in the supported phones, and the list of phone messages the job actually sends.

Migration Guide

  • No SQL to run. Restart the server fully once after updating (new server file and a rebuilt settings UI).