Konfiguration
Die Konfiguration ist auf fünf offene Dateien in config/ verteilt:
| Datei | Inhalt |
main.lua | Sprache, Seiten an oder aus, IBAN, Bargeld, Karten und PIN, Firmen-, Gang- und gemeinsame Konten, geplante Überweisungen, /givecash, Banküberfälle |
locations.lua | Banken, Bankberater, Stimmen und Dialog, Geldautomaten, Target, Sounds, HUD |
economy.lua | Kosten, Überweisungsgebühr, Höchstbetrag, Sparkonto, Kredite, Discord-Webhook |
billing.lua | Rechnungen |
compat.lua | Scripts, die für andere Banken geschrieben wurden, und der Kontenimport |
In den Dateien steht jeder Schlüssel als C.Name (zum Beispiel C.Locale = 'en'). Diese Seite schreibt sie als Config.Name. Beträge sind ganze Zahlen.
Ihr Server, Ihre Regeln. Die fünf Dateien in
config/,
locales/ und die Inventarbilder sind nicht verschlüsselt. Sie können dort Sprache und Währung, IBAN-Format, Karten und PIN, Gebühren und Preise, Sparkonto, Kredite und Kredit-Score, Rechnungen, Firmen-, Gang- und gemeinsame Konten, Banken und ihre Bankberater, Stimmen, Blips, Geldautomaten-Modelle, Target oder Prompt, Sounds, Befehle und Kompatibilität ändern. Mit hz_lib lassen sich 48 dieser Einstellungen auch im Spiel über das
/hzpanel ändern, ohne Neustart.
Allgemein
| Schlüssel | Standard | Beschreibung |
Config.Locale | 'en' | Sprache der App, des Dialogs und der Meldungen: ein Dateiname aus locales/. en und fr sind enthalten. nil nutzt die Convar hz_locale. |
Config.Currency | '$' | Währungszeichen in der App. |
Config.Features | savings, bills, loans alle true | Schaltet die Seiten Savings, Bills und Loans an oder aus. Aus: Die Seite verschwindet aus dem Menü und der Server lehnt ihre Operationen ab. Nichts wird gelöscht. |
Config.RateLimits | siehe Datei | Höchstzahl an Aufrufen pro Spieler in wenigen Sekunden, für Abfragen, Geldoperationen, PIN-Prüfungen und /givecash. |
Config.Debug | false | Zusätzliche Logs in der Konsole. |
Eine weitere Sprache: Kopieren Sie locales/en.json in eine neue Datei (zum Beispiel locales/de.json), übersetzen Sie die Texte und setzen Sie Config.Locale = 'de'. Kein Rebuild nötig; fehlende Zeilen fallen auf Englisch zurück. Die Stimmen der Bankberater gibt es nur auf Englisch und Französisch.
IBAN
| Schlüssel | Standard | Beschreibung |
Config.IbanPrefix | 'NT' | Präfix jeder IBAN, in Großbuchstaben. Eine persönliche IBAN sieht aus wie NT482913. |
Config.IbanDigits | 6 | Ziffern einer generierten persönlichen IBAN. |
Config.CustomIbanMaxChars | 12 | Längste Wunsch-IBAN, die ein Spieler kaufen kann, Präfix inklusive. |
Firmenkonten bekommen das Präfix und den Jobnamen (NTPOLICE), Gangkonten das Präfix, GANG und den Gangnamen (NTGANGBALLAS). Spieler können diese nicht als Wunsch-IBAN nehmen.
Bargeld
| Schlüssel | Standard | Beschreibung |
Config.UseCashAsItem | 'auto' | 'auto': das Bargeld-Item mit ox_inventory, sonst das Bargeld des Frameworks. true erzwingt das Item, false das Bargeld des Frameworks. |
Config.CashItem | 'money' | Name des Bargeld-Items (ox_inventory money, qb cash). |
Config.BankAccount | 'bank' | Framework-Konto, das als persönliches Bankkonto dient. |
Karten & PIN
| Schlüssel | Standard | Beschreibung |
Config.RequireCreditCardForATM | true | Für einen Geldautomaten wird eine Bankkarte benötigt. false: nur die PIN. |
Config.CreditCardItem | 'bank_card' | Item-Name der Karte. Er muss in Ihrem Inventar existieren, siehe Installation. |
Config.FirstCardFree | true | Ein Charakter, der nie eine Karte hatte, bekommt die erste kostenlos, am Schalter oder direkt am Geldautomaten. |
Config.CardValidityDays | 90 | Tage, die eine neue Karte gültig bleibt. 0 = Karten laufen nie ab. |
Config.MaxCardsPerAccount | 3 | Karten, die ein Charakter gleichzeitig besitzen kann, abgelaufene nicht mitgezählt. 0 = keine Grenze. |
Config.PinDigits | 4 | Länge der PIN. |
Config.PinMaxAttempts | 3 | Falsche PINs in Folge, bevor die Karte gesperrt wird. |
Config.PinLockoutSeconds | 300 | Wie lange die Karte gesperrt bleibt. |
Config.PinAtBank | false | Auf false lassen: Die PIN wird nur an Geldautomaten abgefragt. |
Firmen- & Gangkonten
| Schlüssel | Standard | Beschreibung |
Config.SocietyAllJobs | true | Jeder Job hat ein Firmenkonto, angelegt bei der ersten Nutzung. false: nur die Jobs aus Config.Societies. |
Config.Societies | police, ambulance, mechanic, realestate | Jobs, deren Konto beim Start angelegt wird. |
Config.SocietyExcludedJobs | unemployed | Jobs, die nie ein Konto haben. |
Config.SocietyMinGrade | 3 | Neben dem Boss der Jobrang (und höher), der das Firmenkonto öffnet. false = nur der Boss. |
Config.SocietyMinGradeByJob | {} | Rang pro Job, zum Beispiel { police = 4 }. |
Config.BankAuth | true | Qbox: Die Bankzugriffs-Einstellung jedes Rangs (in qbx_management) entscheidet, wer Firmen- und Gangkonten öffnet. false = die Rangregeln oben. |
Config.EsxSocietyAccounts | true | ESX: Die Firmenkontostände sind die society_<job>-Konten von esx_addonaccount, Boss-Menüs und Rechnungen sehen also dasselbe Geld. |
Config.BossGrade | nil | ESX: Ranglevel des Bosses (und höher). nil = das Boss-Flag oder ein Rang namens boss. |
Config.GangMinGrade | false | Neben dem Gang-Boss der Gangrang (und höher), der das Gangkonto öffnet. false = nur der Boss. |
Config.GangMinGradeByGang | {} | Rang pro Gang, zum Beispiel { ballas = 3 }. |
Config.GangPermissionExport | hz_illegal, CanAccessGangBank | Optionaler Export, der über den Gangzugriff entscheidet, nur genutzt, solange seine Resource läuft. false = keiner. |
Gemeinsame Konten
| Schlüssel | Standard | Beschreibung |
Config.SharedAccounts | true | Spieler eröffnen gemeinsame Konten an einem Bankschalter. |
Config.SharedMaxOwned | 2 | Gemeinsame Konten, die ein Charakter besitzen darf. |
Config.SharedMaxMembers | 5 | Mitglieder pro gemeinsamem Konto, Besitzer nicht mitgezählt. |
Config.SharedNameMax | 32 | Längster Kontoname. |
Geplante Überweisungen
| Schlüssel | Standard | Beschreibung |
Config.MaxScheduledPerAccount | 10 | Aktive oder pausierte geplante Überweisungen pro Konto. 0 = keine Grenze. |
Config.ScheduleMaxRunsShared | 52 | Höchstzahl an Ausführungen einer geplanten Überweisung eines Firmen- oder Gangkontos. Diese brauchen immer eine Anzahl an Ausführungen. |
Bargeld geben
| Schlüssel | Standard | Beschreibung |
Config.GiveCash | true | Spieler geben Bargeld mit /givecash [id] <amount>; ohne ID geht es an den nächsten Spieler. false: Der Befehl wird nicht angelegt. |
Config.GiveCashCommand | 'givecash' | Name des Befehls. |
Config.GiveCashDistance | 3.0 | Höchstabstand zwischen den beiden Spielern, in Metern. |
Config.GiveCashMaxAmount | 0 | Größter Betrag. 0 = Config.MaxAmount. |
Banküberfälle
| Schlüssel | Standard | Beschreibung |
Config.BankClosure | true | Eine Bank schließt, während sie überfallen wird. |
Config.BankClosureMinutes | 30 | Sie öffnet spätestens nach dieser Zeit wieder. 0 = erst, wenn der Überfall endet. |
Config.RobberyBanks | Reihenfolge von qb-bankrobbery | Bank-ID des Überfall-Scripts → Banknummer in Config.Banks. |
Siehe Geschlossen während eines Überfalls.
Banken
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' },
},
-- ...
}
| Feld | Beschreibung |
coords | Wo der Spieler vor dem Bankberater steht. Der Server misst die Spieler ab diesem Punkt. |
brand | Look der App: 'fleeca', 'maze', 'pacific', 'blaine' oder 'union'. |
ped | Der Bankberater: model, coords (vec4 mit Blickrichtung) und name, der im Dialog erscheint. |
blip | Optional: ändert beliebige Felder von Config.Blip für diese Bank, oder false für keinen Blip. |
distance | Optional: Prompt-Abstand dieser Bank. |
| Schlüssel | Standard | Beschreibung |
Config.InteractDistance | 3.0 | Abstand, ab dem der Prompt eines Schalters aktiv wird. |
Config.InteractKey | 'E' | Im Prompt angezeigte Taste (nur Beschriftung). |
Config.Blip | Sprite 108, Farbe 2, Größe 0.9, Label Bank | Blip jeder Bank. enabled = false blendet sie aus. |
Config.BlipColorByBrand | Maze 1, Fleeca 2, Pacific 46, Blaine 76, Union 29 | Blip-Farbe jeder Bankmarke. |
Config.BankPedModel | 'a_m_m_business_01' | Modell des Bankberaters, wenn eine Bank keines festlegt. |
Config.BankPedDistance | 60.0 | Meter, ab denen Bankberater erscheinen. |
Config.SessionIdleTimeout | 900 | Sekunden ohne Aktion, bevor die App schließt. |
Mehr unter Banken & Bankberater.
Bankberater & Dialog
| Schlüssel | Standard | Beschreibung |
Config.StaffVoice.enabled | true | Bankberater sprechen. |
Config.StaffVoice.language | 'en' | 'en', 'fr' oder 'auto' (die Sprache von Config.Locale). |
Config.StaffVoice.greetDistance | 5.0 | Meter, ab denen der Bankberater den Spieler begrüßt. |
Config.StaffVoice.greetCooldown | 300 | Sekunden, bevor derselbe Bankberater denselben Spieler wieder begrüßt. |
Config.StaffVoice.lookDistance | 6.0 | Meter, ab denen der Bankberater dem Spieler mit dem Blick folgt. |
Config.Dialogue.enabled | true | Ein Gespräch mit dem Bankberater öffnet die Dialogbox. false: Die Bank-App öffnet sich sofort. |
Config.Dialogue.camera | true | Die Kamera rahmt den Bankberater ein, solange der Dialog offen ist. |
Geldautomaten
| Schlüssel | Standard | Beschreibung |
Config.AtmModels | prop_atm_01, prop_atm_02, prop_atm_03, prop_fleeca_atm | Geldautomaten-Modelle. Jedes Prop dieser Modelle auf der Karte ist ein Geldautomat. |
Config.AtmDistance | 1.5 | Meter zu einem Geldautomaten, ab denen sein Prompt erscheint. |
Config.AtmUse.walk | true | Der Spieler geht zum Geldautomaten. false: Er bleibt stehen. |
Config.AtmUse.card | true | Geldautomaten des Spiels: Der Spieler schiebt seine Karte ein, bevor sich der Bildschirm öffnet. |
Config.AtmUse.view | 'screen' | Geldautomaten des Spiels: 'screen' blickt auf Bildschirm und Tastenfeld, 'shoulder' über die Schulter des Spielers. |
Config.AtmUse.finger | true | Die Hand des Spielers auf dem Tastenfeld, der Finger auf der Taste unter dem Cursor. |
Config.AtmUse.cardModel | false | Ein Karten-Prop für alle. false = die Karte der eigenen Bank des Spielers. |
Config.AtmUse.animTime | 2.0 | Von Ihnen hinzugefügte Geldautomaten-Modelle: Sekunden Kartenanimation, bevor sich der Bildschirm öffnet. 0 = keine. |
Config.AtmPositions | leer | Optionale Liste erlaubter Geldautomaten-Positionen (vec3). Leer = jeder Geldautomat der Modelle oben. |
Config.AtmPositionTolerance | 1.5 | Meter zwischen einem Geldautomaten und seiner gelisteten Position. |
Config.AtmBrand | 'fleeca' | Bank der Geldautomaten: Look des Vollbild-Geldautomaten (von Ihnen hinzugefügte Modelle) und Bank einer dort ausgegebenen kostenlosen ersten Karte. |
Config.AtmBrandByModel | prop_fleeca_atm = 'fleeca' | Dasselbe, pro Modell. |
Target, Sounds & HUD
| Schlüssel | Standard | Beschreibung |
Config.Target.bank | true | Target-Auge auf Bankberatern und ihrem Schalter (ox_target oder qb-target, über hz_lib). |
Config.Target.atm | true | Target-Auge auf Geldautomaten. |
Config.Target.distance | 2.0 | Reichweite des Auges, in Metern. |
Config.Target.pins | true | Mit laufendem HZ-TextUi: dessen Pins (in der Nähe sichtbar, ohne gedrückte Taste) statt des Auges. |
Config.Sounds | Sounds des Spiels | Sounds der App: Öffnen, Schließen, PIN richtig und falsch, Erfolg, Fehler, Tastenfeld, Hover, Klick, Seitenwechsel. enabled = false schaltet alle stumm; setzen Sie einen Eintrag auf false, um nur diesen stummzuschalten. |
Config.HideHud | true | Blendet das HUD aus, solange die App offen ist (HZ-Hud oder die Minimap des Spiels). |
Ohne Target-Resource zeigt hz_lib seinen eigenen [E]-Prompt.
Kosten & Limits
| Schlüssel | Standard | Beschreibung |
Config.IbanChangeCost | 5000 | Preis einer Wunsch-IBAN. |
Config.PinChangeCost | 1000 | Preis einer PIN-Änderung. Die erste PIN ist kostenlos. |
Config.CreditCardPrice | 250 | Preis einer Bankkarte. |
Config.TransferFeePct | 0.0 | Gebühr auf Überweisungen als Bruchteil (0.01 = 1 %), die die Bank einbehält. |
Config.MaxAmount | 100000000 | Größter Betrag einer einzelnen Operation. |
Kosten werden vom persönlichen Bankkonto abgebucht.
Sparkonto
C.Savings = {
InterestPct = 0.5,
PeriodHours = 24,
MaxBalance = 1000000,
MaxCatchUp = 7,
}
| Schlüssel | Beschreibung |
InterestPct | Zinsen pro Periode, in % des Guthabens, das die ganze Periode über gehalten wurde. |
PeriodHours | Echte Stunden zwischen zwei Zinszahlungen. |
MaxBalance | Höchstbetrag, den ein Charakter auf dem Sparkonto halten darf. 0 = keine Grenze. |
MaxCatchUp | Höchstzahl an Perioden, die nach einer Abwesenheit nachgezahlt werden. 0 = keine Grenze. |
So funktioniert es: Sparkonto & Kredite.
Kredite
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 },
}
| Schlüssel | Beschreibung |
Tiers | Ab diesem Kredit-Score: größter Kredit und seine Zinsen, in % des Betrags für den ganzen Kredit. |
MinAmount | Kleinster Kredit. |
Installments | Angebotene Rückzahlungspläne, als Anzahl der Raten. |
PeriodHours | Echte Stunden zwischen zwei Raten. |
LateFeePct | Wird bei jeder verpassten Rate zur Schuld addiert, in % einer Rate. |
DefaultAfter | Verpasste Raten in Folge, bevor der Kredit im Zahlungsausfall ist. |
UseSavings | Eine Rate, die das Bankkonto nicht deckt, wird vom Sparkonto genommen. |
Score | Startwert, Grenzen und gewonnene oder verlorene Punkte: pünktliche Rate, Kredit zurückgezahlt, verpasste Rate, Zahlungsausfall. |
So funktioniert es: Sparkonto & Kredite.
Rechnungen
Alles in config/billing.lua, unter C.Billing.
| Schlüssel | Standard | Beschreibung |
Command | 'invoice' | Chatbefehl, der eine Rechnung ausstellt. '' = kein Befehl. |
Jobs | nil | Jobs, die Rechnungen ausstellen dürfen, zum Beispiel { 'police', 'mechanic' }. nil = jeder Job mit Firmenkonto. |
MinGrade | 0 | Niedrigster Jobrang, der Rechnungen ausstellen darf. |
MinGradeByJob | {} | Rang pro Job, zum Beispiel { mechanic = 1 }. |
Gangs | true | Gangmitglieder dürfen für ihre Gang Rechnungen ausstellen. |
PlayerInvoices | false | Spieler dürfen anderen Spielern Rechnungen auf ihr eigenes Konto ausstellen. |
NoDecline | police, ambulance | Jobs, deren Rechnungen nicht abgelehnt werden können (Strafzettel). |
MaxAmount | 1000000 | Größte Rechnung. |
MaxPending | 20 | Unbezahlte Rechnungen, die ein Spieler gleichzeitig haben darf. |
Distance | 5.0 | Höchstabstand zwischen Aussteller und Empfänger, in Metern. |
DueDays | 7 | Echte Tage, bevor eine Rechnung überfällig ist. |
LateFeePct | 10 | Wird einmal bei Überfälligkeit addiert, in % des Betrags. 0 = keine. |
AutoCollect | true | Überfällige Rechnungen werden vom Bankkonto eingezogen, sobald es sie deckt. |
IssuerCommission | 0 | % einer Firmenrechnung, die an den ausstellenden Mitarbeiter gehen. |
ReasonMax | 96 | Behaltene Zeichen des Verwendungszwecks. |
PhoneBrand | 'maze' | Bank-Look der Bills-App auf dem Handy. |
Phones | qs-smartphone, lb-phone, hz_phone | Handys, die die Bills-App und Rechnungsbenachrichtigungen bekommen, wenn sie laufen. |
So funktioniert es: Rechnungen.
Kompatibilität
In config/compat.lua:
| Schlüssel | Standard | Beschreibung |
Config.Compat['qb-banking'] | true | Die Exports von qb-banking beantworten. false = aus. |
Config.Compat['Renewed-Banking'] | true | Dasselbe für Renewed-Banking. |
Config.Compat['esx_banking'] | true | Dasselbe für esx_banking. |
Config.Compat['okokBanking'] | true | Dasselbe für okokBanking. |
Config.Compat['esx_billing'] | true | Rechnungen aus ESX-Jobmenüs werden zu HZ-Banking-Rechnungen. |
Config.Compat['qb-management'] | 'auto' | Alte Geld-Exports von qb-management, nur solange kein qb-management läuft. |
Config.Compat.esxClientLog | false | Lässt Spieler über das Client-Event von esx_banking Zeilen in ihren eigenen Verlauf schreiben. |
Config.MigrationPriority | okok, renewed, qb, esx | Importquellen, von der vertrauenswürdigsten zur am wenigsten vertrauenswürdigen. |
Config.MigrationHistory | true | Auch die Verlaufszeilen importieren. |
Jedes Relais bleibt aus, solange die echte Resource dieses Namens läuft. Mehr unter Ihr Bank-Script ersetzen.
Im /hzpanel
Das Modul Banking im /hzpanel ändert die meisten Einstellungen live auf dem Server, in zwei Tabs:
- General — IBAN-Präfix; die Seiten Savings, Bills und Loans; Karten- und PIN-Regeln, Bargeldmodus, Firmen- und Gangränge, Qbox-Bankzugriff, ESX-Firmengeld; gemeinsame Konten;
/givecash und Bankschließung.
- Economy — Preise für IBAN, PIN und Karte, Überweisungsgebühr (in %), Höchstbetrag, Grenzen für geplante Überweisungen; Sparkonto; Kredite; Rechnungen (größte Rechnung, Tage bis zur Überfälligkeit, Säumniszuschlag, Einzug überfälliger Rechnungen, Provision für Mitarbeiter, niedrigster Rang für Rechnungen, Rechnungen von Gangs und Spielern, Abstand beim Ausstellen).
Insgesamt 48 Einstellungen, die sofort und ohne Neustart gelten. Die Dateien liefern die Startwerte. Ein im Panel gespeicherter Wert hat Vorrang vor der Datei. Banken, Geldautomaten, Stimmen, Sounds, Kreditstufen, der Kredit-Score, der Rechnungsbefehl und die Jobs, die Rechnungen ausstellen, sowie die Kompatibilität werden nur in den Dateien eingestellt.
Convars
| Convar | Beschreibung |
hz_banking_webhook | URL des Discord-Webhooks für das Geld-Log. |
hz_banking_pin_secret | Privates Geheimnis zum Speichern der PINs. Einmal setzen, bevor Spieler ihre PINs festlegen. |
Siehe Installation.