> For the complete documentation index, see [llms.txt](https://randolio.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://randolio.gitbook.io/docs/paid-scripts/medical/event-functions.md).

# Event/Functions

## Client

<pre class="language-lua"><code class="lang-lua">AddEventHandler('randol_medical:onPlayerDeath', function()
    -- gets triggered on death.
end)

AddEventHandler('randol_medical:onPlayerLastStand', function()
    -- gets triggered on laststand
end)

AddEventHandler('randol_medical:onCheckIn', function()
    -- Triggered when a player checks in/third eyes a bed
end)

AddEventHandler('randol_medical:onRevive', function()
    -- gets triggered on revive
end)

AddEventHandler('randol_medical:ontargetBedEnter', function()

end)

RegisterNetEvent('randol_medical:client:onRespawn', function()
     -- gets triggered when a player is respawned.
end)

AddEventHandler('randol_medical:onBedExit', function()
    -- example to force a player with the crutch effect once they exit the bed after checking in/respawning into bed.
    -- exports.randol_medical:ForceWalk(1) -- 1 being the amount of minutes.
end)

AddEventHandler('randol_medical:aiMedicCalled', function()
    -- gets triggered when an ai medical is called.
end)

-- Local player states which can be called across resources
<strong>if LocalPlayer.state.dead then
</strong><strong>    print('do something, player is dead')
</strong><strong>end
</strong>
if LocalPlayer.state.laststand then
    print('do something, player is in last stand')
end

<strong>if LocalPlayer.state.isInHospitalBed then
</strong>    print('player is in hospital bed')
end

if LocalPlayer.state.knockedOut then
    print('player is knocked tf out')
end

<strong>if LocalPlayer.state.bleeding > 0 then
</strong><strong>    print(LocalPlayer.state.bleeding) -- Prints the player's bleed level
</strong><strong>end
</strong></code></pre>

## Server

```lua
-- This handles reviving from the txadmin menu (sv_open.lua)
AddEventHandler('txAdmin:events:healedPlayer', function(eventData)
    if GetInvokingResource() ~= 'monitor' or type(eventData) ~= 'table' or type(eventData.id) ~= 'number' then
        return
    end
    TriggerClientEvent('randol_medical:client:revivePlayer', eventData.id)
end)

AddEventHandler('randol_medical:server:death', function(src, state)
    -- gets triggered when the statebag gets set. 'state' is a boolean.
end)

AddEventHandler('randol_medical:server:lastStand', function(src, state)
    -- gets triggered when the statebag gets set. 'state' is a boolean.
end)

AddEventHandler('randol_medical:server:onRespawn', function(src)
    -- gets triggered when a player is respawned.
end)

function PayForRevive(src)
    -- You can use this to pay the player or send it to a business account.
    local player = GetPlayer(src)
    if not player then return end

    addMoney(player, 'bank', Server.PayPerRevive.amount)
    DoNotification(src, ('You received $%s for treating the patient.'):format(Server.PayPerRevive.amount))
end

RegisterNetEvent('prison:server:SetJailStatus', function(jailTime)
     -- [Experimental] Using this qb-prison server event to set player state for in prison so I can tell where to respawn them.
     -- May need to adapt to third party prison resources.

     -- Would recommend using exports.randol_medical:SetJailState(src, true) for entering instead 
     -- and exports.randol_medical:SetJailState(src, false) for exiting in your actual prison script.
     
    local src = source
    if jailTime > 0 then
        Player(src).state:set('jail', true, true)
    else
        Player(src).state:set('jail', false, true)
    end
end)

function AddSocietyFunds(amount, reason)
    if amount == 0 then return end

    if GetResourceState('Renewed-Banking') == 'started' then
        return exports['Renewed-Banking']:addAccountMoney('ambulance', amount)
    end

    if GetResourceState('qb-banking') == 'started' then
        return exports['qb-banking']:AddMoney('ambulance', amount, reason)
    end

    if GetResourceState('qb-management') == 'started' then
        return exports['qb-management']:AddMoney('ambulance', amount)
    end

    -- local society = exports.esx_society:GetSociety('ambulance')
    -- if society then
    --     TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function(account)
    --         account.addMoney(amount)
    --     end)
    -- end

    lib.print.error('You must add your society funds export for function "AddSocietyFunds".')
end

function AutoBillPlayer(id, job) -- Adjust this yourself, example below.
    if not Server.AutoBill.enable then return end

    local player = GetPlayer(id)
    if not player then return end

    RemoveMoney(player, 'bank', Server.AutoBill.amount)

    if GetResourceState('Renewed-Banking') == 'started' then
        return exports['Renewed-Banking']:addAccountMoney(job, Server.AutoBill.amount)
    end

    if GetResourceState('qb-banking') == 'started' then
        return exports['qb-banking']:AddMoney(job, Server.AutoBill.amount, 'ems-bill')
    end

    if GetResourceState('qb-management') == 'started' then
        return exports['qb-management']:AddMoney(job, Server.AutoBill.amount)
    end

    -- local society = exports.esx_society:GetSociety('ambulance')
    -- if society then
    --     TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function(account)
    --         account.addMoney(amount)
    --     end)
    -- end

    lib.print.error('You must add your society funds export for function "AutoBillPlayer".')
end

 -- This is the revive event that can only be invoked from server side.
TriggerClientEvent('randol_medical:client:revivePlayer', source)
-- I have put the old qb-ambulance revive event in cl_open ('hospital:client:Revive') for compatability although i'd prefer not to use it.

-- Player states:
if Player(source).state.dead then
    print('player is dead')
end
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://randolio.gitbook.io/docs/paid-scripts/medical/event-functions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
