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 101–125 of 301 releases

Oxide Bankingv2.1.0

Minor

Added

  • Redesigned Services screen - Loans, bills, savings, investments, cards, and credit each have their own tab, plus an Overview tab showing what needs attention and what is due in the next two weeks.
  • Tablet app - When oxide-tablet is running, the bank appears as a tablet app with a badge for bills and loan payments due soon, tray notifications, and an Upcoming payments home-screen widget. Bank locations still open the bank's own window. Turn it off with Config.Tablet.UseTablet. Deposits and withdrawals are hidden on the tablet unless Config.Tablet.AllowCashActions is true.
  • Savings notice period - Money withdrawn from savings soon after it was paid in is charged earlyWithdrawalPenalty. Money that has sat for withdrawalNoticeDays (default 7) comes out free. The savings screen shows how much is free to withdraw, and the fee, before a withdrawal is confirmed.
  • Invoice late fees and collection - Late fees grow for each day an invoice stays unpaid (InvoiceLateFeeDailyPercent). Overdue invoices are collected from the debtor's bank account after InvoiceAutoDebitAfterDays. Turn collection off with InvoiceAutoDebitEnabled = false. Unpaid invoices also lower the debtor's credit score.
  • Invoice limits - InvoiceMaxAmount and MaxOutstandingInvoicesPerRecipient cap invoices players write from the banking screen. Invoices from other resources (fines, medical bills, vehicle finance) are not affected.
  • Invoice from the business - Bosses can send an invoice from the business account on the Business screen.
  • Total borrowing limit - Config.Loans.exposure caps how much one player can owe across all their loans.
  • Position limits - maxPositionsPerProduct and maxTotalPositions for investments, maxPerProduct and maxTotal for certificates of deposit.
  • Early cash-out for investments - Investments can be withdrawn before they mature. Each product's earlyWithdrawalPenalty is taken from the earnings only, never from the amount invested.
  • Credit score settings - Config.CreditScore now sets the score range, how far credit events can move the score, how quickly that fades, and the points for each event (eventDeltas).
  • Command suggestions - Every banking command now shows chat suggestions, and command help text and chat replies can be translated in locales/en.json.
  • /forceinvoices collect - Marks overdue invoices and also collects them.

Changed

  • Banking days follow the calendar - A day the server was off at midnight, such as during a nightly restart, is now counted when the server starts again.
  • Loan repayment - Loans are repaid in instalments every LoanPaymentInterval days, taken automatically even when the borrower is offline. Paying off early refunds the interest for instalments that never ran. Loans in collections can be paid from the bank screen.
  • Loan applications - Applications waiting for approval count toward maxActiveLoans, and the application shows an eligibility check before it is sent. Config.LoanApproval.processingTime is in real hours. The Emergency Loan now needs an account at least 1 day old.
  • Rates rebalanced - Savings pays 1.25x the tier rate (was 2x). Certificate of deposit rates are annual: 4%, 6%, and 8%. Expected investment returns: savings bond 9%, stock index 12%, crypto fund 15%, real estate 11%.
  • Investments - A position holds its value once it matures until the player cashes it out. Investing follows each tier's investments setting, so Basic accounts cannot invest by default.
  • Savings minimum balance - A savings account can be emptied, but a withdrawal cannot leave it below minimumBalance.
  • Fee settings trimmed - config/fees.lua now lists only the fees the bank charges. ATM and external transfer fees stay available to other resources through the CalculateATMFee and CalculateTransactionFee exports.
  • WithdrawFromSavings export - The applyPenalty argument has been removed. The notice period decides the penalty.

Fixed

  • Reliability fixes across loans, savings, investments, certificates of deposit, invoices, cards, and credit scores.
  • Overdraft - An overdraft withdrawal now empties the bank balance and records the rest as owed. The amount owed shows on the banking screen and is paid back from the next money into the account.
  • Security PIN - Players who turn on the security PIN are asked for it before withdrawals and transfers of TwoFactorThreshold or more.
  • ATM PIN lockout - Too many wrong ATM PINs now lock PIN entry (MaxLoginAttempts, LockoutDuration).
  • Fraud alerts - Large withdrawals, deposits and transfers, and bursts of transactions, now alert online admins (EnableFraudDetection).
  • ESX transfers - Transfers to other players now work on ESX.
  • Tier upgrades - An upgrade no longer takes the first month's fee when the player cannot also pay the upgrade fee.
  • GetPlayerStatements export - statement_type and date are now filled in.

Documentation

  • All docs checked against the code and corrected.
  • docs/CONFIGURATION.md - Covers the savings notice period, loan repayment, the borrowing limit, investments, certificates of deposit, credit score settings, invoice late fees and collection, and the trimmed fee settings.
  • docs/FEATURES.md - Added the Services screen and the tablet app.
  • docs/EXPORTS.md - Updated the savings, loan, invoice, and credit exports, and added SettleInvoice.
  • docs/ADMIN.md - Added /forceinvoices collect.
  • docs/INSTALLATION.md - Added the update step for sql/migrations/.

Migration Guide

  1. Back up your database.

  2. Before you start 2.1.0, run the three files in sql/migrations/ once:

    • credit_hybrid_and_market_drift.sql
    • savings_notice_period_and_invoice_fees.sql
    • overdraft_owed.sql

    All three are safe to run more than once. They are written for MariaDB. On MySQL 8, remove IF NOT EXISTS from each ADD COLUMN and ADD INDEX line, and skip any column that already exists.

  3. Copy the new settings from config/ into your own config files. Several unused settings were removed from config/fees.lua.

  4. Restart the whole server, not only the resource. This version adds new files.

Existing savings balances are dated from the day each account was opened, so money in an account older than the notice period comes out free. In an account opened less than withdrawalNoticeDays ago, the existing balance becomes free once the account reaches that age. Open loans move onto the new repayment schedule automatically the first time the server starts.

Oxide Weatherv1.0.0

Major
  • Initial public release of oxide-weather.
  • One server-synced clock and sky for every player, run from the game clock or mirrored from real time (/weather clock).
  • Day and night that pass at different speeds (/weather timescale <day> [night]), a clock you can freeze (/weather freeze), and per-region time offsets.
  • Fifteen weather types with weighted transitions and a forecast queue you can read ahead of time and edit from the admin panel.
  • Weather regions: six starting zones (Los Santos, Sandy Shores, Paleto Bay, Mount Chiliad, Fort Zancudo, Cayo Perico) with five climate profiles and smooth blending where regions meet.
  • In-game zone editor (/weather zones) to draw, edit and delete regions on the map without touching files.
  • Seasons that advance with the game calendar, follow the real-world month, or stay where you put them, each with its own temperature and snow profile.
  • Christmas and Halloween presets toggled with one command (/weather christmas, /weather halloween).
  • Temperature per location shaped by altitude, coast, time of day and weather, shown in °C or °F.
  • Snow that builds up during snowfall and melts as it warms, with ground cover, vehicle tracks and footprints.
  • Moving storm fronts that cross the map on a heading, up to eight at once, spawned automatically or by hand (/weather front).
  • Lightning near the player, flickering lights, and region-wide power cuts with scheduled outages (/weather blackout).
  • Fog and storm visibility effects that fade in and out and ease off at night and in snow.
  • Severe weather alerts at three levels (advisory, watch, warning) worked out from each region's forecast and any storm heading its way.
  • Weather app and home-screen widget for oxide-tablet with forecast, live radar and alerts pages, plus tablet notifications for new alerts.
  • Weazel News weather report export for news roleplay.
  • Live admin panel (/weather) covering conditions, forecast, radar, power, scenes and fronts in one window.
  • Real-world weather mode (/weather realworld) that mirrors a real city's weather, temperature, wind and hourly forecast through Open-Meteo, with no API key needed and an option to follow the city's local time.
  • Chat commands for the essentials: /weather set, /weather time, /weather dynamic, /weather forecast, /weather season and /weather inspect.
  • Scene locks that freeze weather, time, wind, blackout and snow for one player or for everyone (/weather lock, /weather unlock).
  • Shelter and exposure queries for other resources, worked out from drawn covered areas, an upward probe, interiors and vehicles.
  • Road conditions on a 500 m grid: wetness after rain and ice below freezing, drying and thawing over time.
  • Live settings editor (/weather settings) that changes settings in game and saves them to the database.
  • Everything survives a restart: clock, weather, forecasts, regions, season, snow cover, storms and outages are saved to oxide_weather_state.
  • Database tables are created automatically at first start; sql/install.sql ships for manual installs.
  • Runs on QBCore, QBX and ESX through o-link, with the weather bridge namespace plus 62 server and 28 client exports for other scripts.
  • English locale (locales/en.json) covering every notification, command, panel and app screen.

Oxide Tabletv1.0.0

Major
  • Initial public release of oxide-tablet.
  • A tablet players carry in their inventory, opened with the item, a keybind or /tablet open; the item requirement can be turned off.
  • Other resources put their screens on the tablet as apps, and those apps appear on their own once both resources are running.
  • Ships with its own App Store, Settings and Maps apps.
  • Every tablet is its own device: a 15-digit IMEI saved on the item, keeping its name, home screen, apps and settings when it changes hands.
  • Battery that drains while the tablet is out and recharges while it is put away, at rates you set; a flat tablet will not open until it has charged.
  • Held tablet prop and animation other players can see, and the tablet puts itself away on death, on going down, or when the item leaves the player's inventory.
  • More than one item can open the tablet, and an item can be locked to a fixed list of apps for a work-issued device.
  • Home screen with up to 5 pages and a dock of up to 6 apps, drag-and-drop editing, an App Library for hidden apps, and per-tablet renaming.
  • Calendar and ID widgets in small and medium sizes, plus widgets other resources add in small, medium and large.
  • Eight built-in wallpapers, plus your own images placed in the wallpapers/ folder.
  • App Store where players install the apps they qualify for, with a preinstall list, or turned off so every available app installs itself.
  • Apps can be limited to certain jobs, gangs or on-duty players by the resource that adds them.
  • Maps app with places you add, the blips players already have on their map, name and icon overrides, search, GPS waypoints and a drawn route.
  • Settings app for players: Do Not Disturb, banners, sound, volume, per-app mutes, larger text, bold text, reduced motion, renaming and resets.
  • Notifications with banners, a tray under the status bar, app badge counts and a notification sound you can replace.
  • Notification bubbles at the corner of the screen while the tablet is put away.
  • Live settings editor (/tablet settings) that changes settings in game and saves them to the database, most applying with no restart.
  • Admin commands to factory-reset a tablet by IMEI (/tablet wipe) and send test notifications (/tablet notify), plus /tablet device and /tablet resethome for players.
  • Layouts, installed apps and player settings are saved with the tablet, or with the character when no tablet item is involved, and survive a restart.
  • Database tables are created automatically at first start; sql/install.sql ships for manual installs.
  • Runs on QBCore, QBX and ESX through o-link 1.8.0 or newer, with the tablet bridge namespace plus 16 client and 10 server exports for other scripts.
  • Developer guide for building apps and widgets, including a host shim that puts an existing NUI page on the tablet.
  • English locale (locales/en.json) covering every notification, command and screen.

Oxide Shopsv1.2.0

Minor

Added

  • Melee weapons no longer need a weapon license. When Require a weapon license is on, two new lists under Weapon Shop in /shop settings decide what sells without one: Categories sold without a license (ships with Melee) and Items sold without a license (ships with weapon_knife, weapon_bat, weapon_crowbar, weapon_hammer, weapon_nightstick). An item is exempt if either list matches it. Items added with Add item, wholesale or transfer have no category, so exempt those by name. Clear both lists to require the license for everything, as before. If you already had the requirement on, melee now sells without a license until you clear the lists.
  • The shop map in /shop admin is now drawn from o-link's shared map and includes Cayo Perico. A new Map mode setting under General in /shop settings (Config.MapMode, default inherit) chooses combined islands, separate island views, or disabled for mainland only; oxide-shops:mapmode <mode> from the server console does the same. Requires o-link 1.8.0 or newer.

Changed

  • The message unlicensed buyers see now reads "You need a weapon license to buy this item" (shop_weapon_license_required in locales/en.json).

Fixed

  • Saved /shop 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.

Documentation

  • docs/CONFIGURATION.md: the Weapon Shop section now documents Require a weapon license, License type and the two exemption lists; new Shared map mode section.
  • docs/FEATURES.md: Weapon license bullet under Weapon Shops.

Oxide Animal Controlv1.4.0

Minor

Added

  • Dedicated tranquilizer darts. The dart gun now uses its own ammo_dart item and its own ammo type instead of pistol ammo, and it does no health damage. An item image ships in itemimages/ammo_dart.png. You must register the new item before updating; see the Migration Guide.
  • Tranquilize players setting (Config.Tranquilizer.playerEffects). This used to be always on. It's now off by default and only works for officers on shift.
  • The incoming call pop-up now shows the animal, the street, and an icon for the call type.

Changed

  • Extra dart packs are now paid from pay already earned this shift. If earnings don't cover the price, the purchase is refused. The first pack is still free.
  • When a shift ends for any reason, the dart gun and any unused job darts are taken back.
  • Destroying the truck now ends the shift for both crew members, with the fine and complaint. Before, they stayed on shift with no truck and no new calls.
  • Config.Crew.maxSize now works: set it to 1 for solo-only shifts. Crews are pairs, so saved values above 2 are lowered to 2.
  • Players can't clock in while dead or downed, or while the dart gun or dart item is missing from your inventory's item list. They get an equipment error instead of half a kit.
  • The dart gun, gun item and dart item can't be changed in /animalcontrol settings while anyone is on shift.
  • The server now checks every step of a call (darting, capturing, loading and delivery). A call completes only once the animal is loaded and the truck is at the drop-off.

Removed

  • Config.AnimalLoading.loadDuration and Config.AnimalLoading.unloadDuration: they had no effect. Loading and unloading times are set by Config.LoadAnimation.duration and Config.UnloadAnimation.duration.

Fixed

  • Killing the call's animal went unnoticed. The call now ends with the kill fine (Config.Complaints.animalKillFine) and a complaint.
  • Dying on shift went unnoticed. The shift now ends, earned pay is paid out and the death complaint is filed. On QBCore and QBX, being downed counts too.
  • Reaching the complaint limit mid-shift left the officer on shift with no clock-out option. The shift now ends and earned pay is paid out before the suspension starts.
  • Being auto clocked out for missed calls left the player with the dart gun and the work uniform.
  • When one crew member clocked out mid-call, the animal, bait and reporting civilian could be deleted, leaving the partner with a call they couldn't finish. The partner now keeps the scene, including remains or bait the other officer was holding.
  • Darted animals are no longer dropped to 1 health while sedated, so a small knock can't kill them.
  • A truck that disappears (for example, removed by a cleanup script) now ends the shift without the destruction fine or complaint.
  • An unanswered crew invite no longer blocks that player from being invited again after it expires.
  • Cancelling the body-bag load no longer makes the bag vanish from your hands.
  • The default event list shipped an aggressive-animal call at the map origin (0, 0, 0). It's removed. Dispatch now skips any event with no animal, an invalid call type or a (0, 0, 0) location, and logs a console warning. The settings editor won't save such events.
  • These settings had no effect and now work: Config.Stealth.fallbackSpookChance, Config.AnimalLoading.loadRange, Config.BaitPlaceAnimation, Config.ReportingNPC.farScenario and animationDistance, and each animal's health and name in Config.Animals. The reporting civilian now cycles through all of Config.ReportingNPC.animations, not just the first.
  • The shift menu shows your partner's name instead of always saying "Solo", and the level progress bar measures progress toward the next level correctly.
  • 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.
  • Tutorial text now says missed calls lead to automatic clock-out; they don't add complaints.

Documentation

  • docs/INSTALLATION.md: dart setup for QBCore and ox_inventory, and a new "Updating an existing installation" section.
  • docs/CONFIGURATION.md: new "How Settings Work" section. Office and event changes now point to /animalcontrol settings, and the tranquilizer, crew and loading tables are updated.
  • docs/ADMIN.md, docs/FEATURES.md, docs/TROUBLESHOOTING.md: updated for in-game settings and the new dart, crew, complaint and truck behavior.

Migration Guide

  • No SQL to run.
  • Before starting this version, register ammo_dart and switch the dart gun to the new dart ammo, following "Updating an existing installation" in docs/INSTALLATION.md. Until you do, nobody can clock in.
    • QBCore: add ammo_dart to qb-core/shared/items.lua. Change weapon_g2's ammotype to AMMO_ANIMALCONTROL_DART in qb-core/shared/weapons.lua and qb-core/shared/items.lua. Add the ammo_dart entry to Config.AmmoTypes and the Config.WeaponRepairCosts.animalcontrol line to qb-weapons/config.lua.
    • ESX / QBX (ox_inventory): set ammoname = 'ammo_dart' on WEAPON_G2, and add ammo_dart to the Ammo table in ox_inventory/data/weapons.lua.
    • Copy itemimages/ammo_dart.png into your inventory's image folder.
  • Fully restart the server and have players reconnect, because the gun's weapon data changed.
  • A saved ammo item of ammo_pistol, pistol_ammo or ammo-9 switches to ammo_dart automatically on first start. A custom tranquilizer weapon needs its own ammo type and dart item.
  • If your saved event list still has the old call at (0, 0, 0), dispatch now skips it. Remove it or move it in /animalcontrol settings.

Oxide EMSv1.1.0

Minor

Added

  • The boss menu can open inside the optional oxide-tablet resource as an "EMS Command" app. When that resource is running, department bosses get a tile that opens the same management desktop from anywhere, and the boss point at the facility keeps working. Without it, nothing changes. Turn it off under Boss menu → Host in oxide-tablet in /ems settings; the first-start default lives in the new shared/config/boss.lua.
  • New locale key tablet.boss_app_label in locales/en.json.

Fixed

  • Settings saved in /ems settings no longer revert to the shipped defaults after a restart when the startup read of oxide_settings comes back empty (a restored or blank database, or a renamed resource folder). Startup now only fills in missing values and never overwrites a saved one.
  • Decimal settings no longer show up as 0.90000000000009 in /ems settings after a round trip through the database; values are snapped to ten significant digits when loaded and saved.

Documentation

  • The hospital:server:emergencyAlert / ambulanceAlert and hospital:client:CheckStatus / TreatWounds / RevivePlayer compatibility events are QBCore and Qbox only. docs/EXPORTS.md and docs/FEATURES.md now say so, and the ESX guide no longer lists them.
  • docs/CONFIGURATION.md covers the new boss-menu setting.

Oxide Medicalv1.1.0

Minor

Added

  • Hypothermia. With a weather resource that reports temperature and cover through o-link, players left out in the cold long enough start shivering and pick up a hypothermia sickness, which clears on its own once they have been warm for a while. Off by default: turn on Enabled in shared/config/weather.lua, where ColdTemperature, HypothermiaSeconds and RecoverySeconds set the threshold, how long it takes to set in and how long recovery takes. Without a weather resource that reports through the bridge, turning it on does nothing.
  • That WeatherIntegration tuning is this resource's first database-backed setting. It is seeded into oxide_settings from shared/config/weather.lua on first start (the table is created automatically) and read from the database from then on; change it with the SetSetting export rather than by editing the file.

Changed

  • Rain exposure now asks your weather resource through o-link whether it is raining and whether the player is under cover, and falls back to the game's own weather and interior check when nothing answers. No weather resource is required and the fallback behaves as before; rainWeather in shared/config.lua applies to the fallback only.

Fixed

  • A fracture's limp no longer vanishes after a jump, a fall, a ragdoll, climbing, vaulting or getting into a vehicle, and it returns within a second when another script resets the walk style. The limp is what stops an injured player sprinting, so one jump used to remove the penalty for the rest of the injury.

Documentation

  • The rain section in docs/FEATURES.md and the rainWeather row in docs/CONFIGURATION.md describe the bridge-first behaviour, and both files now cover hypothermia and the WeatherIntegration setting.

Oxide Shopsv1.1.0

Minor

Added

  • Weapon shops can now require a firearms license before a player is allowed to buy. Turn on Require a weapon license in /shop settings under Weapon Shop. It is off by default, so nothing changes until you enable it. License type sets which license is checked and defaults to weapon — the one QBCore and QBX already track. On ESX it has to match a type in your user_licenses table. If your framework has no license system at all, sales go through as before and a warning appears in your server console.
  • Groundwork for the upcoming Oxide tablet: a Shop Manager tile, an Auction House tile, a My Shops home-screen widget listing each shop you own with its till, and optional notifications for sales, low stock and auction results. The tablet has not been released yet, so none of this is active. Until it is, shop management and the auction house open at the shop exactly as they always have, and nothing on your server changes.
  • The matching Tablet settings appear in /shop settings so they are ready when the tablet arrives — Tablet apps, Allow remote withdraw/deposit, Tablet notifications, Low stock warning at and Remote session timeout. They have no effect until then. Remote Withdraw and Deposit will ship off by default: moving the till is the one shop action that puts cash straight into a player's pocket, so it stays at the shop counter unless you decide otherwise.

Documentation

  • docs/CONFIGURATION.md: new Tablet section covering all five settings and why remote cash actions ship off.

Oxide Shopsv1.0.3

Patch

Changed

  • The Purchase Shop option now shows the asking price on the option itself, and opens a confirmation with the shop name and price before any money is taken. Previously the purchase went through the instant the option was clicked.
  • The shop templates and wholesale catalog that ship with the resource now list firstaid where they previously listed medkit. Servers that already have these saved in the database keep their current item — rename it in /shop settings if you want to match.

Fixed

  • Trying to buy a shop you can't afford now tells you the asking price and how much you are short, instead of only "You don't have enough money". The wording is editable in locales/en.json.
  • Settings toggles switched off in /shop settings no longer revert to their built-in default on the next server restart.

Oxide EMSv1.0.2

Patch

Fixed

  • painkillers no longer stops working as a cure when oxide-medical is installed. Both resources were claiming the item and whichever started last won, so on some servers taking painkillers did nothing at all, with no error anywhere. oxide-medical owns it now, because it is the cure for fever.
  • The Refresh and Close buttons at the bottom of the /ems admin sidebar no longer sit flush against their own border.

Added

  • ClaimPainkillers in shared/config/compat.lua, set per framework and off by default. Turn it on to take painkillers back for oxide-ems — on Qbox that restores the stock damage-effect stack, and the fever cure stops working.

Documentation

  • New troubleshooting entry for "No Medical Records" and "The medical system is not available", covering both causes: oxide-medical not running, and an o-link older than 1.4.1, which is too old to connect the two resources. A working /med record rules out neither.
  • Install guides now tell you to confirm painkillers, bandage, ifaks and your first-aid item really are in your inventory's item list. They ship with every supported framework, but trimmed item lists drop them and a missing entry fails silently.

Oxide Medicalv1.0.1

Patch

Added

  • Item images now ship with this resource, in itemimages/: antacid, antibiotics, antiviral, medical_bandage and medical_splint. They previously lived only inside oxide-ems, so installing oxide-medical on its own left you with no images to copy.

Documentation

  • painkillers is now listed alongside the other five cure items in every install guide, with a copy-paste entry for each inventory. It is stock on QBCore, ESX and Qbox and easy to assume is present, but trimmed item lists drop it — and an unregistered cure item fails silently: using it does nothing and nothing appears in F8 or the server console.
  • Troubleshooting covers that silent failure directly, and adds a stale o-link as a cause of cure items never registering.
  • Documented that oxide-ems deliberately leaves painkillers alone, so the fever cure keeps working when both resources are installed.

Oxide Blackmarketv1.9.0

Minor

Added

  • Gang standing at the black market - two new settings under the new Gangs section of /blackmarket settings, both needing the oxide-gangs territory system installed (they're ignored otherwise).
  • Config.GangTurfRepMultiplier (default 1.5) multiplies the reputation earned when you sell to a dealer standing in territory your own gang owns. Set it to 1.0 to turn the bonus off.
  • Config.GangReportInfluence (default on) makes black market sales count toward your gang's influence in that territory, the same way street drug sales do. The gang system's own anti-farm limits still apply.

Fixed

  • Settings you switched off in /blackmarket settings reverted to their file defaults on every restart. Saved off-toggles now stick.

Oxide Methv1.6.0

Minor

Added

  • Gang territory affects your lab — a cook run inside a gang territory uses that territory's yield modifier for how much product comes out, and crystallizers use its growth modifier for how fast trays dry. Needs the oxide-gangs territory system; modifiers are set per territory in oxide-gangs/shared/config/territories.lua. Without it (or outside any territory) nothing changes.
  • A cook never returns nothing: even on a territory with a below-1.0 yield modifier you always get at least one unit for your ingredients.

Fixed

  • Settings you switched off in /meth settings reverted to their file defaults on every restart. Saved off-toggles now stick.

Oxide Vendingv1.6.0

Minor

Added

  • Nine new server exports for integrators: GetTotalWarehouseItems, GetWarehouseByBucket, PurchaseWarehouse, UpdateWarehouseCode, ValidateAccessCode, CreatePickupBox, GetPickupBoxesByBusiness, GetPickupBox, and GetNPCSalesStats. See docs/EXPORTS.md.

Fixed

  • Admin commands work for your existing admins again. All twelve /vending* commands were gated behind a per-command permission most servers never set up, so admins got no response at all. They now use the standard admin check — if you already have QBCore, QBX or ESX admins, they pass with no extra setup, and a non-admin who tries one gets a clear "no permission" message instead of silence.
  • The vending radial menu no longer depends on a specific menu resource, so the Dashboard / My Machines / Employees / Place Machine entries appear on more server setups.
  • /vendingdebug daily compared local dates against UTC-stored records, so its "today" and "yesterday" readouts could be a day off. Both now use UTC.
  • The startup warning for missing progression tables pointed at sql/progression.sql, which doesn't exist — it now names sql/install.sql.

Documentation

  • Rewrote all seven guides (ADMIN.md, CONFIGURATION.md, FEATURES.md, INSTALLATION.md, NPC_SALES.md, PROGRESSION.md, TROUBLESHOOTING.md) in plain language, with the admin permission setup spelled out line by line in docs/ADMIN.md.

Migration Guide

  • No SQL to run. Restart the server once after updating.
  • If you previously added per-command permission entries to server.cfg to make /vending* work, you can remove them — they're no longer used. Admins now just need add_principal identifier.license:<their-license> group.admin and add_ace group.admin admin allow.

Oxide Weedv1.5.0

Minor

Added

  • Gang territory affects your grow — plants growing inside a gang territory use that territory's yield and growth modifiers, so a good patch of turf grows faster and harvests bigger. Needs the oxide-gangs territory system; modifiers are set per territory in oxide-gangs/shared/config/territories.lua. Without it (or outside any territory) nothing changes.
  • The plant menu's time-remaining readout accounts for the territory speed bonus, so it matches what you actually see on the plant.

Fixed

  • Settings you switched off in /weed settings reverted to their file defaults on every restart. Saved off-toggles now stick.

Oxide Cocainev1.3.0

Minor

Added

  • Gang territory affects production — every production stage inside a gang territory uses that territory's yield modifier for its output, extractors use its growth modifier for soak time, and wild coca plants there regrow faster by the same modifier. Needs the oxide-gangs territory system; modifiers are set per territory in oxide-gangs/shared/config/territories.lua. Without it (or outside any territory) nothing changes.
  • A stage never returns nothing: even on a territory with a below-1.0 yield modifier you always get at least one unit for your inputs.

Fixed

  • Settings you switched off in /cocaine settings reverted to their file defaults on every restart. Saved off-toggles now stick.

Oxide Drugsellingv1.2.0

Minor

Added

  • Gang territory affects street sales — selling inside a gang territory applies that territory's price modifier to what the buyer pays, and its buyerDensity modifier to how often buyers refuse outright. Needs the oxide-gangs territory system; modifiers are set per territory in oxide-gangs/shared/config/territories.lua. Without it (or outside any territory) nothing changes.
  • Sales feed your gang's influence in the territory you sold in, so working a corner builds standing there. The gang system's own anti-farm limits apply.
  • The price the player is shown on a completed sale is the price actually paid, including any territory bonus.

Oxide 3D Weapon Printingv1.1.4

Patch

Fixed

  • Jammed weapons actually jam now. A jam was announced on screen but the weapon kept firing normally, so jamming had no effect on gameplay at all.
  • Printed weapons wear out at the right rate. Durability counted every frame the trigger was held rather than shots actually fired, so a printed weapon degraded far faster than the shot counts in your config — a burst could register dozens of "shots" from a handful of rounds. Both durability and the jam roll now count real rounds fired.
  • The 3D printer's built-in screen works again. The page that draws the printer's on-prop display was missing from the download, leaving the screen blank on every printer. It now shows the idle, blueprint-loaded and printing-progress states as intended.

Changed

  • The weapon bench item was renamed from weapon_bench to weaponbench. Some inventories reject item names starting with weapon_, which stopped the bench working on those servers entirely. Its icon was renamed to match (itemimages/weaponbench.png).
  • The printer manual now reads the item names from your config instead of assuming the defaults, so renaming any of the printer, bench, table, USB or filament items keeps the manual working.

Documentation

  • Corrected weapon_bench to weaponbench throughout docs/CONFIGURATION.md, docs/FEATURES.md and docs/INSTALLATION.md, and the admin command permission column in docs/ADMIN.md now reads "Admin" rather than naming a per-command permission that is no longer used.

Migration Guide

  • Rename the bench item in your inventory. In your framework's item list, change weapon_bench to weaponbench (keep the label, weight and other properties as they are). Any bench items players are already holding will need to be re-issued.
  • Re-copy the itemimages/ folder into your inventory's image directory so the renamed icon is picked up.
  • If you set Config.BenchItem to your own item name, no change is needed.

Oxide Radiov1.1.0

Minor

Added

  • Gang radio channels — restricted frequencies can now be reserved for gangs as well as jobs. Every entry in the Restricted channels list gains a Gangs field alongside Jobs; a player gets in through a listed job or a listed gang. Gang names are matched without case sensitivity, unlike job names.
  • Min rank gates by gang rank when access came through a gang, and Duty only never applies to gang access (gangs have no duty concept).
  • Players are auto-tuned to a gang default channel when they join a gang, the same way jobs auto-tune at clock-on.
  • The channel browser and one-tap channel list show gang channels to gang members only, so nobody sees a rival's traffic.

Fixed

  • Auto-tune at clock-on gave up entirely if the lowest default channel refused the join (for example a duty-only channel while off duty). It now tries each default channel you qualify for, lowest first.
  • Being blocked from a restricted channel reported "restricted" even when the real reason was your rank or being off duty. The message now names the actual reason.

Oxide Dealershipsv1.0.4

Patch

Fixed

  • Test drive and purchased vehicles appear reliably. Both are now created by the server directly into the buyer's world instead of being spawned by their game client, closing the gap where a car could be paid for or a test drive announced with no vehicle ever showing up.
  • Test drive cars can no longer be left behind. The server now removes the test drive vehicle on every ending — timer expiry, manual end, resource restart, or the driver disconnecting — instead of relying on the driver's game to clean it up.
  • You're told when delivery fails. If a bought car can't be placed on the lot you now get "Your vehicle couldn't be delivered to the lot — pull it from your garage", and a test drive that can't start says so instead of showing a misleading "test drives are disabled" message. A failed delivery never costs you the car — the purchase is already yours.

Documentation

  • docs/CONFIGURATION.md: Config.Debug draws the dealership lot-zone outlines in-game; it does not add server console output.
  • docs/TROUBLESHOOTING.md: corrected the note about upgrade SQL files — sql/install.sql is the complete schema and there are no separate migration files.

Oxide Bankingv2.0.2

Patch

Fixed

  • Debit card limit counted every card on the server - Personal checking cards were counted server-wide instead of per character, so once the server reached the card limit no one could order a new debit card. Card limits and card lists are now per character. Shared, job, and gang accounts are unaffected.
  • Paid invoices could be left unpaid - A failure while writing statement history no longer undoes a payment that already went through. The money moves, the invoice is marked paid, and the failure is written to the server log instead.
  • Invoice actions failed silently - Creating, paying, or cancelling an invoice now shows a clear error message instead of leaving the banking screen unresponsive when the server hits a problem.
  • Blank invoice confirmations - Success messages now show the correct invoice number and paid amount.

Changed

  • Admin commands use your framework's admin check - Every banking admin command (listed in docs/ADMIN.md) now uses the standard admin check instead of requiring a separate group.admin ACE grant in server.cfg. Existing framework admins keep access with no config changes, and the server console can still run every command.

Documentation

  • docs/EXPORTS.md - Documented the new optional citizenid argument on GetCardsForAccount and GetAccountCardCount.

Oxide Policev1.9.0

Minor

Added

  • Fleet vehicles can carry equipment in the trunk. Each vehicle in /police admin → Fleet → Vehicles now has a Trunk Loadout — a list of items with a count and a price, sitting next to the radar and megaphone toggles, so every department equips its own cars. The equipment is loaded into the vehicle when the unit is bought and then stays with it: officers take what they need and put things back. Nothing is handed out at checkout, so there is no way to farm equipment by taking a car in and out. When a car comes back short, press Refill on the vehicle row — the department treasury is charged only for what is actually missing, at the prices you set, so a crew that loses its gear costs the department money instead of getting a free replacement set. Saving a loadout stocks the cars straight away, and if the treasury cannot cover it the save still succeeds and tells you the cost and the balance. Every unit of a vehicle shares its loadout, and units added later inherit it.
  • Departments can issue their own licence plates. In /police settings → Fleet → Fleet plate formats, give each department a plate style — LSP#### produces plates like LSP4821 — so a unit reads as LSPD or BCSO at a glance instead of getting a random 8-character plate. Use # for a digit, @ for a letter and ? for either; everything else appears as typed. The editor shows a live example of each format and refuses anything the game cannot display. Plates already in service are never rewritten, because reports, BOLOs, evidence and impound records refer to them — only vehicles created after you set a format are affected.
  • The MDT's Gang Intel tab has been rebuilt. It now opens on a gang registry with live member counts, territory held and active conflicts, and selecting a gang gives a full dossier: its territorial footprint broken down into held, contested and presence-only areas, its conflict record, and any war currently running with what is at stake and when it settles. Requires the gangs resource; the tab stays hidden without it.

Changed

  • Minimum rank on a fleet vehicle is now a list of your department's ranks. It used to be a free number box, and setting it above your highest rank made the vehicle unreachable by every officer while still looking correct in the admin panel — it simply never appeared in any garage. That value can no longer be entered.
  • Adding a second fleet entry with the same model, garage, rank and addons is now refused. Fleet entries are identified by that combination rather than by name, so a duplicate used to merge into the existing entry and quietly discard the name you typed. Use the entry's quantity to add more units of it instead.

Fixed

  • The MDT Gang Intel tab was hidden on every server. The check that decides whether the gangs resource is available never passed, so the tab never appeared even with the resource installed and running.
  • The Gang Intel tab no longer opens empty when the gangs resource is stopped. It was only hidden when the resource was absent entirely, so stopping it left a tab behind that could not load anything.
  • Adding a fleet vehicle now explains why it failed instead of showing a generic "add failed" message.
  • Close and refresh buttons in the admin and evidence side panels had no horizontal padding, leaving the icon and ESC chip flush against the button border.

Database

  • Run sql/migrations/007_fleet_trunk_stock.sql on existing servers to add trunk loadout storage to your fleet table. Fresh installs need nothing — install.sql already includes it. Existing vehicles start with no loadout until you give them one.

Notes

  • Trunk loadouts need o-link 1.6.7 or newer, and an inventory that can write to vehicle trunks. Base ESX has no trunk of its own, so on ESX this needs an inventory that adds one — ox_inventory is the usual choice. QBCore, QBX and Oxide Core ship one already. The full per-inventory list is in docs/CONFIGURATION.md. On an older o-link the equipment is written somewhere the trunk cannot show it, so update the bridge before you set a loadout up. Where the inventory does not support it, the loadout is skipped and a warning naming the vehicle is written to the server console — nothing is handed to the officer instead, because that would defeat the point of storing equipment in the car.
  • The department keeps its own record of what is in each trunk. Inventory resources only keep vehicle storage for cars their framework owns, which a fleet vehicle is not, so what is in the trunk is saved against the fleet vehicle itself and put back whenever the unit spawns. It survives restarts, and it is why an officer who empties a car leaves it empty rather than getting a fresh set next time.
  • No changes to existing settings. Fleet trunk loadouts and plate formats arrive switched off in effect: no vehicle has a loadout and no department has a plate format until you set one.

Documentation

  • docs/CONFIGURATION.md gained full sections on trunk loadouts and plate formats, including the two rules the game enforces on plates. docs/ADMIN.md and docs/BUILDING-A-DEPARTMENT.md were corrected — both stated that adding a vehicle from the admin panel debits the department treasury, which it does not; only a boss buying from their own Fleet screen is charged. The same pages also described a per-vehicle plate field that has never been editable.

Oxide Gangsv1.0.0

Major

Added

  • First release of oxide-gangs.
  • Gang registry stored in your database, mirrored into QBCore and Qbox so existing scripts keep reading gangs normally. On ESX this becomes the gang system.
  • Gang creation requests: players fill in a form, staff approve or deny from the admin panel or from chat.
  • Owner-built request form — add, remove and reorder the questions players answer in /gangs settings.
  • Per-gang rank ladder with twelve permissions, editable by the gang's own bosses.
  • Gang dashboard (/gangs dashboard) with overview, roster, ranks, applications, treasury, garage, territory, wars, leaderboard and a boss-only activity log.
  • Staff admin panel (/gangs admin) to create, edit, fund and disband gangs, review requests, place bases, manage fleets, draw territories and force-end wars.
  • Recruiting by nearby in-person invite (/gangs accept) or by written application (/gangs apply).
  • Shared gang treasury with a full transaction history, rank-gated deposits and withdrawals, and optional delegation to a banking account.
  • Gang bases with a member-only map blip, an inventory stash and a garage point with multiple vehicle spawn bays.
  • Gang vehicle fleet that keeps mods, fuel and damage between sessions and can be returned by any member with garage rights.
  • Territory system: 34 pre-drawn Los Santos districts, influence earned from drug sales, base use and presence, hourly anti-farm caps, and decay that scales with how much turf a gang holds.
  • Contest windows measured in real hours, so turf never flips from one gunfight.
  • Member-only turf map painted onto the minimap and the pause map in each owning gang's color.
  • Gang wars with matched treasury stakes, validated kill scoring, king-of-the-hill capture points, ceasefires and a clock settle. Winner takes the pot.
  • Server-wide gang leaderboard ranking wins, turf held and total influence.
  • Optional police alerts for contested turf, takeovers, war starts and capture points.
  • Optional private radio channel per gang when oxide-radio is installed.
  • Optional Gang Intel tab in the oxide-police MDT showing gangs, turf and wars.
  • Optional gang standing in oxide-blackmarket — selling on your own turf pays extra reputation.
  • Territory economy modifiers that tune yield, growth, sale price and buyer density for the Oxide drug resources.
  • Live settings editor (/gangs settings) — change nearly every setting in game, no restart and no file editing.
  • Database tables are created automatically at boot; sql/install.sql ships for manual installs.
  • English locale (locales/en.json) covering every notification, command, panel and menu.

Oxide Blackmarketv1.8.0

Minor

Added

  • Pay sellers in a different currency than buyers pay with - the new Config.SellPayout setting controls what players are paid in when selling to a dealer and when finding cash in a dead dealer's loot bag. For example, charge regular cash on purchases but pay out dirty money on sales.
  • It takes the same options as Config.DirtyMoney - a money account or an inventory item, including marked bills that carry their value in metadata. The default (inherit) keeps paying out with your Config.DirtyMoney setup, so existing servers are unchanged until you change it.
  • Editable live in /blackmarket settings under Dirty Money - changes apply to the next sale, no restart needed.
  • With split currencies, purchase refunds always return the buy currency the player was actually charged, and the shop's Balance readout keeps showing the buy currency - it won't go up after a sale, since the payout went to the other currency.
  • The startup catalog check now also verifies the sell-payout item name when item mode is used.

Oxide EMSv1.0.1

Patch

Fixed

  • Dying no longer teleports you away from where you died and replaces your character with a random pedestrian. FiveM's built-in auto-respawn is now switched off on every framework, the way the ambulance job oxide-ems replaces used to do it.
  • Settings you switch off in /ems settings no longer revert to their default when the server restarts.