# Server

## Events (General)

### Prison Action Listener

{% hint style="info" %}
**SERVER**
{% endhint %}

This event is listener for actions happening in prison.

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua

--- Action Types ---

-- PRISONER_RELEASED: Player is released from prison
-- PRISONER_LOADED: Player rejoins and is jailed since they have a remaining sentence
-- PRISONER_NEW: New player is jailed
-- PLAYER_ESCAPE_FROM_PRISON: Player escaped from prison (Prison break)
-- PLAYER_DESTROYED_WALL: Player destroyed a wall in prison (Prison break)

--- Prisoner Data Structure ---
--  data.prisoner: {
--     state: string,
--     officerName: string,
--     owner: string,
--     id: int,
--     jail_time: float,
--     source: int,
--     prisonerName: string,
--     jail_reason: string,
-- }

AddEventHandler('rcore_prison:server:heartbeat', function(actionType, data)
    -- Your event handling logic here

    if not next(data) then
        return
    end

    local prisoner = data.prisoner

    if not prisoner then
        return
    end

    if actionType == 'PRISONER_NEW' then
        print('New prisoner loaded')
    end
end)

```

{% endcode %}

## Exports (General)

List of general exports.

### Jail

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to jail target citizen.

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1 -- playerId
local jailTime = 5 -- 5 minutes
local jailReason = 'multiple felonies' -- jailReason is optional, not needed
local officerPlayerId = 2 -- officerPlayerId is optional, if used it will be logged in ./jailcp Logs

exports['rcore_prison']:Jail(playerId, jailTime, jailReason, officerPlayerId)
```

{% endcode %}

### Unjail

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to unjail citizen which is in Prison.

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local skipTeleport = true -- If you dont want to teleport in front of Prison

exports['rcore_prison']:Unjail(playerId, skipTeleport)
```

{% endcode %}

### UnjailOffline

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to unjail citizen which is offline

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local charId = "ZW32561A"

exports['rcore_prison']:UnjailOffline(charId)
```

{% endcode %}

### GetPrisonerData

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to get more informations about target prisoner.

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local data = exports['rcore_prison']:GetPrisonerData(playerId)

--- {

--- state: string,
--- officerName: string,
--- owner: string,
--- id: int,
--- jail_time: float,
--- source: int,
--- prisonerName: string,
--- jail_reason: string,
 

--- }: table


```

{% endcode %}

### EditPrisonerSentence

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to modify target prisoner sentence

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local amount = 10 -- Set target player sentence
exports['rcore_prison']:EditPrisonerSentence(playerId, amount)

```

{% endcode %}

### IsPrisoner

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to check if target citizen is Prisoner

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local state = exports['rcore_prison']:IsPrisoner(playerId)

if state then
    print('Player is prisoner')
else
    print('Player is citizen')
end

```

{% endcode %}

### AddCredits

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to give target Prisoner credits, if he has account!

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local giveAmonunt = 500

exports['rcore_prison']:AddCredits(playerId, giveAmonunt)
```

{% endcode %}

### RemoveCredits

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to remove credits from Prisoner account.

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local removeAmount = 500

exports['rcore_prison']:RemoveCredits(playerId, removeAmount)
```

{% endcode %}

### SetSolitary

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to sent Prisoner to Solitary cell

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local sentenceAmount = 5 -- This is 5 mins by default
local sentenceReason = 'Attacked Prison Guard' -- optional, not requred

exports['rcore_prison']:SetSolitary(playerId, sentenceAmount)
```

{% endcode %}

### ReleaseFromSolitary

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to release prisoner from solitary

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1

exports['rcore_prison']:ReleaseFromSolitary(playerId)
```

{% endcode %}

### IsPrisonerInSolitary

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to check if Prisoner is in Solitary cell

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local playerId = 1
local state=  exports['rcore_prison']:IsPrisonerInSolitary(playerId)

if state then
    print('Prisoner is in solitary cell')
end
```

{% endcode %}

### StartCOMS

{% hint style="info" %}
**SERVER**
{% endhint %}

This export is used when you want to send citizen to Community service

#### Example code

{% code title="server.lua" overflow="wrap" lineNumbers="true" %}

```lua
local officerPlayerId = 1 -- If you sent nil instead, the action is not going to logged since initiator is not player but "server"
local targetPlayerid = 2 -- Target player which should have parolle
local parolleAmount = 10 -- How many COMS citizen have to do in cycle
local perollReason = 'Abusing' -- Optional (not required)


exports['rcore_prison']:StartCOMS(officerPlayerId, targetPlayerId, parolleAmount, perollReason)
```

{% endcode %}


---

# Agent Instructions: 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://documentation.rcore.cz/paid-resources/rcore_prison/api/api-server.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.
