Version 2.15.0
server.cfg (see sky_base 1.14.0 changelog), otherwise /revive, /setboss, /hospitalcreator, and every other admin command will deny everyone except the server console.Highlights
- New admin permission system —
/revive,/stopdeathtimeout,/removemobilityaid,/kill,/refunds,/hospitalcreator, and/hospitalbedsare now resolved through FiveM ACE, auto-wired fromConfig.CommandPermissionsat server start.Config.Functions.HasCommandPermission(source, commandName)is preserved as a thin wrapper, so the public export signature is unchanged — only the internal lookup switches toIsPlayerAceAllowed./hospitalcreatoris registered throughSky_Jobs.RegisterCreatorwith the new unifiedpermissionparameter. Fixes admin commands silently denying admins on QBox afterqbx_core:HasPermissionwas deprecated in qbx_core v1.8.0. - Skin framework adapter for outfit save / restore — new internal
SkinAdaptermodule routes outfit save and apply operations through whichever skin framework is active on your server (rcore_clothing,illenium-appearance,skinchanger, or native ped variations as fallback). Fixes players respawning as the GTA default story character (Michael) onrcore_clothingservers, and eliminatesCPed::SetVariation: Invalid variationerrors when medics cut clothes for treatment. Hair color, head blend, and tattoos are now correctly reapplied from the saved profile after respawn. - Stretcher robustness pass — patients now reliably stay attached to the stretcher across the folded-model swap (added in 2.13.0), instead of detaching mid-swap or getting stuck inside the vehicle. The detach/reattach flow uses robust entity handle retrieval to avoid race conditions where the network ID is known but the local entity isn't yet streamed in, preserves entity state (visibility, frozen, collision) across the model swap, and prevents physics glitches during vehicle unloading.
Notable Changes
- Fixed transient knockouts (taser, fists, etc.) persisting as a permanent "dead" state when the player disconnected while knocked out. The client now explicitly classifies unconsciousness reasons (
knockout,unconscious,death) and the server treatsknockoutas transient — only real medical unconsciousness and death are persisted. - Medical unconsciousness (low blood volume / BP) now correctly triggers the death screen on the client via a new dedicated event, so the deathscreen state stays in sync with the server-side persistence.
- Fixed permanent blackscreen after a revive or reconnect — the revive flow no longer issues a
DoScreenFadeOutthat gets stuck before its matching fade-in. - Fixed the stretcher deploy radial action disappearing after parking a vehicle out from the garage. The trunk context is now auto-hydrated on demand, so the action remains available regardless of how the vehicle entered the world.
- Auto-carry after stretcher detachment is disabled — the medic now stays free-hands after pulling a patient off the stretcher, instead of having the patient force-attached to the medic's arms.
Other Changes
- Added Swedish (
se) translation. - Removed the debug-only commands
/testrankand/testpatientdebug. These were only registered whenSky.IsDebugActiveand are not used by production setups.
- Download sky_ambulancejob from the CFX Portal.
- Create a backup.
- Replace the
/sourcefolder. - Replace the
/config/localesfolder (newse.lua). - Required — update sky_base to 1.14.0 or newer and sky_jobs_base to 1.15.0 or newer before starting the resource.
- Required — add the three permission bootstrap ACEs to your
server.cfg, beforeensure sky_base:
add_ace resource.sky_base command.add_ace allow
add_ace resource.sky_base command.add_principal allow
add_ace resource.sky_base command.remove_principal allow
Without these, every admin command will deny everyone except the server console.
7. Review Config.CommandPermissions in config/config.lua and adjust the allowed groups per command if needed — defaults match the previous behaviour:
Config.CommandPermissions = {
revive = { "god", "superadmin", "admin" },
stopdeathtimeout = { "god", "superadmin", "admin" },
refunds = { "god", "superadmin", "admin" },
hospitalbeds = { "god", "superadmin", "admin" },
hospitalcreator = { "god", "superadmin", "admin" },
removemobilityaid = { "god", "superadmin", "admin" },
kill = { "god", "superadmin", "admin" },
}
- No SQL migration. No further
config.luachanges required.