Skip to content
Oliver Weimar-Drese edited this page Jun 19, 2022 · 7 revisions

GMCP-Schnittstelle von UNItopia

GMCP ist ein Protokoll, mit dem MUD-Clients via Telnet mit dem MUD selbst Nachrichten austauschen können. Welche Meldungen dies sind, unterscheidet sich dabei von MUD zu MUD, weswegen dazu meist auch spezielle Plugins/Skripte benötigt werden.

Dies hier sind die GMCP-Meldungen, die UNItopia versteht bzw. versendet:

Modul Core

Meldungen vom MUD an den Client

Core.Hello

Wird beim Login (nachdem das GMCP-Protokoll ausgehandelt wurde) gesendet. Dabei wird ein Objekt mit folgenden Eigenschaften gesendet:

name
Der Name des MUDs

Beispiel:

Core.Hello { "name": "UNItopia" }

Core.Ping

Dies ist eine Antwort auf das vom Client gesendete Ping.

Beispiel:

Core.Ping

Meldungen vom Client an das MUD

Core.Hello

Dies ist normalerweise die erste Meldung des Clients. Es liefert ein Objekt mit folgenden Einträgen:

client
Der Name des Clients
version
Die Version des Clients

Beispiel:

Core.Hello { "client": "UNItopia WebMUD", "version": "2.0" }

Core.Supports.Set

Damit registriert der Client die GMCP-Module, der er unterstützt. Das MUD wird dann nur Meldungen aus diesen Modulen senden (neben Core). Übergeben wird eine Liste der Package-Namen zusammen mit einer Versionsnummer (beginnend bei 1).

Beispiel:

Core.Supports.Set [ "Char 1", "Sound 1" ]

Core.Supports.Add

Fügt GMCP-Module zu der Liste der vom Client unterstützten Module hinzu. Der Parameter entsprecht dem von Core.Supports.Set.

Beispiel:

Core.Supports.Add [ "Room 1" ]

Core.Supports.Remove

Entfernt GMCP-Module aus der Liste der vom Client unterstützten Module hinzu. Übergeben wird eine Liste der Package-Namen (ohne Version).

Beispiel:

Core.Supports.Remove [ "Room" ]

Core.Ping

Motiviert den Server einen Ping zurückzusenden.

Beispiel:

Core.Ping

Modul Room

Meldungen vom MUD an den Client

Room.Info

Wird bei jeder Bewegung des Spielers gesendet und liefert Infos zum neuen Raum als Objekt mit folgenden Einträgen:

name
Die Kurzbeschreibung des Raumes
domain
Das Gebiet (Kontinent), in welchem sich der Spieler aufhält
exits
Eine Liste (Array) der Ausgänge

Beispiel:

Room.Info {"name": "Kathedrale", "domain": "Vaniorh", "exits": ["westen"]}

Modul Sound

Meldungen vom MUD an den Client

Sound.Url

Wird einmal beim Registrieren des Sound-Moduls gesendet und liefert die Basis-URL für die Sound-Dateien. Es liefert ein Objekt mit folgenden Einträgen:

url
Die Basis-URL für Sound-Dateien

Beispiel:

Sound.Url { "url": "http://www.unitopia.de/sound" }

Sound.Event

Informiert über den passenden Sound zu einem gerade stattfindendes Ereignis. Der Client sollte diese Datei abspielen. Übergeben wird ein Objekt mit folgenden Eigenschaften: Es liefert ein Objekt mit folgenden Einträgen:

file
Abzuspielende Datei, der Dateiname ist relativ zur Url von Sound.Url

Beispiel:

Sound.Event { "file": "Basis/tuer_anklopfen.wav" }

Modul Input

Meldungen vom MUD an den Client

Input.CompleteText

Dies ist eine Antwort auf eine Input.Complete-Meldung vom Client mit einem Ersatztext für die aktuelle Eingabe. Geliefert wird ein String.

Beispiel:

Input.CompleteText "betrachte "

Input.CompleteChoices

Dies ist eine Antwort auf eine Input.Complete-Meldung vom Client mit einer Reihe von Ergänzungsvorschlägen. Diese Antwort gibt es nur bei Göttern. Geliefert wird eine Liste von Strings. Die Vorschläge beziehen sich auf das letzte Wort in der angefragten Eingabezeile.

Beispiel:

Input.CompleteChoices [ "d/", "doc/" ]

Input.CompleteNone

Dies ist eine Antwort auf eine Input.Complete-Meldung vom Client, wenn es keine Ergänzungsvorschlage gibt.

Beispiel:

Input.CompleteNone

Meldungen vom Client an das MUD

Input.Complete

Damit fragt der Client Vorschläge für die Vervollständigung der aktuellen Eingabe an. Der Client sendet die aktuelle Eingabe bis zum Cursor. Das MUD antwortet dann entweder mit Input.CompleteText, Input.CompleteChoices oder Input.CompleteNone.

Beispiel:

Input.Complete "betra"

Modul Numpad

Meldungen vom MUD an den Client

Numpad.SendLevel

Damit sendet das Mud einen gespeicherten Level des Numpads. prefix kann dabei "" oder "Shift" usw sein.

Beispiel:

Numpad.SendLevel {"prefix":"","keys":{ "Numpad7":"nordwesten",...}}

Meldungen vom Client an das MUD

Numpad.Update

Konfiguration im Client zur Speicherung im Player.

Beispiel:

Numpad.Update {"prefix":"","key":"Numpad7","value":"nordwesten"}

Numpad.GetLevel

Anforderung für ein einzelnes Numpad.SendLevel vom MUD.

Beispiel:

Numpad.GetLevel{"prefix":""}

Numpad.GetAll

Anforderung für alle verfügbare Level je ein Numpad.SendLevel vom MUD. Wird auch beim Initialisieren des Moduls Numpad gemacht.

Beispiel:

Numpad.GetAll