EXOTICA NETWORKDocs

Integración con ambulancias

Wasabi, esx_ambulancejob y adaptador médico personalizado

Selección

Config.Medical.system acepta auto, wasabi, esx_ambulancejob, custom o none. Auto prioriza Wasabi y después ESX cuando sus recursos están iniciados. Si renombraste una ambulancia, corrige Medical.resources. El bridge evita entradas de muertos, revive y cura entre rondas, y limpia el estado al salir.

blockDeadPlayers, clearInjuriesEveryRound y clearInjuriesOnExit permiten controlar cada comportamiento. La detección médica no sustituye el parche que evita que la ambulancia abra su pantalla de muerte durante la arena.

Wasabi

El adaptador usa RevivePlayer del servidor, clearPlayerInjury del cliente y estados dead/laststand/isDead. En la versión donde existe wasabi_ambulance/game/client/client.lua, busca el manejador wasabi_bridge:onPlayerDeath y añade al comienzo, después de sus comprobaciones iniciales:

if LocalPlayer.state['en-arenas:inMatch'] then return end

El paquete incluye integrations/wasabi_ambulance/client_death_patch.lua como referencia. Si tu versión tiene otro archivo o estructura, localiza el manejador equivalente; no sustituyas todo el archivo con el fragmento.

esx_ambulancejob

En client/main.lua, primera línea dentro de OnPlayerDeath:

if LocalPlayer.state['en-arenas:inMatch'] then return end

En server/main.lua, dentro del manejador esx:onPlayerDeath y después de establecer local source = source:

if Player(source).state['en-arenas:inMatch'] then return end

Los fragmentos están en integrations/esx_ambulancejob/. Evitan cámara, bloqueo y registro de muerte de la ambulancia durante arena. El adaptador limpia users.is_dead y metadata deathTime al revivir, según ESX. Al salir se emite esx:onPlayerSpawn para reactivar el detector de muerte; otros recursos de necesidades pueden reaccionar como en un respawn normal.

Ambulancia personalizada

Edita el archivo abierto server/bridge/medical/custom.lua, configura resource, isDead, revive, heal y estados, y usa system custom.

ENA.Medical.register('custom', {
    resource = 'mi_ambulancia',
    isDead = function(source)
        return Player(source).state.isDead == true
    end,
    revive = function(source)
        TriggerClientEvent('mi_ambulancia:revive', source)
    end,
    heal = function(source)
        ENA.Medical.callClientExport(source, 'mi_ambulancia', 'healPlayer', true)
    end,
    deathStates = { 'isDead' },
    client = { deadStates = { 'isDead' }, deadExport = nil },
})

Es una plantilla: reemplaza nombres y funciones por la API real de tu ambulancia. Aplica también el guard en su manejador de muerte. Guarda copia antes de editar un recurso de terceros. Prueba muerte dentro de arena, nueva ronda, salida y otra muerte fuera de arena.

No desactives toda la ambulancia para corregir una pantalla dentro de la arena. El estado de partida se mantiene durante la transición de salida hasta que el cliente confirma su recuperación.

En esta página