Prison
Descrição
Permite que administradores prendam jogadores com uma pena medida em pedras entregues. O preso aguarda na cela, retira uma picareta, minera e entrega suas próprias pedras para ser solto. As penas persistem por Steam ID durante desconexões, mortes e reinícios do servidor, e podem ser atribuídas a jogadores offline.
Configuração
Configuração padrão
Prison.json
{
"m_Enable": 0,
"m_Logging": 1,
"m_CellWaitSeconds": 60,
"m_ToolCooldownSeconds": 1200,
"m_MaxSentenceStones": 10000,
"m_PreserveInventory": 1,
"m_ReturnPosition": {
"m_X": 2811.787354,
"m_Y": 26.012426,
"m_Z": 1216.994995
},
"m_ReleasePosition": {
"m_X": 2735.96,
"m_Y": 24.46,
"m_Z": 1284.2
},
"m_Boundary": [
{
"m_X": 2834.36,
"m_Y": 0,
"m_Z": 1218.03
},
{
"m_X": 2827.1,
"m_Y": 0,
"m_Z": 1233.74
},
{
"m_X": 2782.55,
"m_Y": 0,
"m_Z": 1308.54
},
{
"m_X": 2740.74,
"m_Y": 0,
"m_Z": 1313.14
},
{
"m_X": 2739.1,
"m_Y": 0,
"m_Z": 1280.78
},
{
"m_X": 2754.73,
"m_Y": 0,
"m_Z": 1262.03
},
{
"m_X": 2777.18,
"m_Y": 0,
"m_Z": 1251.04
},
{
"m_X": 2748.31,
"m_Y": 0,
"m_Z": 1216.52
},
{
"m_X": 2747.88,
"m_Y": 0,
"m_Z": 1198.68
},
{
"m_X": 2787.62,
"m_Y": 0,
"m_Z": 1162.79
}
],
"m_Cells": [
{
"m_Name": "Cell 1",
"m_Position": {
"m_X": 2775.48,
"m_Y": 33.643,
"m_Z": 1301.92
}
},
{
"m_Name": "Cell 2",
"m_Position": {
"m_X": 2767.25,
"m_Y": 33.657,
"m_Z": 1271.29
}
},
{
"m_Name": "Cell 3",
"m_Position": {
"m_X": 2765.3,
"m_Y": 33.658,
"m_Z": 1273.46
}
},
{
"m_Name": "Cell 4",
"m_Position": {
"m_X": 2756.41,
"m_Y": 33.748,
"m_Z": 1268.39
}
},
{
"m_Name": "Cell 5",
"m_Position": {
"m_X": 2752.53,
"m_Y": 33.751,
"m_Z": 1271.14
}
},
{
"m_Name": "Cell 6",
"m_Position": {
"m_X": 2761.45,
"m_Y": 33.661,
"m_Z": 1276.06
}
},
{
"m_Name": "Cell 7",
"m_Position": {
"m_X": 2757.03,
"m_Y": 33.664,
"m_Z": 1277.77
}
},
{
"m_Name": "Cell 8",
"m_Position": {
"m_X": 2751.19,
"m_Y": 33.752,
"m_Z": 1274.23
}
},
{
"m_Name": "Cell 9",
"m_Position": {
"m_X": 2747.3,
"m_Y": 33.755,
"m_Z": 1276.41
}
},
{
"m_Name": "Cell 10",
"m_Position": {
"m_X": 2746.08,
"m_Y": 33.666,
"m_Z": 1307.88
}
},
{
"m_Name": "Cell 11",
"m_Position": {
"m_X": 2750.92,
"m_Y": 33.662,
"m_Z": 1306.36
}
},
{
"m_Name": "Cell 12",
"m_Position": {
"m_X": 2758.32,
"m_Y": 33.656,
"m_Z": 1305.93
}
},
{
"m_Name": "Cell 13",
"m_Position": {
"m_X": 2775.47,
"m_Y": 33.643,
"m_Z": 1301.99
}
},
{
"m_Name": "Cell 14",
"m_Position": {
"m_X": 2762.98,
"m_Y": 33.653,
"m_Z": 1306.25
}
},
{
"m_Name": "Cell 15",
"m_Position": {
"m_X": 2768,
"m_Y": 33.649,
"m_Z": 1305.1
}
},
{
"m_Name": "Cell 16",
"m_Position": {
"m_X": 2771.7,
"m_Y": 33.646,
"m_Z": 1304.3
}
},
{
"m_Name": "Cell 17",
"m_Position": {
"m_X": 2772.09,
"m_Y": 30.089,
"m_Z": 1304.1
}
},
{
"m_Name": "Cell 18",
"m_Position": {
"m_X": 2768.11,
"m_Y": 30.092,
"m_Z": 1304.47
}
},
{
"m_Name": "Cell 19",
"m_Position": {
"m_X": 2762.8,
"m_Y": 30.096,
"m_Z": 1304.92
}
},
{
"m_Name": "Cell 20",
"m_Position": {
"m_X": 2758.18,
"m_Y": 30.099,
"m_Z": 1306.14
}
},
{
"m_Name": "Cell 21",
"m_Position": {
"m_X": 2751.26,
"m_Y": 30.105,
"m_Z": 1307.05
}
},
{
"m_Name": "Cell 22",
"m_Position": {
"m_X": 2746.22,
"m_Y": 30.109,
"m_Z": 1307.01
}
},
{
"m_Name": "Cell 23",
"m_Position": {
"m_X": 2748.76,
"m_Y": 30.110,
"m_Z": 1276.52
}
},
{
"m_Name": "Cell 24",
"m_Position": {
"m_X": 2751.36,
"m_Y": 30.108,
"m_Z": 1274.17
}
},
{
"m_Name": "Cell 25",
"m_Position": {
"m_X": 2753.07,
"m_Y": 30.107,
"m_Z": 1271.48
}
},
{
"m_Name": "Cell 26",
"m_Position": {
"m_X": 2761.13,
"m_Y": 30.100,
"m_Z": 1275.77
}
},
{
"m_Name": "Cell 27",
"m_Position": {
"m_X": 2755.98,
"m_Y": 30.104,
"m_Z": 1268.65
}
},
{
"m_Name": "Cell 28",
"m_Position": {
"m_X": 2765.55,
"m_Y": 30.097,
"m_Z": 1273.52
}
},
{
"m_Name": "Cell 29",
"m_Position": {
"m_X": 2767.69,
"m_Y": 30.095,
"m_Z": 1270.19
}
},
{
"m_Name": "Cell 30",
"m_Position": {
"m_X": 2746.17,
"m_Y": 26.469,
"m_Z": 1307.47
}
},
{
"m_Name": "Cell 31",
"m_Position": {
"m_X": 2751.19,
"m_Y": 26.465,
"m_Z": 1307.18
}
},
{
"m_Name": "Cell 32",
"m_Position": {
"m_X": 2757.97,
"m_Y": 26.460,
"m_Z": 1306.64
}
},
{
"m_Name": "Cell 33",
"m_Position": {
"m_X": 2762.77,
"m_Y": 26.456,
"m_Z": 1306.3
}
},
{
"m_Name": "Cell 34",
"m_Position": {
"m_X": 2767.92,
"m_Y": 26.452,
"m_Z": 1305.18
}
},
{
"m_Name": "Cell 35",
"m_Position": {
"m_X": 2771.5,
"m_Y": 26.449,
"m_Z": 1304.26
}
},
{
"m_Name": "Cell 36",
"m_Position": {
"m_X": 2745.31,
"m_Y": 26.470,
"m_Z": 1278.62
}
},
{
"m_Name": "Cell 37",
"m_Position": {
"m_X": 2747.45,
"m_Y": 26.468,
"m_Z": 1276.45
}
},
{
"m_Name": "Cell 38",
"m_Position": {
"m_X": 2750.61,
"m_Y": 26.466,
"m_Z": 1274.26
}
},
{
"m_Name": "Cell 39",
"m_Position": {
"m_X": 2753.18,
"m_Y": 26.464,
"m_Z": 1271.5
}
},
{
"m_Name": "Cell 40",
"m_Position": {
"m_X": 2755.62,
"m_Y": 26.462,
"m_Z": 1268.29
}
}
],
"m_Objects": [
{
"m_Class": "AC_Prison_Rock",
"m_Position": {
"m_X": 2791.986083984375,
"m_Y": 25.894990921020509,
"m_Z": 1195.3968505859376
},
"m_Orientation": {
"m_Yaw": -5.000141620635986,
"m_Pitch": 0.0,
"m_Roll": 2.976440906524658
}
},
{
"m_Class": "AC_Prison_Rock2",
"m_Position": {
"m_X": 2777.048828125,
"m_Y": 25.960769653320314,
"m_Z": 1205.070556640625
},
"m_Orientation": {
"m_Yaw": 0.0,
"m_Pitch": 0.0,
"m_Roll": -0.0
}
},
{
"m_Class": "AC_Prison_Rock3",
"m_Position": {
"m_X": 2786.968017578125,
"m_Y": 26.154996871948243,
"m_Z": 1180.245361328125
},
"m_Orientation": {
"m_Yaw": -104.99633026123047,
"m_Pitch": 0.0,
"m_Roll": -30.998838424682618
}
},
{
"m_Class": "AC_Prison_Rock4",
"m_Position": {
"m_X": 2764.366455078125,
"m_Y": 26.60500717163086,
"m_Z": 1204.3165283203126
},
"m_Orientation": {
"m_Yaw": -94.00448608398438,
"m_Pitch": 0.0,
"m_Roll": -0.0
}
},
{
"m_Class": "AC_Prison_Rock5",
"m_Position": {
"m_X": 2773.72509765625,
"m_Y": 26.06499481201172,
"m_Z": 1191.7481689453126
},
"m_Orientation": {
"m_Yaw": 0.0,
"m_Pitch": 0.0,
"m_Roll": -0.0
}
},
{
"m_Class": "AC_Prison_ToolStation",
"m_Position": {
"m_X": 2797.890380859375,
"m_Y": 25.84744644165039,
"m_Z": 1209.7716064453126
},
"m_Orientation": {
"m_Yaw": 151.02099609375,
"m_Pitch": 2.9983460903167726,
"m_Roll": 90.00167083740235
}
},
{
"m_Class": "AC_Prison_ToolStation",
"m_Position": {
"m_X": 2797.74365234375,
"m_Y": 26.03000259399414,
"m_Z": 1209.458251953125
},
"m_Orientation": {
"m_Yaw": 43.998626708984378,
"m_Pitch": 0.0,
"m_Roll": 14.004695892333985
}
},
{
"m_Class": "AC_Prison_Deposit",
"m_Position": {
"m_X": 2800.326904296875,
"m_Y": 25.888769149780275,
"m_Z": 1210.575927734375
},
"m_Orientation": {
"m_Yaw": -101.99998474121094,
"m_Pitch": -4.000000476837158,
"m_Roll": 0.999997615814209
}
}
],
"m_Uniform": [
"PrisonerCap",
"PrisonUniformPants",
"PrisonUniformJacket",
"Sneakers_Black"
],
"m_Messages": {
"m_Release": "You have served your sentence. You are free.",
"m_Escape": "Stay within the prison grounds until you have served your sentence.",
"m_Detention": "You have been imprisoned. Deliver %RequiredStones% stones to be released.",
"m_Work": "Your time in the cell is over. Collect a pickaxe, mine stones and deliver them to the deposit.",
"m_Progress": "Stones delivered: %DeliveredStones%/%RequiredStones%."
}
}Opções
| Opção | Tipo | Descrição |
|---|---|---|
m_Enable | bool | 0: desativa a aplicação das penas; 1: ativa o módulo. |
m_Logging | bool | 0: desativa logs de auditoria; 1: habilita. Erros de persistência continuam sendo registrados. |
m_CellWaitSeconds | int | Espera inicial na cela em segundos, de 0 a 86400. |
m_ToolCooldownSeconds | int | Intervalo entre retiradas de picareta em segundos, de 0 a 86400. |
m_MaxSentenceStones | int | Máximo de pedras exigidas por uma nova pena, de 1 a 1000000. |
m_PreserveInventory | bool | 1: salva o inventário original e o restaura na soltura; 0: remove sem salvar nem restaurar. |
m_ReturnPosition | object | Ponto de início do trabalho e retorno após fuga, dentro do perímetro. |
m_ReleasePosition | object | Destino de soltura, fora do perímetro. |
m_Boundary | array<object> | Vértices ordenados do polígono; mínimo de três pontos. A contenção usa X e Z. |
m_Cells | array<object> | Celas; a ordem na lista define o número usado no comando, começando em 1. |
m_Objects | array<object> | Rochas de mineração, estações de ferramentas e depósitos criados pelo módulo. |
m_Uniform | array<string> | Classes de itens entregues ao processar o personagem preso. |
m_Messages | object | Textos não vazios de notificações ao jogador. |
As posições distribuídas correspondem à prisão de Chernarus e incluem 40 celas. Ajuste todas as posições e o polígono ao mapa antes de ativar. Celas, retorno e estações devem ficar dentro do perímetro; a soltura deve ficar fora. São necessários ao menos uma rocha de mineração, uma estação de ferramentas e um depósito. Configuração inválida ou falha ao criar uma estação impede a ativação.
Com m_PreserveInventory em 0, a prisão descarta permanentemente o inventário original. Com 1, teste a restauração de itens de outros mods antes do uso em produção. Os snapshots usam o serializador de inventário existente do AC.
Espera e cooldown de ferramenta avançam somente enquanto o preso está online, vivo, consciente e fora de veículo. Sair da cela durante a espera inicial provoca retorno a ela; sair do perímetro de trabalho provoca retorno a m_ReturnPosition. Presos não podem entrar em veículos. Morte ou respawn recria o kit de prisão sem substituir o snapshot original do inventário.
m_ReturnPosition
| Opção | Tipo | Descrição |
|---|---|---|
m_X | float | Coordenada X em metros. |
m_Y | float | Altura em metros; ignorada na verificação do perímetro. |
m_Z | float | Coordenada Z em metros. |
m_ReleasePosition
| Opção | Tipo | Descrição |
|---|---|---|
m_X | float | Coordenada X em metros. |
m_Y | float | Altura em metros; ignorada na verificação do perímetro. |
m_Z | float | Coordenada Z em metros. |
m_Boundary[]
| Opção | Tipo | Descrição |
|---|---|---|
m_X | float | Coordenada X em metros. |
m_Y | float | Altura em metros; ignorada na verificação do perímetro. |
m_Z | float | Coordenada Z em metros. |
m_Cells[].m_Position
| Opção | Tipo | Descrição |
|---|---|---|
m_X | float | Coordenada X em metros. |
m_Y | float | Altura em metros; ignorada na verificação do perímetro. |
m_Z | float | Coordenada Z em metros. |
m_Objects[].m_Position
| Opção | Tipo | Descrição |
|---|---|---|
m_X | float | Coordenada X em metros. |
m_Y | float | Altura em metros; ignorada na verificação do perímetro. |
m_Z | float | Coordenada Z em metros. |
m_Cells[]
| Opção | Tipo | Descrição |
|---|---|---|
m_Name | string | Nome da cela usado nos placeholders das mensagens. |
m_Position | object | Coordenadas da cela, dentro do perímetro. |
m_Objects[]
| Opção | Tipo | Descrição |
|---|---|---|
m_Class | string | Classe da estação conforme a tabela abaixo. |
m_Position | object | Coordenadas da estação, dentro do perímetro. |
m_Orientation | object | Rotação da estação em graus. |
m_Objects[].m_Orientation
| Opção | Tipo | Descrição |
|---|---|---|
m_Yaw | float | Rotação horizontal em graus. |
m_Pitch | float | Inclinação em graus. |
m_Roll | float | Rolagem em graus. |
m_Messages
| Opção | Tipo | Descrição |
|---|---|---|
m_Release | string | Notificação de soltura. |
m_Escape | string | Notificação de contenção de fuga. |
m_Detention | string | Notificação ao processar a prisão. |
m_Work | string | Notificação ao encerrar a espera na cela. |
m_Progress | string | Notificação de progresso após cada entrega. |
Todas as mensagens aceitam %RequiredStones%, %DeliveredStones% e %CellName%.
Classes de configuração
Use estas classes em m_Objects[].m_Class; o módulo as cria na posição e rotação configuradas.
| Classe | Finalidade |
|---|---|
AC_Prison_Rock | Rocha de mineração. |
AC_Prison_Rock2 | Rocha de mineração. |
AC_Prison_Rock3 | Rocha de mineração. |
AC_Prison_Rock4 | Rocha de mineração. |
AC_Prison_Rock5 | Rocha de mineração. |
AC_Prison_ToolStation | Ponto de retirada de picaretas. |
AC_Prison_Deposit | Ponto de entrega de pedras. |
Tipos
types.xml
<type name="AC_Prison_Pickaxe">
<lifetime>7200</lifetime>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0" />
</type>
<type name="AC_Prison_Stone">
<lifetime>7200</lifetime>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0" />
</type>A estação fornece AC_Prison_Pickaxe. A mineração cria AC_Prison_Stone vinculada ao Steam ID do preso; pedras criadas separadamente não contam como pedras mineradas por ele. Cada pedra tem uma unidade e não pode ser dividida.
Controles
| Controle | Ação |
|---|---|
| Ação de retirar ferramenta | Após a espera na cela, interaja com a estação com as mãos vazias. Exige espaço no inventário e cooldown de ferramenta encerrado. |
| Ação de minerar | Mantenha a ação por 8 segundos junto a uma rocha, em pé com uma picareta de prisão utilizável nas mãos. Produz uma pedra se houver espaço. |
| Ação de entregar | Interaja com o depósito segurando uma pedra de prisão própria e não arruinada. Consome a pedra e avança a pena; a última entrega aciona a soltura. |
As ações exigem pena ativa na fase de trabalho, proximidade de uma estação criada pelo módulo e presença dentro do perímetro de trabalho.
Comandos
A administração pelo chat exige o módulo Chat ativo. Steam IDs devem conter exatamente 17 dígitos. Cada comando abaixo exige command.prison.
/prison jail
Atribui uma pena. A quantidade de pedras é obrigatória, positiva e limitada por m_MaxSentenceStones. A cela opcional é numerada a partir de 1; omiti-la sorteia e salva uma cela configurada. Uma pena ativa não pode ser sobrescrita. Penas offline são processadas em uma conexão posterior; um alvo online deve estar vivo e fora de veículo. O processamento substitui o inventário atual pelo uniforme; a preservação segue m_PreserveInventory.
- Sintaxe:
/prison jail <SteamID> <pedras> [cela] - Permissão:
command.prison - Exemplo:
/prison jail 76561198000000000 25 1
/prison status
Mostra cela, pedras entregues e exigidas, espera restante e estado de soltura pendente.
- Sintaxe:
/prison status <SteamID> - Permissão:
command.prison - Exemplo:
/prison status 76561198000000000
/prison release
Marca uma pena ativa para soltura, incluindo jogadores offline e penas ainda não processadas. A soltura é aplicada quando o jogador estiver conectado, vivo, consciente e fora de veículo. O jogador vai para m_ReleasePosition e o inventário original salvo é restaurado quando disponível.
- Sintaxe:
/prison release <SteamID> - Permissão:
command.prison - Exemplo:
/prison release 76561198000000000
O canal administrativo local $profile:AC/commands.txt também aceita esses comandos sem a / inicial; as respostas vão para os logs. Exemplo: prison status 76561198000000000.
Falhas de persistência ou restauração bloqueiam operações do jogador afetado. Mantenha backup e confira o registro e os logs com o servidor parado antes de tentar recuperar. Saves do personagem e registros de pena não formam uma transação única.
Permissões
Conceda command.prison ao grupo do administrador em Permissões para permitir jail, status e release. A permissão global root também concede acesso. As ações de trabalho usam o estado da pena em vez de uma permissão administrativa.
