Configuração
A configuração fica dividida em cinco arquivos abertos em config/:
| Arquivo | O que ele contém |
main.lua | Idioma, páginas ligadas ou desligadas, IBAN, dinheiro vivo, cartões e PIN, contas de empresa, de gangue e compartilhadas, transferências agendadas, /givecash, assaltos a banco |
locations.lua | Bancos, bancários, vozes e diálogo, caixas eletrônicos, target, sons, HUD |
economy.lua | Custos, taxa de transferência, maior valor, poupança, empréstimos, webhook do Discord |
billing.lua | Faturas |
compat.lua | Scripts feitos para outros bancos, e a importação de contas |
Nos arquivos, cada chave é escrita C.Nome (por exemplo C.Locale = 'en'). Esta página as escreve Config.Nome. Os valores são números inteiros.
Seu servidor, suas regras. Os cinco arquivos de
config/,
locales/ e as imagens do inventário não são criptografados: você pode mudar o idioma e a moeda, o formato do IBAN, os cartões e o PIN, as taxas e os preços, a poupança, os empréstimos e o score de crédito, as faturas, as contas de empresa, de gangue e compartilhadas, os bancos e seus bancários, as vozes, os blips, os modelos de caixa eletrônico, o target ou o aviso, os sons, os comandos e a compatibilidade. Com o hz_lib, 48 desses ajustes também mudam no jogo pelo
/hzpanel, sem reiniciar.
Geral
| Chave | Padrão | Descrição |
Config.Locale | 'en' | Idioma do app, do diálogo e das mensagens: um nome de arquivo de locales/. en e fr estão incluídos. nil usa a convar hz_locale. |
Config.Currency | '$' | Símbolo da moeda mostrado no app. |
Config.Features | savings, bills, loans todos true | Liga ou desliga as páginas Savings, Bills e Loans. Desligada: a página sai do menu e o servidor recusa as operações dela. Nada é apagado. |
Config.RateLimits | veja o arquivo | Máximo de chamadas por jogador em poucos segundos, para leituras, operações com dinheiro, verificações de PIN e /givecash. |
Config.Debug | false | Logs extras no console. |
Outro idioma: copie locales/en.json para um novo arquivo (por exemplo locales/pt.json), traduza os textos e defina Config.Locale = 'pt'. Não precisa de rebuild; as linhas que faltarem usam o inglês. As vozes dos bancários existem só em inglês e francês.
IBAN
| Chave | Padrão | Descrição |
Config.IbanPrefix | 'NT' | Prefixo de todo IBAN, em maiúsculas. Um IBAN pessoal fica assim: NT482913. |
Config.IbanDigits | 6 | Dígitos de um IBAN pessoal gerado. |
Config.CustomIbanMaxChars | 12 | Tamanho máximo de um IBAN personalizado que um jogador pode comprar, prefixo incluído. |
As contas de empresa recebem o prefixo e o nome do emprego (NTPOLICE), as contas de gangue o prefixo, GANG e o nome da gangue (NTGANGBALLAS). Os jogadores não podem pegar esses como IBAN personalizado.
Dinheiro vivo
| Chave | Padrão | Descrição |
Config.UseCashAsItem | 'auto' | 'auto': o item de dinheiro com o ox_inventory, o dinheiro do framework nos outros casos. true força o item, false o dinheiro do framework. |
Config.CashItem | 'money' | Nome do item de dinheiro (ox_inventory money, qb cash). |
Config.BankAccount | 'bank' | Conta do framework usada como banco pessoal. |
Cartões e PIN
| Chave | Padrão | Descrição |
Config.RequireCreditCardForATM | true | É preciso um cartão bancário para usar um caixa eletrônico. false: só o PIN. |
Config.CreditCardItem | 'bank_card' | Nome do item do cartão. Ele precisa existir no seu inventário, veja Instalação. |
Config.FirstCardFree | true | Um personagem que nunca teve cartão ganha o primeiro de graça, no balcão ou direto no caixa eletrônico. |
Config.CardValidityDays | 90 | Dias de validade de um cartão novo. 0 = os cartões nunca vencem. |
Config.MaxCardsPerAccount | 3 | Cartões que um personagem pode ter ao mesmo tempo, sem contar os vencidos. 0 = sem limite. |
Config.PinDigits | 4 | Tamanho do PIN. |
Config.PinMaxAttempts | 3 | PINs errados seguidos antes de o cartão ser bloqueado. |
Config.PinLockoutSeconds | 300 | Por quanto tempo o cartão fica bloqueado. |
Config.PinAtBank | false | Deixe false: o PIN é pedido só nos caixas eletrônicos. |
Contas de empresa e de gangue
| Chave | Padrão | Descrição |
Config.SocietyAllJobs | true | Todo emprego tem uma conta de empresa, criada no primeiro uso. false: só os empregos de Config.Societies. |
Config.Societies | police, ambulance, mechanic, realestate | Empregos cuja conta é criada na inicialização. |
Config.SocietyExcludedJobs | unemployed | Empregos que nunca têm conta. |
Config.SocietyMinGrade | 3 | Além do chefe, o cargo do emprego (e acima) que abre a conta da empresa. false = só o chefe. |
Config.SocietyMinGradeByJob | {} | Cargo por emprego, por exemplo { police = 4 }. |
Config.BankAuth | true | Qbox: o ajuste de acesso ao banco de cada cargo (no qbx_management) decide quem abre as contas de empresa e de gangue. false = as regras de cargo acima. |
Config.EsxSocietyAccounts | true | ESX: os saldos de empresa são as contas society_<job> do esx_addonaccount, então os menus de chefe e as faturas veem o mesmo dinheiro. |
Config.BossGrade | nil | ESX: nível de cargo do chefe (e acima). nil = a marcação de chefe ou um cargo chamado boss. |
Config.GangMinGrade | false | Além do chefe da gangue, o cargo da gangue (e acima) que abre a conta da gangue. false = só o chefe. |
Config.GangMinGradeByGang | {} | Cargo por gangue, por exemplo { ballas = 3 }. |
Config.GangPermissionExport | hz_illegal, CanAccessGangBank | Export opcional que decide o acesso à gangue, usado só enquanto o recurso dele está rodando. false = nenhum. |
Contas compartilhadas
| Chave | Padrão | Descrição |
Config.SharedAccounts | true | Os jogadores abrem contas compartilhadas em um balcão do banco. |
Config.SharedMaxOwned | 2 | Contas compartilhadas que um personagem pode ter como dono. |
Config.SharedMaxMembers | 5 | Membros por conta compartilhada, sem contar o dono. |
Config.SharedNameMax | 32 | Tamanho máximo do nome da conta. |
Transferências agendadas
| Chave | Padrão | Descrição |
Config.MaxScheduledPerAccount | 10 | Transferências agendadas ativas ou pausadas por conta. 0 = sem limite. |
Config.ScheduleMaxRunsShared | 52 | Máximo de execuções de uma transferência agendada de empresa ou de gangue. Elas sempre precisam de um número de execuções. |
Dar dinheiro
| Chave | Padrão | Descrição |
Config.GiveCash | true | Os jogadores passam dinheiro com /givecash [id] <amount>; sem ID, vai para o jogador mais próximo. false: o comando não é criado. |
Config.GiveCashCommand | 'givecash' | Nome do comando. |
Config.GiveCashDistance | 3.0 | Máximo de metros entre os dois jogadores. |
Config.GiveCashMaxAmount | 0 | Maior valor por vez. 0 = Config.MaxAmount. |
Assaltos a banco
| Chave | Padrão | Descrição |
Config.BankClosure | true | Um banco fecha enquanto está sendo assaltado. |
Config.BankClosureMinutes | 30 | Ele reabre depois desse tempo, no máximo. 0 = só quando o assalto termina. |
Config.RobberyBanks | ordem do qb-bankrobbery | ID do banco no script de assalto → número do banco em Config.Banks. |
Veja Fechado durante um assalto.
Bancos
C.Banks = {
{ -- Legion Square
coords = vec3(150.27, -1040.20, 29.37), brand = 'fleeca',
ped = { model = 'a_m_m_business_01', coords = vec4(149.38, -1042.05, 29.37, 334.49), name = 'Martin Kessler' },
},
-- ...
}
| Campo | Descrição |
coords | Onde o jogador fica de pé na frente do bancário. O servidor mede os jogadores a partir desse ponto. |
brand | Visual do app: 'fleeca', 'maze', 'pacific', 'blaine' ou 'union'. |
ped | O bancário: model, coords (vec4 com a direção) e name, mostrado no diálogo. |
blip | Opcional: muda qualquer campo de Config.Blip para este banco, ou false para nenhum blip. |
distance | Opcional: distância do aviso deste banco. |
| Chave | Padrão | Descrição |
Config.InteractDistance | 3.0 | Distância a partir da qual o aviso de um balcão fica ativo. |
Config.InteractKey | 'E' | Tecla mostrada no aviso (só o rótulo). |
Config.Blip | sprite 108, cor 2, escala 0.9, rótulo Bank | Blip de cada banco. enabled = false esconde todos. |
Config.BlipColorByBrand | Maze 1, Fleeca 2, Pacific 46, Blaine 76, Union 29 | Cor do blip de cada marca de banco. |
Config.BankPedModel | 'a_m_m_business_01' | Modelo do bancário quando o banco não define nenhum. |
Config.BankPedDistance | 60.0 | Metros a partir dos quais os bancários aparecem. |
Config.SessionIdleTimeout | 900 | Segundos sem nenhuma ação antes de o app fechar. |
Mais em Bancos e bancários.
Bancários e diálogo
| Chave | Padrão | Descrição |
Config.StaffVoice.enabled | true | Os bancários falam. |
Config.StaffVoice.language | 'en' | 'en', 'fr' ou 'auto' (o idioma de Config.Locale). |
Config.StaffVoice.greetDistance | 5.0 | Metros a partir dos quais o bancário cumprimenta o jogador. |
Config.StaffVoice.greetCooldown | 300 | Segundos antes de o mesmo bancário cumprimentar o mesmo jogador de novo. |
Config.StaffVoice.lookDistance | 6.0 | Metros a partir dos quais o bancário acompanha o jogador com o olhar. |
Config.Dialogue.enabled | true | Falar com um bancário abre a caixa de diálogo. false: o app do banco abre na hora. |
Config.Dialogue.camera | true | A câmera enquadra o bancário enquanto o diálogo está aberto. |
Caixas eletrônicos
| Chave | Padrão | Descrição |
Config.AtmModels | prop_atm_01, prop_atm_02, prop_atm_03, prop_fleeca_atm | Modelos de caixa eletrônico. Todo prop desses modelos no mapa é um caixa eletrônico. |
Config.AtmDistance | 1.5 | Metros de um caixa eletrônico para receber o aviso dele. |
Config.AtmUse.walk | true | O jogador caminha até o caixa eletrônico. false: ele fica no lugar. |
Config.AtmUse.card | true | Caixas eletrônicos do jogo: o jogador insere o cartão antes de a tela abrir. |
Config.AtmUse.view | 'screen' | Caixas eletrônicos do jogo: 'screen' fica de frente para a tela e o teclado, 'shoulder' olha por cima do ombro do jogador. |
Config.AtmUse.finger | true | A mão do jogador no teclado, o dedo na tecla que está sob o cursor. |
Config.AtmUse.cardModel | false | Um só prop de cartão para todo mundo. false = o cartão do próprio banco do jogador. |
Config.AtmUse.animTime | 2.0 | Modelos de caixa eletrônico que você adicionar: segundos de animação do cartão antes de a tela abrir. 0 = nenhuma. |
Config.AtmPositions | vazio | Lista opcional de posições de caixa eletrônico permitidas (vec3). Vazia = todos os caixas eletrônicos dos modelos acima. |
Config.AtmPositionTolerance | 1.5 | Metros entre um caixa eletrônico e a posição listada dele. |
Config.AtmBrand | 'fleeca' | Banco dos caixas eletrônicos: visual do caixa eletrônico em tela cheia (modelos que você adicionar) e banco de um primeiro cartão grátis entregue ali. |
Config.AtmBrandByModel | prop_fleeca_atm = 'fleeca' | O mesmo, por modelo. |
Target, sons e HUD
| Chave | Padrão | Descrição |
Config.Target.bank | true | Olho do target nos bancários e no balcão deles (ox_target ou qb-target, pelo hz_lib). |
Config.Target.atm | true | Olho do target nos caixas eletrônicos. |
Config.Target.distance | 2.0 | Alcance do olho, em metros. |
Config.Target.pins | true | Com o HZ-TextUi rodando: os pins dele (mostrados ao chegar perto, sem segurar tecla) no lugar do olho. |
Config.Sounds | sons do jogo | Sons do app: abrir, fechar, PIN certo e errado, sucesso, erro, teclado, passar o mouse, clique, troca de página. enabled = false silencia todos; defina uma entrada como false para silenciar só ela. |
Config.HideHud | true | Esconde o HUD enquanto o app está aberto (HZ-Hud, ou o minimapa do jogo). |
Sem recurso de target, o hz_lib mostra o próprio aviso [E].
Custos e limites
| Chave | Padrão | Descrição |
Config.IbanChangeCost | 5000 | Preço de um IBAN personalizado. |
Config.PinChangeCost | 1000 | Preço de uma troca de PIN. O primeiro PIN é grátis. |
Config.CreditCardPrice | 250 | Preço de um cartão bancário. |
Config.TransferFeePct | 0.0 | Taxa sobre as transferências, em fração (0.01 = 1 %), que fica com o banco. |
Config.MaxAmount | 100000000 | Maior valor de uma única operação. |
Os custos são cobrados do banco pessoal.
Poupança
C.Savings = {
InterestPct = 0.5,
PeriodHours = 24,
MaxBalance = 1000000,
MaxCatchUp = 7,
}
| Chave | Descrição |
InterestPct | Juros por período, em % do saldo mantido durante o período inteiro. |
PeriodHours | Horas reais entre dois pagamentos de juros. |
MaxBalance | Máximo que um personagem pode guardar na poupança. 0 = sem limite. |
MaxCatchUp | Máximo de períodos pagos depois de um tempo ausente. 0 = sem limite. |
Como funciona: Poupança e empréstimos.
Empréstimos
C.Loans = {
Tiers = {
{ score = 300, max = 5000, rate = 15 },
{ score = 580, max = 25000, rate = 10 },
{ score = 670, max = 75000, rate = 7 },
{ score = 740, max = 200000, rate = 5 },
},
MinAmount = 1000,
Installments = { 4, 8, 12 },
PeriodHours = 24,
LateFeePct = 5,
DefaultAfter = 3,
UseSavings = true,
Score = { start = 600, min = 300, max = 850, onTime = 5, repaid = 25, missed = 30, default = 100 },
}
| Chave | Descrição |
Tiers | A partir deste score de crédito: maior empréstimo e seus juros, em % do valor para o empréstimo inteiro. |
MinAmount | Menor empréstimo. |
Installments | Planos de pagamento oferecidos, em número de parcelas. |
PeriodHours | Horas reais entre duas parcelas. |
LateFeePct | Somado à dívida a cada parcela perdida, em % de uma parcela. |
DefaultAfter | Parcelas perdidas seguidas antes de o empréstimo ficar inadimplente. |
UseSavings | Uma parcela que a conta bancária não cobre é tirada da poupança. |
Score | Score inicial, limites e pontos ganhos ou perdidos: parcela em dia, empréstimo quitado, parcela perdida, inadimplência. |
Como funciona: Poupança e empréstimos.
Faturas
Tudo em config/billing.lua, dentro de C.Billing.
| Chave | Padrão | Descrição |
Command | 'invoice' | Comando de chat que emite uma fatura. '' = nenhum comando. |
Jobs | nil | Empregos que podem cobrar, por exemplo { 'police', 'mechanic' }. nil = todo emprego que tem conta de empresa. |
MinGrade | 0 | Menor cargo do emprego que pode cobrar. |
MinGradeByJob | {} | Cargo por emprego, por exemplo { mechanic = 1 }. |
Gangs | true | Membros de gangue podem cobrar pela gangue deles. |
PlayerInvoices | false | Jogadores podem cobrar outros jogadores, para a própria conta. |
NoDecline | police, ambulance | Empregos cujas faturas não podem ser recusadas (multas). |
MaxAmount | 1000000 | Maior fatura. |
MaxPending | 20 | Faturas em aberto que um jogador pode ter ao mesmo tempo. |
Distance | 5.0 | Máximo de metros entre quem emite e o jogador cobrado. |
DueDays | 7 | Dias reais antes de uma fatura vencer. |
LateFeePct | 10 | Somado uma vez quando vence, em % do valor. 0 = nenhum. |
AutoCollect | true | Faturas vencidas são tiradas do banco assim que a conta cobre o valor. |
IssuerCommission | 0 | % de uma fatura de empresa paga ao funcionário que a emitiu. |
ReasonMax | 96 | Caracteres mantidos do motivo. |
PhoneBrand | 'maze' | Visual de banco do app Bills no celular. |
Phones | qs-smartphone, lb-phone, hz_phone | Celulares que recebem o app Bills e as notificações de fatura, quando estão rodando. |
Como funciona: Faturas.
Compatibilidade
Em config/compat.lua:
| Chave | Padrão | Descrição |
Config.Compat['qb-banking'] | true | Responder aos exports do qb-banking. false = desligado. |
Config.Compat['Renewed-Banking'] | true | O mesmo para o Renewed-Banking. |
Config.Compat['esx_banking'] | true | O mesmo para o esx_banking. |
Config.Compat['okokBanking'] | true | O mesmo para o okokBanking. |
Config.Compat['esx_billing'] | true | Faturas enviadas pelos menus de emprego do ESX viram faturas do HZ-Banking. |
Config.Compat['qb-management'] | 'auto' | Exports antigos de dinheiro do qb-management, só enquanto nenhum qb-management está rodando. |
Config.Compat.esxClientLog | false | Deixa os jogadores escreverem linhas no próprio histórico pelo evento de cliente do esx_banking. |
Config.MigrationPriority | okok, renewed, qb, esx | Fontes da importação, da mais confiável para a menos confiável. |
Config.MigrationHistory | true | Importa também as linhas do histórico. |
Cada substituição fica desligada enquanto o recurso verdadeiro com aquele nome está rodando. Mais em Substituir seu script de banco.
No /hzpanel
O módulo Banking do /hzpanel edita a maioria dos ajustes ao vivo no servidor, em duas abas:
- General — prefixo do IBAN; páginas Savings, Bills e Loans; regras de cartão e PIN, modo do dinheiro vivo, cargos de empresa e de gangue, acesso ao banco no Qbox, dinheiro de empresa no ESX; contas compartilhadas;
/givecash e fechamento do banco.
- Economy — preços do IBAN, do PIN e do cartão, taxa de transferência (em %), maior valor, limites das transferências agendadas; poupança; empréstimos; faturas (maior fatura, dias até vencer, multa por atraso, cobrança das faturas vencidas, comissão do funcionário, menor cargo que pode cobrar, cobranças de gangues e de jogadores, distância de cobrança).
48 ajustes no total, aplicados na hora, sem reiniciar. Os arquivos dão os valores iniciais. Um valor salvo no painel vale mais que o arquivo. Bancos, caixas eletrônicos, vozes, sons, faixas de empréstimo, o score de crédito, o comando de fatura e os empregos que cobram, e a compatibilidade são definidos só nos arquivos.
Convars
| Convar | Descrição |
hz_banking_webhook | URL do webhook do Discord para o log de dinheiro. |
hz_banking_pin_secret | Segredo privado usado para guardar os PINs. Defina-o uma vez, antes que os jogadores definam seus PINs. |
Veja Instalação.