> ## Documentation Index
> Fetch the complete documentation index at: https://docs.heyyshop.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Código penal

> Descubra como configurar o código penal e multas dentro do Tablet Policial.

Para configurar os artigos no Tablet Policial, abra a pasta do script (`heyy_mdt`), abra a pasta `config` e dentro dela, abra o arquivo `infractions.lua`.

Você deve se reparar com algo parecido com isso:

```lua heyy_mdt/config/infractions.lua theme={null}
infractionsConfig = {
	maxFineReduction = 50, -- (em porcentagem) Máxima redução do valor da multa que poderá ser selecionada no tablet
	maxArrestReduction = 50, -- (em porcentagem) Máxima redução do tempo de prisão que poderá ser selecionada no tablet

	maxFinesValue = 200000, -- Valor máximo da multa
	maxArrestTime = 300, -- Pena máxima

	bailToOfficer = false, -- Se, ao pagar a fiança, o valor pago será (ou não) destinado ao oficial que realizou a prisão
	bailPercentage = 50.0, -- Porcentagem da fiança que será destinada ao oficial que realizou a prisão (utilizado apenas se a opção acima estiver definida como TRUE)
	bailRemoveFine = true, -- TRUE = PRISÃO + MULTAS ignoradas / FALSE = Apenas PRISÃO ignorada

	list = {
		{
			name = "Artigo 101 - Exemplo de artigo (c/ fiança)", -- nome do artigo que será exibido no tablet
			fine = 1000, -- valor da multa
			arrest = 10, -- quantidade de meses
			bail = 2000, -- valor da fiança (defina como "false" se quiser desativar a opção de fiança para algum artigo)
		},
		{
			name = "Artigo 102 - Exemplo de artigo 2 (s/ fiança)", -- nome do artigo que será exibido no tablet
			fine = 0, -- valor da multa
			arrest = 15, -- quantidade de meses
		},
		{
			name = "Artigo 103 - Exemplo de artigo 3", -- nome do artigo que será exibido no tablet
			fine = 1500, -- valor da multa
			arrest = 0, -- quantidade de meses
		},
	}
}
```

Nesse arquivo, você consegue modificar múltiplas opções relacionadas à parte penal do Tablet Policial.

* **maxFineReduction** - é um valor em porcentagem (0-100) que define o máximo de redução de multas pela interface do script.
* **maxArrestReduction** - é um valor em porcentagem (0-100) que define o máximo de redução de pena pela interface do script.
* **maxFinesValue** - valor máximo em multas, a soma das multas será capada nesse valor máximo quando muitos artigos forem selecionados.
* **maxArrestTime** - tempo máximo de prisão, a soma máxima do tempo será capada nesse valor máximo quando muitos artigos forem selecionados.
* **bailToOfficer** - quando definido como `true`, caso o jogador sendo preso pague a fiança, o oficial que está prendendo receberá o valor em sua conta bancária. Caso não queira isso, defina como `false`.
* **bailPercentage** - é um valor em porcentagem (0-100), quantos porcento do valor pago pelo jogador sendo preso será dado para o policial. Só é usado caso `bailToOfficer`seja `true`.
* **bailRemoveFine** - quando definido como `true`, caso o jogador sendo preso pague a fiança, o valor em multas também será anulado.

## Lista de artigos

Para configurar novos artigos, você só precisa adicionar adicionar ele à lista. Há 2 tipos de artigos no tablet: os que aparecem na tela de **prisão** e os que aparecem na tela de **multas**.

### Prisão

Um artigo para prisão seguirá essa estrutura.

* **name** - nome do artigo dentro da interface
* **arrest** - tempo de prisão
* **fine** - valor em multa
* **bail** (opcional) - valor da fiança desse artigo. Caso não especificado, ou quando `false` o artigo será considerado inafiançável.

#### Funcionamento do sistema de fiança

O sistema de fiança funciona da seguinte forma: caso um jogador seja preso por um artigo que possui `bail` definido no arquivo de configuração e a caixa de seleção (checkbox) seja marcada na interface do script pelo policial no momento da prisão, o prisioneiro poderá confirmar se ele quer pagar a fiança ou não.

Caso o prisioneiro aceite e tenha saldo suficiente, qualquer artigo que tiver fiança será anulado. Caso todos os artigos selecionados possuam fiança, o jogador não será preso. Porém, caso algum artigo selecionado não tenha fiança, o jogador será preso por esse tempo restante.

<Accordion title="Exemplo prático">
  Suponha que os artigos selecionados sejam:

  * **Artigo A** - fiança \$5.000 - 15 meses
  * **Artigo B** - fiança \$6.000 - 10 meses
  * **Artigo C** - sem fiança - 5 meses

  Jogador paga \$11.000, artigos **A** e **B** são anulados e o jogador é preso por apenas 5 meses, pelo artigo **C**.
</Accordion>

### Multa

Caso você queira um artigo que apareça na tela de multar jogador, você deverá seguir essa estrutura:

* **name** - nome do artigo dentro da interface
* **arrest** - precisa ser igual a 0 (zero)
* **fine** - valor em multa
