Configuração

A configuração fica dividida em cinco arquivos abertos em config/:

ArquivoO que ele contém
main.luaIdioma, 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.luaBancos, bancários, vozes e diálogo, caixas eletrônicos, target, sons, HUD
economy.luaCustos, taxa de transferência, maior valor, poupança, empréstimos, webhook do Discord
billing.luaFaturas
compat.luaScripts 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

ChavePadrãoDescriçã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.Featuressavings, bills, loans todos trueLiga 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.RateLimitsveja o arquivoMáximo de chamadas por jogador em poucos segundos, para leituras, operações com dinheiro, verificações de PIN e /givecash.
Config.DebugfalseLogs 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

ChavePadrãoDescrição
Config.IbanPrefix'NT'Prefixo de todo IBAN, em maiúsculas. Um IBAN pessoal fica assim: NT482913.
Config.IbanDigits6Dígitos de um IBAN pessoal gerado.
Config.CustomIbanMaxChars12Tamanho 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

ChavePadrãoDescriçã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

ChavePadrãoDescrição
Config.RequireCreditCardForATMtrueÉ 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.FirstCardFreetrueUm personagem que nunca teve cartão ganha o primeiro de graça, no balcão ou direto no caixa eletrônico.
Config.CardValidityDays90Dias de validade de um cartão novo. 0 = os cartões nunca vencem.
Config.MaxCardsPerAccount3Cartões que um personagem pode ter ao mesmo tempo, sem contar os vencidos. 0 = sem limite.
Config.PinDigits4Tamanho do PIN.
Config.PinMaxAttempts3PINs errados seguidos antes de o cartão ser bloqueado.
Config.PinLockoutSeconds300Por quanto tempo o cartão fica bloqueado.
Config.PinAtBankfalseDeixe false: o PIN é pedido só nos caixas eletrônicos.

Contas de empresa e de gangue

ChavePadrãoDescrição
Config.SocietyAllJobstrueTodo emprego tem uma conta de empresa, criada no primeiro uso. false: só os empregos de Config.Societies.
Config.Societiespolice, ambulance, mechanic, realestateEmpregos cuja conta é criada na inicialização.
Config.SocietyExcludedJobsunemployedEmpregos que nunca têm conta.
Config.SocietyMinGrade3Alé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.BankAuthtrueQbox: 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.EsxSocietyAccountstrueESX: 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.BossGradenilESX: nível de cargo do chefe (e acima). nil = a marcação de chefe ou um cargo chamado boss.
Config.GangMinGradefalseAlé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.GangPermissionExporthz_illegal, CanAccessGangBankExport opcional que decide o acesso à gangue, usado só enquanto o recurso dele está rodando. false = nenhum.

Contas compartilhadas

ChavePadrãoDescrição
Config.SharedAccountstrueOs jogadores abrem contas compartilhadas em um balcão do banco.
Config.SharedMaxOwned2Contas compartilhadas que um personagem pode ter como dono.
Config.SharedMaxMembers5Membros por conta compartilhada, sem contar o dono.
Config.SharedNameMax32Tamanho máximo do nome da conta.

Transferências agendadas

ChavePadrãoDescrição
Config.MaxScheduledPerAccount10Transferências agendadas ativas ou pausadas por conta. 0 = sem limite.
Config.ScheduleMaxRunsShared52Má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

ChavePadrãoDescrição
Config.GiveCashtrueOs 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.GiveCashDistance3.0Máximo de metros entre os dois jogadores.
Config.GiveCashMaxAmount0Maior valor por vez. 0 = Config.MaxAmount.

Assaltos a banco

ChavePadrãoDescrição
Config.BankClosuretrueUm banco fecha enquanto está sendo assaltado.
Config.BankClosureMinutes30Ele reabre depois desse tempo, no máximo. 0 = só quando o assalto termina.
Config.RobberyBanksordem do qb-bankrobberyID 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' },
    },
    -- ...
}

CampoDescrição
coordsOnde o jogador fica de pé na frente do bancário. O servidor mede os jogadores a partir desse ponto.
brandVisual do app: 'fleeca', 'maze', 'pacific', 'blaine' ou 'union'.
pedO bancário: model, coords (vec4 com a direção) e name, mostrado no diálogo.
blipOpcional: muda qualquer campo de Config.Blip para este banco, ou false para nenhum blip.
distanceOpcional: distância do aviso deste banco.
ChavePadrãoDescrição
Config.InteractDistance3.0Distâ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.Blipsprite 108, cor 2, escala 0.9, rótulo BankBlip de cada banco. enabled = false esconde todos.
Config.BlipColorByBrandMaze 1, Fleeca 2, Pacific 46, Blaine 76, Union 29Cor 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.BankPedDistance60.0Metros a partir dos quais os bancários aparecem.
Config.SessionIdleTimeout900Segundos sem nenhuma ação antes de o app fechar.
Mais em Bancos e bancários.
ChavePadrãoDescrição
Config.StaffVoice.enabledtrueOs bancários falam.
Config.StaffVoice.language'en''en', 'fr' ou 'auto' (o idioma de Config.Locale).
Config.StaffVoice.greetDistance5.0Metros a partir dos quais o bancário cumprimenta o jogador.
Config.StaffVoice.greetCooldown300Segundos antes de o mesmo bancário cumprimentar o mesmo jogador de novo.
Config.StaffVoice.lookDistance6.0Metros a partir dos quais o bancário acompanha o jogador com o olhar.
Config.Dialogue.enabledtrueFalar com um bancário abre a caixa de diálogo. false: o app do banco abre na hora.
Config.Dialogue.cameratrueA câmera enquadra o bancário enquanto o diálogo está aberto.

Caixas eletrônicos

ChavePadrãoDescrição
Config.AtmModelsprop_atm_01, prop_atm_02, prop_atm_03, prop_fleeca_atmModelos de caixa eletrônico. Todo prop desses modelos no mapa é um caixa eletrônico.
Config.AtmDistance1.5Metros de um caixa eletrônico para receber o aviso dele.
Config.AtmUse.walktrueO jogador caminha até o caixa eletrônico. false: ele fica no lugar.
Config.AtmUse.cardtrueCaixas 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.fingertrueA mão do jogador no teclado, o dedo na tecla que está sob o cursor.
Config.AtmUse.cardModelfalseUm só prop de cartão para todo mundo. false = o cartão do próprio banco do jogador.
Config.AtmUse.animTime2.0Modelos de caixa eletrônico que você adicionar: segundos de animação do cartão antes de a tela abrir. 0 = nenhuma.
Config.AtmPositionsvazioLista opcional de posições de caixa eletrônico permitidas (vec3). Vazia = todos os caixas eletrônicos dos modelos acima.
Config.AtmPositionTolerance1.5Metros 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.AtmBrandByModelprop_fleeca_atm = 'fleeca'O mesmo, por modelo.

Target, sons e HUD

ChavePadrãoDescrição
Config.Target.banktrueOlho do target nos bancários e no balcão deles (ox_target ou qb-target, pelo hz_lib).
Config.Target.atmtrueOlho do target nos caixas eletrônicos.
Config.Target.distance2.0Alcance do olho, em metros.
Config.Target.pinstrueCom o HZ-TextUi rodando: os pins dele (mostrados ao chegar perto, sem segurar tecla) no lugar do olho.
Config.Soundssons do jogoSons 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.HideHudtrueEsconde 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

ChavePadrãoDescrição
Config.IbanChangeCost5000Preço de um IBAN personalizado.
Config.PinChangeCost1000Preço de uma troca de PIN. O primeiro PIN é grátis.
Config.CreditCardPrice250Preço de um cartão bancário.
Config.TransferFeePct0.0Taxa sobre as transferências, em fração (0.01 = 1 %), que fica com o banco.
Config.MaxAmount100000000Maior 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,
}

ChaveDescrição
InterestPctJuros por período, em % do saldo mantido durante o período inteiro.
PeriodHoursHoras reais entre dois pagamentos de juros.
MaxBalanceMáximo que um personagem pode guardar na poupança. 0 = sem limite.
MaxCatchUpMá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 },
}

ChaveDescrição
TiersA partir deste score de crédito: maior empréstimo e seus juros, em % do valor para o empréstimo inteiro.
MinAmountMenor empréstimo.
InstallmentsPlanos de pagamento oferecidos, em número de parcelas.
PeriodHoursHoras reais entre duas parcelas.
LateFeePctSomado à dívida a cada parcela perdida, em % de uma parcela.
DefaultAfterParcelas perdidas seguidas antes de o empréstimo ficar inadimplente.
UseSavingsUma parcela que a conta bancária não cobre é tirada da poupança.
ScoreScore 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.

ChavePadrãoDescrição
Command'invoice'Comando de chat que emite uma fatura. '' = nenhum comando.
JobsnilEmpregos que podem cobrar, por exemplo { 'police', 'mechanic' }. nil = todo emprego que tem conta de empresa.
MinGrade0Menor cargo do emprego que pode cobrar.
MinGradeByJob{}Cargo por emprego, por exemplo { mechanic = 1 }.
GangstrueMembros de gangue podem cobrar pela gangue deles.
PlayerInvoicesfalseJogadores podem cobrar outros jogadores, para a própria conta.
NoDeclinepolice, ambulanceEmpregos cujas faturas não podem ser recusadas (multas).
MaxAmount1000000Maior fatura.
MaxPending20Faturas em aberto que um jogador pode ter ao mesmo tempo.
Distance5.0Máximo de metros entre quem emite e o jogador cobrado.
DueDays7Dias reais antes de uma fatura vencer.
LateFeePct10Somado uma vez quando vence, em % do valor. 0 = nenhum.
AutoCollecttrueFaturas vencidas são tiradas do banco assim que a conta cobre o valor.
IssuerCommission0% de uma fatura de empresa paga ao funcionário que a emitiu.
ReasonMax96Caracteres mantidos do motivo.
PhoneBrand'maze'Visual de banco do app Bills no celular.
Phonesqs-smartphone, lb-phone, hz_phoneCelulares que recebem o app Bills e as notificações de fatura, quando estão rodando.
Como funciona: Faturas.

Compatibilidade

Em config/compat.lua:

ChavePadrãoDescrição
Config.Compat['qb-banking']trueResponder aos exports do qb-banking. false = desligado.
Config.Compat['Renewed-Banking']trueO mesmo para o Renewed-Banking.
Config.Compat['esx_banking']trueO mesmo para o esx_banking.
Config.Compat['okokBanking']trueO mesmo para o okokBanking.
Config.Compat['esx_billing']trueFaturas 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.esxClientLogfalseDeixa os jogadores escreverem linhas no próprio histórico pelo evento de cliente do esx_banking.
Config.MigrationPriorityokok, renewed, qb, esxFontes da importação, da mais confiável para a menos confiável.
Config.MigrationHistorytrueImporta 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

ConvarDescrição
hz_banking_webhookURL do webhook do Discord para o log de dinheiro.
hz_banking_pin_secretSegredo privado usado para guardar os PINs. Defina-o uma vez, antes que os jogadores definam seus PINs.
Veja Instalação.