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 301 releases

Oxide Landscapingv1.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. Texts need o-link 1.11.0 or newer.
  • Gigs app support for Oxide Phone: the app shows the offices, the player's current shift (yards done) and pay so far, and their level. Shift updates appear in the app instead of as texts; 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 /landscaping settings attempts by non-admins, and whether each settings change came from the menu or another resource.

Fixed

  • Config.usePhone now works. Set it to false and the job sends nothing to the player's phone; the net-pay notification at clock-out still shows. Before, it was ignored.
  • 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.
  • 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.
  • docs/CONFIGURATION.md, docs/FEATURES.md, docs/INSTALLATION.md, docs/TROUBLESHOOTING.md: shift messages as texts or mail, the Gigs app on Oxide Phone, o-link 1.11.0 for texts, Oxide Phone and qs-smartphone-pro in the supported phones, and the list of phone messages the job actually sends.
  • The docs now say Config.shiftSummary has no effect in this job. It never changed how the pay summary is shown: the summary follows Config.usePhone, and the net-pay notification always shows.

Migration Guide

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

Oxide Roadside Assistancev1.6.0

Minor

Added

  • Shift messages arrive as texts from the tow yard 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 tow yards, 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 /roadside 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.
  • 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.
  • 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).

Oxide GoPostalv1.5.0

Minor

Added

  • Config.usePhone (default true), also under General in /postaljob settings. Turn it off to show shift messages as on-screen notifications instead, with a short net-pay notification at clock-out. Existing servers get it switched on automatically.
  • Shift messages arrive as texts from the depot on phones that support texts. Other phones get them as mail, as before. Texts need o-link 1.11.0 or newer.
  • Gigs app support for Oxide Phone: the app shows the depots, the player's current shift (loading or deliveries) and pay so far, and their level. Shift updates appear in the app instead of as texts; 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 /postaljob 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.
  • 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.
  • docs/CONFIGURATION.md, docs/FEATURES.md, docs/INSTALLATION.md, docs/TROUBLESHOOTING.md: Config.usePhone, shift messages as texts or mail, the Gigs app on Oxide Phone, o-link 1.11.0 for texts, 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).

Oxide Pizza Jobv1.5.0

Minor

Added

  • Shift messages arrive as texts from the shop on phones that support texts. Other phones get them as mail, as before. Texts need o-link 1.11.0 or newer.
  • Gigs app support for Oxide Phone: the app shows the shops, the player's current shift and pay so far, and their level. Shift updates appear in the app instead of as texts; 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 /pizza settings attempts by non-admins, and whether each settings change came from the menu or another resource.

Fixed

  • Config.usePhone now works. Set it to false and the job sends nothing to the player's phone. Before, it was ignored.
  • 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.
  • 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.
  • docs/CONFIGURATION.md, docs/FEATURES.md, docs/INSTALLATION.md, docs/TROUBLESHOOTING.md: shift messages as texts or mail, Config.usePhone, the Gigs app on Oxide Phone, o-link 1.11.0 for texts, 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).

Oxide Newspaperv1.4.0

Minor

Added

  • Shift messages arrive as texts from the depot on phones that support texts. Other phones get them as mail, as before. Texts need o-link 1.11.0 or newer.
  • Gigs app support for Oxide Phone: the app shows the depots, the player's current route and pay so far, and their level. Shift updates appear in the app instead of as texts; the pay stub 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 /newspaper 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.
  • 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.
  • docs/CONFIGURATION.md, docs/FEATURES.md, docs/INSTALLATION.md, docs/TROUBLESHOOTING.md: shift messages as texts or mail, the Gigs app on Oxide Phone, o-link 1.11.0 for texts, 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).

Oxide Tabletv1.1.0

Minor

Added

  • Apps can open other apps on the tablet. The player still needs the other app installed and allowed for them.
  • The tablet also accepts the newer app message format used by oxide-phone, so an app built for both runs on either. Existing apps work as before.
  • itemimages/ox_inventory_items.lua holds a paste-ready tablet entry for ox_inventory.

Changed

  • Every button and tooltip in /tablet settings can now be translated in locales/en.json.
  • Attempts to open or change /tablet settings without admin rights are now written to the log.

Fixed

  • A /tablet settings change the database fails to save is now reported as failed and keeps its old value, instead of applying until the next restart.
  • When a /tablet settings change or reset is refused, the menu now says why instead of always saying settings are still loading, and a failed reset shows a message.
  • Pressing ESC to cancel an in-world placement no longer closes /tablet settings as well.
  • /tablet settings now closes when your character logs out.
  • Reports of game models that fail to load are now capped per player and in total, so one player cannot flood admins with warnings.

Documentation

  • docs/INSTALLATION.md: the ox_inventory steps now use itemimages/ox_inventory_items.lua.

Oxide Weatherv1.1.0

Minor

Added

  • Weather app for oxide-phone. Players install it from the phone's Store, or add weather to the phone's preinstalled apps. Each place gets its own page over an animated sky: conditions now, today's high and low, upcoming changes with daybreak and nightfall, a day-by-day forecast, detail tiles (precipitation, wind, daybreak or nightfall, radar, plus snow cover, power cuts and season when they apply), severe weather alerts and the radar.
  • Phone home-screen widget in small and medium sizes with the current conditions, plus the region's alert or upcoming changes.
  • Severe weather alerts for the player's region arrive as phone notifications. Tapping one opens the alert, and it is removed when the alert ends.
  • Config.Broadcast.Phone (default on) turns the phone app off. It is also in /weather settings → Broadcast as Phone app.

Changed

  • Config.Broadcast.Widget now covers both the tablet and the phone widgets.

Fixed

  • The radar's front count on the tablet can now be translated.

Documentation

  • docs/FEATURES.md: the phone app, widget sizes and alert notifications.
  • docs/CONFIGURATION.md: Config.Broadcast.Phone.
  • README.md, docs/INSTALLATION.md, docs/ESX_INSTALL.md, docs/QBCORE_INSTALL.md, docs/QBX_INSTALL.md: the optional phone app and the o-link 1.11.0 it needs.
  • docs/TROUBLESHOOTING.md: "The weather app does not appear on the phone".

Migration Guide

  1. No database changes. Saved settings keep their values and gain Phone app switched on.
  2. 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.
  3. Restart the whole server, not only the resource. This version adds new files.

Oxide Dealershipsv1.0.5

Patch

Fixed

  • Missed-payment invoices reach the bank. When a financed vehicle loan defaults, the missed-payment invoice is now created in oxide-banking and can be paid. Collected payments go into a dealership business account, which is created automatically.
  • No emails without a phone. On servers without a phone resource, the dealership no longer tries to send emails, so the console no longer shows o-link fallback warnings.

Glitchv1.0.0

MajorOxide Phone

Added

  • First release of oxide-glitch, the live streaming app that comes with Oxide Phone. Runs inside oxide-phone on QBCore, QBX and ESX through o-link (1.11.0 or newer).
  • Browse live channels, most watched first, in seven categories, with a Following tab and search.
  • Channels with an avatar, banner, bio, followers, tier and Partner check mark, live or offline with the last stream's figures.
  • Watching: the live picture from the streamer's phone with the chat below, real and simulated messages in one, emotes, badges, slow mode, followers-only mode and alerts for follows, subs and cheers.
  • Support a streamer with follows, monthly subscriptions paid from the bank (Config.Money.subPrice) and cheers. The streamer gets the money less a platform cut that falls as their tier rises.
  • Going live with a title and a category, the front or back camera and the microphone, and a dashboard with real and simulated viewers, earnings, follows, subs, cheers, a hype meter, alerts and chat moderation tools.
  • Streaming as a job: a simulated audience reacts to what the streamer does in the city and pays ads, subs and cheers into a pending balance cashed out to the bank, with hourly and daily caps, a minimum stream length and no pay while AFK.
  • Three tiers (Streamer, Affiliate and Partner) earned with followers, average viewers and streams, each paying more. Admins can grant or remove Partner.
  • A follow counts once per character, and a ban covers the character on every account.
  • Notifications for lives, subs and cheers that reach only the phone logged in to the account.
  • Moderation: reports on channels and chat messages, an admin queue in the app, bans that keep accounts out of chat and off streams, and /glitch. Every admin action is logged.
  • Evidence for police Forensics: real chat, follows, subs, cheers, deleted messages and cash-outs. A phone police hold opens Glitch read-only.
  • Database tables are created automatically at first start; sql/migrations/ ships for reference.
  • English locale (locales/en.json).

Hookrv1.0.0

MajorOxide Phone

Added

  • First release of oxide-hookr, the swipe-to-match dating app that comes with Oxide Phone. Runs inside oxide-phone on QBCore, QBX and ESX through o-link (1.11.0 or newer).
  • Profiles with up to 6 photos from the phone's Photos or Camera, a bio, interests and prompts, who players are and who they want to see, an age range (18+) and a distance. Profiles can be paused.
  • Discover: a deck of cards to drag or tap through, with likes, Super Likes and rewinds under daily limits.
  • A match when the like is mutual, then a chat with text and photos, read receipts and live updates. Unmatch, block and report are one tap away.
  • Notifications for new matches and messages that open the right chat, follow the phone's preview settings and reach only the phone logged in to the account. Profiles can be shared to Messages as hookr:// links.
  • Uses the phone's accounts: a SIM gets one the first time Hookr opens, with a password, log out, switching account and logging in on another phone.
  • Distances by area only, never the exact spot, refreshed at most every five minutes.
  • Evidence for police Forensics: profile changes, swipes, matches, messages (unsent ones too), blocks and reports. A phone police hold opens Hookr read-only.
  • Moderation in the app and with /hookr: the report queue with the reported chat, removing photos or profiles, banning and unbanning. Every action is logged.
  • Database tables are created automatically at first start; sql/migrations/ ships for reference.
  • English locale (locales/en.json).

Leakdv1.0.0

MajorOxide Phone

Added

  • First release of oxide-leakd, the photo and video sharing app that comes with Oxide Phone. Runs inside oxide-phone on QBCore, QBX and ESX through o-link (1.11.0 or newer).
  • Home: a row of stories, then posts from people you follow. A post is up to 10 photos or one video, with likes, comments, saves and sharing to a chat or the phone's share sheet. Captions have tappable @mentions and #hashtags.
  • Stories for 24 hours, watched full screen, with who watched them and replies that go to Direct.
  • Reels: video posts one screen at a time.
  • Search: popular posts, accounts and hashtag pages.
  • Profiles with posts, reels, tagged posts and saved posts, followers and following, and private accounts that approve new followers.
  • Direct: one-to-one chats with text, photos, shared posts and story replies, read receipts and live updates.
  • Live: go live with the phone's camera. Followers are told, viewers anywhere on the map watch, comment and send hearts, and a private account's lives are for its approved followers.
  • Blocking hides profiles, posts, stories, lives, comments, likes and tags both ways.
  • A verified badge, given by admins.
  • Notifications for likes, comments, follows, mentions, messages and lives that open the right screen and reach only the phone logged in to the account. A like, follow or tag taken back and given again notifies at most once every two days.
  • Evidence for police Forensics: posts, edits, deletes, comments, likes, follows, messages, stories and live comments. A phone police hold opens Leakd read only.
  • Moderation in the app and with /leakd: reports on posts, comments, stories and accounts, removing content, bans, ending lives and the verified badge. Every action is logged.
  • Database tables are created automatically at first start; sql/migrations/ ships for reference.
  • English locale (locales/en.json).

Oxide Phonev1.0.0

Major

Added

  • First release of oxide-phone. Three apps come with it, each its own resource with its own changelog: Hookr (oxide-hookr), Leakd (oxide-leakd) and Glitch (oxide-glitch). The apps are optional.
  • Runs on QBCore, QBX and ESX through o-link (1.11.0 or newer). Needs ox_lib, oxmysql and OneSync; pma-voice for calls.
  • Phones are inventory items, each its own device: contacts, texts, mail, photos and the home screen stay with the phone when it changes hands.
  • Players can carry several phones: a call rings only the phone that holds the number, and texts, mail and app notifications reach only the phone they are for.
  • SIM cards carry the number: registered SIMs, free with a new phone by default, and burner SIMs that belong to nobody.
  • Lost and stolen SIMs: the registered owner reports a number from any phone and gets a replacement with the same number, free by default (Config.Sim.replacementCost).
  • Find Phone in Settings: locate, lock with a message on the lock screen (Lost Lock) or erase your phones from any phone you use.
  • Passcode lock with a lockout after wrong guesses, and an optional battery with Low Power that charges in a vehicle, with a powerbank item or at charging stations.
  • No-signal areas you draw, optional no signal indoors, and Airplane Mode (emergency calls still go through).
  • The phone's own model in the hand in four colours.
  • Charging stations you place in game from /phone settings: phones charge while players stand nearby, or on one of three pads where the phone lies in its colour until anyone (or only its owner) takes it. Stations built with your own map tools can be added too.
  • Calls through pma-voice: ringing heard nearby, recents, favourites, keypad, hold, call waiting, conference calls of up to five, voicemail with greetings, blocked numbers and hidden caller ID.
  • Messages: direct and group texts with photos, videos, voice messages, places and live locations, polls, contacts and drawings, plus reactions, replies, edits, unsend, read receipts and typing.
  • Texts and mail to a phone that is off or out of signal wait and arrive later.
  • Mail: an inbox per phone with addresses and aliases, attachments, drafts, scheduled sending and undo. Other resources can mail players, even offline ones.
  • Camera with photo, video, time-lapse and portrait modes, filters, zoom, flash, timer and the selfie camera; players can walk with the camera up.
  • Photos: library, albums, shared albums, a map of places, a Hidden album behind the passcode, Recently Deleted, an editor and video trimming.
  • Photo and video storage through Fivemanage, S3-compatible storage (such as Cloudflare R2) or your own service, picked in /phone settings with its key in server.cfg.
  • Notes, Calculator (with a scientific mode), Clock (alarms on the game clock, stopwatch and timer) and Maps (search, saved places, parked car and turn-by-turn directions).
  • Wallet: send and request money between phone numbers through your framework's bank, with payment cards in Messages, per-transfer and daily limits, and refunds when a transfer can't arrive.
  • Store: players get apps with a short simulated download (Config.Store.simulateInstalls), and you can preinstall any app for everyone (Config.Store.preinstalled).
  • Dark Chat: anonymous chat rooms by handle, with photos.
  • Feed: public posts with photos or a video, hashtags, mentions, replies, quotes, reposts, likes, bookmarks, follows, trending hashtags, a verified badge (/phone feedverify), player reports and admin moderation.
  • Gigs app for the Oxide gig jobs: what to do now, pay so far, and start locations on a map with Set GPS and Show on Maps; shift updates arrive as notifications.
  • Home screen with pages, a dock, folders, widgets and widget stacks, All Apps, search, five wallpapers plus your own images, Quick Controls, an app switcher and modes (Do Not Disturb, Sleep, Driving, Work).
  • Wallpapers from image links: players paste an https image link for the home screen, the lock screen or both, from sites you approve (Config.Home.wallpaperLinks).
  • Clock widget in six styles (City, Analog, Digital, Float, Solar and World Clock), small or medium, picked per widget in edit mode.
  • Notifications with banners, a notification list, badges, eight ringtones and six text tones, and the phone rising from the pocket while put away.
  • Sharing Nearby: photos, contacts, notes, places and Feed posts to a player standing next to you.
  • 911 and 311 from the Phone app or the lock screen, to your dispatch resource or to the jobs you choose (Config.Emergency).
  • Police and evidence: seize, lodge, return or destroy phones with a custody log, search authorizations, extraction reports that include recently deleted content, carrier records and traces, all in the Forensics app.
  • Extraction reports attach to an oxide-police case when it runs, or go to your own MDT through an export.
  • Counterplay: Erase All Content, and a phone_wiper item that removes content for good.
  • Other resources can send mail, texts and notifications, and put their own apps and widgets on the phone with its accounts, photos, camera, location, links, live streams and evidence (docs/BUILDING-APPS.md).
  • Stock QBCore scripts that send qb-phone mail keep working, and an optional layer answers common LB-Phone exports.
  • Admin commands under /phone: look up a phone, remove a passcode or an app password, set a battery level, report a SIM lost or give a replacement, and list or end live streams.
  • Live settings editor (/phone settings) for nearly every option, saved in the database.
  • Database tables are created automatically at first start; sql/install.sql and sql/migrations/ ship for manual installs.
  • Optional integrations with oxide-police, oxide-dispatch, oxide-drugselling, oxide-banking, oxide-tablet and the Oxide gig jobs.
  • English locale (locales/en.json).

Oxide Multicharv2.0.4

Patch

Fixed

  • Pressing Play could leave the player on the aerial spawn camera with the character card still on screen and no way forward, when the spawn flow was started a second time before the location picker appeared. A second Play press is now ignored, the button shows "Loading..." until the picker opens, and a flow that fails part-way returns the player to character selection instead of leaving a dead camera.
  • ESX: the card above each character showed $0 cash, $0 bank and "Unemployed" for everyone. Balances and jobs are now looked up by the character's identifier when the State ID lookup finds nothing.

Requires

  • ESX servers: o-link 1.10.1 or newer. It fixes "Failed to load character" when pressing Play on a character that is already loaded.

Oxide Policev1.11.0

Minor

Added

  • Copy a fleet entry to another department or garage. In /police admin → Fleet → Vehicles, the copy button on a vehicle row recreates that entry — same number of units, label, model, rank, livery, extras, upgrades, addons, replacement cost and trunk loadout — in the department and garage you pick. Copies get new plates in that department's plate format, and copying is free, like adding a vehicle from the panel.
  • Performance upgrades for fleet vehicles. Set engine, brakes, transmission, armor and turbo for each fleet entry in /police admin → Fleet → Vehicles. Every unit of that entry comes out of the garage with them.
  • Gun rack addon. Bosses can buy vehicles with a gun rack (Config.FleetAddons.gun_rack, default 3500), and admins fit or remove one with the Rack toggle in /police admin → Fleet → Vehicles. On-duty officers of the department that owns the vehicle get Access Gun Rack on it, which opens a small stash for that vehicle — 4 slots by default, set in /police settings → Fleet → Fleet gun racks (Config.GunRack).
  • Place the commissary NPC with a live preview. /police admin → Detention → Prison Shop has a new Place Interactively button: move and turn a preview of the vendor, fine-tune it, then save.

Changed

  • Every button, placeholder and tooltip in /police settings can now be translated in locales/*.json.
  • Attempts to open or change /police settings without admin rights are now written to the log.

Fixed

  • The Prison Shop's Use My Position button now saves the spot you are standing on. It used to open the aim-based placement instead.
  • A /police 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.
  • /police settings now closes when your character logs out.
  • The treasury transaction for a trunk restock triggered by saving a vehicle's loadout now records who saved it.

Database

  • Run sql/migrations/008_fleet_performance_mods.sql and then sql/migrations/009_fleet_gun_rack.sql on existing servers before starting this version. They add performance upgrades and gun racks to your fleet table. Fresh installs need nothing — install.sql already includes both. Existing vehicles start with no upgrades and no gun rack.

Notes

  • Gun racks accept any item, not only weapons. The inventory bridge cannot limit a stash to weapons, so racks are kept small instead.
  • A gun rack empties when its vehicle is returned, towed back or destroyed. Turn on Config.GunRack.PersistOnReturn to keep the contents with the vehicle. Removing a rack keeps what is in it — the items are there again once a rack is refitted.
  • On inventories that cannot clear a stash (core_inventory, hex_4_inventory, jpr-inventory, ps-inventory and qb-inventory v1), racks are not emptied on return and a console warning names the vehicle.
  • Performance upgrades reach a vehicle that is already out on the road the next time it is taken out of the garage.
  • Copying between two departments needs someone who manages both, which in practice means an admin. A boss can copy between their own department's garages.
  • No changes to existing settings. Config.GunRack arrives with its defaults, and the gun_rack price is added to your saved addon prices on the first start; your radar and megaphone prices are kept.

Documentation

  • docs/CONFIGURATION.md: new Gun racks section, plus the Config.GunRack and Config.FleetAddons.gun_rack settings.
  • docs/ADMIN.md and docs/FEATURES.md: placing the commissary NPC, copying fleet entries, performance upgrades and the gun rack.
  • docs/INSTALLATION.md lists the two new migrations, and docs/BUILDING-A-DEPARTMENT.md now points to that list instead of stopping at 006.

Oxide Shopsv1.3.0

Minor

Added

  • Owners can rename their shop. The Overview window of the management panel, at the shop or on the tablet, now has a Rename Shop button. Blank names are refused, and map color codes and other formatting characters are removed. The map blip updates for everyone right away, unless an admin gave the shop a custom blip label. The name stays if the shop is resold or reclaimed.
  • Two new settings under General in /shop settings: Allow owners to rename shops (Config.AllowPlayerRename, on by default) and Max shop name length (Config.MaxShopNameLength, default 32). Admins can still rename any shop in /shop admin when owner renaming is off.
  • New rate limit renameShop: 5 seconds between renames per player.
  • itemimages/ox_inventory_items.lua: the four shop supply items (hair_product, tattoo_ink, mask_blank, fabric), ready to paste into ox_inventory's data/items.lua.

Changed

  • Every button, placeholder, tooltip and empty-list message in /shop settings can now be translated in locales/en.json (the settings.ui.* keys).

Fixed

  • Pressing ESC to cancel an in-world placement no longer closes the whole /shop settings menu.
  • If a setting can't be saved to the database, /shop settings now marks it as not saved and keeps the old value. Before, the server used the unsaved value until the next restart. Reset to default now reports a failed reset too.
  • The /shop settings panel no longer stays on screen after the admin's character logs out.
  • Renaming a shop in /shop admin now updates the owner's My Shops tablet widget straight away.

Documentation

  • docs/FEATURES.md: new Renaming a Shop section; Map Blips notes that renames update the blip.
  • docs/CONFIGURATION.md: the two rename settings and the renameShop rate limit.
  • docs/ADMIN.md: admins can rename any shop even with owner renaming off.
  • docs/INSTALLATION.md: the ox_inventory step now points to itemimages/ox_inventory_items.lua.

Oxide Drugsellingv2.0.0

Major

Added

  • Corner selling — start anywhere with /corner or the radial menu's "Work corner". Buyers come to you on foot or by car until you walk away, run out, or sit idle. Set up in Config.Corners.
  • TrapFone trap phone (trap_phone item, or bind a key to /trapphone) — clients text orders, you haggle on the keypad, then book a hand-off or a dead drop for an in-game time.
  • Phone clients come from street sales, corner sales and referrals, each with their own personality, budget, trust and hours. Good product and punctual meets build trust; bad batches, lateness and no-shows lose it.
  • Phone reputation tiers (Nobody up to Kingpin) raise the order rate, client slots and how far buyers will stretch on price.
  • Hand-offs: the buyer walks over or pulls up at a street meet point near their home.
  • Dead drops: leave the package at a drop spot, the client collects it and leaves cash (or pays instantly with Config.Drops.payout = 'instant'). Anyone who finds the package or cash can take it. Ten spots in south Los Santos ship as defaults; place your own with /drugselling drops.
  • Phone battery (charges in vehicles or with the trap_charger item), trap_sim SIM swaps for a clean number, PIN lock, silent mode, no-signal areas (Config.DeadZones), and a destroy option that wipes the phone for good.
  • Players can text each other between trap phones.
  • Heat — selling raises heat on the area, the dealer, the corner and the phone number. High heat means more refusals, more police calls and more robberies. It cools over time and survives restarts. Config.Heat.
  • Witnesses — nearby pedestrians can call the police on a sale, and a crowd makes buyers back off. Config.Witnesses.
  • Time of day — buyers are more willing at night and scarcer in the morning. Config.TimeOfDay.
  • Seized phone evidence — police who take a dealer's phone can extract it and read contacts, messages and booked meets, trace another number to a rough area, and send the report to a case. Config.Evidence.
  • Evidence reports attach to oxide-police cases out of the box. Other MDTs can use Config.OnPhoneExamined or a bridge file (see docs/EVIDENCE_BRIDGE_DEV.md).
  • Stings — police use the sting_phone item to post an undercover buy that reaches a hot dealer as a normal client. The meet or drop seizes the goods and alerts police. Officers also get a heat map. Config.Stings.
  • Bulk buyers — at Plug and Kingpin reputation, big buyers order in person with two bodyguards, and may rob a dealer they don't trust. Config.Bulk.
  • Party pills, capsules, bars, blues and percs can be sold, priced by oxide-pills.
  • New export_multiplier pricing type lets a drug's own resource set its sale prices.
  • In-game settings menu (/drugselling settings, admin only): edit every setting live, place drop spots and draw no-signal areas in the world, no restart needed.
  • Admin commands /drugselling corners, /drugselling drops, /drugselling kit [id] (gives a trap phone, SIM, charger and sting phone) and /drugselling heat.
  • Config.ModelSwaps replaces any model your game build doesn't have.
  • Server exports for settings, heat, phone lookups and evidence reports — see docs/EXPORTS.md.
  • Config.OnDrugSold and the oxide-drugselling:drugSold event now fire for every kind of sale, with a new method field (street, corner, phone, drop, bulk).
  • A "Paid $X for N x item" notification after every paid sale.

Changed

  • BREAKING: oxmysql is now required, and so is o-link 1.9.1 or newer.
  • BREAKING: settings now live in the database. The config files fill it on first start; after that, change settings with /drugselling settings. Config.Drugs stays file-only.
  • BREAKING: sale money now goes to your framework's dirty money by default (Config.DirtyMoney.mode = 'auto': marked bills on QBCore, the black_money item on QBX, the black_money account on ESX).
  • New Config.Selling.onDutyOnly (on by default): only on-duty officers count toward minPoliceOnline and receive alerts.
  • Restyled sell panel with keyboard controls, price steps around the fair price, stock counts, and a robbery result screen.
  • Buyer cooldowns now apply per buyer, with a new "Try someone else" message.
  • The negotiation accept chance, counter-offer lifetime and robber's weapon are now settings (negotiateAcceptChance, counterExpiry, robberyWeapon).

Fixed

  • Police alerts, buyer cooldowns, level requirements and robbery rolls can no longer be skipped with a modified game client.
  • A sale can no longer be priced against a better-paying buyer standing nearby, or re-offered to the same buyer for a better roll.
  • A modified client can no longer use sale animations to freeze or arm other players' entities.
  • Drugs are returned if the payout fails, for example when the inventory is too full.
  • Refunded items keep their strain and quality details.
  • Robberies now report what was actually taken.

Documentation

  • New docs/ADMIN.md (commands and settings menu) and docs/EVIDENCE_BRIDGE_DEV.md (connecting another MDT). Every other doc was rewritten for 2.0.0.

Migration Guide

  1. Install oxmysql and update o-link to 1.9.1 or newer. In server.cfg, start both before oxide-drugselling.
  2. Database tables are created automatically on first start. To create them by hand instead, run sql/install.sql.
  3. Register the new items trap_phone, trap_sim, trap_charger and sting_phone in your inventory. ox_inventory users can paste items/ox_inventory_items.lua, and the icons are in items/. See docs/INSTALLATION.md.
  4. Replace your 1.2.0 config files with the new ones and copy your own edits across before the first start. After that, the files only fill in settings the database doesn't have yet — use /drugselling settings.
  5. To keep paying sales in clean cash, set Config.DirtyMoney to mode = 'account', account = 'cash' before the first start.
  6. If your police have no duty toggle and you use minPoliceOnline, turn off onDutyOnly, or no officers will count.
  7. If you translated locales/en.json, start again from the new file. Many keys were added and a few were removed.

Oxide Policev1.10.0

Minor

Added

  • The MDT and boss menu can open inside the tablet. With oxide-tablet running, officers get a Police MDT app and department heads get a Police Command app, and /police mdt or the tablet item opens the MDT inside the tablet too. Turn each off with Config.MDT.useTablet and Config.Boss.useTablet, or Host in oxide-tablet in /police settings. Without oxide-tablet, both open in their own window as before.
  • The MDT map now shows Cayo Perico. A new Map mode setting under General in /police settings (Config.MapMode, default inherit) picks combined islands, separate island views with a region picker, or disabled for mainland only. oxide-police:mapmode <mode> from the server console does the same.
  • Seized-phone reports from the drug selling resource can be attached to an MDT case by its case number, under the same department and duty rules as an entry typed in the MDT.
  • Dispatch alerts in the MDT show the weather when the alert carries it.

Changed

  • The MDT map is now drawn from o-link's shared map instead of images bundled with this resource.

Fixed

  • Police payments showed "o-link" in bank transaction history. They now read Paycheck, Back pay, Police fine, Department payout, Department deposit or Commissary purchase.
  • Saved /police settings values can no longer be overwritten with the file defaults if the database read fails during startup.
  • Decimal settings no longer show rounding noise like 0.90000000000009 in the menu.
  • Pressing ESC to cancel an in-world picker no longer closes /police settings as well.

Notes

  • Requires o-link 1.8.0 or newer for the MDT map.
  • Tablet hosting is on by default. If you run oxide-tablet and want the MDT and boss menu in their own windows, turn off Host in oxide-tablet for each in /police settings.

Documentation

  • New items/ox_inventory_items.lua and items/ox_inventory_weapons.lua hold every item and the WEAPON_RADAR weapon ready to paste into ox_inventory, with images alongside. docs/INSTALLATION.md, docs/ESX_INSTALL.md and docs/QBX_INSTALL.md now point to them.
  • docs/CONFIGURATION.md: new shared/config/boss.lua section, Config.MDT.useTablet, and a Shared map mode section.
  • docs/EXPORTS.md: new AttachCaseEvidence export for adding an entry to a case from another resource.
  • docs/QBX_INSTALL.md: stale references fixed and the Config.Radar.HandheldWeapon example corrected to 'WEAPON_RADAR'.

Oxide Animal Controlv1.5.0

Minor

Added

  • IsOnShift server export: exports['oxide-animalcontroljob']:IsOnShift(source) tells your other resources whether a player is on an animal control shift, so they can stop someone working two jobs at once.
  • Paste-ready ox_inventory entries for the dart gun and ammo_dart in itemimages/ox_inventory_weapons.lua.

Changed

  • Missing-model warnings are now capped per player and in total, so one misbehaving client can't flood admins with notifications or fill the server log.

Removed

  • Config.Blip.label: it had no effect. The office blip always shows the office's name.

Fixed

  • Pressing ESC to cancel an in-world placement no longer closes the whole settings editor too.

Documentation

  • New docs/EXPORTS.md covering IsOnShift, GetSetting and SetSetting, with integration examples.
  • docs/INSTALLATION.md: ox_inventory steps now point to itemimages/ox_inventory_weapons.lua.

Oxide Landscapingv1.5.0

Minor

Added

  • IsOnShift server export: exports['oxide-landscapingjob']:IsOnShift(source) tells your other resources whether a player is on a landscaping shift, so they can stop someone working two jobs at once.

Changed

  • Missing-model warnings are now capped per player and in total, so one misbehaving client can't flood admins with notifications or fill the server log.

Fixed

  • Switched-off settings no longer turn themselves back on after a restart.
  • If the database returned nothing at startup, saved settings could be overwritten with the config file defaults. Startup now only adds settings that are missing.
  • Decimal settings no longer show rounding noise like 0.90000000000009 in the editor.
  • Pressing ESC to cancel an in-world placement no longer closes the whole settings editor too.

Documentation

  • New docs/EXPORTS.md covering IsOnShift, GetSetting and SetSetting, with integration examples.

Oxide Roadside Assistancev1.5.0

Minor

Added

  • IsOnShift server export: exports['oxide-roadsideassistancejob']:IsOnShift(source) tells your other resources whether a player is on a roadside assistance shift, so they can stop someone working two jobs at once.

Changed

  • Missing-model warnings are now capped per player and in total, so one misbehaving client can't flood admins with notifications or fill the server log.

Removed

  • Config.Blip.label: it had no effect. The tow yard blip always shows the tow yard's name.

Fixed

  • Dying on shift went unnoticed. The shift now ends, earned pay is paid out, the work uniform comes off and the death complaint is filed. A crew partner still on shift keeps the truck and the current call. On QBCore and QBX, being downed counts too.
  • Switched-off settings no longer turn themselves back on after a restart.
  • If the database returned nothing at startup, saved settings could be overwritten with the config file defaults. Startup now only adds settings that are missing.
  • Decimal settings no longer show rounding noise like 0.90000000000009 in the editor.
  • Pressing ESC to cancel an in-world placement no longer closes the whole settings editor too.

Documentation

  • New docs/EXPORTS.md covering IsOnShift, GetSetting and SetSetting, with integration examples.

Oxide GoPostalv1.4.0

Minor

Added

  • IsOnShift server export: exports['oxide-postaljob']:IsOnShift(source) tells your other resources whether a player is on a postal shift, so they can stop someone working two jobs at once.

Changed

  • Missing-model warnings are now capped per player and in total, so one misbehaving client can't flood admins with notifications or fill the server log.

Removed

  • Config.Blip.label: it had no effect. The depot blip always shows the depot's name.

Fixed

  • Switched-off settings no longer turn themselves back on after a restart.
  • If the database returned nothing at startup, saved settings could be overwritten with the config file defaults. Startup now only adds settings that are missing.
  • Decimal settings no longer show rounding noise like 0.90000000000009 in the editor.
  • Pressing ESC to cancel an in-world placement no longer closes the whole settings editor too.

Documentation

  • New docs/EXPORTS.md covering IsOnShift, GetSetting and SetSetting, with integration examples.
  • docs/CONFIGURATION.md: new "How Settings Work" section. Adding a depot now points to /postaljob settings, and the depot name field explains that plain text works.
  • docs/ADMIN.md: /postaljob settings added to the command list. Builder exports only go in the config file before the resource's first start.
  • docs/TROUBLESHOOTING.md: timer, cancel cooldown and debug logging fixes now point to /postaljob settings.

Oxide Pizza Jobv1.4.0

Minor

Added

  • IsOnShift server export: exports['oxide-pizzajob']:IsOnShift(source) tells your other resources whether a player is on a pizza delivery shift, so they can stop someone working two jobs at once.

Changed

  • Missing-model warnings are now capped per player and in total, so one misbehaving client can't flood admins with notifications or fill the server log.

Fixed

  • Switched-off settings no longer turn themselves back on after a restart.
  • If the database returned nothing at startup, saved settings could be overwritten with the config file defaults. Startup now only adds settings that are missing.
  • Decimal settings no longer show rounding noise like 0.90000000000009 in the editor.
  • Pressing ESC to cancel an in-world placement no longer closes the whole settings editor too.

Documentation

  • New docs/EXPORTS.md covering IsOnShift, GetSetting and SetSetting, with integration examples.
  • docs/CONFIGURATION.md: new "How Settings Work" section. Adding a shop now points to /pizza settings.
  • docs/ADMIN.md, docs/TROUBLESHOOTING.md: location builder exports and the cancel cooldown now point to /pizza settings. Pasting into the config file only works before the resource's first start.

Oxide Newspaperv1.3.0

Minor

Added

  • IsOnShift server export: exports['oxide-newspaperjob']:IsOnShift(source) tells your other resources whether a player is on a newspaper shift, so they can stop someone working two jobs at once.
  • Paste-ready ox_inventory entry for the newspaper weapon in itemimages/ox_inventory_weapons.lua.

Changed

  • Missing-model warnings are now capped per player and in total, so one misbehaving client can't flood admins with notifications or fill the server log.

Fixed

  • Switched-off settings no longer turn themselves back on after a restart.
  • If the database returned nothing at startup, saved settings could be overwritten with the config file defaults. Startup now only adds settings that are missing.
  • Decimal settings no longer show rounding noise like 0.90000000000009 in the editor.
  • Pressing ESC to cancel an in-world placement no longer closes the whole settings editor too.

Documentation

  • New docs/EXPORTS.md covering IsOnShift, GetSetting and SetSetting, with integration examples.
  • docs/CONFIGURATION.md: new "How Settings Work" section. Depots and houses now point to /newspaper settings, and /newspaperbuilder only captures coordinates into an export file.
  • docs/ADMIN.md, docs/TROUBLESHOOTING.md: builder exports and the uniform toggle now point to /newspaper settings.
  • docs/INSTALLATION.md: ox_inventory step now points to itemimages/ox_inventory_weapons.lua.

Oxide Pillsv1.0.0

Major

Added

  • First release of oxide-pills.
  • Runs on QBCore, QBX and ESX through o-link. ESX needs ox_inventory.
  • A full pill lab: mill, blend, press, sort and pack, each worked by hand at its own station.
  • 17 placeable stations: a lab workbench with 2 machine slots, 11 benchtop machines and 5 floor machines, all kept through restarts.
  • A hidden quality profile for every batch (potency, integrity, imprint, finish and consistency) that only a light box reading reveals.
  • A mortar and pestle ground by circling the mouse, and a blade grinder you pulse and knock clean.
  • A stand mixer loaded by hand: pour each ingredient for as long as you want it in the bowl.
  • A hand-cranked press where your pace is the skill, and an electric press with four speeds.
  • Die residue that builds as you press and is scrubbed off with a brush, and die wear that follows the die set.
  • Tray sorting: throw out crumbled, capped, chipped, picked, blurred and patchy tablets before the batch is counted.
  • Five product lines: Party Pills, NOVA Bars, VELA Blues, AXIA Percs and AURA Capsules.
  • Counterfeit VELA Blues and AXIA Percs, judged on how well they pass for the real thing.
  • A die engraver for cutting tooling to a product line and stamping its face.
  • Player brands: a unique name and one of 8 symbols pressed onto party pills, with a reputation that sales build and overdoses and seizures damage.
  • Hand-filled baggies, labelled pharmacy bottles and sealed blister cards, each protecting pills differently.
  • Granulating sieve, drum tumbler, ball mill, pan coater and hardness tester for better batches.
  • A capsule filling board for AURA Capsules: spread, tamp and cap 30 shells at a time.
  • A rotary press worked by a crew of up to three (feeder, sorter and packer), or by one player alone.
  • Dust from milling and pressing, with a wearable dust mask and a placeable dust collector.
  • Mystery powder that only a reagent test kit can identify, and that can turn out to be fentanyl.
  • Usable pills with effects per product line, and overdoses from batches that are too strong or from taking too many.
  • Pills that break in crashes, falls and over time; broken tablets can be ground back down.
  • Street sales through oxide-drugselling 2.0.0 or newer, priced by four buyer types who each judge a batch differently.
  • A pharma delivery run that pays per blister card and launders dirty money at each drop.
  • Pill ID lookup for brands and counterfeit imprints, with police evidence logging and an optional press serial trail.
  • 10-level progression that unlocks stations and product lines, shows more detailed readings as players climb, and adds two level-10 perks.
  • An in-character Pressing Manual item (pill_manual) covering the whole trade.
  • Single /pills command: /pills stats and /pills pillid for players, and /pills settings, /pills kit, /pills setlevel and /pills traytest for admins.
  • Live settings editor (/pills settings): change settings in game with no restart, and draw placement zones in the world.
  • Blocked or allowed placement zones, and a per-item job and gang usage whitelist.
  • Optional police alerts for each production stage and delivery handoff, off by default.
  • Optional Pill ID tablet app with oxide-tablet, overdose conditions with oxide-medical, and territory bonuses with oxide-gangs.
  • Model replacements for older game builds (Config.ModelSwaps).
  • 59 inventory items with icons, and a ready-to-paste items/ox_inventory_items.lua.
  • Database tables are created automatically at boot; sql/install.sql ships for manual installs.
  • English locale (locales/en.json) covering every notification, prompt and menu.

Oxide Blackmarketv1.9.1

Patch

Changed

  • Dealer spawn locations are now server-only. Config.Locations moved from shared/config.lua to the new server/config.lua, and the list is no longer sent to players' game clients - cheaters can't read it out of the downloaded resource files or out of the synced settings.
  • Editing spawn locations in /blackmarket settings works exactly as before. If you already run the resource, your saved locations live in the database and carry over - nothing to redo.

Fixed

  • Settings you customized could be reset to the file defaults at startup if the settings table read came back empty. Startup now only adds settings that are missing, and never overwrites saved ones.
  • Decimal settings in /blackmarket settings no longer come back as 0.90000000000009 after saving.

Documentation

  • CONFIGURATION.md and INSTALLATION.md updated for the new server/config.lua file.