Dokumentation

Pepper RP-Commands

Kostenlose Roleplay-Befehle mit modernen Sprechblasen – /me, /do, /try, /status, /whisper, /shout und mehr. Standalone.

Kostenlos und Open Source: https://github.com/PepperScripts/pepper_rpcommands

Überblick

Pepper RP-Commands bringt zehn Roleplay-Befehle wie /me, /do, /try und /status auf deinen Server. Der Text erscheint als Sprechblase über dem Kopf und auf Wunsch als Zeile im Chat – aber nur bei Spielern in Reichweite und, wenn du willst, nur bei Sichtkontakt. Würfel, Münze und /try entscheidet der Server, damit niemand ein Ergebnis fälschen kann. Läuft Standalone und holt sich den Charakternamen aus ESX, QBCore oder Qbox, wenn vorhanden.

Features

  • 10 Befehle: /me, /do, /try, /roll, /dice, /coin, /status, /looc, /whisper, /shout
  • Moderne Sprechblasen über dem Kopf mit Symbol je Befehl – oder minimal (Text mit Schatten) bzw. classic (GTA-Schrift)
  • /status hält einen Text über dem Kopf (z. B. „verletzt“), bis du ihn entfernst oder die Zeit abläuft
  • Mehrere Texte stapeln sich über einem Spieler, lange Texte werden umgebrochen
  • Charaktername aus ESX, QBCore oder Qbox in der Chat-Zeile – wird automatisch erkannt
  • /try, /roll, /dice und /coin entscheidet der Server – niemand kann ein Ergebnis fälschen
  • Nur Spieler in Reichweite bekommen den Text (gleiche Dimension); auf Wunsch nur bei Sichtkontakt, also nicht durch Wände
  • Discord-Webhook-Protokoll, Wortfilter, Admin-Befehle zum Entfernen von Texten und Sperren von Spielern
  • Exports für andere Ressourcen
  • Englisch, Deutsch, Französisch, Spanisch und Niederländisch
  • Keine Abhängigkeiten; die Zeichenschleife läuft nur, solange ein Text oder Status aktiv ist

Voraussetzungen

Abhängigkeit Pflicht/optional Wofür Link
FiveM-Server (fx_version 'cerulean', Lua 5.4) Pflicht Läuft die Ressource https://docs.fivem.net/docs/server-manual/setting-up-a-server/
ESX Legacy, QBCore oder Qbox optional Charaktername in der Chat-Zeile und Admin-Gruppen; ohne Framework FiveM-Name + ACE –
Chat-Ressource (Standard-Chat oder z. B. Pepper Chat) optional Chat-Zeile, Hinweise und Befehlsvorschläge (chat:addMessage, chat:addSuggestion) Pepper Chat
OneSync optional Mit OneSync schickt der Server Texte nur an Spieler in Reichweite; ohne an alle, der Client prüft die Entfernung selbst –
Datenbank nicht nötig Keine Datenbank, kein oxmysql – Status und Sperren liegen im Speicher des Servers –

Installation

  1. Ordner pepper_rpcommands in deinen resources-Ordner legen. Den Ordnernamen nicht umbenennen – die Exports heißen exports.pepper_rpcommands:….
  2. In der server.cfg eintragen, nach deinem Framework und deinem Chat:
    ensure es_extended      # oder qb-core / qbx_core – optional
    ensure chat             # oder pepper_chat
    ensure pepper_rpcommands
    
  3. Andere Ressourcen entfernen, die /me oder /do anlegen – sonst antworten beide.
  4. Config.Locale in der config.lua setzen und den Server neu starten.
  5. Optional – Admin-Rechte per ACE:
    add_ace group.admin pepperrp.admin allow
    

Update von 1.x: den ganzen Ordner ersetzen. Hast du die config.lua geändert, übertrage deine Werte in die neue Datei – die neuen Befehle erscheinen nur mit der neuen Config. config_server.lua ist neu und gehört dazu.

Erster Test

  1. Im Spiel /me öffnet den Kofferraum eingeben – über deinem Kopf erscheint eine Sprechblase, im Chat eine Zeile.
  2. /try das Schloss knacken – der Server entscheidet „gelingt“ oder „misslingt“.
  3. /dice 2d6 – zwei Würfel mit Einzelergebnissen und Summe.
  4. /status verletzt setzt einen Dauertext, /status ohne Text entfernt ihn.
  5. Mit einem zweiten Spieler: /whisper hier drüben ist nur innerhalb von 3 m zu sehen.

Konfiguration

Datei Steuert
config.lua Sprache, Stil, Größe, Reichweite, Dauer, Stapel, Sichtprüfung, Länge, Wartezeit, Chat, Name, alle Befehle (wird an die Spieler geschickt)
config_server.lua Webhook, Konsolenprotokoll, Wortfilter, Admin-Gruppen und -Befehle (nur auf dem Server)
locales/*.json Texte über dem Kopf, Chat-Zeilen und Hinweise je Sprache
html/style.css Aussehen der Sprechblasen (Stile modern und minimal)

Allgemein

Option Standard Beschreibung
Config.Locale 'en' en, de, fr, es oder nl
Config.Style 'modern' modern (Sprechblase mit Symbol), minimal (Text mit Schatten) oder classic (GTA-Schrift wie Version 1)
Config.Scale 1.0 Größe der Sprechblasen
Config.Distance 15.0 Standard-Reichweite in Metern
Config.Duration 7000 So lange bleibt ein Text über dem Kopf (Millisekunden)
Config.MaxStack 3 Texte, die sich über einem Spieler stapeln; ältere verschwinden
Config.RequireLineOfSight true Text nur bei Sichtkontakt (nicht durch Wände)
Config.MaxLength 150 Höchstlänge einer Eingabe (bis 250)
Config.Cooldown 1500 Wartezeit zwischen zwei Befehlen je Spieler (ms)
Config.Chat true Zusätzlich eine Chat-Zeile für alle in Reichweite
Config.NameMode 'character' character (Name aus ESX/QBCore/Qbox, sonst FiveM-Name) oder fivem
Config.GetName nil Eigene Namensfunktion (läuft auf dem Server, ersetzt NameMode)

Befehle

Config.Commands = {
    me      = { enabled = true, name = 'me',      color = { 255, 196, 107 }, icon = 'me' },
    try     = { enabled = true, name = 'try',     color = { 196, 160, 255 }, icon = 'try', chance = 50 },
    status  = { enabled = true, name = 'status',  color = { 200, 205, 215 }, icon = 'status', maxLength = 60, maxMinutes = 60 },
    whisper = { enabled = true, name = 'whisper', color = { 190, 215, 230 }, icon = 'whisper', distance = 3.0 },
    -- …
}
Feld Beschreibung
enabled false schaltet den Befehl ab
name Befehlsname ohne /
color Farbe als { Rot, Grün, Blau } (0–255)
icon me, do, try, dice, coin, status, ooc, whisper, shout
distance Eigene Reichweite (sonst Config.Distance); whisper 3 m, shout 35 m
overhead / chat false blendet Sprechblase bzw. Chat-Zeile für diesen Befehl aus
chance (try) Erfolgschance in Prozent, Standard 50
default / max (roll) Seiten ohne Angabe 6, höchstens 1000
maxDice / maxSides (dice) Höchstens 10 Würfel mit je 100 Seiten
maxLength / maxMinutes (status) Statustext bis 60 Zeichen, läuft nach 60 Minuten ab (0 = bis zum Ausloggen)

Server-Einstellungen (config_server.lua)

Option Standard Beschreibung
ServerConfig.Webhook '' Discord-Webhook für das Protokoll aller RP-Befehle (Name, Server-ID, Lizenz), '' = aus
ServerConfig.ConsoleLog false Jede Zeile zusätzlich in der Server-Konsole
ServerConfig.Filter.mode 'censor' censor (Sternchen), block (Befehl verwerfen) oder off
ServerConfig.Filter.words leer Gefilterte Wörter (Groß-/Kleinschreibung egal)
ServerConfig.Admin.groups { 'god', 'superadmin', 'admin', 'mod' } Framework-Gruppen mit Admin-Befehlen
ServerConfig.Admin.commands rpclear, rpmute, rpunmute Namen der Admin-Befehle
ServerConfig.Admin.defaultMuteMinutes 30 Sperrdauer ohne Angabe (1 bis 10080 Minuten)

Befehle und Rechte

Befehl Wer Beispiel → über dem Kopf
/me [Text] alle /me öffnet den Kofferraum → öffnet den Kofferraum
/do [Text] alle /do Die Tür ist abgeschlossen.
/try [Text] alle /try das Schloss knacken → versucht: das Schloss knacken – gelingt / misslingt
/roll [Seiten] alle /roll 20 → würfelt 14 (1–20)
/dice [Würfel] alle /dice 2d6 → 3 + 5 = 8 (auch d20 oder 3 = 3d6)
/coin alle wirft eine Münze: Kopf
/status [Text] alle Dauertext; /status allein entfernt ihn
/looc [Text] alle (( brb )) – lokaler OOC-Chat
/whisper [Text] alle nur innerhalb von 3 m sichtbar
/shout [Text] alle sichtbar innerhalb von 35 m
/rpclear [ID] Admin Texte und Status eines Spielers entfernen – ohne ID von allen
/rpmute ID [Minuten] Admin RP-Befehle für einen Spieler sperren (bleibt nach Reconnect)
/rpunmute ID Admin Sperre aufheben

Admin ist, wer das ACE-Recht pepperrp.admin hat, eine Gruppe aus ServerConfig.Admin.groups (ESX-Gruppe, QBCore-Recht oder ACE-Gruppe bei Qbox) oder die Server-Konsole. RP-Befehle selbst gehen nicht von der Konsole. Tasten gibt es keine.

Exports und Events

-- Server
exports.pepper_rpcommands:ShowText(source, 'öffnet den Tresor', { color = { 255, 196, 107 }, icon = 'me', duration = 5000, distance = 10.0 })
exports.pepper_rpcommands:SetStatus(source, 'gefesselt', 10) -- Minuten optional
exports.pepper_rpcommands:ClearStatus(source)
exports.pepper_rpcommands:GetStatus(source)  -- Text oder nil
exports.pepper_rpcommands:IsMuted(source)    -- true / false

-- Client
exports.pepper_rpcommands:ShowLocalText(serverId, 'nur du siehst das', { icon = 'do' })
exports.pepper_rpcommands:SetHidden(true) -- alles ausblenden, z. B. für einen Kinomodus
Seite Export Wirkung
Server ShowText(source, text, options) Sprechblase über einem Spieler für alle in Reichweite; options.chat = eigene Chat-Zeile
Server SetStatus(source, text, minutes) / ClearStatus(source) / GetStatus(source) Dauertext setzen, entfernen, abfragen
Server IsMuted(source) Ist der Spieler für RP-Befehle gesperrt?
Client ShowLocalText(serverId, text, options) Sprechblase nur für diesen Spieler
Client SetHidden(bool) Alle Texte aus-/einblenden

Symbole: me, do, try, dice, coin, status, ooc, whisper, shout, chat.

FAQ

/me antwortet doppelt – was tun?

Eine andere Ressource legt /me oder /do ebenfalls an (oft ein altes RP-Script oder ein Framework-Modul). Entferne sie oder benenne die Befehle hier über name in Config.Commands um.

Ich sehe die Sprechblase, aber keine Chat-Zeile?

Die Chat-Zeile kommt über chat:addMessage – es muss eine Chat-Ressource laufen (Standard-Chat oder Pepper Chat). Außerdem prüfen: Config.Chat = true und beim Befehl nicht chat = false.

Warum sehe ich die Texte anderer Spieler nicht?

Du musst in Reichweite sein (Standard 15 m, whisper 3 m) und in derselben Dimension (Routing-Bucket). Bei Config.RequireLineOfSight = true verschwinden Texte hinter Wänden – zum Testen auf false stellen.

Brauche ich eine Datenbank?

Nein. Status und Sperren liegen im Speicher des Servers. Eine Sperre gilt über die Lizenz auch nach einem Reconnect, endet aber mit einem Neustart der Ressource oder des Servers.

Wie lange bleibt ein /status?

Bis der Spieler /status ohne Text eingibt, sich ausloggt oder maxMinutes abläuft – Standard 60 Minuten. Mit maxMinutes = 0 bleibt er bis zum Ausloggen.

Wie zeige ich den Charakternamen statt des FiveM-Namens?

Config.NameMode = 'character' (Standard) holt den Namen aus Qbox, QBCore oder ESX. Für andere Frameworks setzt du Config.GetName = function(source) … end – die Funktion läuft auf dem Server.

Wie ändere ich Farben und Aussehen?

Die Farbe je Befehl steht in Config.Commands (color), den Stil wählst du mit Config.Style, die Größe mit Config.Scale. Feinheiten der Sprechblase änderst du in html/style.css.

Wie ändere ich die Texte?

In locales/<sprache>.json, z. B. die Zeilen über dem Kopf (overhead_…) und im Chat (chat_…).

Kann ein Spieler das Ergebnis von /try oder /dice fälschen?

Nein. Die Zufallszahlen zieht der Server, der Client zeigt nur das Ergebnis an. Die Erfolgschance von /try stellst du mit chance ein.

Wie benutze ich die Sprechblasen aus meinem eigenen Script?

Auf dem Server exports.pepper_rpcommands:ShowText(source, 'Text', { icon = 'me' }), für einen Dauertext SetStatus(source, 'gefesselt', 10). Details unter „Exports und Events“.

Werden Farbcodes oder HTML im Text angezeigt?

Nein. Der Server entfernt Steuerzeichen, GTA-Codes (~r~), Chat-Farbcodes (^1) und spitze Klammern, bevor der Text verteilt wird.

Wie protokolliere ich alle RP-Befehle in Discord?

Webhook-URL in config_server.lua bei ServerConfig.Webhook eintragen. Die Datei bleibt auf dem Server.

Wie update ich Pepper RP-Commands?

Ordner ersetzen, vorher config.lua und config_server.lua sichern und deine Werte in die neuen Dateien übertragen. Änderungen stehen in der CHANGELOG.md im Ressourcen-Ordner.

Support

Fragen oder Fehler? Öffne ein Ticket in unserem Discord: https://discord.gg/6NaFJWKDYu – verknüpfe deinen Kauf vorher mit /verify. Den Quellcode findest du auf GitHub: https://github.com/PepperScripts/pepper_rpcommands

Permanent auf dem Dev-Server von Pepper Scripts getestet.

Changelog

Aktuelle Version 2.0.0: Sprechblasen mit drei Stilen, /status, /looc, /whisper, /shout, /coin, /dice, Charaktername, Webhook, Admin-Befehle, Wortfilter, Exports und drei neue Sprachen. Alle Änderungen stehen in der CHANGELOG.md im Ressourcen-Ordner.


Fehler gefunden? Melde ihn im Discord.