Version 1.4.0
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
/sourcefolder. - Replace the
/config/localesfolder. - Replace
fxmanifest.luaso version1.4.0is loaded. - Update
Config.CommandPermissionsso command permissions are registered through sky_base ACE auto-wiring:
Config.CommandPermissions = {
admintuning = { "god", "superadmin", "admin" },
migrate = { "god", "superadmin", "admin" },
workshopcreator = { "god", "superadmin", "admin" },
debugwearzero = { "god", "superadmin", "admin" },
debugwearzeroall = { "god", "superadmin", "admin" },
}
- Replace
Config.StolenPartsDealerwith the newConfig.PartsTheftsection:
Config.PartsTheft = {
item = "lug_wrench",
removeItemAfterUse = false,
stolenWheelItem = "wheels",
catalyticConverterItem = "catalytic_converter",
dealer = {
account = "money",
sellDistance = 5.0,
items = {
{ name = "wheels", label = "Wheel", amount = 1, price = 120 },
{ name = "catalytic_converter", label = "Catalytic Converter", amount = 1, price = 600 }
}
}
}
- Add
forceMarkerInteractiontoConfig.InstantTuning:
Config.InstantTuning = {
enabled = false,
interactionDistance = 4.0,
forceMarkerInteraction = true,
priceMultiplier = 1.25,
-- ...
}
- Add
Config.TuningWorkshopRequirementif you want tuning installs or removals to require a nearbyself_service_tuningWorkshop Creator point:
Config.TuningWorkshopRequirement = {
requireForInstall = false,
requireForRemoval = false,
distance = 50.0
}
- Replace the
/config/localesfolder.