Released on 06 Jul 2008
1. Fixed the flicker that occurs when a line is omitted from output. Instead of scrolling the window up, and then putting it back down again, the whole window is redrawn, flicker-free, when all processing is done. This looks a lot better on my PC.
2. Added extra stuff for communicating MUD-specific things between client and server using telnet negotiation.
I have chosen telnet option code 102 (0x66) as being "free" for this purpose, in the absence of any information to the contrary.
By way of comparison:
MCCP v1 = 85
MCCP v2 = 86
MSP = 90
MXP = 91
First, to confirm we are negotiating you can optionally do this:
Server: IAC DO 102 --> will you send me protocol 102 stuff?
Client: IAC WILL 102 --> I will send you stuff (sets a flag, see below)
Server: IAC WILL 102 --> Can I send protocol 102 stuff to you?
Client: IAC DO 102 --> Yes, do that (sets a flag, see below)
Default behaviour in earlier versions of MUSHclient:
Client: IAC DONT 102 --> Client does not want telnet option 102 sent to it
Client to server:
Client: IAC, SB, 102, x, y, IAC, SE --> send request x,y to server
Server to client:
Server: IAC, SB, 102, x, y, IAC, SE --> send request x,y to client
Incoming, MUSHclient expects the request to be:
* zero or more bytes up to a maximum of 127
* may not contain 0x00 character (as stored internally as a C string)
* may not contain 0xFF character (which is IAC, which terminates the string)
Incoming data may be queried with GetInfo, see below. It also triggers the OnPluginTelnetOption plugin callback, see below.
Outgoing, you can send requests like this:
local IAC, SB, SE = 0xFF, 0xFA, 0xF0
local WILL, WONT, DO, DONT = 0xFB,0xFC, 0xFD, 0xFE
SendPkt (string.char (IAC, SB, 102, x, y, IAC, SE)) --> send x,y to server
3. Added extra selectors to GetInfo to support the telnet communication:
GetInfo (75) - last string received from server using telnet option 102
GetInfo (116) (true or false) - true if we agreed to do outgoing codes (received IAC DO 102)
GetInfo (117) (true or false) - true if we agreed to receive incoming codes (received IAC WILL 102)
The general design intention here was for:
a) The client to request the server to do things (like send extra information) without having to use MUD commands. In particular, it lets the client request extra options even during the login phase when the player may not have commenced playing because s/he is choosing a character name, race, password etc.
b) The server to send status information to the client, for example:
* player not yet logged in
* player is viewing paged output
* player is using MUD internal editor
* player is AFK
During these times, a plugin may not be able to successfully do things (like moving around) which it normally could do.
This allows plugins to communicate more smoothly with the server, and behave more appropriately, depending on the exact server status for that player.
4. Added new plugin callback: OnPluginTelnetOption
This lets a plugin react immediately when a telnet option 102 is received, as described above.
function OnPluginTelnetOption (s)
if s == "playing" then
-- player has started playing
end -- if
end -- OnPluginTelnetOption
Gammon Software support
Forum RSS feed ( https://gammon.com.au/rss/forum.xml )