Anpassung
Alles, was du anpassen kannst, befindet sich in config.lua und in locales/. Der Rest der Ressource ist escrow-geschützt, abgesehen von den Oberflächen der Smartphone-App.
Welche Datei entscheidet was?
Abschnitt betitelt „Welche Datei entscheidet was?“| Datei | Was sie entscheidet | Bearbeitbar? |
|---|---|---|
config.lua | Framework, Geld, Fehlschlag-Chance, Polizei, App-Store-Eintrag, Drogen, Level, Zonen | Ja |
locales/*.lua | Die Benachrichtigungen auf dem Telefon, eine Datei pro Sprache | Ja |
locales/locales.lua | Die Locale-Tabelle, welche die Sprachdateien befüllen | Ja |
ui/img/ | Die Bilder der App: eines pro Droge, Startbildschirm-Logo und das App-Icon (icon.png) | Ja |
ui/index.html, ui/styles.css, ui/script.js | Bildschirme, Layout und Button-Texte der App | — |
player_data.json | Verkäufe, Level und Boni jedes Dealers. Wird von der Ressource geschrieben | Ja |
client/, server/ | Die interne Logik | Escrowed |
Es gibt keinen separaten Bridge-Ordner: Das Framework wird direkt über Config.Framework weiter unten ausgewählt.
Framework und Geld
Abschnitt betitelt „Framework und Geld“| Option | Was sie macht | Standard |
|---|---|---|
Config.Framework | "ESX" oder "QB" in Großbuchstaben. Nutze bei QBox "QB" — QBox führt QBCore-Ressourcen über seine Kompatibilität aus | "ESX" |
Config.esxResourceName | Der Ressourcenname von ESX, falls bei dir abweichend | "es_extended" |
Config.qbResourceName | Der Ressourcenname von QBCore, falls bei dir abweichend. Belasse bei QBox "qb-core" | "qb-core" |
Config.BlackMoney | Auszahlung in Schwarzgeld statt in sauberem Bargeld | true |
Config.MoneyAsItem | Auszahlung als Inventar-Item statt auf ein Konto | true |
Config.MoneyItem | Das ausgezahlte Item, wenn MoneyAsItem an und BlackMoney aus ist | "money" |
Was der Spieler tatsächlich erhält:
| ESX | QBCore / QBox | |
|---|---|---|
| Schwarzgeld als Item | Item black_money | Item blackmoney |
| Schwarzgeld auf Konto | Konto black_money | Item blackmoney |
| Sauberes Geld als Item | Item aus Config.MoneyItem | Item aus Config.MoneyItem |
| Sauberes Geld auf Konto | Bargeld | Bargeld |
Der Deal
Abschnitt betitelt „Der Deal“| Option | Was sie macht | Standard |
|---|---|---|
Config.Failure | Die Wahrscheinlichkeit (0 bis 100), dass der Käufer den Spieler nach dem Klopfen abweist. Die Ware bleibt beim Spieler | 55 |
Config.DealTimeout | Sekunden, um die Tür zu erreichen, bevor das Angebot abläuft | 300 |
Config.MinimumPolice | Mindestanzahl an Polizisten online, bevor jemand kauft. 0 schaltet die Prüfung ab | 1 |
Die verkaufte Menge wird zufällig zwischen minAmount und maxAmount der jeweiligen Droge ermittelt, sobald der Spieler auf SELL tippt; die Tür wird per Zufall aus den Zonen dieser Droge ausgewählt.
Polizei
Abschnitt betitelt „Polizei“| Option | Was sie macht | Standard |
|---|---|---|
Config.PoliceJobs | Als Polizei gewertete Berufe, die auch die Meldungen erhalten | police, sheriff |
Config.PoliceAlertChance | Wahrscheinlichkeit (0 bis 100), dass ein erfolgreicher Verkauf gemeldet wird | 20 |
Config.PoliceNotifyAppName | Titel der Benachrichtigung auf dem lb-phone der Beamten | "Police Dispatch" |
Config.PoliceBlipSprite | Der Karten-Blip am Ort des Verkaufs | 161 |
Config.PoliceBlipColor | Seine Farbe | 38 |
Config.PoliceBlipScale | Seine Größe | 1.0 |
Config.PoliceBlipDuration | Sekunden, bis der Blip von der Karte verschwindet | 120 |
Config.PriceMultipliers | Preisstaffeln nach Anzahl anwesender Polizisten, jeweils mit minPolice, maxPolice und multiplier | Siehe unten |
Standardstaffeln: 1–2 Beamte ×1.0, 3–4 ×1.2, 5–6 ×1.4, 7–9 ×1.6, 10 oder mehr ×2.0. Liegt die Anzahl der Polizisten in keinem definierten Bereich, bleibt der Multiplikator bei ×1.0.
Preisberechnung: Level-Bonus und Polizei-Bonus werden addiert, nicht multipliziert: Ein Level-5-Dealer (×1.5), der bei sechs anwesenden Polizisten (×1.4) verkauft, erhält 1 + 0.5 + 0.4 = ×1.9 des Basispreises.
Jeder Beamte mit einem in PoliceJobs geführten Job erhält die Meldung; es gibt keine Überprüfung des Dienststatus (On-Duty).
Wer die App sieht
Abschnitt betitelt „Wer die App sieht“| Option | Was sie macht | Standard |
|---|---|---|
Config.BlockedAppJobs | Berufe, welche die App weder sehen noch installieren können. Geprüft beim Login und bei jedem Jobwechsel | police, sheriff, ambulance, mechanic |
Der App-Store-Eintrag
Abschnitt betitelt „Der App-Store-Eintrag“| Option | Was sie macht | Standard |
|---|---|---|
Config.name | Name der App auf dem Telefon | "Drug Dealer" |
Config.description | Untertitel im App Store | "Deal dope, dodge the cops" |
Config.defaultApp | true installiert sie vorab auf jedem Telefon; false erfordert das Herunterladen im App Store | false |
Config.size | Im Store angezeigte Dateigröße in KB | 25400 |
Config.price | Installationskosten | 0 |
Das App-Icon ist ui/img/icon.png. Ersetze die Datei, um das Icon zu ändern.
Config.drugs ist eine Liste; jeder Eintrag entspricht einem Button in der App.
| Feld | Was es macht |
|---|---|
item | Das Inventar-Item, das verkauft wird |
label | Der in der App und in Benachrichtigungen angezeigte Name |
price | Stückpreis vor Boni |
minAmount, maxAmount | Spanne, aus der die Menge jedes Deals gezogen wird |
zones | Zonen aus Config.NPCLocations, in denen Käufer sein können |
image | Dateiname in ui/img/ |
minLevel | Benötigtes Dealer-Level für den Verkauf |
Um eine Droge hinzuzufügen, erstelle einen Eintrag, lege das Bild in ui/img/ ab und stelle sicher, dass das Item in deinem Inventar existiert. Bereits vorhandene Bilder der Standardliste: baggy_weed.png, baggy_cocaine.png, lsd.png, baggy_meth.png, mushroom.png, opium.png, crack.png, drug_heroin.png, xtc_baggy.png, oxy.png, drug_lean.png, drug_hash.png.
Config.levels listet die Ränge der Reihe nach auf. Jeder Rang besitzt eine level-Nummer, einen Namen name, salesRequired (Gesamtzahl an Deals, nicht Einheiten) und einen bonusMultiplier.
| Level | Name | Verkäufe | Bonus |
|---|---|---|---|
| 1 | Newbie | 0 | ×1.0 |
| 2 | Rookie | 25 | ×1.1 |
| 3 | Hustler | 75 | ×1.2 |
| 4 | Dealer | 150 | ×1.35 |
| 5 | Trader | 300 | ×1.5 |
| 6 | Boss | 600 | ×1.75 |
| 7 | Kingpin | 1200 | ×2.0 |
| 8 | Overlord | 2000 | ×2.25 |
| 9 | Tycoon | 3500 | ×2.5 |
| 10 | Legend | 5000 | ×3.0 |
Behalte die aufsteigende Reihenfolge nach salesRequired bei; das Level wird durch Durchlaufen der Liste ermittelt.
| Option | Was sie macht | Standard |
|---|---|---|
Config.dataFile | Datei im Ressourcenordner, die den Fortschritt jedes Dealers speichert | "player_data.json" |
Der Fortschritt wird pro Charakter gespeichert: ESX-Identifier oder QBCore Citizen ID.
Config.NPCLocations ist nummeriert; auf diese Nummern bezieht sich das zones-Feld der Drogen. Jede Zone enthält:
| Feld | Was es macht |
|---|---|
peds | Ped-Modelle, von denen eines zufällig an die Tür tritt |
locations | Tür-Positionen (x, y, z und Blickrichtung/Heading) |
| Zone | Gebiet | Mitgelieferte Türen |
|---|---|---|
| 1 | Grove | 1 |
| 2 | Pier und Strand | 10 |
| 3 | Vinewood-Häuser | 10 |
| 4 | Sandy Shores | 8 |
| 5 | Paleto Bay | 9 |
Du kannst Zonen und Türen nach Belieben ergänzen. Wichtig zu wissen: Der Zonen-Name im Polizeialarm stammt fest aus der Ressource und kennt nur die Zonen 1 bis 5; jede neu angelegte Zone wird als “Unknown Zone” gemeldet.
Sprachen
Abschnitt betitelt „Sprachen“Neun Sprachen werden in locales/ mitgeliefert: en, es, fr, de, it, pt, pl, ru und tr. Setze Config.Locale auf eine davon.
So fügst du eine neue Sprache hinzu:
- Kopiere
locales/en.luain eine neue Datei, z. B.locales/nl.lua. - Ändere den Sprachcode am Dateianfang auf
nlund übersetze die Texte. - Füge
locales/nl.luazur Listeshared_scriptsinfxmanifest.luaneben den anderen und oberhalb vonconfig.luaein. - Setze
Config.Locale = "nl", führerefreshaus und starte die Ressource neu.
Die Locales steuern die Telefon-Benachrichtigungen. Die Schaltflächen der App selbst — DRUGS, PROFILE, SELL, CANCEL sowie der Profilbildschirm — sind direkt in ui/script.js und ui/index.html hinterlegt.