Dokumentation

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
  • /newsstand markiert 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

  1. Ressource im Cfx.re-Portal → Granted Assets herunterladen.
  2. Nach resources/[pepper]/pepper_newspaper entpacken. Den Ordnernamen pepper_newspaper nicht umbenennen – der ox_inventory-Eintrag ruft pepper_newspaper.useNewspaper auf, und andere Ressourcen nutzen exports.pepper_newspaper.
  3. In der server.cfg nach 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
  1. Datenbank: Die Tabelle pepper_newspaper_editions wird beim ersten Start automatisch angelegt. Manuell geht es über install/pepper_newspaper.sql (enthält auch das ESX-Item und auskommentiert den Job weazel).
  2. Item newspaper anlegen und install/newspaper.png in 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' },
  1. Job für die Redaktion: ESX – Job weazel mit dem SQL am Ende von install/pepper_newspaper.sql anlegen (Ränge 0 Reporter, 1 Redakteur, 2 Chefredakteur). QBCore bringt den Job reporter mit.
  2. In config/config.lua Sprache (Config.Locale, Standard 'en'), Preis und Jobs einstellen und den Server neu starten.

Erster Test

  1. Server starten – die Konsole meldet „Pepper Newspaper v1.1.0 gestartet (Framework: …)“.
  2. /newsstand eingeben und zum markierten Zeitungsautomaten gehen.
  3. Am Automaten die Auslage öffnen und die Beispielausgabe kaufen – sie landet als Item newspaper im Inventar.
  4. Das Item benutzen: Die Zeitung öffnet sich zum Lesen.
  5. Als Journalist (Job aus Config.Jobs) oder Admin /newspaper eingeben 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.