Pular para o conteúdo

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
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çãoTipoDescrição
m_Enablebool0: desativa a aplicação das penas; 1: ativa o módulo.
m_Loggingbool0: desativa logs de auditoria; 1: habilita. Erros de persistência continuam sendo registrados.
m_CellWaitSecondsintEspera inicial na cela em segundos, de 0 a 86400.
m_ToolCooldownSecondsintIntervalo entre retiradas de picareta em segundos, de 0 a 86400.
m_MaxSentenceStonesintMáximo de pedras exigidas por uma nova pena, de 1 a 1000000.
m_PreserveInventorybool1: salva o inventário original e o restaura na soltura; 0: remove sem salvar nem restaurar.
m_ReturnPositionobjectPonto de início do trabalho e retorno após fuga, dentro do perímetro.
m_ReleasePositionobjectDestino de soltura, fora do perímetro.
m_Boundaryarray<object>Vértices ordenados do polígono; mínimo de três pontos. A contenção usa X e Z.
m_Cellsarray<object>Celas; a ordem na lista define o número usado no comando, começando em 1.
m_Objectsarray<object>Rochas de mineração, estações de ferramentas e depósitos criados pelo módulo.
m_Uniformarray<string>Classes de itens entregues ao processar o personagem preso.
m_MessagesobjectTextos 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çãoTipoDescrição
m_XfloatCoordenada X em metros.
m_YfloatAltura em metros; ignorada na verificação do perímetro.
m_ZfloatCoordenada Z em metros.

m_ReleasePosition ​

OpçãoTipoDescrição
m_XfloatCoordenada X em metros.
m_YfloatAltura em metros; ignorada na verificação do perímetro.
m_ZfloatCoordenada Z em metros.

m_Boundary[] ​

OpçãoTipoDescrição
m_XfloatCoordenada X em metros.
m_YfloatAltura em metros; ignorada na verificação do perímetro.
m_ZfloatCoordenada Z em metros.

m_Cells[].m_Position ​

OpçãoTipoDescrição
m_XfloatCoordenada X em metros.
m_YfloatAltura em metros; ignorada na verificação do perímetro.
m_ZfloatCoordenada Z em metros.

m_Objects[].m_Position ​

OpçãoTipoDescrição
m_XfloatCoordenada X em metros.
m_YfloatAltura em metros; ignorada na verificação do perímetro.
m_ZfloatCoordenada Z em metros.

m_Cells[] ​

OpçãoTipoDescrição
m_NamestringNome da cela usado nos placeholders das mensagens.
m_PositionobjectCoordenadas da cela, dentro do perímetro.

m_Objects[] ​

OpçãoTipoDescrição
m_ClassstringClasse da estação conforme a tabela abaixo.
m_PositionobjectCoordenadas da estação, dentro do perímetro.
m_OrientationobjectRotação da estação em graus.

m_Objects[].m_Orientation ​

OpçãoTipoDescrição
m_YawfloatRotação horizontal em graus.
m_PitchfloatInclinação em graus.
m_RollfloatRolagem em graus.

m_Messages ​

OpçãoTipoDescrição
m_ReleasestringNotificação de soltura.
m_EscapestringNotificação de contenção de fuga.
m_DetentionstringNotificação ao processar a prisão.
m_WorkstringNotificação ao encerrar a espera na cela.
m_ProgressstringNotificaçã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.

ClasseFinalidade
AC_Prison_RockRocha de mineração.
AC_Prison_Rock2Rocha de mineração.
AC_Prison_Rock3Rocha de mineração.
AC_Prison_Rock4Rocha de mineração.
AC_Prison_Rock5Rocha de mineração.
AC_Prison_ToolStationPonto de retirada de picaretas.
AC_Prison_DepositPonto de entrega de pedras.

Tipos ​

types.xml
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 ​

ControleAção
Ação de retirar ferramentaApó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 minerarMantenha 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 entregarInteraja 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.

Distribuído sob a licença MIT.