-
Notifications
You must be signed in to change notification settings - Fork 0
GMCP
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:
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" }
Dies ist eine Antwort auf das vom Client gesendete Ping.
Beispiel:
Core.Ping
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" }
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" ]
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" ]
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" ]
Motiviert den Server einen Ping zurückzusenden.
Beispiel:
Core.Ping
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"]}
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" }
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" }
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 "
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/" ]
Dies ist eine Antwort auf eine Input.Complete-Meldung vom Client, wenn es keine Ergänzungsvorschlage gibt.
Beispiel:
Input.CompleteNone
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"
Damit sendet das Mud einen gespeicherten Level des Numpads. prefix kann dabei "" oder "Shift" usw sein.
Beispiel:
Numpad.SendLevel {"prefix":"","keys":{ "Numpad7":"nordwesten",...}}
Konfiguration im Client zur Speicherung im Player.
Beispiel:
Numpad.Update {"prefix":"","key":"Numpad7","value":"nordwesten"}
Anforderung für ein einzelnes Numpad.SendLevel vom MUD.
Beispiel:
Numpad.GetLevel{"prefix":""}
Anforderung für alle verfügbare Level je ein Numpad.SendLevel vom MUD. Wird auch beim Initialisieren des Moduls Numpad gemacht.
Beispiel:
Numpad.GetAll