Pepper Newspaper
Zeitungsautomaten, Zeitungs-Item und Redaktion für Journalisten – ESX & QBCore.
Überblick
Pepper Newspaper bringt eine Tageszeitung auf deinen Roleplay-Server. Journalisten schreiben im Redaktions-Menü eigene Ausgaben mit Artikeln und Bildern, Spieler kaufen die Zeitung an den Zeitungsautomaten der Stadt. Die Zeitung landet als Item im Inventar, bleibt dort und kann beliebig oft gelesen werden. Das Script ist kostenlos.
Features
- Kauf an allen GTA-Zeitungsautomaten (ox_target, qb-target oder Taste E) – mit Auslage der aktuellen und bis zu 3 älteren Ausgaben
- Zeitungs-Item mit gespeicherter Ausgabe (ox_inventory, qb-inventory, ESX-Standardinventar), Lesezeichen beim erneuten Öffnen
- Redaktion: bis zu 8 Artikel je Ausgabe, Bilder, Vorschau, Veröffentlichen, Archivieren
- Beispielausgabe mit 8 Artikeln, solange die Redaktion noch nichts veröffentlicht hat
/newsstandmarkiert den nächsten Automaten auf Karte und Minimap- Rechte pro Job und Rang, ACE-Recht für Admins, alle Prüfungen serverseitig
- Benachrichtigung aller Spieler bei neuer Ausgabe, optionaler Discord-Webhook
Voraussetzungen
| Abhängigkeit | Pflicht/optional | Wofür | Link |
|---|---|---|---|
| FiveM-Server-Build 7290+ | Pflicht | in fxmanifest.lua als /server:7290 hinterlegt; OneSync ist nicht nötig |
https://docs.fivem.net/docs/server-manual/setting-up-a-server/ |
ESX Legacy (es_extended) oder QBCore (qb-core) |
Pflicht (eins davon) | Spieler, Geld, Jobs, Item; automatisch erkannt (Config.Framework = 'auto') |
https://github.com/esx-framework/esx_core · https://github.com/qbcore-framework/qb-core |
| oxmysql | Pflicht | Datenbank (Ausgaben) | https://github.com/overextended/oxmysql |
| ox_target oder qb-target | optional | Interaktion am Automaten; ohne Target: Hinweistext mit Taste E | https://github.com/overextended/ox_target |
| ox_inventory oder qb-inventory | optional | Item mit gespeicherter Ausgabe (Metadaten); im ESX-Standardinventar wird die Zeitung beim Lesen verbraucht | https://github.com/overextended/ox_inventory |
Installation
- Ressource im Cfx.re-Portal → Granted Assets herunterladen.
- Nach
resources/[pepper]/pepper_newspaperentpacken. Den Ordnernamenpepper_newspapernicht umbenennen – der ox_inventory-Eintrag ruftpepper_newspaper.useNewspaperauf, und andere Ressourcen nutzenexports.pepper_newspaper. - In der
server.cfgnach Framework, Inventar und Target eintragen:
ensure oxmysql
ensure es_extended # oder: ensure qb-core
ensure ox_inventory # optional
ensure ox_target # optional
ensure pepper_newspaper
- Datenbank: Die Tabelle
pepper_newspaper_editionswird beim ersten Start automatisch angelegt. Manuell geht es überinstall/pepper_newspaper.sql(enthält auch das ESX-Item und auskommentiert den Jobweazel). - Item
newspaperanlegen undinstall/newspaper.pngin den Bilder-Ordner deines Inventars kopieren:
| Inventar | Datei | Eintrag | Bild nach |
|---|---|---|---|
| ox_inventory | ox_inventory/data/items.lua |
siehe unten (mit server = { export = 'pepper_newspaper.useNewspaper' }) |
ox_inventory/web/images/ |
| qb-inventory | qb-core/shared/items.lua |
siehe unten (unique = true, useable = true) |
qb-inventory/html/images/ |
| ESX-Standardinventar | Datenbank | INSERT IGNORE INTO items (name, label, weight) VALUES ('newspaper', 'Zeitung', 1); |
– |
-- ox_inventory/data/items.lua
['newspaper'] = {
label = 'Zeitung',
weight = 100,
stack = false,
close = true,
server = { export = 'pepper_newspaper.useNewspaper' },
},
-- qb-core/shared/items.lua
newspaper = { name = 'newspaper', label = 'Zeitung', weight = 100, type = 'item', image = 'newspaper.png', unique = true, useable = true, shouldClose = true, description = 'Die aktuelle Ausgabe' },
- Job für die Redaktion: ESX – Job
weazelmit dem SQL am Ende voninstall/pepper_newspaper.sqlanlegen (Ränge 0 Reporter, 1 Redakteur, 2 Chefredakteur). QBCore bringt den Jobreportermit. - In
config/config.luaSprache (Config.Locale, Standard'en'), Preis und Jobs einstellen und den Server neu starten.
Erster Test
- Server starten – die Konsole meldet „Pepper Newspaper v1.1.0 gestartet (Framework: …)“.
/newsstandeingeben und zum markierten Zeitungsautomaten gehen.- Am Automaten die Auslage öffnen und die Beispielausgabe kaufen – sie landet als Item
newspaperim Inventar. - Das Item benutzen: Die Zeitung öffnet sich zum Lesen.
- Als Journalist (Job aus
Config.Jobs) oder Admin/newspapereingeben und eine eigene Ausgabe veröffentlichen.
Konfiguration
Alle Einstellungen liegen offen (per Asset Escrow lesbar und editierbar):
| Datei | Steuert |
|---|---|
config/config.lua |
Sprache, Framework, Automaten (Preis, Konto, Interaktion, Modelle), Item, Nachkauf, /newsstand, Redaktion (Jobs, ACE, Orte), Beispielausgabe, Längen, Bild-Hoster |
config/server.lua |
nur serverseitig: Discord-Webhook, Kauf-Logs, Update-Hinweis |
config/demo.lua |
Inhalt der Beispielausgabe (DE und EN) |
locales/de.json, locales/en.json |
alle Texte im Spiel und in der Oberfläche |
bridge/ |
Framework-Anbindung ESX/QBCore (offen, bei Bedarf anpassbar) |
Automaten und Item
Config.Price = 5
Config.Account = 'money'
Config.Interaction = 'auto'
Config.Item = 'newspaper'
Config.ConsumeOnRead = false
Config.BackIssues = 3
| Option | Standard | Beschreibung |
|---|---|---|
Config.Locale |
'en' |
Sprache (de oder en) |
Config.Framework |
'auto' |
auto, esx oder qbcore |
Config.Price |
5 |
Preis pro Zeitung (0 = kostenlos) |
Config.Account |
'money' |
money (Bargeld) oder bank |
Config.Interaction |
'auto' |
auto (ox_target → qb-target → Taste), ox_target, qb-target oder key |
Config.InteractKey |
38 |
Taste E (nur bei key) |
Config.VendingModels |
10 GTA-Modelle | Automaten-Modelle, weitere einfach ergänzen |
Config.Item |
'newspaper' |
Name des Items |
Config.ConsumeOnRead |
false |
true = Zeitung nach dem Lesen verbraucht |
Config.BackIssues |
3 |
ältere Ausgaben am Automaten (0–10) |
Config.FindCommand |
'newsstand' |
Befehl für den nächsten Automaten (false = aus) |
Config.StandLocations |
leer | feste Automaten-Standorte für /newsstand (optional) |
Redaktion und Inhalte
Config.Jobs = {
weazel = { write = 0, publish = 0, manage = 2 },
reporter = { write = 0, publish = 0, manage = 0 },
}
Config.EditorAce = 'pepper.newspaper.editor'
| Option | Standard | Beschreibung |
|---|---|---|
Config.Jobs |
weazel, reporter |
ab welchem Rang write (schreiben), publish (veröffentlichen), manage (löschen/archivieren) |
Config.EditorAce |
'pepper.newspaper.editor' |
ACE-Recht für vollen Zugriff unabhängig vom Job |
Config.EditorCommand |
'newspaper' |
Befehl für die Redaktion |
Config.EditorLocations |
leer | Orte, an denen die Redaktion zusätzlich per Interaktion öffnet |
Config.AnnounceNewEdition |
true |
alle Spieler bei neuer Ausgabe benachrichtigen |
Config.DemoEdition |
true |
Beispielausgabe, solange keine eigene veröffentlicht ist |
Config.MaxArticles |
8 |
Artikel je Ausgabe |
Config.MaxBodyLength |
3000 |
Zeichen je Artikeltext |
Config.ImageHosts |
Imgur, Discord, Fivemanage, ImgBB | erlaubte Bild-Hoster (nur https); zusätzlich eigene Bilder aus html/img/ |
Server-Einstellungen
ServerConfig.LogWebhook = '' -- Discord-Webhook für Veröffentlichungen, Löschungen, Käufe ('' = aus)
ServerConfig.LogPurchases = false -- Käufe mitloggen
ServerConfig.VersionUrl = '' -- Update-Hinweis in der Konsole (lädt keinen Code nach)
Redaktion
/newspaper öffnet die Redaktion: Ausgabe anlegen, bis zu 8 Artikel mit Überschrift, Text und Bild schreiben, Vorschau
ansehen, veröffentlichen. Mit manage-Recht kannst du Ausgaben archivieren oder löschen. Die Beispielausgabe aus
config/demo.lua liegt an den Automaten, bis die Redaktion eine eigene Zeitung veröffentlicht – entfernen über
„Archivieren“, neu anlegen mit newspaperdemo.
Befehle und Rechte
| Befehl | Wer | Was |
|---|---|---|
/newspaper |
Journalisten (Config.Jobs), ACE pepper.newspaper.editor |
Redaktion öffnen |
/newsstand |
alle | nächsten Zeitungsautomaten auf Karte und Minimap markieren |
newspaperdemo |
Server-Konsole oder ACE command.newspaperdemo |
Beispielausgabe erneut veröffentlichen |
E / Target |
alle | Auslage am Automaten öffnen |
add_ace group.admin pepper.newspaper.editor allow
add_ace group.admin command.newspaperdemo allow
Rechte in der Redaktion hängen am Job-Rang (write, publish, manage in Config.Jobs); das ACE-Recht gibt vollen
Zugriff. Alle Prüfungen laufen serverseitig.
Exports und Events
Server-Exports:
| Export | Rückgabe |
|---|---|
getCurrentEdition() |
aktuelle Ausgabe oder nil |
getVersion() |
Versionsnummer der Ressource |
useNewspaper |
nur für ox_inventory (Item-Eintrag server.export), nicht zum direkten Aufruf |
local edition = exports.pepper_newspaper:getCurrentEdition()
FAQ
Die Konsole meldet „Kein unterstütztes Framework gefunden“.
es_extended bzw. qb-core muss in der server.cfg vor pepper_newspaper starten. Alternativ das Framework mit
Config.Framework = 'esx' oder 'qbcore' fest einstellen.
Läuft Pepper Newspaper mit Qbox?
Offiziell unterstützt sind ESX Legacy und QBCore. Die Erkennung sucht die Ressourcen es_extended und qb-core; eine
eigene Anbindung kannst du in den offenen Dateien unter bridge/ ergänzen.
Die Tabelle fehlt in der Datenbank.
Sie wird beim ersten Start angelegt, wenn oxmysql läuft. Sonst install/pepper_newspaper.sql manuell importieren.
Das Item lässt sich nicht benutzen.
Bei ox_inventory muss der Item-Eintrag server = { export = 'pepper_newspaper.useNewspaper' } enthalten. Bei QBCore
braucht das Item useable = true.
Das Item hat kein Bild.
Kopiere install/newspaper.png in den Bilder-Ordner deines Inventars (z. B. ox_inventory/web/images/).
Die Zeitung verschwindet nach dem Lesen.
Im ESX-Standardinventar gibt es keine Item-Metadaten – dort wird die Zeitung immer verbraucht. Mit ox_inventory oder
qb-inventory bleibt sie, solange Config.ConsumeOnRead = false ist.
Die Redaktion öffnet sich nicht.
Prüfe Job und Rang in Config.Jobs oder vergib das ACE-Recht pepper.newspaper.editor.
Am Automaten passiert nichts.
Prüfe Config.Interaction: Bei 'key' drückst du E direkt am Automaten, bei ox_target/qb-target muss das Target-Script
vor pepper_newspaper starten. Eigene Automaten-Modelle ergänzt du in Config.VendingModels.
Ein Bild wird abgelehnt.
Nur https-Links von Hostern aus Config.ImageHosts sind erlaubt – oder eigene Bilder aus html/img/ der Ressource
(z. B. img/harbor.jpg).
Kann die Zeitung für Spieler kostenlos sein?
Ja – setze Config.Price = 0.
Kann ich einen anderen Job als weazel verwenden?
Ja. Trag deinen Job mit den gewünschten Rängen in Config.Jobs ein.
Wie ändere ich Texte oder die Sprache?
Sprache über Config.Locale (de oder en, Standard en); alle Texte stehen in locales/de.json und locales/en.json.
Wie viel Leistung braucht die Ressource?
Gemessen mit resmon: 0,00 ms im Leerlauf und 0,01 ms aktiv.
Gehen beim Update meine Ausgaben verloren?
Nein, Ausgaben liegen in der Datenbank. Sichere vor dem Update deine geänderten Dateien in config/, locales/ und
bridge/ und übertrage die Anpassungen in die neue Version. Einen Update-Hinweis in der Konsole aktivierst du über
ServerConfig.VersionUrl.
Support
Fragen und Fehler: Öffne ein Ticket in unserem Discord: https://discord.gg/6NaFJWKDYu – verknüpfe deinen Kauf vorher
mit /verify.
Permanent auf dem Dev-Server von Pepper Scripts getestet.
Changelog
Aktuelle Version: 1.1.0 (10.10.2026) – Auslage mit älteren Ausgaben, Zeitung bleibt nach dem Lesen im Inventar,
Lesezeichen, /newsstand, Beispielausgabe und eigene Bilder aus html/img/. Alle Änderungen stehen in der Datei
CHANGELOG.md im Ressourcenordner.
Fehler gefunden? Melde ihn im Discord.