Difference between revisions of "Notes on MMCP"
Jump to navigation
Jump to search
m (specify chatport and startchatserver MudMaster commands) |
m (edit command descriptions) |
||
| (6 intermediate revisions by 2 users not shown) | |||
| Line 48: | Line 48: | ||
| 0x1F (31) || Snoop data || Data sent by the recipient if it allows a snoop, the data should be echoed by the peer that sent the request but not be further forwarded || Yes | | 0x1F (31) || Snoop data || Data sent by the recipient if it allows a snoop, the data should be echoed by the peer that sent the request but not be further forwarded || Yes | ||
|- | |- | ||
| − | | | + | | 0x28 (40) || Mudlet side channel || Mudlet Specific. Sends an Out-Of-Band message to a peer. Upon receipt of a SideChannel message, Mudlet will raise a sysChatChannelMessage event with this data || Yes |
|- | |- | ||
| 0xFF (255) || End of command || Marks the end of most messages (note that the byte value is not valid for UTF-8 but is for most extended ASCII encoding - so has to be processed at the socket side of the connection after/before it is output from/input to an encoder of a peer || Yes | | 0xFF (255) || End of command || Marks the end of most messages (note that the byte value is not valid for UTF-8 but is for most extended ASCII encoding - so has to be processed at the socket side of the connection after/before it is output from/input to an encoder of a peer || Yes | ||
| Line 58: | Line 58: | ||
! Function !! MudMaster !! MUSHClient !! TinTin++ !! Mudlet | ! Function !! MudMaster !! MUSHClient !! TinTin++ !! Mudlet | ||
|- | |- | ||
| − | | Set incoming port number to P || /chatport {port} - Start server with /startchatserver || #accept P || #CHAT {INIT} {P} || mmcp. | + | | Set incoming port number to P || /chatport {port} - Start server with /startchatserver || #accept P || #CHAT {INIT} {P} || mmcp.startServer(P[, "IPAddress") |
"IP Address" is what is advertised to peers that third parties can use to connect to us | "IP Address" is what is advertised to peers that third parties can use to connect to us | ||
|- | |- | ||
| − | | Call another person on Address A.A.A.A, Port P || /call {address} {port} || #chat A.A.A.A [P] || #CHAT {CALL} {A.A.A.A} {P} || mmcp. | + | | Call another person on Address A.A.A.A, Port P || /call {address} {port} || #chat A.A.A.A [P] || #CHAT {CALL} {A.A.A.A} {P} || mmcp.call("A.A.A.A"[, P]) |
|- | |- | ||
| − | | | + | | Accept an incoming call || || || || mmcp.accept("someone" or id) |
|- | |- | ||
| − | | | + | | Deny an incoming call || || || || mmcp.deny("someone" or id) |
|- | |- | ||
| − | | | + | | List connections || /chat || #chats || #CHAT {WHO} || mmcp.showList() |
|- | |- | ||
| − | | | + | | Change your chat name || /chatname {new name} || || #CHAT {NAME} {new name} || mmcp.chatName("new name") |
|- | |- | ||
| − | | | + | | More information about peer || /chatversions || #chatdetails <name> || ||All information provided in showList() command |
|- | |- | ||
| − | | Send chat message_text to | + | | Send chat message_text to everyone || /chatall {message_text} || #chatall message_text || #CHAT {MESSAGE} {ALL} {message_text} || mmcp.chatAll("message_text") |
|- | |- | ||
| − | | | + | | Send emote message_text to everyone || /emoteall {message_text} || || || mmcp.emoteAll("message_text") |
|- | |- | ||
| − | | Send chat message_text to | + | | Send chat message_text to someone || /chat {someone or id} {message_text} || #chat someone message_text || #CHAT {MESSAGE} {someone} {message_text} || mmcp.chatTo("someone", "message_text") |
|- | |- | ||
| − | | End call to someone || /unchat { | + | | Assign peer "name" to "group" || /chatgroupset {name or id} {group} || || || mmcp.setGroup("name" or id, "group") |
| + | |- | ||
| + | | Send chat message_text to group || /cg or /chatgroup {group name} {message_text} || || || mmcp.chatGroup("group name", "message_text") | ||
| + | |- | ||
| + | | Peek at someones connections || /peekconnections {"someone" or id} || || || mmcp.peek("someone" or id) | ||
| + | |- | ||
| + | | Request and connect to someones connections || /requestconnects {"someone" or id} || || || | ||
| + | |- | ||
| + | | Ping someone || /ping {"someone" or id} || || || mmcp.ping("someone" or id) | ||
| + | |- | ||
| + | | Toggle allowing someone to snoop you || /chatsnoop {"someone" or id} || || || mmcp.allowSnoop("someone" or id) | ||
| + | |- | ||
| + | | Toggle snooping someone || /snoop {"someone" or id} || || || mmcp.snoop("someone" or id) | ||
| + | |- | ||
| + | | Toggle serving someone || /chatserve {"someone" or id} || || || mmcp.serve("someone" or id) | ||
| + | |- | ||
| + | | End call to someone || /unchat {"someone" or id} || #hangup someone || #CHAT {ZAP} {someone} || mmcp.unChat("someone" or id) | ||
|- | |- | ||
| End all calls || || #hangupall || #CHAT {ZAP} {ALL} || | | End all calls || || #hangupall || #CHAT {ZAP} {ALL} || | ||
|} | |} | ||
==== Links to reference material ==== | ==== Links to reference material ==== | ||
| − | * [https://tintin.mudhalla.net/protocols/mmcp/ | + | * [https://tintin.mudhalla.net/protocols/mmcp/ MMCP] Scandum's Mudhalla reference material. |
| − | * [http://web.archive.org/web/20240118214348/https://www.zuggsoft.com/zchat/zchatprot.htm | + | * [http://web.archive.org/web/20240118214348/https://www.zuggsoft.com/zchat/zchatprot.htm ZChat] Zugg's notes (archive copy to ensure preservation). |
| − | * Post on [https://www.gammon.com.au/forum/bbshowpost.php? | + | * Post on [https://www.gammon.com.au/forum/bbshowpost.php?id=15093 MUSHClient] forums where I start to discuss MMCP, Mudlet and extending the protocol to get hints on encoding and language/locale. |
Latest revision as of 14:38, 5 April 2025
Current development work is taking place in PR 7765.
| Code | Name | Purpose | Supported by Mudlet |
|---|---|---|---|
| 0x01 (1) | Name Change | Yes | |
| 0x02 (2) | Request Connections | Use to get Peer's other (public) connections so that this client can connect to those as well | Yes |
| 0x03 (3) | Connection List | Use to give reply to "Request Connections" with a comma delimited "address, port" list | Yes, but may not be processed to make those connections yet |
| 0x04 (4) | Chat everyone | Message to be sent to all Peers | Yes |
| 0x05 (5) | Chat personal | Message to be sent to addressed Peer only | Yes |
| 0x06 (6) | Chat group | Message to be sent to addressed Group only | Yes |
| 0x07 (7) | Message | System message, e.g. a message about something changing in the Chat system | Yes |
| 0x08 (8) | Do not disturb | Unclear - listed in Mudhalla information | Unclear |
| 0x13 (19) | Version | Details of the peer, i.e. client name and version | Need to check how/when used |
| 0x14 (20) | File start | Request to initiate file transfer (sent from sender) | Not yet |
| 0x15 (21) | File deny | Reject a "File start" (sent from intended receiver) | Not yet |
| 0x16 (22) | File block request | Accept a "File start" and request next (even the first) 500 byte chunk of file (without an END marker) | Not yet |
| 0x17 (23) | File block | Next block of data in response to 22 | Not yet |
| 0x18 (24) | File end | Sent by the recipient to indicate reception of last block if it is not exactly 500 bytes | Not yet |
| 0x19 (25) | File cancel | Terminates file transfer (can be sent from either end) | Not yet |
| 0x1A (26) | Ping request | Initiates a Ping | Yes |
| 0x1B (27) | Ping reply | Response to a Ping | Yes |
| 0x1C (28) | Peek connections | Use to get Peer's other (public) connections | Yes |
| 0x1D (29) | Peek reply | Response to a Peek request, in a '~' delimited list (address~port~name~...) | Yes |
| 0x1E (30) | Snoop request | Request to start or stop snooping data from a peer, the recipient decides whether to allow it or not | Yes |
| 0x1F (31) | Snoop data | Data sent by the recipient if it allows a snoop, the data should be echoed by the peer that sent the request but not be further forwarded | Yes |
| 0x28 (40) | Mudlet side channel | Mudlet Specific. Sends an Out-Of-Band message to a peer. Upon receipt of a SideChannel message, Mudlet will raise a sysChatChannelMessage event with this data | Yes |
| 0xFF (255) | End of command | Marks the end of most messages (note that the byte value is not valid for UTF-8 but is for most extended ASCII encoding - so has to be processed at the socket side of the connection after/before it is output from/input to an encoder of a peer | Yes |
| Function | MudMaster | MUSHClient | TinTin++ | Mudlet |
|---|---|---|---|---|
| Set incoming port number to P | /chatport {port} - Start server with /startchatserver | #accept P | #CHAT {INIT} {P} | mmcp.startServer(P[, "IPAddress")
"IP Address" is what is advertised to peers that third parties can use to connect to us |
| Call another person on Address A.A.A.A, Port P | /call {address} {port} | #chat A.A.A.A [P] | #CHAT {CALL} {A.A.A.A} {P} | mmcp.call("A.A.A.A"[, P]) |
| Accept an incoming call | mmcp.accept("someone" or id) | |||
| Deny an incoming call | mmcp.deny("someone" or id) | |||
| List connections | /chat | #chats | #CHAT {WHO} | mmcp.showList() |
| Change your chat name | /chatname {new name} | #CHAT {NAME} {new name} | mmcp.chatName("new name") | |
| More information about peer | /chatversions | #chatdetails <name> | All information provided in showList() command | |
| Send chat message_text to everyone | /chatall {message_text} | #chatall message_text | #CHAT {MESSAGE} {ALL} {message_text} | mmcp.chatAll("message_text") |
| Send emote message_text to everyone | /emoteall {message_text} | mmcp.emoteAll("message_text") | ||
| Send chat message_text to someone | /chat {someone or id} {message_text} | #chat someone message_text | #CHAT {MESSAGE} {someone} {message_text} | mmcp.chatTo("someone", "message_text") |
| Assign peer "name" to "group" | /chatgroupset {name or id} {group} | mmcp.setGroup("name" or id, "group") | ||
| Send chat message_text to group | /cg or /chatgroup {group name} {message_text} | mmcp.chatGroup("group name", "message_text") | ||
| Peek at someones connections | /peekconnections {"someone" or id} | mmcp.peek("someone" or id) | ||
| Request and connect to someones connections | /requestconnects {"someone" or id} | |||
| Ping someone | /ping {"someone" or id} | mmcp.ping("someone" or id) | ||
| Toggle allowing someone to snoop you | /chatsnoop {"someone" or id} | mmcp.allowSnoop("someone" or id) | ||
| Toggle snooping someone | /snoop {"someone" or id} | mmcp.snoop("someone" or id) | ||
| Toggle serving someone | /chatserve {"someone" or id} | mmcp.serve("someone" or id) | ||
| End call to someone | /unchat {"someone" or id} | #hangup someone | #CHAT {ZAP} {someone} | mmcp.unChat("someone" or id) |
| End all calls | #hangupall | #CHAT {ZAP} {ALL} |
Links to reference material
- MMCP Scandum's Mudhalla reference material.
- ZChat Zugg's notes (archive copy to ensure preservation).
- Post on MUSHClient forums where I start to discuss MMCP, Mudlet and extending the protocol to get hints on encoding and language/locale.