💡Installation

ESX Ambulancejob

In esx_ambulancejob/client/main.lua, comment out the native handler:

AddEventHandler('esx:onPlayerDeath', function(data)
    -- OnPlayerDeath()
end)
QB Ambulancejob

1. Remove Death Timer

Search for the gameEventTriggered handler in client/dead.lua and comment out the DeathTimer() function call

AddEventHandler('gameEventTriggered', function(event, data)
  if event == 'CEventNetworkEntityDamage' then
      local victim, attacker, victimDied, weapon = data[1], data[2], data[4], data[7]
      if not IsEntityAPed(victim) then return end
      if victimDied and NetworkGetPlayerIndexFromPed(victim) == PlayerId() and IsEntityDead(PlayerPedId()) then
          if not InLaststand then
              SetLaststand(true)
          elseif InLaststand and not isDead then
              SetLaststand(false)
              local playerid = NetworkGetPlayerIndexFromPed(victim)
              local playerName = GetPlayerName(playerid) .. ' ' .. '(' .. GetPlayerServerId(playerid) .. ')' or Lang:t('info.self_death')
              local killerId = NetworkGetPlayerIndexFromPed(attacker)
              local killerName = GetPlayerName(killerId) .. ' ' .. '(' .. GetPlayerServerId(killerId) .. ')' or Lang:t('info.self_death')
              local weaponLabel = (QBCore.Shared.Weapons and QBCore.Shared.Weapons[weapon] and QBCore.Shared.Weapons[weapon].label) or 'Unknown'
              local weaponName = (QBCore.Shared.Weapons and QBCore.Shared.Weapons[weapon] and QBCore.Shared.Weapons[weapon].name) or 'Unknown'
              TriggerServerEvent('qb-log:server:CreateLog', 'death', Lang:t('logs.death_log_title', { playername = playerName, playerid = GetPlayerServerId(playerid) }), 'red', Lang:t('logs.death_log_message', { killername = killerName, playername = playerName, weaponlabel = weaponLabel, weaponname = weaponName }))
              deathTime = Config.DeathTime
              OnDeath()
              -- DeathTimer()
          end
      end
  end
end)

2. Remove Native Death Screen

Locate the main thread and comment out the following lines:

CreateThread(function()
  while true do
      local sleep = 1000
      if isDead or InLaststand then
          sleep = 5
          local ped = PlayerPedId()
          if IsPauseMenuActive() then
              SetFrontendActive(false)
          end
          DisableAllControlActions(0)
          EnableControlAction(0, 1, true)
          EnableControlAction(0, 2, true)
          EnableControlAction(0, 245, true)
          EnableControlAction(0, 38, true)
          EnableControlAction(0, 0, true)
          EnableControlAction(0, 322, true)
          EnableControlAction(0, 288, true)
          EnableControlAction(0, 213, true)
          EnableControlAction(0, 249, true)
          EnableControlAction(0, 46, true)
          EnableControlAction(0, 47, true)

          if isDead then
              -- if not isInHospitalBed then
              --     if deathTime > 0 then
              --         DrawTxt(0.93, 1.44, 1.0, 1.0, 0.6, Lang:t('info.respawn_txt', { deathtime = math.ceil(deathTime) }), 255, 255, 255, 255)
              --     else
              --         DrawTxt(0.865, 1.44, 1.0, 1.0, 0.6, Lang:t('info.respawn_revive', { holdtime = hold, cost = Config.BillCost }), 255, 255, 255, 255)
              --     end
              -- end

              if IsPedInAnyVehicle(ped, false) then
                  loadAnimDict('veh@low@front_ps@idle_duck')
                  if not IsEntityPlayingAnim(ped, 'veh@low@front_ps@idle_duck', 'sit', 3) then
                      TaskPlayAnim(ped, 'veh@low@front_ps@idle_duck', 'sit', 1.0, 1.0, -1, 1, 0, 0, 0, 0)
                  end
              else
                  if isInHospitalBed then
                      if not IsEntityPlayingAnim(ped, inBedDict, inBedAnim, 3) then
                          loadAnimDict(inBedDict)
                          TaskPlayAnim(ped, inBedDict, inBedAnim, 1.0, 1.0, -1, 1, 0, 0, 0, 0)
                      end
                  else
                      if not IsEntityPlayingAnim(ped, deadAnimDict, deadAnim, 3) then
                          loadAnimDict(deadAnimDict)
                          TaskPlayAnim(ped, deadAnimDict, deadAnim, 1.0, 1.0, -1, 1, 0, 0, 0, 0)
                      end
                  end
              end

              SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true)
          elseif InLaststand then
              sleep = 5

              -- if LaststandTime > Config.MinimumRevive then
              --     DrawTxt(0.94, 1.44, 1.0, 1.0, 0.6, Lang:t('info.bleed_out', { time = math.ceil(LaststandTime) }), 255, 255, 255, 255)
              -- else
              --     DrawTxt(0.845, 1.44, 1.0, 1.0, 0.6, Lang:t('info.bleed_out_help', { time = math.ceil(LaststandTime) }), 255, 255, 255, 255)
              --     if not emsNotified then
              --         DrawTxt(0.91, 1.40, 1.0, 1.0, 0.6, Lang:t('info.request_help'), 255, 255, 255, 255)
              --     else
              --         DrawTxt(0.90, 1.40, 1.0, 1.0, 0.6, Lang:t('info.help_requested'), 255, 255, 255, 255)
              --     end

              --     if IsControlJustPressed(0, 47) and not emsNotified then
              --         TriggerServerEvent('hospital:server:ambulanceAlert', Lang:t('info.civ_down'))
              --         emsNotified = true
              --     end
              -- end

              if not isEscorted then
                  if IsPedInAnyVehicle(ped, false) then
                      loadAnimDict('veh@low@front_ps@idle_duck')
                      if not IsEntityPlayingAnim(ped, 'veh@low@front_ps@idle_duck', 'sit', 3) then
                          TaskPlayAnim(ped, 'veh@low@front_ps@idle_duck', 'sit', 1.0, 1.0, -1, 1, 0, 0, 0, 0)
                      end
                  else
                      loadAnimDict(lastStandDict)
                      if not IsEntityPlayingAnim(ped, lastStandDict, lastStandAnim, 3) then
                          TaskPlayAnim(ped, lastStandDict, lastStandAnim, 1.0, 1.0, -1, 1, 0, 0, 0, 0)
                      end
                  end
              else
                  if IsPedInAnyVehicle(ped, false) then
                      loadAnimDict('veh@low@front_ps@idle_duck')
                      if IsEntityPlayingAnim(ped, 'veh@low@front_ps@idle_duck', 'sit', 3) then
                          StopAnimTask(ped, 'veh@low@front_ps@idle_duck', 'sit', 3)
                      end
                  else
                      loadAnimDict(lastStandDict)
                      if IsEntityPlayingAnim(ped, lastStandDict, lastStandAnim, 3) then
                          StopAnimTask(ped, lastStandDict, lastStandAnim, 3)
                      end
                  end
              end
          end
      end
      Wait(sleep)
  end
end)
QBX Ambulancejob

1) Remove Built-in Respawn Text

client qbx_ambulancejob/client/setdownedstate.lua

Old Block:

local function displayRespawnText()
    local deathTime = exports.qbx_medical:GetDeathTime()
    if deathTime > 0 and doctorCount > 0 then
        qbx.drawText2d({ text = locale('info.respawn_txt', math.ceil(deathTime)), coords = vec2(1.0, 1.44), scale = 0.6 })
    else
        qbx.drawText2d({
            text = locale('info.respawn_revive', exports.qbx_medical:GetRespawnHoldTimeDeprecated(), sharedConfig.checkInCost),
            coords = vec2(1.0, 1.44),
            scale = 0.6
        })
    end
end

New Block:

local function displayRespawnText()
    return
end

2) Remove Laststand / Bleed-out Text and EMS Request Hint

client qbx_ambulancejob/client/setdownedstate.lua

Old Block:

local function handleLastStand()
    local laststandTime = exports.qbx_medical:GetLaststandTime()
    if laststandTime > config.laststandTimer or doctorCount == 0 then
        qbx.drawText2d({ text = locale('info.bleed_out', math.ceil(laststandTime)), coords = vec2(1.0, 1.44), scale = 0.6 })
    else
        qbx.drawText2d({ text = locale('info.bleed_out_help', math.ceil(laststandTime)), coords = vec2(1.0, 1.44), scale = 0.6 })
        handleRequestingEms()
    end
end

New Block:

local function handleLastStand()
    return
end

3) Remove Respawn Text Call While Dead

client qbx_ambulancejob/client/setdownedstate.lua

Old Block:

local function handleDead(ped)
    if not IsInHospitalBed then
        displayRespawnText()
    end

    playDeadAnimation(ped)
end

New Block:

local function handleDead(ped)
    playDeadAnimation(ped)
end

4) Add the Correct Death and Revive Events

client risk-deathscreen/config.lua

-- Add these lines for QBX support:

-- Death Events
{ event = "hospital:client:SetDeathStatus",     hasBool = true },
{ event = "hospital:client:SetLaststandStatus", hasBool = true },

-- Revive Events
{ type = "client", event = "hospital:client:RespawnAtHospital" },
{ type = "client", event = "hospital:client:Revive" },
{ type = "client", event = "qbx_medical:client:playerRevived" },

Last updated