Kartik Scripts

General & Compatibility

shared/config/general.lua

๐Ÿงฉ Integrations

Framework, inventory, target, dispatch, banking, billing, keys, fuel, clothing, MDT and boss menu are all detected automatically. You only pick the UI style yourself:

Config.Integrations = {
    notify   = 'kartik',  -- kartik | ox_lib | lation_ui | okokNotify | framework
    progress = 'kartik',  -- kartik | ox_lib | ox_lib_circle | lation_ui | framework
    textui   = 'kartik',  -- kartik | ox_lib | lation_ui | framework
    minigame = 'ox_lib',  -- ox_lib | lation_ui
    menu     = 'kartik',  -- kartik | ox_lib
    dialog   = 'kartik',  -- kartik | ox_lib
}

kartik means the script's own built-in interface, which matches the rest of its screens:

SettingBuilt-in kartik version
notifyToasts
progressProgress bar
textuiKeybind hint bar
menuPick menu for patient actions and pickers, number keys and arrows
dialogConfirm boxes (consent requests, medical bills) and text prompts (Call EMS), instead of ox_lib alert dialogs

๐Ÿ‘” Jobs

Config.RequireDuty = true
Config.PoliceJobs = { 'police', 'sheriff', 'bcso', 'sasp' }
RequireDutyMedical actions require being clocked in
PoliceJobsUsed for escorting, body bags and sharing unit blips

Medical jobs are not set here. They are configured in game, /emsadmin โ†’ Staff โ†’ Jobs. See Jobs.


๐Ÿ”‘ Admin access

Config.AdminAce = 'group.admin'

Admin panel and admin commands are available to your framework's admins or anyone holding this ace.


โš ๏ธ Conflict detection

Config.CheckConflicts = true

Prints a console warning if another ambulance or medical resource is running. Leave it on.


๐Ÿ”„ Legacy compatibility

Config.Compat = {
    legacyReviveEvents = true,
    legacyExports = true,
    trustClientReviveEvents = false,
    txAdminHeal = true,
    enviMedic = true,
}
Setting
legacyReviveEventsAccepts qbx_medical:client:playerRevived, hospital:client:Revive and esx_ambulancejob:revive
legacyExportsProvides qbx_medical / qb-ambulancejob / esx_ambulancejob / wasabi_ambulance style exports when those resources are not started
trustClientReviveEventsSee the security note below
txAdminHealtxAdmin Heal and Heal All revive properly through this resource
enviMedicEnvi-Medic support, hides the built-in AI medic while it runs

Because of this layer, your other scripts do not need changing. Anything that used to call qbx_medical or qb-ambulancejob keeps working, including scripts that only read qbx_medical's isDead and qbx_medical:deathState state bags, like pma-voice (radio off while down), phones and appearance menus. Full list: Events & State Bags โ†’ Legacy events.


๐Ÿ”’ Security note

Old scripts often revive with client events like hospital:client:Revive. Cheaters can fake those.

By default (trustClientReviveEvents = false) those events only work when an admin or on-duty medic is within 10 m. Set it to true only if you know exactly which of your resources needs it and why.


๐ŸŸ๏ธ Arena resources

Config.IgnoreDamageResources = {
    'nass_paintball', 'pug-paintball', 'brutal_paintball',
    '0r-paintball-v2', 'qs-deathmatch', 'ws_ffa_v2',
}

Damage taken while one of these is active does not create injuries.

Your own arena script can opt out from its own code:

LocalPlayer.state.kajIgnoreDamage = true

๐Ÿ› Debug

Config.Debug = false

Prints extra information in F8 and the server console, and unlocks the prop adjustment commands for non-admins.

On this page