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 endEl 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 endEn 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 endLos 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.
