Released on 05 Feb 2010
1. Added color.lua to the installer. This lets you play with HSL colour space.
See http://sputnik.freewisdom.org/lib/colors/ for details and examples.
Thanks to the author, Yuri Takhteyev for making the code available.
Using the module you can:
* convert colours to/from RGB and HSL colour spaces
* find hue offsets
* find complementary colours
* find neighbouring colours by angle
* find triadic colours
* desaturate, lighten, get variations
* get tables of tints and shades
2. Fixed bug where NAWS packets would not always be sent if you resized the window vertically.
3. Rewrote the telnet subnegotiation to be somewhat more flexible. For a lengthy discussion, see:
A telnet subnegotiation is a sequence like:
IAC SB x <some data> IAC SE
Where: IAC = 0xFF, SB = 0xFA, SE = 0xF0
And "x" is the subnegotiation type (see list below).
These can occur inside "normal" output from the MUD. Note that MUSHclient excludes telnet negotiation from inside ANSI colour sequences (eg. ESC [ 0 m) and from inside MXP sequences. In other words, you can be processing an ANSI sequence, an MXP sequence, or a Telnet negotiation, but not mix them together.
Changes made are:
* ESC (hex 1B), CR (hex 0D), NL (hex 0A) now allowed inside subnegotiation sequences
* Handles IAC IAC inside subnegotiation sequences (gets replaced by IAC)
* Subnegotiation sequences can be any length
* Correctly handles IAC IAC outside subnegotiation, if the second IAC happens to be in a new packet
* New plugin callback function to handle any telnet subnegotiations via a plugin (see below)
* New plugin callback function to handle the server query IAC DO x or IAC WILL x (see below)
4. New plugin callback OnPluginTelnetRequest
If the server sends IAC WILL x, or IAC DO x to the client, each plugin is scanned for the function OnPluginTelnetRequest. If found it is called with the request number (x) and the string "WILL" or "DO". The callback can return true or false, to indicate willingness to handle the particular telnet option. If at least one plugin replies true, then a positive response is sent to the server.
function OnPluginTelnetRequest (type, data)
if type == 200 and data == "WILL" then
end -- if
end -- function OnPluginTelnetRequest
5. New plugin callback OnPluginTelnetSubnegotiation
If the server sends IAC SB x <data> IAC SE, and x is not one of:
24 (terminal type)
85 (MCCP v1)
86 (MCCP v2)
... then OnPluginTelnetSubnegotiation is called with x and <data>.
function OnPluginTelnetSubnegotiation (telnet_option, data)
Note ("received negotiation: ", telnet_option)
Note ("Received option string ", utils.tohex (data))
end -- function OnPluginTelnetSubnegotiation
In the case of type 102, OnPluginTelnetOption is called AS WELL (without the option number, as that is fixed at 102). This is for backwards compatibility.
The data may contain the NULL byte (0x00) however be aware that most MUSHclient script functions use 0x00 as a string terminator. In Lua, and possibly in some other languages, you may be able to split up data at the 0x00 byte (for example, as specified in the ZMP protocol), and then process the individual pieces.
Note to server implementors: Any data can appear in the subnegotiation string, however the IAC character must be doubled if it appears inside the string, that is IAC must be sent as IAC IAC (consistent with normal Telnet protocols).
Note that known telnet option types at this time are:
1 (ECHO) - output echo on/off
3 (SGA) - Suppress Go Ahead
24 (TERMTYPE) - send terminal type
25 (EOR) - End Of Record
31 (NAWS) - Negotiate About Window Size
42 (CHARSET) - send supported character set
70 (MSSP) - MUD Server Status Protocol
85 (MCCP v1) - MUD Client Compression Protocol version 1
86 (MCCP v2) - MUD Client Compression Protocol version 2
90 (MSP) - MUD Sound Protocol
91 (MXP) - MUD eXtension Protocol
93 (ZMP) - Zenith MUD Protocol
102 (Aardwolf options) - used by Aardwolf MUD and some MUSHclient plugins
200 (ATCP) - Achaea Telnet Client Protocol
There are other types, which I haven't seen used in the MUD environment. One listing is at:
Note that you should not choose 255 as a protocol number as, for one thing that is the IAC character, and for another, it is reserved for future use for expanding the number of protocols to be more than 256.
Note that Mud Client Protocol (MCP) doesn't seem to use telnet negotiation.
6. Removed GetInfo selectors 116 and 117.
Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.
Gammon Software support
Forum RSS feed ( https://gammon.com.au/rss/forum.xml )