Alle Beiträge

Discord-RP-Bot für Inventar, Shop und Bank: So führst du Bestände auf deinem Rollenspiel-Server (D&D, DayZ, GTA RP)

CordBase-Team

Für einen D&D- oder Rollenspiel-Server führst du eine CordBase-Tabelle für das Inventar der Spieler (eine Zeile pro Gegenstand, mit dem Besitzer daran) und eine für den Shop-Bestand (eine Zeile pro Gegenstand, mit einer Stückzahl). Spieler schlagen per Slash-Befehl nach, und das Staff ändert Stückzahlen mit /shop update ... _mode:Decrement. Es hält Bestände fest, es betreibt keinen Shop.

Die meisten Server fangen mit einer angehefteten Nachricht, einer Tabellenkalkulation oder einem Economy-Bot an. Die angeheftete Nachricht geht kaputt, wenn zwei Leute sie gleichzeitig bearbeiten, die Tabellenkalkulation liegt außerhalb von Discord, und Economy-Bots drehen sich darum, Dinge mit Punkten zu kaufen. Diese Anleitung richtet stattdessen einfache Einträge in Discord ein, mit CordBase, das wir selbst entwickeln. Inventar und Shop dauern etwa zehn Minuten.

Brauchen deine Spieler auch Charakterbögen, gibt dir die kostenlose Charakterbogen-Vorlage Bögen zum Kopieren für D&D 5e, Rollenspiel, Fantasy und Sci-Fi.

Was du am Ende hast

  • Einen Befehl /inventory (add, query, view, update, delete, leaderboard), der festhält, was jeder Charakter bei sich trägt.
  • Einen Befehl /shop, der festhält, was ein Händler vorrätig hat und zu welchem Preis.
  • Optional einen Befehl /bank mit Einlagen und Krediten pro Mitglied, als einfache Zahlen.
  • Rollenberechtigungen, mit denen Spieler nachschlagen und nur das Staff Stückzahlen ändern kann.

Schritt 1: Das Inventar pro Charakter einrichten

Der Inventar-Teil ist dieselbe Einrichtung wie in der Anleitung zur Gildenbank: Installier die Vorlage Inventar-Tracker (item, quantity, owner, rarity, notes), benenn den Slug in inventory um, gib Spielern Lesen und deiner Spielleitungs- oder Staff-Rolle Schreiben. Zwei Dinge sind auf einem Rollenspiel-Server wichtiger als bei einer Gildenbank.

Erstens lassen dich Befehle wie update und view eine Zeile aus einer Liste wählen, die nur die erste Textspalte der Tabelle zeigt. Haben Mara und Joss beide einen Healing Potion, bekommst du zwei identische Zeilen, also schreib den Besitzer in den Gegenstandsnamen: Healing Potion (Mara). Die Spalte owner filtert trotzdem weiter nach Mitglied.

Zweitens gilt die Schreibberechtigung für jede Zeile, nicht nur für die eigenen eines Spielers, also kann ein Spieler mit Schreibzugriff das Inventar von jedem bearbeiten. Behalte Schreiben dem Staff vor und gib Spielern Lesen.

/inventory add item:Healing Potion (Mara) quantity:3 owner:@Mara rarity:Common

/inventory update row:Healing Potion (Mara) quantity:1 _mode:Decrement

/inventory query owner:@Mara listet alles auf, was Mara hat. Query zeigt die neuesten Zeilen zuerst (standardmäßig 10, mit limit bis zu 25) und nur die ersten vier Spalten, also halte die wichtigen vorne. Erhöhen addiert, Verringern zieht ab, und Setzen (der Standard) ersetzt den Wert.

Schritt 2: Eine Tabelle für den Shop-Bestand hinzufügen

Der Free-Plan enthält zwei Tabellen, Inventar plus Shop passt also. Leg im Dashboard eine Tabelle namens Shop mit diesen Spalten an: item (Text, Pflichtfeld), stock (Zahl, Pflichtfeld), price (Zahl), category (Auswahl, mit eigenen Werten wie Weapons, Ammo, Medical) und notes (Text). Spaltentypen lassen sich nach dem Anlegen nicht mehr ändern, mach Stückzahlen und Preise also zu Zahlen.

  • /shop add item:Bandage stock:40 price:25 category:Medical
  • /shop update row:Bandage stock:1 _mode:Decrement hält einen Verkauf fest. Das Staff führt das aus, wenn im Rollenspiel ein Verkauf passiert.
  • /shop update row:Bandage stock:20 _mode:Increment hält eine Nachlieferung fest.
  • /shop update row:Bandage price:30 ändert den Preis.
  • /shop query stock:0 listet ausverkaufte Gegenstände auf (ein exakter Treffer, kein „weniger als“).

_mode gilt für jede Zahl, die du in einem Befehl angibst. Schickst du stock und price zusammen mit Verringern, gehen beide runter. Ändere sie in getrennten Befehlen.

Für ein Autohaus nimmst du dieselbe Form mit vehicle, stock, price und einer Spalte dealer (Typ Mitglied), dann zeigt /shop query dealer:@Kade den Bestand eines Händlers.

Der Bestand kann unter null fallen. Nichts stoppt das Verringern bei 0, prüf die Stückzahl also, wenn es dir wichtig ist.

Schritt 3: Bank und Kredite als einfache Einträge (optional)

Leg eine Tabelle namens Bank an mit account (Text, Pflichtfeld, an erster Stelle, damit die Zeilenauswahl sie zeigt), member (Mitglied), balance (Zahl), loan_owed (Zahl) und notes (Text). Inventar und Shop belegen schon die zwei kostenlosen Tabellen, diese dritte braucht also Pro.

  • /bank add account:Mara member:@Mara balance:500 loan_owed:0
  • /bank update row:Mara balance:200 _mode:Increment hält eine Einzahlung fest.
  • /bank update row:Mara loan_owed:100 _mode:Decrement hält eine Rückzahlung fest.
  • /bank leaderboard column:loan_owed ordnet die größten Schulden zuerst.

Es gibt keine Zinsen, kein Fälligkeitsdatum und keine automatischen Überweisungen. Das Staff tippt die Zahlen. Es gibt auch keinen Änderungsverlauf: view zeigt, wer eine Zeile angelegt hat und wann sie sich zuletzt geändert hat, nicht die alten Werte. Brauchst du eine Spur, füge eine Tabelle Transactions hinzu (account, amount, kind, date) und trag jede Bewegung als Zeile ein. Für einen gemeinsamen Gildenvorrat siehe stattdessen die Anleitung zur Gildenbank.

Wann etwas anderes besser passt

CordBase hat keinen Shop-Checkout, keine Währung, die Spieler verdienen oder ausgeben, und keine Zahlungen zwischen Mitgliedern. Befehle sind immer der Tabellenname plus eine der festen Aktionen, du kannst also kein eigenes /withdraw bauen. Es liest keine Nachrichten, „-100 Pfeile“ im Chat bewirkt also nichts. Willst du eine virtuelle Wirtschaft, in der Mitglieder Münzen verdienen und in einem Laden kaufen, nimm einen Economy-Bot wie UnbelievaBoat. Willst du Regeln und Würfel, nimm einen Tabletop-Bot wie Avrae (siehe die Anleitung zu Charakterbögen). Eine Tabellenkalkulation ist besser, wenn du Formeln brauchst.

Limits, die du kennen solltest

  • Free: 2 Tabellen mit je 100 Zeilen. Pro (8 $/Monat): unbegrenzt viele Tabellen, 10.000 Zeilen pro Tabelle und Massenbearbeitung. Max (15 $/Monat): 50.000 Zeilen. CSV- und JSON-Export gibt es in jedem Plan. Siehe Preise.
  • Bis zu 25 Spalten pro Tabelle. Tabellen werden im Web entworfen, nicht aus Discord.
  • Jedes Mitglied kann 5 Befehle pro 10 Sekunden ausführen.
  • Derzeit kein CSV-Import, bestehende Listen kommen also per add oder über das Dashboard hinein.
  • Jede Option steht in der Befehlsreferenz.

Häufige Fragen

Kann ich einen Befehl /withdraw bekommen oder Spieler selbst Gegenstände kaufen lassen?

Nein. Jede Tabelle bekommt unter ihrem eigenen Namen die festen Aktionen add, query, view, update, delete und leaderboard. Am nächsten kommt /shop update row:... stock:1 _mode:Decrement, das jeder mit Schreibzugriff ausführen kann. Dem Spieler wird nichts berechnet, und keine Währung bewegt sich.

Kann jeder Spieler nur sein eigenes Inventar sehen oder bearbeiten?

Nicht über eine Berechtigung. Wer Lesezugriff hat, kann die ganze Tabelle abfragen, und wer Schreibzugriff hat, kann jede Zeile ändern. Mitglieder können mit /inventory query owner:@yourname auf ihre eigenen Gegenstände filtern.

Passt das in den Free-Plan?

Die Tabellen für Inventar und Shop schon, denn Free erlaubt 2 Tabellen mit je 100 Zeilen. Eine dritte Tabelle, etwa für eine Bank, braucht Pro für 8 $/Monat.