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–122 of 122 releases

Oxide Landscapingv1.2.0

Minor

Added

  • SQL migration script (sql/migrate_unified_progression.sql) for migrating existing per-job progression tables into the unified job_progression table — run once across all Oxide job resources
  • Client-side death monitor thread for framework-independent death and respawn detection

Changed

  • Migrated from community_bridge to o-link — all bridge calls, lifecycle events, and dependency references now use o-link APIs
  • Progression data moved from landscapingjob_progression to shared job_progression table with composite (char_id, job) primary key
  • Death/respawn handling replaced framework bridge events with resource-owned oxide:landscapingjob:playerDied / oxide:landscapingjob:playerRespawned server events
  • Company van now initializes fuel to 100% on spawn
  • Shift payout and vehicle fine transactions now include reason strings for audit trails
  • Config.uniformsEnabled now defaults to false
  • Documentation updated for o-link references

Migration Guide

  • Back up your database before updating
  • Run sql/migrate_unified_progression.sql once before starting the updated resource
  • This copies data from landscapingjob_progression into job_progression and removes the old table
  • If you are updating multiple Oxide jobs that use this migration, only run the script once total

Oxide Methv1.2.0

Minor

Added

  • Meth usage system: all bagged meth variants are now usable items with configurable stimulant effects (screen visuals, intensity pulses, FOV surges, speed boost, stamina regen, armour, healing)
  • Per-variant and per-purity effect scaling with full configuration in shared/config/usage.lua
  • Usage cooldown and active-session checks to prevent stacking
  • Client-side usage cleanup on resource stop and player disconnect
  • Session cancellation when players press Escape during cooking, breaking, or bagging minigames — properly releases server-side session locks
  • Vehicle usage restriction: gas mask and equipment items can no longer be used while in a vehicle
  • Configurable fume effects during cooking (Config.FumeEffects) — linger duration, max strength, ramp-up rate, and masked fade rate are now exposed in config
  • Race condition guard on equipment spawning to prevent duplicate entity creation during yielding
  • Frontend locale loader now reads the active language from the ox:locale convar via a getLocale NUI callback and loads the matching locales/<lang>.json, with graceful fallback to English

Fixed

  • Player visibility in drug cameras: removed redundant SetEntityVisible calls that caused the local player to appear invisible to other players during minigames
  • Bagging NUI close now properly cancels pending variant selection and releases server session
  • Equipment spawning no longer leaves phantom entries when all entity models fail to create

Changed

  • Migrated from community_bridge to o-link — all Bridge.* calls replaced with olink.* equivalents, dependency updated in fxmanifest
  • Replaced CanCarryItem pre-checks with AddItem return value validation and proper rollback on failure (cooking, breaking, bagging, drying)
  • Meth table facing offset changed from 0 to 180 degrees

Oxide Weedv1.2.0

Minor

Added

  • Server-side vehicle check — weed items (seeds, equipment, lamps, heaters, scissors, watering can) are now blocked while inside a vehicle
  • Frontend locale loader now reads the active language from the ox:locale convar via a getLocale NUI callback and loads the matching locales/<lang>.json, with graceful fallback to English
  • Spanish locale file (locales/es.json) for the Vue frontend

Changed

  • Migrated from community_bridge to o-link for framework abstraction — all cross-resource calls now use olink.* APIs

Fixed

  • Player model flickering and visibility during camera sequences (brick press, drying rack, crossbreed, freeze dryer, supply store, plant harvest, wild plant harvest) — replaced dual-call visibility toggling with tick-enforced SetLocalPlayerInvisibleLocally
  • Smoking stress relief causing errors on frameworks that don't provide a stress removal function
  • Weed table placement arrow pointing backwards — added facingOffset = 180 to the weed_table config

Oxide 3D Weapon Printingv1.1.0

Minor

Changed

  • o-link Migration - Converted entire resource from community_bridge to o-link bridge across all 16 files
    • Dependency updated from community_bridge to o-link in fxmanifest
    • All Bridge.* API calls replaced with olink.* equivalents
    • Lifecycle events switched to olink:client:playerReady / olink:client:playerUnload
    • Character metadata now uses olink.character.GetMetadata / SetMetadata
  • Rate Limit Tuning - Reduced all action cooldowns for snappier gameplay
    • Placement/removal actions: 3000ms → 1000ms
    • Print/craft/collect actions: 2000–3000ms → 1000ms
    • Blueprint/USB browsing: 1000ms → 500ms
  • Inventory Guard Refactor - Collapsed separate CanCarryItem + AddItem calls into single AddItem return-value checks for printers, benches, and tables, eliminating race conditions between check and action
  • Progress Bar API - Updated field names to match o-link conventions (animation → anim, flags → flag, disableControls → disable)

Oxide Animal Controlv1.1.0

Minor

Added

  • Configurable outfit/uniform system with male and female outfit definitions (shared/config/outfits.lua)
  • Uniform toggle in both NUI shift menu and bridge context menu with Config.uniformsEnabled (default: disabled)
  • Server-side appearance backup and restore on uniform apply/remove
  • Uniform auto-reverts on clock out, death, disconnect, and resource stop
  • Migration script (sql/migrate_unified_progression.sql) for safe data migration from per-job progression tables
  • Transaction reason strings on all payment and fine operations for audit trail

Changed

  • Migrated from community_bridge to o-link bridge across all server and client code
  • Updated fxmanifest dependency from community_bridge to o-link
  • Replaced all Bridge.* API calls with olink.* equivalents
  • Updated lifecycle events to olink:client:playerReady / olink:client:playerUnload
  • Unified progression storage from per-resource animalcontroljob_progression table to shared job_progression table with composite (char_id, job) key

Fixed

  • Vehicle fuel now set to full on spawn

Migration Guide

  • Back up your database before updating
  • Run sql/migrate_unified_progression.sql once before starting the updated resource
  • This copies data from animalcontroljob_progression into job_progression and removes the old table
  • If you are updating multiple Oxide jobs that use this migration, only run the script once total

Oxide Drugsellingv1.1.0

Minor

Added

  • Frontend locale loader now reads the active language from the ox:locale convar via a getLocale NUI callback and loads the matching locales/<lang>.json, with graceful fallback to English

Changed

  • Migrated from community_bridge to o-link for all cross-resource communication (framework, inventory, money, dispatch, target, notify)
  • Updated fxmanifest.lua dependency from community_bridge to o-link
  • Player is now hidden locally only (SetLocalPlayerInvisibleLocally) during cinematic sell camera instead of using SetEntityVisible which was visible to other players
  • Simplified safeExport helper to use a pcall wrapper instead of colon-style proxy invocation
  • Updated all documentation to reference o-link

Fixed

  • Fixed player ped being invisible to other players during sell camera interactions
  • Fixed partial item removal not being refunded when a transaction fails mid-removal
  • Fixed source not being captured to a local in the playerDropped handler

Removed

  • Removed unused @oxmysql/lib/MySQL.lua from server_scripts

Oxide GoPostalv1.1.0

Minor

Changed

  • Migrated from community_bridge to o-link — all Bridge.* calls replaced with olink.* equivalents across client, server, and shared code
  • Unified progression table — postaljob_progression merged into shared job_progression table with composite (char_id, job) primary key
  • Vehicle spawning now uses lib.requestModel() + CreateVehicle() instead of the bridge utility
  • Death monitoring replaced with client-side health polling, removing dependency on bridge death events
  • Config.uniformsEnabled default changed from true to false (uniforms now opt-in)

Removed

  • Deleted deprecated exported_locations.lua file

Migration (existing servers)

Run sql/migrate_unified_progression.sql once before updating. This migrates data from postaljob_progression into the unified job_progression table and drops the old table. Safe to run multiple times.

Migration Guide

  • Back up your database before updating
  • Run sql/migrate_unified_progression.sql once before starting the updated resource
  • This copies data from postaljob_progression into job_progression and removes the old table
  • If you are updating multiple Oxide jobs that use this migration, only run the script once total

Oxide Roadside Assistancev1.1.0

Minor

Added

  • Configurable outfit system — opt-in uniforms for male/female with automatic revert on clock-out, respawn, and disconnect (shared/config/outfits.lua)
  • Tow truck now spawns with full fuel

Changed

  • Migrated progression data from roadsideassistancejob_progression to unified job_progression table (migration script: sql/migrate_unified_progression.sql)
  • Refactored shift finalization into reusable RoadsideFinalizeShift() function with proper partner handling during auto-clockout
  • Centralized auto-clockout logic in RoadsideHandleAutoClockOut() — removed duplicate code from call rejection and missed call handlers

Fixed

  • Tow vehicle reattachment no longer breaks mission flow when detaching and re-hooking mid-tow
  • Vehicle spawn failure during clock-in now properly aborts shift and notifies the player instead of silently failing
  • Clock-out now validates server response and displays error notification on failure
  • Partner damage charges and breakdowns now correctly applied during simultaneous crew finalization

Migration Guide

  • Back up your database before updating
  • Run sql/migrate_unified_progression.sql once before starting the updated resource
  • This copies data from roadsideassistancejob_progression into job_progression and removes the old table
  • If you are updating multiple Oxide jobs that use this migration, only run the script once total

Oxide Methv1.1.0

Minor

Added

  • All frontend UI strings are now in locales/en.json — cooking manual, stats card, crystallizer panel, additive panel, and HUD can all be translated or customized without rebuilding the frontend

Fixed

  • ESX compatibility: stress removal no longer errors on frameworks without a stress system
  • Replaced invalid switch@trevor@trev_hunt_intro animation with a valid use animation

Changed

  • Reworked drug high effects to feel like a stimulant instead of drunkenness — removed wobbly vision, drunk camera sway, and drunk walk; replaced with vivid colors, jittery hand shake, and periodic intensity surges with FOV pulses

Oxide Weedv1.1.0

Minor

Added

  • oxide-drugselling — NPC street selling has been extracted into a standalone resource that supports all drug types (weed, meth, and custom). oxide-drugselling is included with your purchase and available on your Cfx.re Keymaster dashboard as a separate download. See its documentation for setup instructions.
  • New server export AddSold(source, amount) — allows external resources (like oxide-drugselling) to track lifetime sold count on the player's weed progression
  • New admin command /weed_sellkit — gives a random assortment of sellable weed products with proper strain metadata for testing selling

Removed

  • Built-in NPC street selling system — all selling config (shared/config/selling.lua), client/server selling logic, sell panel UI, and locale strings have been removed from oxide-weed. Install oxide-drugselling as the replacement.
  • Config.Progression.xpRewards.sell — selling XP is now configured in oxide-drugselling's drug type config

Oxide Blackmarketv1.3.0

Minor

Added

  • Config.EnableTiers option to disable the reputation/tier system entirely - when set to false, all shop items are available to all players, reputation is not gained or lost, tier notifications are suppressed, pager works without tier requirements, and tier/rep display is hidden from the shop UI

Oxide Vendingv1.4.0

Minor

Added

  • Config.Business.MaxBusinesses option to set a server-wide limit on total businesses (0 = unlimited)

Changed

  • Migrated to community_bridge — All framework abstraction is now handled by community_bridge instead of the built-in bridge system. Dependencies simplified to just oxmysql, ox_lib, and community_bridge for all frameworks
  • Business balance is now built-in — Stored directly on the vending_businesses table instead of using oxide-banking. Existing servers must run:
    ALTER TABLE vending_businesses ADD COLUMN balance BIGINT NOT NULL DEFAULT 0;
    
  • Dashboard map rewritten with tiled PNG rendering (20 tiles in a 4x5 grid) replacing the single 6MB gta-map.png image. Default zoom starts further out (0.5x) with a range of 0.25x to 5.0x for crisp rendering at all zoom levels

Removed

  • Built-in bridge/ directory and all framework-specific bridge files
  • Config.BridgeOverride setting (framework detection handled by community_bridge)
  • Config.StandaloneMoney and Config.StandaloneInventory function tables (handled by community_bridge)
  • Config.UseBanking and Config.BusinessAccountPrefix settings — business balance is now built-in on the vending_businesses table, replacing the oxide-banking integration
  • oxide-banking optional dependency — no longer needed
  • Framework-specific dependencies (qb-core, qb-target, qb-inventory, qb-radialmenu, qb-input, es_extended, ox_target, ox_inventory) — these are now managed through community_bridge

Oxide Landscapingv1.1.0

Minor

Added

  • NUI shift menu — new full-screen Vue menu with progression card, stats grid, next-level preview, and action buttons. Togglable via Config.menuStyle ('nui' or 'menu'), so you can keep the original context menu if preferred
  • Per-location menu camera — when the NUI menu opens, a scripted sky camera with a gentle sway effect is shown. Configure camera position, heading, and FOV per location via the menuCamera field in config/locations.lua
  • Work uniform system — players can equip/remove a landscaping uniform from the shift menu. Uniforms auto-revert on clock out, death, or disconnect. Customize outfits in config/outfits.lua
  • ID-based crew invites — players now enter a server ID to invite a crew partner instead of auto-targeting the nearest player. Works in both NUI and context menu modes
  • Crew headshot display — NUI menu shows player headshots with a leader crown indicator when in a crew

Changed

  • Crew invite range increased from 10m to 15m (Config.Crew.inviteRange)
  • All NUI menu strings are now locale-driven — add or override them in locales/en.json under the nui.* keys
  • Uniform apply/remove and crew invite response callbacks are now rate-limited server-side
  • Player clothing is automatically reverted on disconnect if they were wearing a work uniform

Oxide Blackmarketv1.2.0

Minor

Added

  • Multi-framework support via Community Bridge - now works with QBCore, ESX, QBox, and more out of the box
  • Universal dispatch alerts - compatible with 17+ dispatch systems (ps-dispatch, cd_dispatch, etc.) via configurable Config.DispatchAlerts
  • Universal phone support - pager emails work with any phone system supported by Community Bridge
  • Universal target support - works with qb-target, ox_target, and any target system supported by Community Bridge
  • Universal inventory support - item images resolve automatically per inventory system, no manual path config needed
  • Universal progress bar support - loot bag searching uses Bridge progress bar (compatible with ox_lib, qb, etc.)
  • Transaction rate-limiting - prevents rapid-fire buy/sell exploit attempts
  • Server-side killer tracking - dealer killer is now identified via weaponDamageEvent on the server, preventing client-side spoofing
  • Distance-based performance scaling - dealer monitoring thread adjusts polling rate based on player distance (2s at 100m+ vs 100ms nearby)
  • Automatic area name resolution - pager messages now resolve location names from GTA natives instead of a hardcoded list
  • Proper cleanup on disconnect - all client state (hit squad, loot bags, NUI, blips) is fully cleaned up on character switch or disconnect
  • Pager cooldown cleanup - server-side pager cooldowns are removed when players disconnect (prevents memory leaks)
  • New dealer spawn locations (Cypress Flats, Davis, Little Seoul, Mirror Park, Banham Canyon, Sandy Shores, Grapeseed, Grand Senora Desert)

Fixed

  • Loot proximity check now validates distance before removing loot from storage, preventing edge case where loot is lost if player is too far
  • Hit squad now targets the actual killer (server-tracked) instead of relying on client-side detection which could miss one-shot kills
  • Reputation tier change events now properly fire to the blip system on every tier transition
  • Admin commands (/setblackmarketrep, /checkblackmarketrep) now validate that the target player is online before executing
  • ESC key detection loop no longer runs at full framerate when shop is closed
  • Selling items now properly triggers tier-up notifications via AddReputationWithNotify

Changed

  • Dependency changed from qb-core to community_bridge - this is the only required dependency now
  • Removed @oxmysql/lib/MySQL.lua dependency - handled by Community Bridge
  • Removed Config.TargetSystem, Config.InventorySystem, Config.InventoryImagePath, Config.PhoneSystem settings - Community Bridge auto-detects these
  • Removed hardcoded Config.AreaNames table - area names are now resolved dynamically from coordinates
  • Removed Config.PoliceDispatchEvent and Config.PoliceAlertChance - replaced by Config.DispatchAlerts table with per-alert-type configuration
  • Dispatch alerts (transaction + proximity) are now configurable with individual chance, message, code, icon, and blip settings
  • Cuff sound effect replaced with native GTA sound (removed InteractSound dependency)
  • Death report distance threshold increased from 50m to 200m to allow any nearby client to report (server validates independently)

Oxide Vendingv1.3.0

Minor

Added

  • Multi-Framework Support — Full support for QBCore, ESX, and Standalone (ox_lib + ox_inventory + ox_target) servers via a new framework bridge system with automatic detection. Configure manually with Config.BridgeOverride or let it auto-detect.
  • Multi-Inventory Support — Auto-detects ak47_qb_inventory, ak47_inventory, ox_inventory, and qb-inventory. No configuration needed — the bridge picks the active inventory system automatically per framework.
  • Account-Wide Business Restriction — New Config.Business.OnePerAccount option to limit players to one business across all characters sharing the same license.
  • Vehicle Placement Check — Players can no longer place vending machines while inside a vehicle.
  • GetNPCSalesStats Export — External scripts can now query NPC sales simulation stats via exports['oxide-vending']:GetNPCSalesStats().

Changed

  • Locale Format — Locales migrated from locales/en.lua to locales/en.json. Custom translations will need to be converted to JSON format.
  • Transaction Safety — Business registration fee is now charged before creation with automatic refund on failure. Revenue collection verifies database success before updating in-memory caches. Warehouse withdrawals roll back on inventory failures.
  • Banking Validation — Withdrawal and deposit amounts are now validated server-side as positive integers.
  • QBx Streamlined — Removed redundant QBx-specific code paths in bridge files; QBx now routes through the same QBCore code paths.
  • Inventory Detection — Config.UseOxInventory is no longer needed. ox_inventory is now auto-detected on all frameworks including ESX.
  • Documentation updated for multi-framework setup, bridge configuration, and framework-specific troubleshooting.

Removed

  • locales/en.lua — Replaced by locales/en.json.

Oxide Vendingv1.2.0

Minor

Added

  • Warehouse System: Business inventory management for bulk storage
    • Purchase and manage a warehouse building for your business
    • Store items in bulk before distributing to vending machines
    • Warehouse state restoration on player reconnect
    • Security measures and access controls
  • Pickup Location Feature: Wholesale orders can now be picked up at designated locations
  • Contract Signing: Business registration now requires signing a contract for immersion

Changed

  • Enhanced vending machine pricing system with improved validation
  • Updated database schema to support warehouse and pickup features
  • Improved NPC sales item configuration and behavior
  • Better user notifications for warehouse operations

Fixed

  • Warehouse callback issues and removed dead code
  • Various warehouse state restoration edge cases

Oxide Bankingv1.3.0

Minor

Added

  • Transaction Limits - Configurable limits for deposits, withdrawals, and transfers to prevent excessive transaction amounts
  • Debug Mode Security - New security settings for debug mode in production environments
    • Auto-timeout for debug sessions
    • Debug action logging
    • Restricted debug access controls
  • Database Connection Resilience - Retry logic with exponential backoff during resource startup
  • SafeExecute Wrapper - Error handling wrapper for scheduled tasks ensures failures don't interrupt execution flow
  • Global FormatNumber Function - Consistent number formatting across all banking operations
  • ox_inventory Support - Item metadata retrieval now supports both qb-inventory and ox_inventory
    • New Config.UseOxInventory option

Changed

  • Rebranded to Oxide Banking - All references updated from QB-Banking-Plus to Oxide Banking
  • Simplified Low Balance Alert - Removed threshold parameter for cleaner API
  • In-Game Day Increment - Now triggers all scheduled daily tasks automatically
  • Enhanced Startup Stability - Player data retrieval during resource restarts handled gracefully

Documentation

  • Added new admin commands to README: /forcecardcleanup, /forcedividends, /pendingloans, /approveloan, /denyloan
  • Updated ADMIN.md with clarifications on day increment behavior
  • Clarified bank_cards export includes hashed PINs for security

Oxide Blackmarketv1.1.0

Minor

Added

  • Target system wrapper for unified interaction with qb-target and ox_target
  • Config.TargetSystem setting to switch between targeting systems
  • Config.InventorySystem setting to support both qb-inventory and qs-inventory
  • Config.InventoryImagePath for configurable item image paths
  • Config.PoliceJobs setting to configure which jobs can arrest dealers
  • Unique loot ID generation for secure loot tracking

Fixed

  • Dealer death processing now prevents duplicate loot drops
  • Item name validation in purchase and sell events

Changed

  • Dealer and loot bag interactions now use unified target system wrapper

Oxide Bankingv1.2.0

Minor

Fixed

  • Config.DailyLimits was not wired - Removed orphaned Config.DailyLimits section (ATMWithdraw, ATMDeposit, Transfer) that was defined but never used for actual transactions
  • Config.Collections wrong path - Fixed Config.Collections references to use correct path Config.Loans.collections
  • Hardcoded fallback values - Removed unnecessary or fallback defaults throughout server code where config values are guaranteed to exist

Changed

  • Card daily limits now tier-based - Bank cards now inherit the player's account tier dailyWithdrawLimit instead of using a separate config value
    • Basic tier: $5,000/day
    • Premium tier: $25,000/day
    • Business tier: $100,000/day
  • Interest calculations - Now use Config.TimeSettings.DaysPerYear consistently without fallbacks
  • Loan rate calculations - Now use Config.Loans.minimumInterestRate instead of hardcoded 1% floor

Added

  • Config.Loans.minimumInterestRate - Configurable minimum interest rate floor for loans (default: 0.01 / 1%)

Documentation

  • Updated docs/CONFIGURATION.md to reflect tier-based daily limits
  • Fixed documentation for Config.Loans.collections path

Oxide Vendingv1.1.0

Minor

Added

  • Machine Competition System: NPCs now prefer cheaper machines when multiple same-type machines are nearby
    • Configurable competition radius (default 500m)
    • Same machine types compete (drinks vs drinks, snacks vs snacks)
    • Per-item price comparison - cheaper items get more NPC sales
    • Probabilistic model - expensive machines still get some sales, just fewer
    • Cross-business only - your own machines don't compete with each other
  • New Config.Competition settings in config/npc_sales.lua:
    • Radius - Competition detection radius
    • MinMultiplier / MaxMultiplier - Bounds for price competitiveness effect
    • CheapestBonus - Extra sales bonus when you have the cheapest price
    • SameOwnerCompetes - Toggle for same-business competition
  • Dashboard Analytics: "Market Competition" section showing:
    • Summary cards: Nearby Competitors, Price Competitiveness %, Best Price Items, Overpriced Items
    • Per-machine breakdown with competitor names and distances
    • Price comparison table with your price, avg competitor price, rank, and suggested prices
    • Color-coded rows: green for cheapest, red for most expensive
  • Server-side competition helpers: GetCompetitors(), CalculateCompetitionMultiplier(), UpdateCompetitionAnalysis()
  • New server callback: oxide-vending:server:getCompetitionAnalysis

Oxide Bankingv1.1.0

Minor

Added

  • Vehicle Loan Export System - External scripts (like qb-vehicleshop) can now register and track vehicle loans through the bank
    • RegisterVehicleLoan() - Register a new vehicle loan from external script
    • RecordVehicleLoanPayment() - Record payments made at dealership
    • CloseVehicleLoan() - Close loan as 'paid' or 'repossessed'
    • GetVehicleLoan() - Retrieve loan info by plate
  • Vehicle loans display in bank UI with "Pay at Dealership" label
  • New docs/VEHICLESHOP_INTEGRATION.md - Step-by-step guide for qb-vehicleshop integration
  • Documentation section added to README.md listing all available guides
  • External loan types configuration (Config.Loans.externalTypes)

Changed

  • Vehicle loans are now managed externally by dealership scripts rather than through bank applications
  • Updated LoansTab.js to conditionally show payment buttons (hidden for externally managed loans)
  • Added vehicle icon to loan type icons

Removed

  • Property loan product (not implementable without standardized housing script)
  • Vehicle loan product from bank applications (now handled via exports)

Database

  • Requires notes column in bank_loans table:
    ALTER TABLE `bank_loans` ADD COLUMN `notes` TEXT NULL DEFAULT NULL AFTER `collateral_id`;