Configuration

La configuration tient en cinq fichiers ouverts, dans config/ :

FichierContenu
main.luaLangue, pages activées ou non, IBAN, liquide, cartes et code PIN, comptes société, de gang et partagés, virements programmés, /givecash, braquages de banque
locations.luaAgences, banquiers, voix et dialogue, distributeurs, cible, sons, HUD
economy.luaCoûts, frais de virement, montant maximum, épargne, prêts, webhook Discord
billing.luaFactures
compat.luaScripts écrits pour d'autres banques, et l'import des comptes
Dans les fichiers, chaque clé s'écrit C.Nom (par exemple C.Locale = 'en'). Cette page les écrit Config.Nom. Les montants sont des nombres entiers.
Votre serveur, vos règles. Les cinq fichiers de config/, locales/ et les images d'inventaire ne sont pas chiffrés. Vous pouvez y changer la langue et la devise, le format de l'IBAN, les cartes et le code PIN, les frais et les prix, l'épargne, les prêts et le score de crédit, les factures, les comptes société, de gang et partagés, les agences et leurs banquiers, les voix, les blips, les modèles de distributeur, la cible ou l'invite, les sons, les commandes et la compatibilité. Avec hz_lib, 48 de ces réglages se changent aussi en jeu depuis /hzpanel, sans redémarrage.

Général

CléDéfautDescription
Config.Locale'en'Langue de l'app, du dialogue et des messages : un nom de fichier de locales/. en et fr sont fournis. nil prend la convar hz_locale.
Config.Currency'$'Symbole monétaire affiché dans l'app.
Config.Featuressavings, bills, loans tous à trueActive ou coupe les pages Épargne, Factures et Prêts. Coupée : la page quitte le menu et le serveur refuse ses opérations. Rien n'est supprimé.
Config.RateLimitsvoir le fichierNombre maximum d'appels par joueur en quelques secondes, pour les lectures, les opérations d'argent, les vérifications de code PIN et /givecash.
Config.DebugfalseLogs supplémentaires dans la console.
Une autre langue : copiez locales/en.json dans un nouveau fichier (par exemple locales/de.json), traduisez les textes et réglez Config.Locale = 'de'. Pas besoin de rebuild ; les lignes manquantes retombent sur l'anglais. Les voix des banquiers n'existent qu'en anglais et en français.

IBAN

CléDéfautDescription
Config.IbanPrefix'NT'Préfixe de tous les IBAN, en majuscules. Un IBAN personnel ressemble à NT482913.
Config.IbanDigits6Nombre de chiffres d'un IBAN personnel généré.
Config.CustomIbanMaxChars12Longueur maximale d'un IBAN personnalisé qu'un joueur peut acheter, préfixe compris.
Les comptes société prennent le préfixe et le nom du métier (NTPOLICE), les comptes de gang le préfixe, GANG et le nom du gang (NTGANGBALLAS). Les joueurs ne peuvent pas les prendre comme IBAN personnalisé.

Liquide

CléDéfautDescription
Config.UseCashAsItem'auto''auto' : l'objet liquide avec ox_inventory, l'argent liquide du framework sinon. true force l'objet, false l'argent du framework.
Config.CashItem'money'Nom de l'objet liquide (ox_inventory money, qb cash).
Config.BankAccount'bank'Compte du framework utilisé comme banque personnelle.

Cartes et code PIN

CléDéfautDescription
Config.RequireCreditCardForATMtrueUne carte bancaire est nécessaire pour utiliser un distributeur. false : le code PIN seul.
Config.CreditCardItem'bank_card'Nom de l'objet carte. Il doit exister dans votre inventaire, voir Installation.
Config.FirstCardFreetrueUn personnage qui n'a jamais eu de carte reçoit la première gratuitement, au guichet ou directement au distributeur.
Config.CardValidityDays90Nombre de jours de validité d'une nouvelle carte. 0 = les cartes n'expirent jamais.
Config.MaxCardsPerAccount3Cartes qu'un personnage peut avoir en même temps, sans compter les expirées. 0 = sans limite.
Config.PinDigits4Longueur du code PIN.
Config.PinMaxAttempts3Codes PIN faux d'affilée avant que la carte soit bloquée.
Config.PinLockoutSeconds300Durée du blocage de la carte.
Config.PinAtBankfalseLaissez false : le code PIN n'est demandé qu'aux distributeurs.

Comptes société et gang

CléDéfautDescription
Config.SocietyAllJobstrueChaque métier a un compte société, créé au premier besoin. false : seulement les métiers de Config.Societies.
Config.Societiespolice, ambulance, mechanic, realestateMétiers dont le compte est créé au démarrage.
Config.SocietyExcludedJobsunemployedMétiers qui n'ont jamais de compte.
Config.SocietyMinGrade3En plus du patron, le grade (et au-dessus) qui ouvre le compte société. false = patron seul.
Config.SocietyMinGradeByJob{}Grade par métier, par exemple { police = 4 }.
Config.BankAuthtrueQbox : le droit d'accès bancaire de chaque grade (dans qbx_management) décide qui ouvre les comptes société et de gang. false = les règles de grade ci-dessus.
Config.EsxSocietyAccountstrueESX : les soldes société sont les comptes society_<job> d'esx_addonaccount, donc les menus patron et les factures voient le même argent.
Config.BossGradenilESX : niveau de grade du patron (et au-dessus). nil = l'indicateur patron ou un grade nommé boss.
Config.GangMinGradefalseEn plus du chef, le grade de gang (et au-dessus) qui ouvre le compte de gang. false = chef seul.
Config.GangMinGradeByGang{}Grade par gang, par exemple { ballas = 3 }.
Config.GangPermissionExporthz_illegal, CanAccessGangBankExport facultatif qui décide de l'accès au compte de gang, utilisé seulement quand sa resource tourne. false = aucun.

Comptes partagés

CléDéfautDescription
Config.SharedAccountstrueLes joueurs ouvrent des comptes partagés au guichet.
Config.SharedMaxOwned2Comptes partagés qu'un personnage peut posséder.
Config.SharedMaxMembers5Membres par compte partagé, sans compter le propriétaire.
Config.SharedNameMax32Longueur maximale du nom d'un compte.

Virements programmés

CléDéfautDescription
Config.MaxScheduledPerAccount10Virements programmés actifs ou en pause par compte. 0 = sans limite.
Config.ScheduleMaxRunsShared52Nombre maximum d'exécutions d'un virement programmé société ou gang. Ceux-ci demandent toujours un nombre d'exécutions.

Donner du liquide

CléDéfautDescription
Config.GiveCashtrueLes joueurs se donnent du liquide avec /givecash [id] <montant> ; sans ID, il va au joueur le plus proche. false : la commande n'est pas créée.
Config.GiveCashCommand'givecash'Nom de la commande.
Config.GiveCashDistance3.0Distance maximale entre les deux joueurs, en mètres.
Config.GiveCashMaxAmount0Plus gros don. 0 = Config.MaxAmount.

Braquages de banque

CléDéfautDescription
Config.BankClosuretrueUne agence ferme pendant qu'elle est braquée.
Config.BankClosureMinutes30Elle rouvre au plus tard après ce délai. 0 = seulement à la fin du braquage.
Config.RobberyBanksordre de qb-bankrobberyID de banque du script de braquage → numéro d'agence dans Config.Banks.
Voir Fermée pendant un braquage.

Agences

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' },
    },
    -- ...
}

ChampDescription
coordsOù se tient le joueur, devant le banquier. Le serveur mesure les joueurs depuis ce point.
brandLook de l'app : 'fleeca', 'maze', 'pacific', 'blaine' ou 'union'.
pedLe banquier : model, coords (vec4 avec l'orientation) et name, affiché dans le dialogue.
blipFacultatif : change n'importe quel champ de Config.Blip pour cette agence, ou false pour aucun blip.
distanceFacultatif : distance de l'invite de cette agence.
CléDéfautDescription
Config.InteractDistance3.0Distance à laquelle l'invite d'un guichet devient active.
Config.InteractKey'E'Touche affichée dans l'invite (libellé seulement).
Config.Blipsprite 108, couleur 2, échelle 0.9, libellé BankBlip de chaque agence. enabled = false les masque.
Config.BlipColorByBrandMaze 1, Fleeca 2, Pacific 46, Blaine 76, Union 29Couleur de blip de chaque banque.
Config.BankPedModel'a_m_m_business_01'Modèle du banquier quand l'agence n'en donne pas.
Config.BankPedDistance60.0Distance en mètres à laquelle les banquiers apparaissent.
Config.SessionIdleTimeout900Secondes sans aucune action avant que l'app se ferme.
Plus de détails dans Agences et banquiers.

Banquiers et dialogue

CléDéfautDescription
Config.StaffVoice.enabledtrueLes banquiers parlent.
Config.StaffVoice.language'en''en', 'fr', ou 'auto' (la langue de Config.Locale).
Config.StaffVoice.greetDistance5.0Distance en mètres à laquelle le banquier salue le joueur.
Config.StaffVoice.greetCooldown300Secondes avant que le même banquier salue de nouveau le même joueur.
Config.StaffVoice.lookDistance6.0Distance en mètres à laquelle le banquier suit le joueur du regard.
Config.Dialogue.enabledtrueParler à un banquier ouvre la boîte de dialogue. false : l'app bancaire s'ouvre tout de suite.
Config.Dialogue.cameratrueLa caméra cadre le banquier pendant le dialogue.

Distributeurs

CléDéfautDescription
Config.AtmModelsprop_atm_01, prop_atm_02, prop_atm_03, prop_fleeca_atmModèles de distributeur. Chaque prop de ces modèles sur la carte est un distributeur.
Config.AtmDistance1.5Distance en mètres à un distributeur pour avoir son invite.
Config.AtmUse.walktrueLe joueur marche jusqu'au distributeur. false : il reste sur place.
Config.AtmUse.cardtrueDistributeurs du jeu : le joueur insère sa carte avant que l'écran s'ouvre.
Config.AtmUse.view'screen'Distributeurs du jeu : 'screen' face à l'écran et au pavé, 'shoulder' par-dessus l'épaule du joueur.
Config.AtmUse.fingertrueLa main du joueur sur le pavé, le doigt sur la touche sous le curseur.
Config.AtmUse.cardModelfalseUn seul prop de carte pour tout le monde. false = la carte de la banque du joueur.
Config.AtmUse.animTime2.0Modèles de distributeur que vous ajoutez : secondes d'animation de la carte avant que l'écran s'ouvre. 0 = aucune.
Config.AtmPositionsvideListe facultative des positions de distributeurs autorisées (vec3). Vide = tous les distributeurs des modèles ci-dessus.
Config.AtmPositionTolerance1.5Distance en mètres entre un distributeur et sa position listée.
Config.AtmBrand'fleeca'Banque des distributeurs : look du distributeur en plein écran (modèles que vous ajoutez) et banque d'une première carte offerte sur place.
Config.AtmBrandByModelprop_fleeca_atm = 'fleeca'La même chose, par modèle.

Cible, sons et HUD

CléDéfautDescription
Config.Target.banktrueŒil de ciblage sur les banquiers et leur guichet (ox_target ou qb-target, via hz_lib).
Config.Target.atmtrueŒil de ciblage sur les distributeurs.
Config.Target.distance2.0Portée de l'œil, en mètres.
Config.Target.pinstrueAvec HZ-TextUi lancé : ses repères (visibles à l'approche, sans touche à tenir) au lieu de l'œil.
Config.Soundssons du jeuSons de l'app : ouverture, fermeture, code PIN juste ou faux, succès, erreur, pavé, survol, clic, changement de page. enabled = false les coupe tous ; mettez une entrée à false pour couper ce son.
Config.HideHudtrueMasque le HUD pendant que l'app est ouverte (HZ-Hud, ou la mini-carte du jeu).
Sans système de cible, hz_lib affiche sa propre invite [E].

Coûts et limites

CléDéfautDescription
Config.IbanChangeCost5000Prix d'un IBAN personnalisé.
Config.PinChangeCost1000Prix d'un changement de code PIN. Le premier code est gratuit.
Config.CreditCardPrice250Prix d'une carte bancaire.
Config.TransferFeePct0.0Frais sur les virements, en fraction (0.01 = 1 %), gardés par la banque.
Config.MaxAmount100000000Montant maximum d'une seule opération.
Les coûts sont prélevés sur la banque personnelle.

Épargne

C.Savings = {
    InterestPct = 0.5,
    PeriodHours = 24,
    MaxBalance  = 1000000,
    MaxCatchUp  = 7,
}

CléDescription
InterestPctIntérêts par période, en % du solde gardé toute la période.
PeriodHoursHeures réelles entre deux versements d'intérêts.
MaxBalanceMontant maximum qu'un personnage peut garder sur son épargne. 0 = sans limite.
MaxCatchUpNombre maximum de périodes payées après une absence. 0 = sans limite.
Fonctionnement : Épargne et prêts.

Prêts

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 },
}

CléDescription
TiersÀ partir de ce score de crédit : plus gros prêt possible et ses intérêts, en % du montant pour tout le prêt.
MinAmountPlus petit prêt.
InstallmentsPlans de remboursement proposés, en nombre d'échéances.
PeriodHoursHeures réelles entre deux échéances.
LateFeePctAjouté à la dette pour chaque échéance manquée, en % d'une échéance.
DefaultAfterÉchéances manquées d'affilée avant que le prêt passe en défaut.
UseSavingsUne échéance que le compte bancaire ne couvre pas est prise sur l'épargne.
ScoreScore de départ, bornes, et points gagnés ou perdus : échéance à l'heure, prêt remboursé, échéance manquée, défaut.
Fonctionnement : Épargne et prêts.

Factures

Tout se trouve dans config/billing.lua, sous C.Billing.

CléDéfautDescription
Command'invoice'Commande de chat qui établit une facture. '' = aucune commande.
JobsnilMétiers qui peuvent facturer, par exemple { 'police', 'mechanic' }. nil = tous les métiers qui ont un compte société.
MinGrade0Grade minimum pour facturer.
MinGradeByJob{}Grade par métier, par exemple { mechanic = 1 }.
GangstrueLes membres d'un gang peuvent facturer au nom de leur gang.
PlayerInvoicesfalseLes joueurs peuvent facturer d'autres joueurs, sur leur propre compte.
NoDeclinepolice, ambulanceMétiers dont les factures ne peuvent pas être refusées (amendes).
MaxAmount1000000Plus grosse facture.
MaxPending20Factures impayées qu'un joueur peut avoir en même temps.
Distance5.0Distance maximale en mètres entre l'auteur et le joueur facturé.
DueDays7Jours réels avant qu'une facture soit en retard.
LateFeePct10Ajouté une fois en cas de retard, en % du montant. 0 = aucune pénalité.
AutoCollecttrueLes factures en retard sont prélevées sur la banque dès qu'elle les couvre.
IssuerCommission0% d'une facture de société versé à l'employé qui l'a établie.
ReasonMax96Nombre de caractères gardés du motif.
PhoneBrand'maze'Look bancaire de l'app Factures du téléphone.
Phonesqs-smartphone, lb-phone, hz_phoneTéléphones qui reçoivent l'app Factures et les notifications de facture, quand ils tournent.
Fonctionnement : Factures.

Compatibilité

Dans config/compat.lua :

CléDéfautDescription
Config.Compat['qb-banking']trueRépond aux exports de qb-banking. false = coupé.
Config.Compat['Renewed-Banking']truePareil pour Renewed-Banking.
Config.Compat['esx_banking']truePareil pour esx_banking.
Config.Compat['okokBanking']truePareil pour okokBanking.
Config.Compat['esx_billing']trueLes factures envoyées par les menus de métier ESX deviennent des factures HZ-Banking.
Config.Compat['qb-management']'auto'Anciens exports d'argent de qb-management, seulement tant qu'aucun qb-management ne tourne.
Config.Compat.esxClientLogfalseLaisse les joueurs écrire des lignes dans leur propre historique via l'event client d'esx_banking.
Config.MigrationPriorityokok, renewed, qb, esxSources de l'import, de la plus fiable à la moins fiable.
Config.MigrationHistorytrueImporte aussi les lignes d'historique.
Chaque relais reste coupé tant que la vraie resource de ce nom tourne. Plus de détails dans Remplacer votre script bancaire.

Dans /hzpanel

Le module Banque de /hzpanel modifie la plupart des réglages en direct sur le serveur, dans deux onglets :

  • Général — préfixe IBAN ; pages Épargne, Factures et Prêts ; règles des cartes et du code PIN, mode du liquide, grades société et gang, droit banque Qbox, argent société ESX ; comptes partagés ; /givecash et fermeture des agences.
  • Économie — prix de l'IBAN, du code PIN et de la carte, frais de virement (en %), montant maximum, limites des virements programmés ; épargne ; prêts ; factures (plus grosse facture, jours avant le retard, pénalité de retard, prélèvement des factures en retard, commission de l'employé, grade minimum pour facturer, factures des gangs et des joueurs, distance de facturation).
48 réglages en tout, appliqués tout de suite, sans redémarrage. Les fichiers donnent les valeurs de départ. Une valeur enregistrée dans le panel l'emporte sur le fichier. Les agences, les distributeurs, les voix, les sons, les paliers de prêt, le score de crédit, la commande de facture et les métiers qui facturent, ainsi que la compatibilité, se règlent seulement dans les fichiers.

Convars

ConvarDescription
hz_banking_webhookURL du webhook Discord pour le journal de l'argent.
hz_banking_pin_secretSecret privé utilisé pour enregistrer les codes PIN. À régler une seule fois, avant que les joueurs choisissent leur code.
Voir Installation.