Version 2.23.0
Highlights
- New CT & MRI imaging. A new in-tablet imaging view lets medics capture and review CT/MRI scans on a patient's record through its own interactive interface. Configurable through the new
Config.Imagingblock. - Safer downed and unconscious players. Players who are knocked out or dead are now better protected against damage, targeting, and unintended animations, and a revive can be performed seamlessly while the player sits in a vehicle — keeping them in the vehicle without re-damaging them.
- Smoother CPR and lighter interface. CPR can now run as separate compression and ventilation steps, minigame rendering is more responsive, and unused visual effects were removed for better in-game performance.
Notable Changes
- CT/MRI imaging system — a dedicated imaging app visualizes scans and ties them to patient records. Scan timing and interaction distances are set in
Config.Imaging(scanDurationSeconds,interactionRange,patientRange). - Separate CPR steps — CPR compressions and ventilation are now individual minigames, toggled via
Config.Minigames.enabled.cpr_compressionsandcpr_ventilation, alongside the existing combinedcpr. - Seamless in-vehicle revives — reviving a player inside a vehicle keeps them seated with their tasks intact instead of ejecting them.
- Stronger down-state protection — unconscious and deceased players are guarded more reliably against damage, targeting, and stray animations.
- Consistent death state on ESX — the job now synchronizes its death state with the framework, so other ESX scripts no longer desync when a player goes down or is revived.
- Respects framework death hooks — the death, injury, and death-screen flows now run through the configurable hooks in
config/functions.lua, so server-side overrides are honored. - Medical item image fallbacks — items now fall back to an alternate image when their primary image is unavailable, avoiding blank icons.
- Cleaner restarts — ambulance/medic NPCs are removed when the resource restarts, preventing duplicate or orphaned peds.
- Imaging UI fix — corrected dropdown sizing in the imaging view so the layout no longer clips.
Other Changes
- Removed the no-op
backdrop-filterstyling from the interface and optimized minigame rendering for better in-game performance. - Documented an optional per-prop
streamDistanceoverride for ambulance garage props (overrides thesky_jobs_basedefault prop streaming distance). - Clarified the example return values in the
config/functions.luahook comments.
- Update sky_base and sky_jobs_base first — install the matching releases.
- Download sky_ambulancejob from the CFX Portal.
- Create a backup.
- Replace the
/sourcefolder (this also contains the rebuilt in-game interface undersource/html). - Replace the
/config/localesfolder (new imaging interface strings in English & German; other languages fall back to English). - Replace
/config/functions.lua(clarified hook example comments; death/injury/death-screen hooks). - Replace
/config/config.lua, or apply the additive options below (defaults keep the previous behaviour):- New imaging block:
+Config.Imaging = { + scanDurationSeconds = 5, + interactionRange = 2.5, + patientRange = 3.5 +}- Add these two toggles inside the
enabledblock of your existingConfig.Minigamestable (leave themtrueto keep CPR working):
Config.Minigames = { enabled = { cpr = true, + cpr_compressions = true, + cpr_ventilation = true, -- other minigames stay as they are } }- (Optional) ambulance garage props now accept a per-prop
streamDistanceoverride. Leave it unset to use thesky_jobs_basedefault; set it per prop only to fine-tune how close the prop spawns.
- Replace the
/fxmanifest.lua(version2.23.0). - No SQL migration required.