Update sky_base to 1.36.0 and sky_jobs_base to 1.39.0 before updating sky_mechanicjob.
Highlights
Added persistent electronic tuning for anti-lag variants, two-step, throttle response, wheelie behavior, engine output, idle speed, interior lighting, headlight brightness, radio power, brake lights, horn high beams, automatic hazards, and preset or custom RGB mood lighting with intensity and disable control.
Added staged brake overheating with configurable vehicle and brake-upgrade multipliers, glowing discs, critical sparks, short brake fade, and a debug display.
Added a parts-delivery mode that can place the complete collected order directly into the player's inventory instead of using the physical pallet flow.
Changed the former Anti-Lag Kit into one ECU Tuning Kit that supplies anti-lag, two-step, and every new electronic upgrade.
Notable Changes
Improved tuning orders so required item quantities are visible, carried repair items can be consumed, advanced installations work with parts delivery disabled, and live prices refresh after Job Configurator changes.
Improved vehicle repair and service persistence so self-service work and Quasar parking retain completed repairs without overwriting unrelated vehicle data.
Improved workshop deliveries so the pallet appears at the configured spawn position and direct-inventory collection grants the full validated order once.
Fixed an issue where seated customers could be removed from their vehicle during billing and where a partially paid invoice could remain open after completion.
Added system-actor entries to vehicle history so automated service actions remain distinguishable from employee changes.
Improved fake plates so a qualifying collision can detach the plate even when body-health loss is small.
Other Changes
Improved xenon synchronization, repaired-window updates, transactional stance changes, and wheel geometry so nearby clients see the same vehicle state without changing door angles.
Removed the lingering limp-mode speed cap after the underlying vehicle condition recovers.
Improved the tuning interface with functional categories, dedicated ECU artwork, clearer removal/order details, shared form controls, and consistent FiveM CEF rendering.
Updated bundled translations for ECU tuning, brake heat, parts delivery, exhaust work, catalytic converters, invoices, and vehicle-state messages.
Update InstructionsA guided update for server owners1.24.11.25.0
Guided update
Update sky_mechanicjob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Before updating, install Base 1.36.0 and Jobs Base 1.39.0, stop the server, and back up the resource, inventory definitions/data, Job Configurator tables, mechanic tables, and intentional provider/config edits.
Install 1.25.0 as one clean package. Its UI, runtime, manifest, locales, config defaults, image, and compatibility files must match.
Phase 2 of 5
Replace files
Delete and reinsert the complete resource. At minimum replace fxmanifest.lua, import.sql, compat/fakeplates_realplate_native.lua, config/adv_config.lua, config/config.lua, config/sv_functions.lua, the complete config/locales and source directories, and the built UI. Add config/inventory/ecu_tuning_kit.png.
Phase 3 of 5
Merge config
Add these feature defaults, both absent in 1.24.1:
With /jobconfig, these are normal saved feature flags named electronicTuning and brakeOverheating; saved flags override the file. Add the complete new brake block:
/jobconfig stores these brake values: brakeOverheatingMinimumSpeedKmh, brakeOverheatingReferenceSpeedKmh, brakeOverheatingHeatGainPerSecond, brakeOverheatingCoolingPerSecond, brakeOverheatingCoolingDelayMs, brakeOverheatingHeatClassMultipliers, brakeOverheatingHeatBrakeUpgradeMultipliers, brakeOverheatingCooldownClassMultipliers, brakeOverheatingCooldownBrakeUpgradeMultipliers, brakeOverheatingWarmThreshold, brakeOverheatingHotThreshold, brakeOverheatingCriticalThreshold, brakeOverheatingVisualDistance, brakeOverheatingSparkMinimumIntervalMs, brakeOverheatingSparkMaximumIntervalMs, brakeOverheatingFadeChancePerSecond, brakeOverheatingFadeMinimumDurationMs, brakeOverheatingFadeMaximumDurationMs, and brakeOverheatingFadeCooldownMs. Saved values override the matching fields. simulationIntervalMs, maximumVisibleVehicles, glow, the spark asset/scale, wheelBones, and excludedVehicleClasses remain plaintext-only.
Add Config.PartsDelivery.deliveryMode = "standard" after deliveryTimeSeconds = 60; the path was absent before. The normal saved /jobconfig key is partsDeliveryMode, with allowed values "standard" and "player_inventory". This is a setting, not an interaction capability flag.
Replace antilag_kit with ecu_tuning_kit in every job Shop, Parts Delivery Shop, and tuning required-item entry. Rename the pricing category antilag to ecu_electronics while preserving supplierSharePercent = 70.0, marginPercent = 25.0, laborFee = 1400, difficulty = "complex", minimumPrice = 400, and maximumPrice = 90000. The resource migrates saved /jobconfig jobs on start; verify every job after migration.
Here kit means ecu_tuning_kit. Remove Config.AntiLag.activationRpm = 0.7 and Config.AntiLag.minGear = 2 from config/adv_config.lua; both paths are deleted in 1.25.0. No executable value changed in config/sv_functions.lua, but replace or carefully remerge the file because fake-plate ownership now uses the current Base/Jobs identity contracts.
Phase 4 of 5
SQL & items
No mechanic table schema changes in this release. The ESX item seed changes from:
old-item.sql
('antilag_kit', 'Anti-Lag Kit', 2000, 0, 1)
to:
new-item.sql
('ecu_tuning_kit', 'ECU Tuning Kit', 2000, 0, 1)
INSERT IGNORE does not rename an existing inventory row or stored player/job inventory. Register the new item in the active inventory, migrate stored antilag_kit counts deliberately, and install config/inventory/ecu_tuning_kit.png. The old item is no longer referenced by shipped shops or tuning costs. No provider credential or new streamed model is required.
Phase 5 of 5
Restart & test
The console reports Base 1.36.0, Jobs Base 1.39.0, and Mechanic 1.25.0 in that order.
ecu_tuning_kit exists with its image and stored antilag_kit inventory was deliberately migrated.
Every saved job uses ecu_tuning_kit, the ecu_electronics category, and the new option costs after Job Configurator migration.
All anti-lag levels, two-step, and every electronic tuning option install, consume the displayed quantity, persist, synchronize, and remove correctly.
Brake heat honors class/brake multipliers and thresholds; glow, sparks, fade, cooling, exclusions, and /brakeheatdebug behave as configured.
Standard parts delivery retains the physical flow and player_inventory grants the complete order exactly once.
Carried repair items, parts-delivery-disabled installs, order quantities, and live pricing changes work.
Billing keeps seated occupants in place and closes a completed partial-payment flow.
Self-service and Quasar repairs plus xenon, mood light, windows, stance, wheel geometry, and electronic state survive parking/retrieval without changing door angles.
A qualifying collision can detach a fake plate and recovered vehicles no longer retain a limp-mode speed cap.
Version 1.24.1
Update sky_base to 1.35.1 and sky_jobs_base to 1.38.1 before updating sky_mechanicjob.
Highlights
Improved the built-in frontend fallback catalogue so missing translated tuning, delivery, invoice, registry, and tablet keys remain readable.
Notable Changes
Fixed an issue where a complete 1.24.0 feature installation could still show blank or placeholder Mechanic labels.
Other Changes
Updated the package manifest for the 1.24.1 compatibility set.
Changed Files
sky_mechanicjob/config/locales/*
sky_mechanicjob/fxmanifest.lua
Update InstructionsA guided update for server owners1.24.01.24.1
Guided update
Update sky_mechanicjob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update Base to 1.35.1 and Jobs Base to 1.38.1, stop the server, and back up Mechanic.
Install 1.24.1 as one clean package; a .1 manifest beside the .0 built UI is a mixed update.
Phase 2 of 5
Replace files
Delete and reinsert the resource. Replace fxmanifest.lua, the built UI, and config/locales completely.
Phase 3 of 5
Merge config
No public config value or /jobconfig key changed in 1.24.1.
Phase 4 of 5
SQL & items
No SQL, item, image, stream asset, or provider credential changed.
Phase 5 of 5
Restart & test
Base 1.35.1, Jobs Base 1.38.1, and Mechanic 1.24.1 start in order.
Tuning, delivery, invoice, registry, and tablet labels fall back to readable English when a translation key is absent.
Version 1.24.0
Update sky_base to 1.35.0 and sky_jobs_base to 1.38.0 before updating sky_mechanicjob.
Highlights
Cross-job vehicle records - mechanics can create richer owner/model/color records and share selected profiles read-only with other jobs.
Quantity-aware tuning parts - performance stages can require increasing quantities instead of one item for every level, including repeated legacy item entries.
Improved invoice and delivery workflows - invoice registry history, normalized timestamps, custom quantities, stacked delivered parts, customer subscription names, and clearer delivery pallets are supported.
Tyre-only persistence - JG garage tyre saves sanitize bounded tyre fields, require a persisted owned plate when ownership checks are enabled, and update only tyre data without overwriting other tuning properties.
Notable Changes
Advanced pricing can keep selected parts-shop categories available without an active tuning order; Service items are enabled by default.
Vehicle records support editing for their owner job and read-only access for configured share targets.
Tuning orders can source quantities from job storage, enforce price caps consistently, and show clearer item labels and dark-mode surfaces.
Subscription lists retain customer names and vehicle history includes owner-scoped invoice entries.
Wheel size/width scaling was removed; normal Stancer camber, track width, suspension, and alignment remain.
Other Changes
Dropdown, opacity, delivery, subscription, invoice, registry, pricing, tuning, and locale behavior was corrected.
The Tuning menu includes dedicated Extras artwork in the rebuilt interface.
Custom tuning diagnostics now follow the shared Base logging path.
Tyre persistence updates only tyre-related fields in the stored property document so ordinary tyre saves preserve unrelated tuning data.
Database schemas now inherit the active database character set and collation; no new inventory item or streamed asset is required.
Update InstructionsA guided update for server owners1.23.01.24.0
Guided update
Update sky_mechanicjob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update sky_base to 1.35.0 and sky_jobs_base to 1.38.0. Stop the server and back up the complete Mechanic resource, local pricing/tuning configuration, Job Configurator tables, and all Mechanic database tables.
Install 1.24.0 as one clean package. Its pricing rules, UI, server validation, generated settings, database schema, and persistence runtime must match.
Phase 2 of 5
Replace files
Delete and reinsert the complete resource. Replace fxmanifest.lua, import.sql, config/config.lua, config/adv_config.lua, the complete config/locales and source directories, and the built UI.
Phase 3 of 5
Merge config
Delete these obsolete values: Config.ToggleFeatures.stanceWheelSize, Config.ToggleFeatures.stanceWheelWidth, the complete Config.WheelSizeOptions table, and the wheel_size / wheel_width option-cost rows. They existed in 1.23.0 and are absent in 1.24.0.
Add the complete sharing default and assign it to intended mechanic jobs:
config/config.lua
local mechanic_sharing_defaults = {
enabled = true,
records = {
vehicleRecords = { enabled = true, jobs = {}, groups = { "mechanic" } }
}
}
Change every shipped performance item from a string to { name, quantity }. Required stage quantities are:
Performance path
Stage quantities in 1.24.0
Removed extra row
performanceStages.engine.cost
1, 2, 3, 4 × engine
None
performanceStages.brakes.cost
1, 2, 3 × brakes
Former fourth row
performanceStages.transmission.cost
1, 2, 3 × transmission
None
performanceStages.suspension.cost
1, 2, 3, 4 × suspension
Former fifth row
performanceStages.armor.cost
1, 2, 3, 4, 5 × armor_plating
Former sixth row
Use items = { { name = "brakes", quantity = 2 } } for a two-unit example. The existing prices stay attached to their matching real stage.
The global advanced-pricing switch remains false by default. When it is enabled, matching Config.Jobs[*].partsDeliveryShop categories are purchasable without a tuning order and each item price is the supplier base price. Per-job vehicle-record sharing is Job Configurator data; the two advanced-pricing values are normal saved /jobconfig settings.
Phase 4 of 5
SQL & items
Automatic migration and the manual file mirror apply these exact changes:
migration.sql
ALTER TABLE `sky_mechanic_subscriptions`
ADD COLUMN IF NOT EXISTS `customer_name` VARCHAR(120) NULL AFTER `identifier`;
ALTER TABLE `sky_mechanic_vehicle_profiles`
ADD COLUMN IF NOT EXISTS `owner_name` VARCHAR(120) NULL,
ADD COLUMN IF NOT EXISTS `owner_identifier` VARCHAR(120) NULL,
ADD COLUMN IF NOT EXISTS `model` VARCHAR(64) NULL,
ADD COLUMN IF NOT EXISTS `color` VARCHAR(120) NULL,
ADD COLUMN IF NOT EXISTS `shared_with_jobs` LONGTEXT NULL,
ADD COLUMN IF NOT EXISTS `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN IF NOT EXISTS `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
If the database does not support grouping these ADD COLUMN IF NOT EXISTS clauses, execute the complete shipped import.sql, where they are separate statements. All shipped schema definitions now inherit the active database character set and collation. No separately installed inventory item, image, or stream asset is required; the Extras artwork is already contained in the rebuilt interface under source.
Phase 5 of 5
Restart & test
Base 1.35.0, Jobs Base 1.38.0, and Mechanic 1.24.0 start in that order.
Subscription rows expose customer_name and vehicle profiles contain every new metadata/share/timestamp column.
Each performance level consumes the configured quantity and the removed extra levels no longer appear.
Service-category items remain available without a tuning order only when advanced pricing is enabled.
A shared vehicle record is read-only outside its owner job; invoices are not exposed to shared viewers.
Delivered parts stack correctly and subscription customer names remain visible.
JG tyre snapshots accept only bounded tyre fields, reject invalid or non-owned plates when ownership checks are enabled, and preserve every unrelated tuning property.
Wheel-size/width controls are gone while supported Stancer controls still work.
The rebuilt Tuning menu displays the dedicated Extras artwork.
Version 1.23.0
Update sky_base to 1.34.0 and sky_jobs_base to 1.37.0 before updating sky_mechanicjob.
Highlights
Server-authoritative advanced pricing - optional quotes combine supplier share, margin, labor, difficulty, vehicle class, mechanic grade, stock, demand, tax, discount caps, and price limits; class-based prices, order-bound procurement, returns, refunds, and workshop profit analytics use the same validated calculation. Public server exports are CreatePricingQuote, GetPricingQuote, ValidatePricingQuote, GetPricingAnalytics, and GetSupplierCatalog; server integrations can observe sky_mechanicjob:server:pricingQuoteCreated, sky_mechanicjob:server:pricingQuoteExpired, and sky_mechanicjob:server:supplierStockChanged.
Extended workshop billing - invoices support estimates, deposits, partial payments, manual lines, due dates, reminders and fees, tax, per-grade limits, cancellation permissions, analytics, and optional recipient-name privacy. Public server exports are CreateInvoice, CreateEstimate, GetInvoice, GetPlayerInvoices, PayInvoice, RespondToEstimate, SendInvoiceReminder, CancelInvoice, and GetBillingAnalytics; server integrations can observe sky_mechanicjob:server:invoiceCreated, sky_mechanicjob:server:invoiceStatusChanged, sky_mechanicjob:server:invoiceOverdue, sky_mechanicjob:server:invoicePaymentRecorded, sky_mechanicjob:server:estimateResponded, sky_mechanicjob:server:invoiceReminderSent, and sky_mechanicjob:server:invoiceCancelled.
Customer and company subscriptions - configurable workshop memberships provide one strongest non-stacking discount, personal or job-wide ownership, society payment, expiry, a configurable NPC terminal, and workshop-specific models; the responsive tablet app is marked New, its runtime is loaded explicitly, and its SVG assets plus public NPC setup documentation are included. Server integrations can resolve the effective discount through GetSubscriptionDiscount.
Parts deliveries in the tablet - the old single-order timer HUD was replaced with a synchronized overview of every workshop delivery, while configured carriers can sprint with delivery boxes.
Notable Changes
External LB Tablet and RoadPad surfaces support authorization, inherited sessions, retries, message relay, safe routes, lifecycle return/close, and tuning focus preservation; their runtime module is loaded explicitly.
Drift tuning now requires the dedicated drift_tyres item instead of a stance kit; the item is included in shop defaults and SQL inventory seeds.
Oil absorbent and brooms are stocked in mechanic shops, including migration into existing configurator-managed shops without duplicates.
Vehicle persistence batches orphan-tyre cleanup, reapplies tuning after a server/client startup handshake, avoids shutdown-time saves, preserves add-on stance baselines, and restores stance after garage retrieval.
Motorcycle tuning exposes rear-wheel changes instead of treating the vehicle as front-wheel-only.
The public server-authoritative /antilag command toggles the persisted state only when Anti-Lag is enabled, the player is the driver of their own vehicle, and that vehicle has an installed Anti-Lag kit; every rejected requirement returns a clear result.
Self-service validation follows creator-defined workshop points rather than static job locations.
Plates in Config.TuningRestrictions.blockedPlates are rejected by mechanic, self-service, instant, and admin tuning flows.
Owned vehicles can send rate-limited maintenance reminders when wear reaches the configured threshold.
Oil-leak relays use the configured integration resource and now ship with the Fire resource as the default target; an unavailable provider rejects the relay and writes an English debug diagnostic with its resource state.
Other Changes
All newly added and revised user-facing feedback received locale coverage; Italian was added.
Shared input, selection, switch, checkbox, range, and date-range controls were made responsive and theme-consistent.
Regression coverage was expanded across the release's server, client, persistence, UI, and integration paths.
Changed Files
sky_mechanicjob/README.md
sky_mechanicjob/config/adv_config.lua
sky_mechanicjob/config/config.lua
sky_mechanicjob/config/locales/*
sky_mechanicjob/fxmanifest.lua
sky_mechanicjob/import.sql
sky_mechanicjob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.22.01.23.0
Guided update
Update sky_mechanicjob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Stop the server after both dependencies are current. Back up the complete resource, public config files, generated creator settings, and database. Export existing mechanic invoices, tuning orders, vehicle tuning, and shop configuration before applying the schema.
Install 1.23.0 as a clean package. Pricing, billing, memberships, deliveries, persistence, generated defaults, and the tablet UI depend on matching client, server, config, SQL, and UI files.
Phase 2 of 5
Replace files
Replace fxmanifest.lua, source, the complete built UI, locales, README, and import.sql. Start from the new config/config.lua and config/adv_config.lua, then transfer deliberate server values into the matching new blocks.
Phase 3 of 5
Merge config
Apply every public value change; Absent -> New means the path did not exist in 1.22.0:
Billing defaults exist globally and per job. Replace every job's complete billingSettings table with this block; the first four fields existed in 1.22.0, and every following field is new:
Replace the complete fallback table. showRecipientName, the extended invoice fields, and gradeRules are new; job-specific billingSettings still take precedence:
The /jobconfigFeatures section saves vehicleMaintenanceNotifications and subscriptions; those values override Config.ToggleFeatures. Saved global keys are maintenanceNotificationsEnabled, maintenanceNotificationsThreshold, maintenanceNotificationsCooldownMinutes, subscriptionsEnabled, subscriptionsAllowJobSubscriptions, subscriptionsCurrency, subscriptionsMaximumModels, subscriptionsMaximumDurations, subscriptionsNpcPedModel, subscriptionsNpcScenario, subscriptionsNpcEmoteDict, subscriptionsNpcEmoteClip, tuningBlockedPlates, allowsprint, priceType, and vehicleClassPricing. The exact advanced-pricing keys are advancedPricingEnabled, advancedPricingSupplierSharePercent, advancedPricingRoundingStep, advancedPricingDefaultMarginPercent, advancedPricingMinimumMarginPercent, advancedPricingMaximumMarginPercent, advancedPricingMinimumRetailPrice, advancedPricingMaximumRetailPrice, advancedPricingTaxPercent, advancedPricingQuoteLifetimeMinutes, advancedPricingMaximumDiscountPercent, advancedPricingReturnRefundPercent, advancedPricingAnalyticsPeriodDays, advancedPricingPreviewCostPercent, advancedPricingPreviewCompactValue, advancedPricingPreviewSportsValue, advancedPricingPreviewSuperValue, advancedPricingInventoryEnabled, advancedPricingInventoryBaseStock, advancedPricingInventoryLowStockThreshold, advancedPricingInventoryLowStockMarkupPercent, advancedPricingInventoryDemandMarkupPerUnitPercent, advancedPricingInventoryMaximumDemandMarkupPercent, advancedPricingInventoryRestockPerDay, advancedPricingInventoryDemandDecayPerDay, advancedPricingDifficultyRules, advancedPricingCategoryRules, advancedPricingVehicleClassRules, and advancedPricingMechanicGradeRules.
Saved per-job values are shop, partsDeliveryShop, billingSettings, tuningCostProfile, and allowedVehicleClasses. The defaults migration adds missing oil_absorbent and broom rows without duplicating existing rows; add or verify drift_tyres separately and then verify all three items once. Self-service points additionally save their own allowedVehicleClasses, where an empty list means every GTA class.
Config.Interactions.self_service_tuning.vehicleClassWhitelist = true is only the capability flag that exposes the per-point class editor; it is not a saved class list. Config.Interactions.subscription_terminal exposes a placeable creator point, while each terminal's position is separate saved creator data. Subscription models start from Config.Subscriptions.models and are then managed in the Subscriptions tablet/database, not as ordinary /jobconfig model rows. When Config.UseJobConfigurator = true, resave every workshop because saved overrides win over Lua defaults.
After enabling subscriptions, assign View subscriptions to every workshop role that may open the tablet app and Manage subscriptions to every workshop role that may edit availability, models, durations, prices, or discounts. A player purchasing a company-wide subscription additionally needs Manage money in the purchasing company job; the permission is checked against that company, not the selling workshop.
/antilag is available only while Config.ToggleFeatures.antiLag is enabled. The player must run it in-game as the driver of their own vehicle, and the persisted vehicle tuning must contain an installed Anti-Lag kit. The command rejects passengers, non-owned vehicles, vehicles without the kit, and concurrent toggles for the same plate.
Public pricing and supplier server exports are CreatePricingQuote, GetPricingQuote, ValidatePricingQuote, GetPricingAnalytics, and GetSupplierCatalog. Public billing server exports are CreateInvoice, CreateEstimate, GetInvoice, GetPlayerInvoices, PayInvoice, RespondToEstimate, SendInvoiceReminder, CancelInvoice, and GetBillingAnalytics. GetSubscriptionDiscount(sourceOrIdentifier, jobName) returns the strongest applicable discount percent and its subscription record.
Server-local integration events are sky_mechanicjob:server:pricingQuoteCreated, sky_mechanicjob:server:pricingQuoteExpired, sky_mechanicjob:server:supplierStockChanged, sky_mechanicjob:server:invoiceCreated, sky_mechanicjob:server:invoiceStatusChanged, sky_mechanicjob:server:invoiceOverdue, sky_mechanicjob:server:invoicePaymentRecorded, sky_mechanicjob:server:estimateResponded, sky_mechanicjob:server:invoiceReminderSent, and sky_mechanicjob:server:invoiceCancelled.
The configured oil provider accepts states starting and started; all other states reject the relay and write an English debug diagnostic containing the provider and state. No player-facing notification is emitted for this rejection. Start Config.OilLeaks.integration.resource before Mechanic, select another compatible provider, or deliberately set Config.OilLeaks.enabled = false.
Phase 4 of 5
SQL & items
Run the complete import.sql before startup when Config.AutoExecuteQuery = false. It applies every one of these changes:
Creates sky_mechanic_subscription_settings with society_job, enabled, models, updated_by, and updated_at; primary key society_job.
Creates sky_mechanic_subscriptions with id, identifier, society_job, model_id, model_label, discount_percent, price_paid, purchased_at, expires_at, and updated_at; one customer/workshop unique key plus expiry and workshop/expiry indexes.
Creates sky_mechanic_job_subscriptions with id, customer_job, society_job, model_id, model_label, discount_percent, price_paid, purchased_by_identifier, purchased_by_name, purchased_at, expires_at, and updated_at; one company/workshop unique key plus expiry and workshop/expiry indexes.
Adds document_type, amount_paid, deposit_required, due_at, valid_until, accepted_at, declined_at, reminder_count, reminder_fees, last_reminder_at, and updated_at to sky_mechanic_invoices.
Adds category and cost_type to sky_mechanic_invoice_items.
Creates sky_mechanic_invoice_payments with id, invoice_id, amount, payment_method, payer_identifier, payer_name, and created_at; indexes invoice/time and creation time.
Creates sky_mechanic_pricing_entries with id, order_id, part_index, order_uid, society_job, part_id, part_label, category, vehicle_class, mechanic_grade, retail_revenue, supplier_cost, labor_cost, margin_amount, tax_amount, discount_amount, refund_amount, status, created_at, and updated_at; unique order/part plus job/time, part/time, and status indexes.
Creates sky_mechanic_supplier_stock with society_job, item_name, stock, demand, last_restock_at, and updated_at; composite primary key plus update-time index.
Adds only the ESX items seed drift_tyres (Drift Tyres, weight 15000, not rare, removable). Register it manually in QBCore, Qbox, ox_inventory, or any other active inventory.
oil_absorbent and broom are pre-existing cleanup items and are not inserted by Mechanic SQL. Confirm both are registered before enabling their shop rows. Existing invoice, order, tuning, and membership rows are extended in place; do not drop those tables.
Add a subscription_terminal point to each intended workshop, then restart sky_base, sky_jobs_base, and sky_mechanicjob in that order.
Phase 5 of 5
Restart & test
Base 1.34.0, Jobs Base 1.37.0, and Mechanic 1.23.0 start in order.
Existing tuning, stance, invoices, and workshop settings survive migration and restart.
Advanced pricing stays inactive until enabled, then produces stable server-side quotes, grade caps, supplier costs, returns, and analytics.
Estimates, invoices, deposits, partial payments, reminders, manual lines, privacy, and role limits persist correctly.
Personal and job subscriptions charge the configured account, select only the strongest discount, expire, and display through the configured NPC terminal.
Parts deliveries list every active order in the tablet and allow sprinting only when configured.
drift_tyres, oil_absorbent, and broom are registered in the active inventory; drift tuning uses the first item and both cleanup supplies appear once in migrated shops.
Blocked plates cannot use any tuning route; motorcycle rear wheels and public anti-lag behave correctly.
Add-on stance survives resource start and garage retrieval without duplicate tyres or shutdown-save errors.
Maintenance notices obey threshold/cooldown, and oil leaks reach a started compatible integration resource or remain deliberately disabled.
Update sky_base to 1.33.0 and sky_jobs_base to 1.36.0 before updating sky_mechanicjob.
Highlights
Reliable parts deliveries - partial deliveries preserve their remaining items, pallets keep their targets after movement, carried boxes clean up correctly, and failures return a clear result.
Server-side mechanic integrations - trusted server resources can repair vehicles or wheel damage, inspect and repair wear/condition, check whether tuning exists, and react to completed mechanic operations.
Global Stance control - Stance can be disabled as one complete feature and reacts to Job Configurator changes without a resource restart.
Per-location vehicle-class enforcement - self-service tuning points can apply their configured class whitelist before opening.
Notable Changes
Test-drive vehicles are excluded from persistent wear and wheel-damage processing.
Full repairs preserve custom native engine audio and reapply saved Stance values.
Orphaned tyre damage, tuning state, welding animations, delivery-box movement, and billing-spec updates are handled more consistently.
Workshop lifts and Stance items respond to live configuration changes.
Ordered item and vehicle image sources are used throughout shops, diagnostics, tuning, and dealer views.
Added a complete Serbian locale.
Other Changes
Removed obsolete tyre-reset SQL guidance; no database reset is part of this release.
Added focused regression checks for engine audio, install animations, server integrations, and Stance gating.
Changed Files
sky_mechanicjob/config/config.lua
sky_mechanicjob/config/locales/*
sky_mechanicjob/fxmanifest.lua
sky_mechanicjob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.21.01.22.0
Guided update
Update sky_mechanicjob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Back up the complete resource and intentional public configuration changes. Use a clean package so client, server, UI, locales, and generated defaults remain synchronized.
Phase 2 of 5
Replace files
Replace the complete runtime and built UI, current locales, generated defaults, and API documentation. Keep all files listed in Changed Files from the new package.
Phase 3 of 5
Merge config
Without /jobconfig, apply these exact additions:
Config path
1.22.0 shipped value / action
Config.ToggleFeatures.stance
New: true; set false to hide and disable Stance functionality globally
New capability flag: true; enables per-location vehicle-class whitelist editing for this interaction type
With /jobconfig, review and save the managed Stance feature. The vehicleClassWhitelist boolean itself is part of the interaction definition, not a normal saved setting; use the configurator to review the actual allowed classes for every self_service_tuning location. No existing public value was removed or changed.
Phase 4 of 5
SQL & items
No SQL migration or reset is required. Do not run old tyre-reset guides. No new inventory item, image, stream file, or metadata file is required.
Phase 5 of 5
Restart & test
Base 1.33.0, Jobs Base 1.36.0, and Mechanic 1.22.0 are running.
Partial deliveries retain undelivered parts and pallet/box targets remain usable.
Disabled Stance is absent from tuning and its usable item is not registered.
Self-service tuning rejects disallowed vehicle classes when whitelist enforcement is enabled.
Test-drive vehicles do not gain persistent wear or wheel damage.
Repairs preserve custom engine audio and saved Stance values.
Trusted server integrations return clear results for repair, condition, wear, tuning, and completion flows.
Version 1.21.0
Update sky_base to 1.32.0 and sky_jobs_base to 1.35.0 before updating sky_mechanicjob.
Highlights
Unpaid public tuning orders - workshops that hide public prices can now accept an unpaid customer order for a mechanic to review and invoice later instead of showing zero-cost work.
Lift bypass for unsuitable vehicles - configurable vehicle classes and models, including motorcycles by default, can complete lift-dependent service work without forcing them onto a workshop lift.
Better workshop lift placement - creator lifts support gizmo placement, initialize vehicle control before lifting, and handle order/service actions more reliably.
Clearer drivetrain tuning - the active drivetrain and drivetrain presets are visible in the correct Handling and Performance sections.
Notable Changes
Custom wheels are installed and displayed correctly in tuning flows.
Parts deliveries use the active job's delivery bay instead of another workshop's location.
Public-order price visibility now clearly distinguishes paid self-service orders from mechanic-invoiced unpaid orders.
Nitro no longer repeats a missing-system notification while the control key is held.
Missing Base or Jobs Base dependencies are reported clearly during startup.
Other Changes
Restored German characters and refreshed the setup documentation.
Updated the resource version to 1.21.0.
Update InstructionsA guided update for server owners1.20.01.21.0
Guided update
Update sky_mechanicjob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update sky_base to 1.32.0 and sky_jobs_base to 1.35.0, then stop the server.
Back up
Safe location
Complete sky_mechanicjob folder
Outside the live resources folder
Customized config/function files
Separate custom-config folder
Use a clean resource folder so the rebuilt interface and current runtime always match.
Phase 2 of 5
Replace files
Replace the resource first:
Action
Current server path
New package / destination
Delete
resources/[sky]/sky_mechanicjob
Remove only after the backup exists
Copy
—
Copy the new sky_mechanicjob folder to resources/[sky]/sky_mechanicjob
Keep from new release
fxmanifest.lua, source, and source/html
Do not restore these from 1.20.0
Keep from new release
config/locales
Contains the current setup text
Merge only if customized
Old config/function edits
Reapply intentional values inside the matching new files
Do not copy the old config/adv_config.lua over the new one: it contains an obsolete drivetrain whitelist.
Phase 3 of 5
Merge config
Keep placementGizmo = true in Config.Interactions.workshop_lift in the newconfig/config.lua. This is a placement definition, not an editable /jobconfig setting.
If you do not use /jobconfig, also merge the lift-bypass values with your server settings:
If you use /jobconfig, review Order Install → Lift Bypass Vehicle Classes/Models and Charge public self-service orders, then save. Keep placementGizmo in the runtime config and keep the old drivetrain whitelist removed.
Phase 4 of 5
SQL & items
No SQL migration and no new inventory item are required for sky_mechanicjob1.21.0.
Existing mechanic items, images, workshops, orders, and vehicle data remain in place.
The console reports Mechanic 1.21.0 without dependency errors.
A paid public order charges immediately when prices are visible.
An unpaid public order can be reviewed and invoiced by a mechanic when prices are hidden.
Motorcycles and every configured model/class bypass the lift; ordinary cars still require it.
Lift gizmo placement and vehicle control work.
Custom wheels, drivetrain presets, and the active drivetrain appear correctly.
Parts delivery uses the active job's workshop location.
Version 1.20.0
Update sky_base to 1.31.0 and sky_jobs_base to 1.34.0 before updating sky_mechanicjob.
Highlights
Fake plates survive compatible garage storage - new compatibility helpers let garage resources resolve the real stored plate while Police, radar, dispatch, and visible UI can continue to see the active fake plate.
Safer RGB controller tuning - mechanics can only edit installed neon directions, unavailable controls are disabled, and vehicles without compatible neon are rejected clearly.
Workshop management in Job Configurator - workshop entries now have a dedicated creator section with localized labels and job-aware filtering.
Optional mechanic-first repair policy - repair-kit use by non-mechanics can be blocked while a mechanic is on duty, with a clear localized message.
Notable Changes
Added the Full Dark theme across Mechanic tablet apps.
Fake plate state can be restored after compatible garage flows instead of being lost during storage.
Vehicle ownership queries now use owned_vehicles on ESX and player_vehicles on QB-based frameworks.
Custom chrome paint is hidden and rejected when the active tuning profile does not allow it.
Mechanic item and vehicle artwork now supports PNG and WebP fallbacks.
Other Changes
Added public compatibility files and setup guidance for fake-plate-aware garage resources.
Updated the resource version to 1.20.0.
Update sky_base to 1.31.0 and sky_jobs_base to 1.34.0.
Download sky_mechanicjob from the CFX Portal and create a resource backup.
Replace the /source folder, including the rebuilt interface under /source/html.
Replace /fxmanifest.lua so version 1.20.0 and the new /compat files are loaded.
Add the complete new /compat folder. For garage/framework resources that must resolve the real stored plate, add shared_script "@sky_mechanicjob/compat/fakeplates_realplate_native.lua" near the top of that resource's manifest and declare dependency "sky_mechanicjob". Do not add this override to Police, dispatch, radar, or UI resources that should see the displayed fake plate. See Fake Plate Integration for complete manifest and persistence examples.
If a resource should choose between real and displayed plates itself, load @sky_mechanicjob/compat/fakeplates.lua and use the provided compatibility helpers described in the updated README and integration guide.
If you do not use /jobconfig, merge these /config/config.lua changes manually:
Change Config.FakePlates.resetOnGarageStore from true to false when fake plates should persist through compatible garage storage. Retain true if storing a vehicle should deliberately remove its fake plate.
Under Config.VehicleCare.repair, add blockForNonMechanicsWhenMechanicsOnDuty = false. Set it to true to reserve repair-kit use for mechanics whenever at least one mechanic is on duty.
If you use /jobconfig, verify the Fake Plate garage-reset and Vehicle Care repair-access values before saving.
Replace /config/sv_functions.lua, then restore customer-specific integration code from your backup.
No SQL migration is required.
Restart sky_mechanicjob and test fake plate storage/restoration with every installed garage, RGB controller neon restrictions, profile-blocked chrome paint, repair-kit access, and Workshop Creator filtering.
Version 1.19.0
Update sky_base to 1.30.0 and sky_jobs_base to 1.33.0 before updating sky_mechanicjob.
Highlights
Complete fake plate system - mechanics can create and install temporary display plates with ownership, distance, engine, duplicate, cooldown, expiry, crash-loss, blacklist, and audit controls.
Synchronized engine-sound previews - preview revs are relayed to nearby players so engine-sound tuning can be evaluated together before purchase.
Safer workshop deletion - jobs with active deliveries, tuning work, invoices, or vehicle service obligations cannot be removed until their operational records are resolved.
Notable Changes
Framework-spawned vehicles now restore broken tyres, doors, and windows along with their other saved properties.
Overdue delivery orders are promoted when ready orders are fetched, and on-duty staff receive refreshed ready pallets.
Duplicate vehicle-lift props are prevented after reconnects and creator-owned lift props disappear when their creator entry is deleted.
The mechanic tablet closes correctly after invoice payment.
Sliders update visually when a tuning option is reset to its default.
Registered Job Configurator defaults now cover the complete current mechanic configuration.
Added an administrator command permission for resetting an active fake plate.
Other Changes
Added configurable optional risk and illegal-market rules for fake plates.
Added audit storage and default item records for blank plates, fake-plate kits, plate scanners, and plate printers.
Updated the resource version to 1.19.0.
Update sky_base to 1.30.0 and sky_jobs_base to 1.33.0.
Download sky_mechanicjob from the CFX Portal and create a database and resource backup.
Replace the /source folder, including the rebuilt interface under /source/html.
Replace /fxmanifest.lua so the fake-plate scripts and version 1.19.0 are loaded.
If you do not use /jobconfig, copy the complete Config.FakePlates block into /config/config.lua. Review at least the enabled state, item names, plate length/pattern/blacklist, ownership and vehicle-state requirements, interaction distances, install time, cooldown, expiry/restart/garage behavior, duplicate prevention, audit logging, crash falloff, optional typo risk, and optional illegal market.
If you use /jobconfig, verify the same Fake Plates values there before saving. The block must still exist in config.lua when your setup does not import configurator defaults.
Add the fakeplatereset command permission to /config/adv_config.lua.
Replace /config/sv_functions.lua, then restore customer-specific server integration code from your backup.
Run the updated /import.sql if automatic query execution is disabled. It creates the fake-plate audit table and adds the four default plate-related items for compatible inventories.
Register the plate items and images manually if your inventory does not use the bundled SQL/item integration.
Restart sky_mechanicjob and test plate installation/removal, garage expiry behavior, nearby engine-sound previews, saved vehicle damage, active deliveries, and protected job deletion.
Version 1.18.0
Before updating, make sure sky_base and sky_jobs_base are up to date. The updated Job Configurator defaults and config import flow require the matching shared-resource release.
Highlights
Tyre repairs now follow each damaged wheel. Missing and burst tyres are tracked individually, mechanics work on the affected side with the car jack, and Vehicle Diagnostics shows the remaining tyre condition and repair progress.
Optional vehicle-fire integration with Sky Fire Job. Critical engine damage and severe frontal impacts can create configurable vehicle fires when sky_firejob is available, while mechanic repairs clear matching fire and entrapment states.
Safer Job Configurator defaults and imports. Shipped defaults remain stable even when local config files are customized, and existing local values can be imported deliberately through the matching jobs-base workflow.
Notable Changes
Added configurable workshop map blips, including station labels, sprite, color, scale, display mode, and short-range behavior.
Added optional mechanic notifications when customers place self-service tuning orders, with an optional vehicle plate in the message.
Added configurable non-minigame installation rules for large vehicles and selected vehicle models.
Vehicle washing and waxing now support large vehicles more reliably.
Tire smoke color changes now preview live during tuning, with smoother preview updates and restoration when the preview is cancelled.
Added /fix as an admin repair alias.
Instant Tuning now consistently rejects Stance wheel-size and wheel-width options when those features are disabled.
Other Changes
Improved tyre repair restoration so unrelated body, engine, window, door, dirt, and remaining wheel damage are preserved correctly.
Improved oil-leak diagnostics for frontal-impact and active-leak flows.
Wear, oil-leak, fire, and wheel-damage effects no longer apply to invulnerable vehicles.
Pressing the Nitro control no longer shows a missing-installation notification when Nitro is disabled for the current job.
Job Configurator fire settings are hidden automatically when the optional Fire Job integration is unavailable.
Workshop Creator-owned settings remain sourced from customer configuration during generated-default builds.
Update sky_base and sky_jobs_base to their matching releases first.
Download sky_mechanicjob from the CFX Portal and create a backup of customized files.
Replace the /source folder, the built frontend files in /source/html, and fxmanifest.lua.
Replace /config/locales so the new self-service order and tyre-repair text is available.
Merge the updated Config.Jobs entries from config/config.lua, especially the new blip and selfServiceOrderNotifications settings.
Merge the updated Config.OrderInstall vehicle-class and vehicle-model lists if large vehicles should use the non-minigame installation flow.
Merge Config.FirejobVehicleFires if you use sky_firejob, and review its critical-engine and frontal-impact thresholds in /jobconfig. No Fire Job resource is required when this integration is not used.
Merge the new Config.WheelDamage.repairRestore, tyreRepair, and deformation settings if you keep a customized config file.
Open /jobconfig, review workshop blips, self-service order notifications, vehicle-fire settings, and wheel-damage repair settings, then save the jobs you changed.
If existing local config values should become the initial Job Configurator values, use the config import workflow provided by the matching sky_jobs_base release before making further edits.
Restart sky_jobs_base, sky_mechanicjob, and sky_firejob when the optional vehicle-fire integration is enabled.
Test a missing tyre on each vehicle side, a burst tyre, self-service order notifications, workshop blips, large-vehicle installs, and optional vehicle-fire cleanup after a mechanic repair.
Version 1.17.0
Before updating, make sure sky_base and sky_jobs_base are up to date. Several billing and storage improvements require the matching jobs-base release.
Highlights
Billing was expanded as one complete workflow. Mechanic billing now supports protected default prices, Bossmenu custom positions, editable custom invoice prices, saved labels, and cleaner Billing settings inside the Job Configurator.
Order parts can be taken from job storage. Mechanic jobs can choose whether tuning-order parts are consumed from the player's inventory or from the workshop's shared storage.
Vehicle and Nitro systems were tightened up. Wheel tasks now follow the real vehicle wheel count, diagnostics repairs have a safer vehicle-class fallback, pushed vehicles align better with stance height, and external Nitro HUDs have a supported API.
Notable Changes
Added a Custom position dropdown to the mechanic tablet Billing app for boss-created custom prices.
Custom invoice positions support editable prices when custom prices are enabled and are stored as normal invoice items.
Added a new inventory image for engine_sound_kit.
Added the per-job Order item source setting for Player inventory or Storage.
Storage mode shows combined job-storage item amounts in Orders and consumes installed parts directly from storage.
Mechanic default billing rows are now protected in Bossmenu and keep their labels and prices synchronized.
Mechanic billing price controls are shown inside the Billing settings page instead of a separate Billing Prices tab.
Added Config.Nitro.externalUpdateIntervalMs in config/adv_config.lua for external Nitro HUD update timing.
Vehicle wheel tasks now adapt to the real vehicle wheel count, so motorcycles use front/rear tasks while cars keep four wheel positions.
Vehicle persistence was adjusted to avoid engine sound dropouts and fuel HUD value jumps while driving.
Vehicle push animations now stay aligned better on vehicles with raised stance settings.
Vehicle Diagnostics repairs now work better on server artifacts where the server cannot read the vehicle class directly.
Added an external Nitro HUD API for resources that want to display their own Nitro interface.
Update sky_base and sky_jobs_base first.
Download sky_mechanicjob from the CFX Portal and create a backup of customized files.
Replace the /source folder and update fxmanifest.lua.
Replace the built frontend files in /source/html.
Replace /config/locales so the new billing and wheel-task text keys are available.
Copy config/inventory/engine_sound_kit.png into your active inventory image setup if your inventory does not load images directly from the resource.
Merge config/adv_config.lua if you keep a custom file, especially the new Nitro external update interval:
Config.Nitro.externalUpdateIntervalMs = 150
Open /jobconfig, review every mechanic job's Order item source and Billing settings, then save the jobs you changed. Player inventory keeps the old behavior; Storage requires the workshop storage to contain the required install parts.
Make sure the matching sky_jobs_base billing migration is installed so billing labels can be saved in sky_jobs_billing_specs.
Restart sky_jobs_base and sky_mechanicjob.
Test custom billing positions, storage-based order installation, billing price editing, motorcycle wheel tasks, diagnostics repairs, and Nitro HUD integration if used.
Version 1.16.0
Before updating, make sure sky_base and sky_jobs_base are up to date. The configurable Instant Tuning profile and workshop vehicle-class selection require the matching shared-resource releases.
Highlights
Configurable Instant Tuning. Administrators can now control the performance stages, appearance modifications, wheel types, special options, and individual values available at global Instant Tuning locations. Client menus use the dedicated profile, and purchases are validated by the server.
Workshop vehicle specializations. Each mechanic workshop can be limited to selected GTA vehicle classes. The restriction applies to tuning, removal, diagnostics repairs, and order installation, while an empty selection continues to allow every class.
Configurable vehicle fluid leaks. Severely damaged engine-oil or transmission-fluid parts can create fluid trails while driving. Heavy frontal impacts can also create an immediate spill and start a configurable timed leak for combustion vehicles.
Notable Changes
Existing Job Configurator entries are migrated automatically to add engine_sound_kit to the normal mechanic shop and tablet Parts Shop. The migration is idempotent and preserves custom items and prices.
Added configurable thresholds, probabilities, intervals, speed and distance limits for wear-based oil leaks under Config.OilLeaks.
Added configurable frontal-impact detection using impact speed, speed loss, vehicle damage, optional front deformation, trigger chance, cooldown, leak duration, and spill radius.
Added all vehicle fluid leak and frontal-impact settings to the global in-game Job Configurator under Vehicle Fluid Leaks.
Added configurable provider routing plus SetFluidLeakProvider and ResetFluidLeakProvider client exports for external spill systems.
Added inventory definitions for engine_sound_kit to the ox_inventory, qs-inventory, QB-Core, and ESX documentation examples.
Fixes and Improvements
Fixed custom xenon RGB colors reverting to white after server restarts or garage cycles. Persisted indexed and custom colors are now reapplied after late garage property updates, and transient white values no longer overwrite the saved color.
Fixed txAdmin vehicle repair leaving Vehicle Diagnostics parts damaged. Repairing the occupied vehicle now restores all wear parts, clears catalytic-converter damage when required, and synchronizes the repaired state to clients.
Fixed mechanic debug messages appearing while sky_base debug mode was disabled. Debug helpers now consistently use the shared gated logger without suppressing production warnings or errors.
Fixed /debugwearzero engine_oil being interpreted as a vehicle plate. The command now supports both /debugwearzero [part] for the current vehicle and /debugwearzero [plate] [part].
Improved frontal-impact detection with a short sampling window and removed reliance on GTA's short-lived collision flag.
Update sky_base and sky_jobs_base to their matching releases first.
Download sky_mechanicjob from the CFX Portal and back up your customized files.
Replace the /source folder and update fxmanifest.lua to version 1.16.0.
Replace the built frontend files in /source/html and update /config/locales.
In config/config.lua, add allowedVehicleClasses to every entry inside Config.Jobs. Use an empty table to preserve unrestricted behavior, or list GTA class IDs from 0 through 22:
Config.Jobs = {
{
name = "mechanic",
-- Empty accepts every vehicle class. Example restriction: { 8, 9 }.
allowedVehicleClasses = {},
-- ... existing job settings ...
}
}
In config/config.lua, add the complete Config.OilLeaks block after Config.Wear and before Config.WheelDamage. The new integration table selects the fluid-spill provider; the remaining values become fallback defaults for the in-game Job Configurator:
The new Vehicle Fluid Leaks section is stored by /jobconfig. After the first save, its 25 runtime values override the matching enabled, trail, part-threshold, chance, and frontalImpact fallback values above. The integration provider fields remain managed in config/config.lua.
Open /jobconfig, configure Instant Tuning > Tuning, review Vehicle Fluid Leaks, and review allowedVehicleClasses for every mechanic workshop. Empty vehicle-class selections allow all classes.
Existing Job Configurator jobs receive engine_sound_kit in the normal shop and tablet Parts Shop automatically. If you do not use that migration, add the item to both catalogs manually and add its definition to your inventory framework.
No new setting is required in config/engine_sounds_config.lua when updating from 1.15.0; keep its existing defaultPrice, stockPrice, requiredItem, disableVehicleRadio, and per-sound price values.
Restart sky_base, sky_jobs_base, and sky_mechanicjob.
Test Instant Tuning restrictions, an unsupported vehicle class, custom xenon persistence after a garage cycle, txAdmin repair, and both wear-based and frontal-impact fluid leaks.
Version 1.15.0
Before updating, make sure sky_base and sky_jobs_base are up to date — install the matching releases first. This release also aligns the inventory calls with the matching sky_base release; running it against an older sky_base can break item add/remove.
Highlights
Self-service engine sound orders. Customers can now buy custom engine sounds through self-service tuning, fulfilled as a mechanic tablet order. The install flow opens the hood, plays a mechanic work animation, applies the selected sound, and closes the hood. A new engine_sound_kit item is required for the order.
Configurable engine sound prices. Each custom engine sound can have its own fixed price, including fallback and stock-restoration prices. Prices show correctly in the tuning basket and respect the instant-tuning price multiplier.
Physical brake installs. Normal and ceramic brake tuning now use the same workshop-lift workflow as stance installs — the vehicle must be raised, and the mechanic is guided through all four wheel positions with brake-specific checklist and radial text before the install completes.
Plate installs at the plate. License-plate tuning (plate holder, vanity plate, plate style) now requires the mechanic to stand at the front or rear license plate instead of the vehicle side, with a dedicated checklist step, a contextual radial action, and front/rear distance checks.
Notable Changes
Stance wheel size & width toggles — separate mechanic feature toggles for Stance wheel size and wheel width, disabled by default. When off (via config.lua or the in-game Job Configurator), the related Stance sliders are removed from tuning menus and their values are ignored everywhere, so wheel-scale tuning is not applied.
Engine sound preview no longer touches the radio — applying or previewing a custom engine sound no longer turns the GTA vehicle radio on or switches stations. A dedicated EngineSounds.disableVehicleRadio toggle optionally suppresses only the normal vehicle radio, without changing the custom engine audio itself.
Plate install positioning — new Config.OrderInstall.plateInstallDistance and plateInstallSideTolerance tune how close and how centered on the plate the mechanic must stand for plate installs.
Fixes and Improvements
Fixed engine hoist props not always appearing after a server start or player join until sky_mechanicjob was restarted — the hoist props are now re-synced and respawned reliably during startup.
Fixed custom engine sounds not always persisting for tuning orders or after a vehicle was spawned from a garage — live engine-sound state is now saved and reapplied after restore, so late garage writes can't leave the vehicle on stock audio.
Fixed mechanic paint and persisted tuning not applying immediately to vehicles spawned through Quasar AdvancedGarages map parking — saved paint, stance, RGB, and performance tuning are now reapplied before the player enters the vehicle.
Fixed vehicle mileage resetting when a player drove a vehicle and then disconnected or restarted the resource without a normal driver-exit — mileage is now saved periodically while driving and once more on resource stop.
Migrated internal item add/remove calls to the new sky_base inventory signature (slot + metadata).
Update sky_base and sky_jobs_base first — install the matching releases. The inventory-call change depends on the new sky_base release.
Download sky_mechanicjob from the CFX Portal and create a backup of your customized files.
Replace the /source folder and update fxmanifest.lua (version 1.15.0).
Replace the built frontend files in /source/html.
Run the updated import.sql to seed the new engine_sound_kit item (or add the item to your inventory manually). With Config.AutoExecuteQuery enabled (default) this runs on start.
Update /config/locales (new cz.lua; new brake, plate-install, engine-sound, and Stance-toggle strings in English & German — other languages fall back to English).
Merge config/engine_sounds_config.lua — it adds defaultPrice, stockPrice, requiredItem = "engine_sound_kit", the disableVehicleRadio toggle, and an optional per-sound price:
Config.EngineSounds = {
-- ... existing settings ...
+ defaultPrice = 5000,
+ stockPrice = 5000,
+ requiredItem = "engine_sound_kit",
+ disableVehicleRadio = true, -- keep the normal GTA radio off while applying a custom engine sound
sounds = {
- { audioName = "MONSTER", label = "Monster" },
+ { audioName = "MONSTER", label = "Monster", price = 5000 },
-- ... add a per-sound `price` to each entry (falls back to defaultPrice if omitted) ...
}
}
In config/config.lua, apply the additive changes below (defaults keep the previous behaviour):
Add the two new Stance toggles to Config.ToggleFeatures (both off by default):
Config.ToggleFeatures = {
workshopLift = true,
stanceWheelSize = false, -- enable the Stance wheel-size slider
stanceWheelWidth = false, -- enable the Stance wheel-width slider
}
- Add the `engine_sound_kit` item to each job's tuning catalog and point the `engine_sound` tuning option at it:
```diff
-- in each Config.Jobs[*] item catalog:
{ name = "engine_sound_kit", label = "Engine Sound Kit", price = 750 },
-- and in the tuning options:
engine_sound = {
enabled = true,
Open /jobconfig and review the new Stance wheel-size / wheel-width toggles and engine-sound prices for every mechanic job.
Restart the server, or fully restart sky_base, sky_jobs_base, and sky_mechanicjob.
Test self-service engine sound orders, brake installs on the lift, plate installs at the front/rear plate, and engine-sound persistence after a garage spawn.
Version 1.14.0
Before updating, make sure sky_base and sky_jobs_base are up to date. This release uses the latest shared interaction, Job Configurator, and tablet notification behavior.
Highlights
Added synchronized custom engine sounds with an audible tuning preview for the mechanic and nearby players.
Added a multiplayer vehicle push system for heavily damaged vehicles, including steering, stamina, terrain effects, and support for up to three players.
Added Dyno result sharing with nearby players through a protected read-only tablet view.
Added finer per-job tuning controls for individual upgrade stages, values, and paint ranges such as Chameleon colors.
Improved Stancer synchronization, tuning preview protection, Parts Delivery notifications, and overall client performance.
Notable Changes
Custom engine sounds are now replicated through the vehicle state so nearby players hear the selected sound. The engine continuously revs while an Engine Sound option is focused, making sounds easier to compare before purchase.
Engine sound entries accept common field formats and case-insensitive matching while preserving the configured GTA audio name.
Disabled vehicles can be pushed from the front or rear with E, steered with A/D, moved with W/S, and boosted with SHIFT.
Vehicle pushing supports weight classes, slopes, stamina, helper bonuses, synchronized three-player formations, automatic cancellation, and a dedicated status HUD.
Completed Dyno results can be shared with a player within 5m. The recipient's tablet opens directly to a read-only result and graph.
Tuning profiles can enable or disable individual upgrade stages and use allowedValues or blockedValues for exact values and ranges.
The Job Configurator now provides value controls and presets for Standard and Chameleon paint ranges without requiring manual JSON editing.
Realistic Wheel Damage multipliers now update immediately after saving Job Configurator changes and support decimal values such as 0.1.
Secondary tuning sections are grouped under a localized More menu, while the main categories and basket stay directly accessible.
Fixes and Improvements
Unpaid tuning previews now freeze the connected vehicle and restore its original state if the player exits, changes driver, moves the vehicle, or leaves the workshop area.
Stancer wheel size, wheel width, camber, track width, and suspension height remain more reliable after rim changes, installation, garage spawning, vehicle damage, stream-in, and driver changes.
Parts Delivery notifications now validate that a delivery still exists before creating a waypoint. Valid notifications mark the pickup location instead of reopening the Parts Shop.
Mechanic tablet apps are registered for mechanic jobs created only through /jobconfig, not only jobs listed in config.lua.
Reduced idle client usage for Stancer updates, vehicle persistence, vehicle push detection, Parts Delivery checks, and self-service tuning interactions.
Healthy vehicles can no longer be pushed only because their engine was switched off.
Update sky_base and sky_jobs_base first.
Download sky_mechanicjob from the CFX Portal and create a backup of your customized files.
Replace the /source folder and update fxmanifest.lua.
Replace the built frontend files in /source/html.
Update /config/locales, or merge the new Engine Sound, Dyno sharing, Parts Delivery waypoint, Vehicle Push, and More menu translation keys into custom locale files.
Add or merge config/engine_sounds_config.lua. Custom sound audio files and audio data must still be supplied and ensured by your sound resource. See Custom Engine Sounds for the complete setup.
If you keep a customized adv_config.lua, merge the new Config.VehiclePush section and review its damage threshold, movement, stamina, HUD position, unsupported classes, and weight classes.
If you keep custom tuning profiles in config.lua, review per-stage enabled values and the new allowedValues / blockedValues rules.
Open /jobconfig and review Tuning Prices and Wheel Damage for every mechanic job.
Restart the server or fully restart sky_base, sky_jobs_base, and sky_mechanicjob.
Test custom engine sounds with two players, Dyno sharing, damaged-vehicle pushing, restricted tuning values, Stancer persistence, and Parts Delivery notification waypoints.
Version 1.13.0
Before updating, make sure sky_base and sky_jobs_base are up to date.
Highlights
Added partial tuning-order refunds for individual uninstalled positions or all remaining uninstalled positions while keeping installed tuning paid.
Added live inventory counters for every required part in the mechanic tablet's tuning-order details.
Added per-job Nitro access overrides with inherit, enabled, and disabled modes.
Added configurable account or inventory-item payouts for the stolen parts dealer.
Added configurable Stancer slider scales, bounds, and defaults.
Added an external HUD visibility hook for tuning sessions.
Notable Changes
Refunded tuning positions now keep their amount, timestamp, and responsible employee for a complete audit trail.
Order totals and statuses are recalculated after partial refunds, and refunded positions can no longer be installed.
Server-side order locking prevents refund and installation actions from modifying the same order simultaneously.
Required-part counters total matching items across all inventory slots and display (0) when an item is missing.
Parts Delivery now waits for valid network IDs, recreates invalid delivery entities, retries client resolution, and requests a fresh sync when necessary.
Delivery resolver threads are cancelled when deliveries are removed, preventing missing or resurrected pallets and repeated network-object warnings.
Wheel size and width synchronization now handles late-streaming garage vehicles, delayed property restoration, changed wheel setups, and superseded state updates.
Instant Tuning now has its own localized menu title while preserving the existing Admin Tuning, Self Service Tuning, RGB Controller, and Stance Kit titles.
Stance wheel adjustments on Workshop Lifts now use the dedicated streamed tune/anim animation and continue when FiveM reports a custom clip duration of 0.0.
Per-job Nitro access is enforced for boost use, Nitro Kit installation, installation callbacks, and state updates without restricting other workshop tuning features.
Stolen parts dealer item payouts validate inventory capacity and restore the sold part if the payout item cannot be added.
Saved vehicle-specific Stance values remain higher priority than configured slider defaults, while Reset Stance still restores the captured factory state.
Other Changes
Added Config.Functions.SetExternalHudVisible(visible) so external HUDs can be hidden while tuning is open and restored through every central close path.
External HUD export failures are logged without blocking the tuning menu.
Existing tuningCostProfile.nitroAccess values remain supported as a compatibility fallback.
Added detailed stolen parts dealer diagnostics for configurator updates, payout targets, inventory checks, framework results, and balances.
Added validation for invalid Stancer scales and reversed slider bounds.
Added the localized Instant Tuning title to every bundled mechanic locale and rebuilt the production NUI.
Update sky_base and sky_jobs_base first.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder and update fxmanifest.lua.
Replace the built frontend files and /config/locales, or copy the new Instant Tuning and refund translation keys into your custom locale files.
Copy the new /stream/tune.ycd animation file included with the resource.
If you keep your own mechanic job entries in config.lua, add the new Nitro access setting to each job:
nitroAccess = "inherit" -- "inherit", "enabled", or "disabled"
If you keep your own Config.PartsTheft, update the stolen parts dealer settings:
If you keep your own adv_config.lua, add the new Stancer slider configuration:
Config.StancerOptions = {
scale = 100,
bounds = {
camber_front = { min = -45, max = 45 },
camber_rear = { min = -45, max = 45 },
track_width_front = { min = 0, max = 150 },
track_width_rear = { min = 0, max = 150 },
suspension_height = { min = -30, max = 30 }
},
defaults = {
camber_front = 0,
camber_rear = 0,
track_width_front = 80,
track_width_rear = 80,
suspension_height = 0
}
}
To integrate an external HUD, override the new hook in adv_config.lua:
Config.Functions.SetExternalHudVisible = function(visible)
exports["your_hud_resource"]:SetHudVisible(visible)
end
Review the new Nitro access and stolen parts dealer payout settings in /jobconfig.
Restart the server or fully restart sky_base, sky_jobs_base, and sky_mechanicjob.
Version 1.12.0
Before updating, make sure sky_base and sky_jobs_base are up to date.
Highlights
Added support for GTA V's VMT Lightbar tuning slot, including pricing, required items, previews, installation, localization, and persistence.
Added automatic Workshop Lift detection for configured MLO/YMAP lift props and support for multiple lift model sets.
Reworked Stance installation into a physical four-wheel Workshop Lift workflow for tuning orders and the usable Stance Kit.
Added optional police dispatch alerts for successful wheel and catalytic converter thefts.
Notable Changes
Stance changes are now installed at all four wheel positions while the vehicle is raised on a configured Workshop Lift.
A localized Stance checklist and contextual radial actions track each completed wheel position before the selected Stance is applied and saved.
Existing matching MLO/YMAP lift props can now be reused instead of spawning duplicate lift objects.
Configured lift prop pairs can be discovered automatically without placing a workshop_lift point in Workshop Creator.
Compatible vehicles now show Lightbar variants from modification slot 49 in the Bodywork tuning section; vehicles without variants remain unchanged.
Repair Kits can now separately control normal vehicle damage, realistic wheel damage, and every mechanic wear part they restore.
Persisted engine, brake, transmission, suspension, turbo, armor, and Custom Handling upgrades are restored more reliably after garage spawning.
Self-service tuning markers are restored correctly when older Job Configurator data contains self_service_tuning.interaction=false.
Successful parts thefts can send configurable police dispatches with custom jobs, title, message, and cooldown.
Other Changes
Added Config.Functions.SendPartsTheftDispatch(source, data) so server owners can replace the default sky_jobs_base dispatch integration.
Existing MLO lift props are preserved during cleanup, refreshes, and resource stops.
Added periodic lift prop discovery for MLO objects that stream in after resource start.
Added detailed stolen parts dealer payout diagnostics for the active payout account, inventory changes, framework payout result, and before/after balances.
Added performance tuning values to vehicle persistence debug logs.
Update sky_base and sky_jobs_base first.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder and update fxmanifest.lua.
Replace the /config/locales folder, or copy the new Lightbar, Stance installation, checklist, progress, notification, and validation translation keys into your custom locale files.
If you keep your own adv_config.lua, update Config.WorkshopLiftSystem with configurable lift model sets and existing MLO/YMAP prop detection:
If you keep your own adv_config.lua, add the new Workshop Lift radial distance setting inside Config.WorkshopLiftSystem:
radialDistance = 4.5
If you keep your own parts delivery config, add the new timer HUD settings inside Config.PartsDelivery:
timerHud = {
enabled = true,
position = {
left = "50%",
top = "3vh"
}
}
Restart the server or fully restart sky_base, sky_jobs_base, and sky_mechanicjob.
Version 1.10.0
Before updating, make sure sky_base and sky_jobs_base are up to date.
Highlights
Improved vehicle repair reliability so fix kit repairs now also reset mechanic wear consequences and limp-mode states.
Stabilized Stancer defaults, persistence, wheel size, and wheel width handling across tuning, checkout, parking, and restarts.
Added stronger RGB xenon and neon persistence guards so saved light settings are not overwritten by temporary stock-like vehicle reads.
Added Workshop Lift debug diagnostics to help investigate invisible, duplicated, or incorrectly synced lift props.
Improved Job Configurator integration by disabling the legacy Workshop Creator when the configurator flow is active.
Notable Changes
Fixed normal fix_kit repairs so they clear transmission limp mode, electric limp mode, engine damage, undriveable state, and related wear effects.
Fixed stale physical carry item states so mechanics can take parts from storage again without needing to reconnect.
Updated the mileage HUD runtime toggle so it appears or disappears immediately for active drivers after Job Configurator changes.
Reworked Stancer reset/default handling so vehicle defaults are captured once and custom stance changes are saved separately.
Preserved persisted Stancer values when unstable native reads return stock-like values during save or restore windows.
Improved Wheel Size and Wheel Width handling with dedicated Stancer option detection, tire/rim collider updates, and debug readback output.
Protected saved xenon and underbody neon settings from being replaced by transient disabled/default live reads outside active tuning sessions.
Added localized Workshop Creator disabled messages for all supported mechanic locale files.
Added detailed debug-only lift logs for model names, hashes, entities, coordinates, nearby objects, cleanup, creator sync, and attach/detach broadcasts.
Update sky_base and sky_jobs_base first.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace fxmanifest.lua so version 1.10.0 is loaded (it now also loads the new config/init.lua).
Add the new /config/init.lua file.
Important — the global table initialization moved to config/init.lua. If you keep your own config/config.lua instead of replacing it, remove these two lines from the top of the file (they are now set in init.lua):
Replace the mechanic locale files if you want the new Workshop Creator disabled message in all supported languages.
Restart the server or fully restart sky_base, sky_jobs_base, and sky_mechanicjob.
Test fix kit repairs, Stancer reset/persistence, RGB xenon/neon persistence, carry-item storage pickup, mileage HUD toggles, and workshop lift behavior.
Version 1.9.0
Before updating, make sure sky_base and sky_jobs_base are up to date.
Highlights
Improved mechanic tuning, carry-item, parts delivery, and instant tuning flows.
Added Engine Hoist support for engine installs.
Added better Instant Tuning management through the Job Configurator.
Notable Changes
Fixed engine installs so carried engines and inventory engines are both handled correctly.
Fixed moved parts delivery pallets so they can still be unpacked.
Fixed tuning freecam focus so players can return to the tuning UI more reliably.
Fixed tuning basket removal so other preview changes are not lost.
Fixed unpaid light previews so they are restored when tuning is closed.
Added stancer support to the applied tuning list in the mechanic tablet.
Added an admin full vehicle repair export.
Improved customer name display by preferring in-game character names.
Fixed self-service tuning so it creates mechanic orders again.
Update sky_base and sky_jobs_base first.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace fxmanifest.lua so version 1.9.0 is loaded.
Replace config/config.lua if you want the new default Engine Hoist carry-item transport setting.
Restart the server or fully restart sky_base, sky_jobs_base, and sky_mechanicjob.
Open /jobconfig and verify Instant Tuning, Tuning Prices, and Carry Items if Config.UseJobConfigurator = true.
Version 1.8.0
Before updating, make sure sky_base and sky_jobs_base are up to date.
Highlights
Added shared in-game job configurator support for mechanic jobs, features, interactions, pricing/settings, parts delivery, wear, wheel damage, vehicle care, and carry-item settings.
Notable Changes
Fixed Nitro, Anti-Lag, and Two-Step backfire effects on tuned exhausts through shared vehicle effect handling.
Added config/adv_config.lua and moved advanced/static settings out of the main config/config.lua.
Update sky_base and sky_jobs_base first.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace fxmanifest.lua so version 1.8.0 and the new config file list are loaded.
Replace config/config.lua.
Add the new config/adv_config.lua.
Restart the server or fully restart sky_mechanicjob.
Open /jobconfig and verify the Mechanic Job settings if Config.UseJobConfigurator = true.
Version 1.7.1
Before updating, make sure sky_base and sky_jobs_base are up to date.
Changes
Fixed vehicle color handling so selected paint, custom colors, pearlescent, wheel, dashboard, and interior colors are kept more reliably after tuning and restoring vehicles.
Reworked Stancer saving and loading so stance changes stay synced better, while self-service previews no longer save unpaid changes before checkout.
Download sky_mechanicjob from the CFX Portal.
Replace the /source folder.
Replace fxmanifest.lua so version 1.7.1 is loaded.
Restart the server.
Version 1.7.0
Before updating, make sure sky_base and sky_jobs_base are up to date.
Highlights
Stancer persistence was fully stabilized across re-enter, garage outpark, impound retrieval, menu close/reopen, and resource restart.
Vehicle restore timing and guard flow were cleaned up to stop duplicate overwrite waves and workshop flicker behavior.
Core runtime systems (Anti-Lag, Nitro, Two-Step, Self-Service pricing, Instant Tuning access) were unified and made more reliable.
Notable Changes
Stancer persistence overhaul:
Added session snapshot + dirty-state handling to prevent transient GTA defaults from overwriting tuned stance.
Added immediate debounced save for camber, track width, suspension height, wheel size, and wheel width.
Added stronger delayed stance stability checks for suspension/camber/track after restore.
Persistence stability fixes:
Fixed runtime blockers around sanitizePlate and lastKnownStanceByPlate.
Fixed local guard scope/order in vehicle persistence to prevent purchase callback instability.
Reduced broad reapply storms and duplicate late restore paths.
Self-Service / Instant Tuning:
Public self-service pricing visibility is now controlled by Config.TuningCostProfile.publicUsersSeePrices.
Instant tuning now supports global and per-location job restrictions (mechanicOnly, allowedJobs/jobs) with client/server enforcement.
Two-Step / Anti-Lag / Nitro runtime:
Anti-Lag moved to config-driven runtime balancing.
Two-Step now includes configurable launch-control behavior and improved trigger consistency.
Nitro got live HUD/progress sync improvements, better hide behavior, and stronger config runtime control.
Other Changes
Reduced repeated paint apply bursts and restore spam in heavy spawn/re-enter windows.
Improved tuning close behavior so unpaid preview/reset flows do not persist unintended changes.
Restart the server or fully restart the affected resources.
Test vehicle restore after garage, impound, outpark, re-enter, and restart flows.
Test paint, pearlescent, xenon, RGB, livery, and stance values on multiple vehicle types.
Version 1.5.0
Before updating, make sure sky_base and sky_jobs_base are up to date.
Highlights
Added optional physical item carrying through Config.CarryItems, where delivered orders must be unpacked and parts become physical objects that mechanics carry through the workshop by hand or transport in bulk with pallets and forklifts.
Added workshop prop placement support, including configurable props such as cones, barriers, work lights, and parts boxes for better rp.
Notable Changes
Added a forklift to the default mechanic vehicle list for workshops that use physical delivery handling.
Added optional drivetrain swap whitelisting through Config.CustomHandlingOptions.drivetrainWhitelist for vehicles that are safe to switch between drivetrain presets.
Tuning orders are now scoped per workshop, and the vehicle registry now keeps each mechanic business separated correctly.
Added Kiminaze Advanced Parking integration to avoid duplicate vehicles during stance resets.
Improved install flows by skipping hood-opening steps on vehicles without a hood and hiding armor tuning on bikes.
Other Changes
Improved persistence for window tint, liveries, underbody neons, anti-lag state, and paint data.
Fixed vehicles becoming chrome, windows breaking unexpectedly, and braking issues on some addon vehicles.
Fixed stance synchronization for nearby players.
Refunds are now limited to unstarted orders, and refunded orders can now be deleted.
Added Russian translations.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace fxmanifest.lua so version 1.5.0 is loaded.
Add the new workshop props and forklift vehicle entries from the updated Config.Jobs section if you want to use the new prop placement and delivery workflows.
Add interactionDistance to Config.Interactions.self_service_tuning and Config.Interactions.part_delivery if you want to customize those ranges:
interactionDistance = 2.5
Add Config.CarryItems from the new config if you want delivered parts to become physical objects that must be transported through the workshop.
Add the optional drivetrain whitelist if you use drivetrain swaps and want to restrict them to tested vehicle models:
Requires sky_base 1.14.0 or newer andsky_jobs_base 1.15.0 or newer. The admin permission system has been replaced - sky_base must be updated and the three bootstrap ACEs must be added to your server.cfg before ensure sky_base, otherwise /admintuning, /migrate, /workshopcreator, /setboss, and every other admin command will deny everyone except the server console.
Highlights
Added an Applied Tuning section to Vehicle Diagnostics App so mechanics can see and set installed tuning back to stock and receive configured install items back.
Tuning removal now uses the same install workflows as tuning installs, including wheel, brake, suspension, and simple checklist flows.
Added optional workshop-location enforcement for tuning installs and removals through Config.TuningWorkshopRequirement.
Added synced stance state so stance changes are visible to nearby players without them entering the vehicle.
Notable Changes
Command permissions now use sky_base ACE auto-wiring through Config.CommandPermissions, including the Workshop Creator permission.
Parts theft configuration was consolidated into Config.PartsTheft, including lug wrench item settings, stolen wheel item settings, and stolen parts dealer settings.
Instant tuning points can now force marker interaction through Config.InstantTuning.forceMarkerInteraction.
Vehicle lookup now includes a fallback for police vehicles, fixing car jack, wheel, nitro, and catalytic converter interactions on some vehicle classes.
Saved vehicle properties no longer re-apply persisted dirt level when vehicles are entered or tuning data is loaded.
Nitro HUD, order item images, and stolen parts dealer images now use the configured NUI item image base from sky_jobs_base.
Other Changes
Added Swedish translations.
Improved applied tuning loading for diagnostics.
Improved stance sync performance.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace fxmanifest.lua so version 1.4.0 is loaded.
Update Config.CommandPermissions so command permissions are registered through sky_base ACE auto-wiring:
Add overwriteHandling to Config.CustomHandlingOptions:
Config.CustomHandlingOptions = {
enabled = true,
-- Set this to true only when another handling editor/resource overwrites handling on every vehicle enter.
-- WARNING: If no other handling script resets the vehicle handling first, this can multiply tuning again on each vehicle enter.
overwriteHandling = false,
-- ...
}
Add the electric vehicle fallback config if your server run below game build 3258:
Before updating, make sure sky_base and sky_jobs_base is up to date.
Highlights
Added Vehicle Part Theft as a new criminal gameplay loop where catalytic converters and wheels can be stolen, sold, and repaired.
Added the stolen parts dealer interaction and UI so stolen wheels and catalytic converters can be sold to configured NPC dealers.
Added realistic theft consequences: stolen catalytic converters change vehicle sound and create smoke, while stolen wheels leave vehicles sitting on bricks.
Notable Changes
Added lug wrench theft selection so players can choose whether to steal a wheel or catalytic converter.
Added realistic catalytic converter removal and installation minigames using a jack, bolt interaction, and guided checklist flow.
Added wheel theft support using the existing wheel workflow, synced missing-wheel state, and inventory rewards.
Mechanics can repair stolen parts through diagnostics by replacing catalytic converters or missing wheels.
Added electric vehicle wear support for traction batteries and power inverters, including diagnostics labels and repair flows.
Tuning options can now be disabled individually and can define their own required install items directly in Config.TuningCostProfile.
Added Config.TuningCostProfile.freeVehicles for vehicles that should create free tuning orders.
Vehicle purchase price lookup is now configurable through Config.Functions.GetVehiclePurchasePrice.
Other Changes
Fixed vehicle paint saving and engine health restoration after re-entering vehicles.
Disabled stance support for motorbikes.
Self service tuning now always uses a marker instead of target.
Added lug_wrench.png, catalytic_converter.png, traction_battery.png, inverter.png, antilag_kit.png, and nitro_kit.png inventory images.
Added English, German, and French locale keys for part theft, catalytic converter work, wheel theft, stolen parts dealer, and electric vehicle wear parts.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace the /html or built frontend files included with the resource so the catalytic converter minigame, lug wrench choice, and stolen parts dealer UI are available.
Replace fxmanifest.lua so the new client/server files and version 1.2.0 are loaded.
Copy the new inventory images from config/inventory into your inventory item image setup if your inventory requires item images.
Add the new theft and electric vehicle items to your mechanic shop items:
Add forceMarkerInteraction = true to Config.Interactions.self_service_tuning if you use marker-based self-service tuning.
Update Config.TuningCostProfile from the new config.
Add or merge Config.Functions.GetVehiclePurchasePrice from config/sv_functions.lua.
Add lug_wrench, catalytic_converter, traction_battery, and inverter to your inventory item definitions.
Add one or more stolen_parts_dealer points in Workshop Creator where stolen parts should be sold.
Version 1.1.0
Before updating, make sure sky_base and sky_jobs_base is up to date.
Highlights
Added configurable instant tuning locations that can apply tuning directly without creating a workshop order.
Added tuning order refund and completed-order delete actions in the mechanic tablet.
Added a fix_kit usable item workflow for repairing nearby vehicles, including realistic wheel damage repair support.
Notable Changes
Tuning prices can now use percentage-based or fixed money values through Config.TuningCostProfile.priceType.
Tuning cost config keys were standardized from percentage-specific names to generic cost fields.
The mechanic tablet now shows order status and payment method, and supports refunded order state.
Currency display is now configurable through locale files.
Custom handling tuning options now save correctly and show as applied in the tuning menu.
Fix kit repairs can reset realistic wheel damage when Config.VehicleCare.repair.fixRealisticWheelDamage is enabled.
Other Changes
Added fix_kit.png inventory image.
Added society_job, refunded_at, refunded_by_identifier, and refunded_by_name columns to sky_mechanic_tuning_orders.
Added English, German, and French locale keys for instant tuning, order refunds, order deletion, fix kit, and configurable currency symbols.
Updated French translations.
Fixed wheel damage repair behavior when using the fix kit.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace the /html or built frontend files included with the resource so the updated tablet order actions and currency display are available.
Replace fxmanifest.lua so version 1.1.0 is loaded.
Copy config/inventory/fix_kit.png into your inventory item image setup if your inventory requires item images.
If you use custom locale files, copy the new instant tuning, order refund/delete, fix kit, and currency translation keys from the updated locale files.
Update Config.TuningCostProfile to the new pricing format in the new config.
Add fix_kit to your inventory item definitions if your inventory requires explicit item registration.
If Config.AutoExecuteQuery = false, run the updated import.sql manually so the tuning order refund columns are created.
Version 1.0.0
Before updating, make sure sky_base and sky_jobs_base is up to date.
Highlights
Added a realistic wheel damage system with synced wheel damage state, popped tyres, detached wheels, and handling penalties.
Added damaged-wheel repair support through the vehicle diagnostics repair flow.
Improved workshop car lift synchronization so raised vehicles and lift attachments stay consistent for other players.
Notable Changes
Wheel damage now reacts to collisions and hard landings, with configurable multipliers per vehicle class and off-road wheel type.
Wheel damage is synchronized through vehicle state bags and can be reset by mechanic repair actions.
Only one wheel can detach from a vehicle at a time to reduce vehicle physics issues.
Wheel damage runtime performance was improved and the default config was cleaned up.
Sponge and wax inventory item images were added for the vehicle care items introduced in the previous update.
Fixed lift vehicle sync and duplicate lift prop issues.
Other Changes
Added source/client/wheel_damage.lua and source/server/wheel_damage.lua.
Added source/server/lift.lua.
Added Config.WheelDamage.
Updated the diagnostics tablet flow for damaged wheel repairs.
Added wash_sponge.png and vehicle_wax.png inventory images.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace the /html or built frontend files included with the resource so the updated diagnostics repair flow is available.
Replace fxmanifest.lua so source/client/wheel_damage.lua, source/server/wheel_damage.lua, source/server/lift.lua, and version 1.0.0 are loaded.
Copy config/inventory/wash_sponge.png and config/inventory/vehicle_wax.png into your inventory item image setup if your inventory requires item images.
Add the new wheel damage config to config/config.lua:
If you use custom diagnostics or wear repair config, make sure tyre repairs are allowed to use the updated wheel repair flow.
Version 0.6.0
Before updating, make sure sky_base and sky_jobs_base is up to date.
Highlights
Added vehicle wash and vehicle wax usable-item workflows, including dedicated wash/wax items, animations, particle effects, and a vehicle-care minigame.
Added realistic wheel-based brake and suspension install flows so brake and suspension work now uses jack, wheel detach, component install, wheel attach, and jack removal steps.
Added a configurable install duration and an on-screen progress bar for non-minigame install actions.
Notable Changes
Vehicle wax now keeps a clean vehicle clean for a configurable mileage window through Config.VehicleCare.wax.cleanKilometers.
Wash and wax items are now available in the mechanic shop and Parts Shop delivery catalog.
Brake pad and suspension wear repairs now use the wheel workflow instead of a simple repair flow.
Improved mechanic animations for under-hood repairs, engine swaps, oil draining, oil pouring, and underbody installs.
Added storage, locker, and trunk background images for the mechanic UI.
Fuel level is no longer overwritten when saving or restoring mechanic vehicle properties.
Other Changes
Added source/client/vehicle_care.lua and source/server/vehicle_care.lua.
Added Config.OrderInstall.nonMinigameDurationMs.
Added Config.VehicleCare for wash and wax item configuration.
Added English, German, and French translation keys for vehicle care and the new wheel checklist steps.
Fixed repaint workflow particle effects.
Updated the wheel attach minigame so brake and suspension workflows can reattach the existing wheel.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace the /html or built frontend files included with the resource so the vehicle-care minigame, install progress bar, and storage backgrounds are available.
Replace fxmanifest.lua so source/client/vehicle_care.lua, source/server/vehicle_care.lua, config/img/**, and version 0.6.0 are loaded.
If the release package includes /config/img, copy it so the new storage, locker, and trunk background images are available.
If you use custom locale files, copy the new vehicle-care and wheel-checklist translation keys from the updated locale files.
Add the new wash and wax items to your mechanic shop items:
Add wash_sponge and vehicle_wax to your inventory item definitions and item images if your inventory requires them.
If you use custom wear repair config, make sure brake pad and suspension repairs use the wheel flow.
Version 0.5.0
Before updating, make sure sky_base and sky_jobs_base is up to date.
Highlights
Added the Parts Shop tablet app for mechanic part orders, including catalog browsing, category filters, basket checkout, own-card and company-card payment, and order history.
Added Parts Delivery points for Workshop Creator so ordered parts arrive as physical delivery boxes at configured workshop locations.
Added tablet push notifications when part deliveries are ready to collect.
Notable Changes
Parts purchases can now be logged in the boss menu, including order UID, price, and ordered item summary.
Parts deliveries now support delivery ETA, pending/ready/claimed status tracking, claim history, and ready-delivery lookup by delivery point.
Delivery box props now scale by order size so larger orders use larger box piles.
Company-card checkout now uses the PURCHASE_SUPPLIES job permission and validates company balance before placing an order.
The Parts Shop app now reopens correctly after closing the tablet, and app permission routing was fixed.
Tuning freecam now blocks player controls while keeping camera look controls available.
Wheel lug nut indicators are easier to see in the wheel detach minigame.
Other Changes
Added the sky_mechanic_part_deliveries database table and automatic migration support.
Added English translation keys for Parts Shop, Parts Delivery, checkout errors, order history, and delivery notifications.
Fixed order history timestamps.
Improved delivery interaction logic.
Refined Parts Shop navbar, color theming, and overall design.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace the /html or built frontend files included with the resource so the new Parts Shop tablet app is available.
Replace fxmanifest.lua so @sky_jobs_base/source/enums/Permission.lua, source/client/parts_delivery.lua, source/server/parts_delivery.lua, and version 0.5.0 are loaded.
If you use custom locale files, copy the new Parts Shop and Parts Delivery translation keys from the updated locale files.
Add the new Parts Delivery interaction to Config.Interactions:
Add a part_delivery point in Workshop Creator for every workshop that should receive part orders.
If Config.AutoExecuteQuery = false, run the updated import.sql manually so sky_mechanic_part_deliveries is created.
Version 0.4.0
Before updating, make sure sky_base and sky_jobs_base is up to date.
Highlights
Added synced custom xenon colors across players, including re-application when vehicles stream in or players join.
Added German and French translations.
Added a tuning menu reset button for stancing so vehicles can be restored to default stance values directly from the UI.
Notable Changes
Improved stancing persistence when leaving and re-entering vehicles, including wheel size, wheel width, camber, track width, suspension height, and wheel rotation values.
Improved performance for nitro, anti-lag, two-step, RGB effects, vehicle wear, and general in-vehicle idle loops.
Nitro now uses keymapping support through Config.Nitro.activationKey, with separate timing controls for active ticks, input checks, local effects, and remote effects.
Engine hoist props created through the Workshop Creator now spawn and sync more reliably from configured placement points.
Fixed unwanted neon installs during the order workflow.
Other Changes
Fixed stance reset behavior in the tuning menu.
Fixed engine hoist placement in the Workshop Creator flow.
Cleaned up stancing and nitro runtime logic for better maintainability.
Updated two-step default flame scale values.
Download sky_mechanicjob from the CFX Portal.
Create a backup.
Replace the /source folder.
Replace the /config/locales folder.
Replace fxmanifest.lua so the new source/client/xenon_sync.lua file and version metadata are loaded.
If you use custom locale files, copy the new translation keys from the updated locale files.
If you use custom config files, update Config.Interactions.self_service_tuning:
If Config.AutoExecuteQuery = false, run the updated import.sql manually so the vehicle profile primary-key migration fix is applied.
Version 0.2.0
Before updating, make sure sky_base and sky_jobs_base is up to date.
Highlights
Added the Vehicles App to the mechanic tablet with searchable, paginated vehicle records, linked tuning orders, service history, tags, notes, and gallery image assignment.
Added automatic database migration support through Config.AutoExecuteQuery.
Added /migrate command for importing tuning data from previous mechanic scripts such as jg-mechanic.
Notable Changes
Vehicle history is now logged for order installs, nitro installs/refills, and wear repairs, including used items, mechanic details, duty state, and action metadata.
Tuning orders can now link back into the Vehicles App, and vehicle records only list vehicles that have mechanic orders.
Tablet apps now reopen and close more reliably, including direct order selection from linked vehicle records.
Self-service tuning now supports multiple placement points and requires the player to be the driver.
Added optional off-duty job configuration per mechanic job.
Xenon color changes now calculate order pricing correctly.
Other Changes
Added sky_mechanic_vehicle_profiles and sky_mechanic_vehicle_history database tables.