MSDP
The older and simpler of the two data protocols Kallisti speaks. One name, one value, 111 of them.
Where GMCP sends structured packages, MSDP sends flat variables: you ask to be told about HEALTH, and from then on the server tells you whenever it changes. Nothing is nested and nothing needs parsing beyond reading a name and a value.
Any client that supports MSDP will negotiate it on connect. There is nothing to enable in game.
Subscribing
REPORT asks the server to keep you informed about a variable. It is the only verb most scripts need.
MSDP.REPORT HEALTH
MSDP.REPORT HEALTH_MAX
MSDP.REPORT OPPONENT_HEALTH
-- Mudlet spells the same thing:
sendMSDP("REPORT", "HEALTH", "HEALTH_MAX", "OPPONENT_HEALTH")Asking once, and stopping
MSDP.SEND ROOM_NAME -- ask once, no subscription MSDP.UNREPORT HEALTH -- stop being told about one variable MSDP.RESET REPORTABLE_VARIABLES
Finding out what exists
The server will describe itself, which is more reliable than trusting this page to stay current.
MSDP.LIST COMMANDS -- the verbs this server accepts MSDP.LIST LISTS -- what else you may ask LIST for MSDP.LIST REPORTABLE_VARIABLES -- everything you may subscribe to MSDP.LIST SENDABLE_VARIABLES -- everything you may ask for once MSDP.LIST REPORTED_VARIABLES -- what you are subscribed to now
What the server publishes
All read-only. The server sets them; your client reads them.
What your client may set
The only writable variables. Everything above is one-way.
| CLIENT_ID | write once |
| CLIENT_VERSION | write once |
| PLUGIN_ID | write once |
| ANSI_COLORS | on or off |
| XTERM_256_COLORS | on or off |
| UTF_8 | on or off |
| SOUND | on or off |
| MXP | on or off |
| BUTTON_1 | client GUI hint |
| BUTTON_2 | client GUI hint |
| BUTTON_3 | client GUI hint |
| BUTTON_4 | client GUI hint |
| BUTTON_5 | client GUI hint |
| GAUGE_1 | client GUI hint |
| GAUGE_2 | client GUI hint |
| GAUGE_3 | client GUI hint |
| GAUGE_4 | client GUI hint |
| GAUGE_5 | client GUI hint |
MSDP or GMCP?
Both carry much the same information and you can use both at once.
MSDP is simpler and flatter, and every variable is independent, so a bar that needs three numbers subscribes to three names. GMCP groups related values into packages, so one message carries your whole set of vitals, and it can express things MSDP cannot -- a list of worn items, your group's members, the room's exits as a structure rather than a string.
Use MSDP when you want a handful of numbers with minimal ceremony. Use the GMCP guide when you want structure.