GMCP in Aardwolf MUD

Clients.GMCP History

Hide minor edits - Show changes to markup

May 28, 2018, at 08:48 PM EST by Pero
Changed lines 307-311 from:
   ** Tell channel is used for tells to/from all players. For player tell separation use the 'player' attribute for incoming tells and parse the message for outgoing (i.e. "You tell <player> <msg>). See idea post 39603.
   ** Says from mobs have their own channel known as 'mobsay'
   ** Question and Answer channels are separate channels, but are used interchangeably as though they were a single channel by players. If splitting out communication channels it's probably best to combine these. The same is true of Say and Mobsay (though these would be better never being split out from game play)
   ** Colors can be configured to be ANSI or Raw. See GMCP options.
to:
  • Tell channel is used for tells to/from all players. For player tell separation use the 'player' attribute for incoming tells and parse the message for outgoing (i.e. "You tell <player> <msg>). See idea post 39603.
  • Says from mobs have their own channel known as 'mobsay'
  • Question and Answer channels are separate channels, but are used interchangeably as though they were a single channel by players. If splitting out communication channels it's probably best to combine these. The same is true of Say and Mobsay (though these would be better never being split out from game play)
  • Colors can be configured to be ANSI or Raw. See GMCP options.
May 28, 2018, at 08:47 PM EST by Pero
Added line 307:
   ** Tell channel is used for tells to/from all players. For player tell separation use the 'player' attribute for incoming tells and parse the message for outgoing (i.e. "You tell <player> <msg>). See idea post 39603.
Added line 309:
   ** Question and Answer channels are separate channels, but are used interchangeably as though they were a single channel by players. If splitting out communication channels it's probably best to combine these. The same is true of Say and Mobsay (though these would be better never being split out from game play)
May 28, 2018, at 08:30 PM EST by Pero
Changed line 109 from:
gmcpchannels on/offSend channels over GMCP only
to:
gmcpchannels on/offSend channels over GMCP only. NB: this will not enable GMCP channel messages - you must remember to also use Core.Supports.Set
March 24, 2018, at 04:30 AM EST by Abelinc
Changed line 106 from:
debug packets on/offTurns the JSON debug mode on or off
to:
debug packets on/offTurns the packet-level debug mode on or off
May 30, 2016, at 03:33 AM EST by Trurien
Deleted line 34:
  • Information on GMCP in Tintin++ can be found at Tintin++ GMCP
Deleted line 50:
Added line 57:

GMCP in Tintin++

Changed lines 59-60 from:

Aardwolf GMCP related in-game commands

to:

Since version 2.00.3, Tintin++ has been able to handle GMCP events.

Use event blocks like #event {IAC SB GMCP <event_type> IAC SE} {#var <var_name> %0; ... } to handle the GMCP updates.

Added lines 64-66:

Aardwolf GMCP related in-game commands

\\

February 17, 2016, at 10:58 PM EST by Fiendish
Added line 105:
gmcpchannels on/offSend channels over GMCP only
April 12, 2015, at 12:29 AM EST by Fiendish2
Changed lines 41-42 from:

The GMCP plugin for MUSHclient can be download here: MUSHclient GMCP Plugin. The plugin requires MUSHclient version 4.59 or higher as 4.59 is the first version that includes JSON support as part of the standard MUSHclient package.

to:

GMCP access is included already in the Aardwolf MUSHclient package. The standalone GMCP plugin for MUSHclient can otherwise be download here: MUSHclient GMCP Plugin. The plugin requires MUSHclient version 4.59 or higher as 4.59 is the first version that includes JSON support as part of the standard MUSHclient package.

April 12, 2015, at 12:28 AM EST by Fiendish2
Changed line 32 from:
  • The draft standard for GMCP can be found at Mudstandards.org
to:
  • Documentation for GMCP can be found at http://www.gammon.com.au/gmcp
Changed line 39 from:

GMCP in Mushclient

to:

GMCP in MUSHclient

Changed lines 41-44 from:

The GMCP plugin client for Mushclient can be download here: Mushclient GMCP Plugin. The plugin requires Mushclient version 4.59 or higher as 4.59 is the first version that includes JSON support as part of the standard Mushclient package.

For full details on GMCP in Aardwolf using Mushclient, see the Mushclient GMCP page.

to:

The GMCP plugin for MUSHclient can be download here: MUSHclient GMCP Plugin. The plugin requires MUSHclient version 4.59 or higher as 4.59 is the first version that includes JSON support as part of the standard MUSHclient package.

For full details on GMCP in Aardwolf using MUSHclient, see the MUSHclient GMCP page.

Changed lines 236-237 from:
  • Sending 'group on' or 'group off' via GMCP. If you are using the Aardwolf Mushclient, this can be achieved manually by using 'sendgmcp group on'.
  • In the GMCP initialization sequence add 'group 1' to the 'core.supports.set' message. In CMUD, this can be added to the config box. In mushclient, it would be included in the GMCP handler as:
to:
  • Sending 'group on' or 'group off' via GMCP. If you are using the Aardwolf MUSHclient, this can be achieved manually by using 'sendgmcp group on'.
  • In the GMCP initialization sequence add 'group 1' to the 'core.supports.set' message. In CMUD, this can be added to the config box. In MUSHclient, it would be included in the GMCP handler as:
Changed lines 240-241 from:

Note: As with room exits, group information needs to be cleared with each GMCP data refresh so that members who have left the group do not remain in the data. The group plugin will be released with a modified GMCP handler, in the meantime you can pick up the latest development version at the Google code Aardwolf MUD Package

to:

Note: As with room exits, group information needs to be cleared with each GMCP data refresh so that members who have left the group do not remain in the data.

February 22, 2015, at 03:35 PM EST by Lasher
Changed lines 195-196 from:

Group GMCP messages are only sent once per second, and are only sent then if the group itself has changed or the vitals/stats of a group member have changed.

to:

Group GMCP messages are only sent once per second and are only sent then if the group itself has changed or the vitals/stats of a group member have changed. For larger groups this may be once every 2 seconds (10+ players) or every 3 seconds (20+ players).

March 18, 2014, at 05:04 PM EST by Abelinc
Changed lines 297-299 from:
quoteracetalkrestoresrpsayspousetechtelepathy
telltiertalkwangrpwardrumsyell
to:
quoteracetalkrestoresrpsayspousetech
telepathytelltiertalkwangrpwardrumsyell
March 18, 2014, at 05:03 PM EST by Abelinc
Changed line 297 from:
quoteracetalkrpsayspousetechtelepathy
to:
quoteracetalkrestoresrpsayspousetechtelepathy
November 11, 2013, at 06:08 AM EST by Abelinc
Changed line 210 from:
                "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201, "here": 1 } } 
to:
                "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201, "here": 0 } } 
November 11, 2013, at 06:07 AM EST by Abelinc
Changed line 208 from:
                "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } , 
to:
                "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210, "here": 1 } } , 
Changed line 210 from:
                "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } 
to:
                "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201, "here": 1 } } 
Changed line 227 from:
        "mmn": 65655, "mv": 41629, "mmv": 41629, "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } , 
to:
        "mmn": 65655, "mv": 41629, "mmv": 41629, "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210, "here": 1 } } , 
Changed line 229 from:
        "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } ] }
to:
        "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201, "here": 0 } } ] }
Added lines 232-233:

The "here" field is for whether or not the member is in the same room as the one receiving the GMCP information.

Changed line 455 from:

\\

to:

\\

April 20, 2013, at 03:21 PM EST by Bast
Changed lines 54-55 from:

At the time of writing GMCP in Mudlet is only supported via a source version of the client which users have to compile for themselves so is not covered. If this is no longer true, please contact us (or just update the page, it's a wiki after all :) )

to:

Mudlet support for GMCP is available in version 2.0 or higher.

July 17, 2012, at 03:45 AM EST by Abelinc
Added line 94:
request areaImmediately request information on your current area
May 10, 2012, at 06:34 AM EST by Abelinc
Changed line 36 from:
  • Information on GMCP in Tinyfugue can be found at Abelinc's telopts page
to:
  • Information on GMCP in Tinyfugue can be found at Abelinc's telopts page
February 23, 2012, at 08:53 PM EST by Abelinc
Changed lines 283-285 from:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" }

to:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'", "player": "Abelinc" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'", "player": "Abelinc" }

June 07, 2011, at 06:02 PM EST by admin
Added line 97:
request sectorsSend list of Map sector types and map color
June 07, 2011, at 01:16 PM EST by Abelinc
Changed lines 322-323 from:
                "mccp": 2, "lucky": 0, "double": 0, "totqp": 29, "completed": 98, "wait": 30 }
to:
                "mccp": 2, "lucky": 0, "double": 0, "totqp": 29, "gold": 3553, "completed": 98, "wait": 30 }
May 17, 2011, at 11:10 PM EST by WinkleWinkle
Changed lines 289-294 from:
answerauctionbarterclaninfoclantalkcursedebate
ftalkgametalkgclangossipgratzgsocialgtell
helperimmtalkinformltalkmarketmusicnewbie
nobletalkpokerinfoquestionquoteracetalkrpsay
spousetechtelltiertalkwangrpyell
to:
answerauctionbartercantchantclaninfoclantalk
communecursedebateftalkgametalkgclangossip
grapevinegratzgsocialgtellhelperimmtalkinform
ltalkmarketmusicnewbienobletalkpokerinfoquestion
quoteracetalkrpsayspousetechtelepathy
telltiertalkwangrpwardrumsyell
May 17, 2011, at 05:23 PM EST by WinkleWinkle
Changed lines 291-294 from:
helperimmtalkinformltalkmarketmusicnobletalk
pokerinfoquestionquoteracetalkrpsayspouse
techtelltiertalkwangrpyell
to:
helperimmtalkinformltalkmarketmusicnewbie
nobletalkpokerinfoquestionquoteracetalkrpsay
spousetechtelltiertalkwangrpyell
May 17, 2011, at 04:36 PM EST by WinkleWinkle
Changed lines 290-294 from:
ftalkametalkgclangossipgratzgsocialgtell
immtalkinformltalkmarketmusicnobletalkpokerinfo
questionquoteracetalkrpsayspousetech
telltiertalkwangrpyell
to:
ftalkgametalkgclangossipgratzgsocialgtell
helperimmtalkinformltalkmarketmusicnobletalk
pokerinfoquestionquoteracetalkrpsayspouse
techtelltiertalkwangrpyell
May 16, 2011, at 05:20 PM EST by Abelinc
Changed lines 321-322 from:
                "mccp": 2, "lucky": 0, "double": 0, "totqp": 29, "completed": 98 }
to:
                "mccp": 2, "lucky": 0, "double": 0, "totqp": 29, "completed": 98, "wait": 30 }
May 16, 2011, at 05:18 PM EST by Abelinc
Changed line 135 from:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000, "tier": 1 }

to:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000, "tier": 1, "remorts": 7 }

March 26, 2011, at 07:44 PM EST by admin
Added lines 84-85:
protocols gmcp debugjsonToggle json packet debugging
protocols gmcp debugpacketsToggle GMCP packet debugging
Added lines 98-99:
debug json on/offTurns the JSON debug mode on or off
debug packets on/offTurns the JSON debug mode on or off
February 06, 2011, at 12:46 AM EST by Abelinc
Added lines 261-262:

"id" is a single digit from the continent list above. "x" and "y" are the x/y coordinates for your current room (or area), and "cont" is a bit (0 or 1) designating whether the current room is on a continent.

January 25, 2011, at 12:34 AM EST by Grae
Added lines 281-288:
  • The following Channels are covered by GMCP:
answerauctionbarterclaninfoclantalkcursedebate
ftalkametalkgclangossipgratzgsocialgtell
immtalkinformltalkmarketmusicnobletalkpokerinfo
questionquoteracetalkrpsayspousetech
telltiertalkwangrpyell
January 03, 2011, at 06:16 AM EST by Abelinc
Added line 177:
  12        Player running
December 28, 2010, at 07:33 PM EST by admin
Added lines 188-189:

Group GMCP messages are only sent once per second, and are only sent then if the group itself has changed or the vitals/stats of a group member have changed.

December 28, 2010, at 07:31 PM EST by admin
Changed lines 207-208 from:

[@

  0 - Player has no quest timer and can quest. Qt should be zero.
to:

[@ 0 - Player has no quest timer and can quest. Qt should be zero.

Added line 210:
  3 - Character is a mob, unable to quest.
December 28, 2010, at 07:30 PM EST by admin
Changed lines 205-206 from:

Formatting in the above example is for readability only, the actual GMCP message is a single unbroken string.

to:

Most of the group information is fairly self explanatory but 'qs' is worth explaining further - this field indicates what 'qt' (quest time) actually represents:

 
  0 - Player has no quest timer and can quest. Qt should be zero.
  1 - Player is questing. Qt represents time left on quest.
  2 - Player is waiting to quest. Qt represents time until they can quest.
Deleted line 264:
December 28, 2010, at 07:23 PM EST by admin
Changed lines 219-220 from:

- Sending 'group on' or 'group off' via GMCP. If you are using the Aardwolf Mushclient, this can be achieved manually by using 'sendgmcp group on'. - In the GMCP initialization sequence add 'group 1' to the 'core.supports.set' message. In CMUD, this can be added to the config box. In mushclient, it would be included in the GMCP handler as:

to:
  • Sending 'group on' or 'group off' via GMCP. If you are using the Aardwolf Mushclient, this can be achieved manually by using 'sendgmcp group on'.
  • In the GMCP initialization sequence add 'group 1' to the 'core.supports.set' message. In CMUD, this can be added to the config box. In mushclient, it would be included in the GMCP handler as:
December 28, 2010, at 07:22 PM EST by admin
Changed lines 198-199 from:

"members": [ { "name": "Lasher", "info": { "hp": 50054, "mhp": 50054,"mn": 65655, "mmn": 65655, "mv": 41629, "mmv": 41629, "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } ,

              { "name": "Razor", "info":  { "hp": 31191, "mhp": 31191,"mn": 6199,  "mmn": 6199, "mv":  5775, "mmv": 5775,  "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } 
to:

"members": [ { "name": "Lasher", "info": { "hp": 50054, "mhp": 50054,"mn": 65655, "mmn": 65655, "mv": 41629, "mmv": 41629,

                "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } , 
              { "name": "Razor", "info":  { "hp": 31191, "mhp": 31191,"mn": 6199,  "mmn": 6199, "mv":  5775, "mmv": 5775,  
                "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } 
Added lines 205-206:

Formatting in the above example is for readability only, the actual GMCP message is a single unbroken string.

Changed lines 210-214 from:

group { "groupname": "lsdkfs", "leader": "Lasher", "created": "28 Dec 14:05", "status": "Private", "count": 2, "kills": 0, "exp": 0, "members": [ { "name": "Lasher", "info": { "hp": 50054, "mhp": 50054,"mn": 65655, "mmn": 65655, "mv": 41629, "mmv": 41629, "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } , { "name": "Razor", "info": { "hp": 31191, "mhp": 31191,"mn": 6199, "mmn": 6199, "mv": 5775, "mmv": 5775, "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } ] }

to:

group { "groupname": "lsdkfs", "leader": "Lasher", "created": "28 Dec 14:05", "status": "Private", "count": 2,

        "kills": 0, "exp": 0, "members": [  { "name": "Lasher", "info": { "hp": 50054, "mhp": 50054,"mn": 65655, 
        "mmn": 65655, "mv": 41629, "mmv": 41629, "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } , 
        { "name": "Razor", "info": { "hp": 31191, "mhp": 31191,"mn": 6199, "mmn": 6199, "mv": 5775, "mmv": 5775, 
        "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } ] }
Changed lines 223-224 from:
to:

Note: As with room exits, group information needs to be cleared with each GMCP data refresh so that members who have left the group do not remain in the data. The group plugin will be released with a modified GMCP handler, in the meantime you can pick up the latest development version at the Google code Aardwolf MUD Package

December 28, 2010, at 07:13 PM EST by admin
Added line 12:
December 28, 2010, at 07:13 PM EST by admin
Added line 75:
protocols gmcp sendgroupFlag group data for resend.
Added line 95:
group on/offTurns group monitor on/off (off by default)
Changed line 185 from:

Aardwolf Room. modules

to:

Aardwolf Group. module

Changed lines 187-206 from:

room.info

Room.info contains information about the current room and is in 3 main sections:

  • The header data such as room name and similar.

  • The exit directions and where they lead, with the following notes:
    • Inside a maze, room ids are not shown, just directions.
    • Custom exits are not shown, only the regular n/e/s/w/u/d for mapping purposes.
    • The recommended way to capture the ASCII map is still using maptags - there is no value in sending this out of band.

  • The coordinate info. The continent list is:
 0 = Mesolar
 1 = Southern Ocean
 2 = Gelidus
 3 = Abend
 4 = Alagh
 5 = Uncharted Oceans
 6 = Vidblain
to:

The GMCP group information consists of two main sections, the group header and an array of members. The group header contains:

Changed lines 190-191 from:

room.info { "num": 5922, "name": "At the entrance of the park", "zone": "zoo", "terrain": "city", "details": "",

            "exits": { "e": 5920, "s": 5916, "w": 12611 }, "coord": { "id": 0, "x": 37, "y": 19, "cont": 0 } }
to:

group { "groupname": "lsdkfs", "leader": "Lasher", "created": "28 Dec 14:05", "status": "Private", "count": 2,

        "kills": 0, "exp": 0, "members": <member array here> }
Changed lines 194-195 from:

There is also a special case for room.info when a room is not mappable such as a clan room. In these cases you will receive a valid room and area name, everything else will be default values:

to:

The array of member information contains:

Changed lines 197-198 from:

room.info { "num": -1, "name": "Emerald Clan Room", "zone": "emerald", "terrain": "",

            "details": "", "exits": {}, "coord": { "id": -1, "x": -1, "y": -1 } }
to:

"members": [ { "name": "Lasher", "info": { "hp": 50054, "mhp": 50054,"mn": 65655, "mmn": 65655, "mv": 41629, "mmv": 41629, "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } ,

              { "name": "Razor", "info":  { "hp": 31191, "mhp": 31191,"mn": 6199,  "mmn": 6199, "mv":  5775, "mmv": 5775,  "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } 
           ]
Changed lines 202-209 from:

Aardwolf Comm. modules


comm.channels

The 'comm.channels' set of tags contain channel data and include regular channels, auction/market, tell, say and yell. Unlike the old output tags, these all share the same type of message format and the channel name within the GMCP data is what changes:

to:

Full GMCP data for a sample group with 2 members:

Changed lines 205-207 from:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" }

to:

group { "groupname": "lsdkfs", "leader": "Lasher", "created": "28 Dec 14:05", "status": "Private", "count": 2, "kills": 0, "exp": 0, "members": [ { "name": "Lasher", "info": { "hp": 50054, "mhp": 50054,"mn": 65655, "mmn": 65655, "mv": 41629, "mmv": 41629, "align": 2500, "tnl": 43500, "qt": 0, "qs": 0, "lvl": 210 } } , { "name": "Razor", "info": { "hp": 31191, "mhp": 31191,"mn": 6199, "mmn": 6199, "mv": 5775, "mmv": 5775, "align": -2496, "tnl": 790, "qt": 0, "qs": 0, "lvl": 201 } } ] }

Changed lines 208-216 from:
  • Notes on channels
   ** Says from mobs have their own channel known as 'mobsay'
   ** Colors can be configured to be ANSI or Raw. See GMCP options.

comm.events

The 'comm.events' group of tags are for actions and events the player may want to know about. Ticks, a global quest starting, the player requesting or completing a quest are all examples of 'events' that can be reported via GMCP. The event group of tags so far is:

comm.tick:

to:

Note: Group information is not sent by default. It needs to be turned on either by:

- Sending 'group on' or 'group off' via GMCP. If you are using the Aardwolf Mushclient, this can be achieved manually by using 'sendgmcp group on'. - In the GMCP initialization sequence add 'group 1' to the 'core.supports.set' message. In CMUD, this can be added to the config box. In mushclient, it would be included in the GMCP handler as:

     Send_GMCP_Packet ('Core.Supports.Set [ "Char 1", "Comm 1", "Room 1", "Group 1" ]')

Aardwolf Room. modules


room.info

Room.info contains information about the current room and is in 3 main sections:

  • The header data such as room name and similar.

  • The exit directions and where they lead, with the following notes:
    • Inside a maze, room ids are not shown, just directions.
    • Custom exits are not shown, only the regular n/e/s/w/u/d for mapping purposes.
    • The recommended way to capture the ASCII map is still using maptags - there is no value in sending this out of band.

  • The coordinate info. The continent list is:
 0 = Mesolar
 1 = Southern Ocean
 2 = Gelidus
 3 = Abend
 4 = Alagh
 5 = Uncharted Oceans
 6 = Vidblain
Changed lines 238-239 from:

comm.tick { }

to:

room.info { "num": 5922, "name": "At the entrance of the park", "zone": "zoo", "terrain": "city", "details": "",

            "exits": { "e": 5920, "s": 5916, "w": 12611 }, "coord": { "id": 0, "x": 37, "y": 19, "cont": 0 } }
Changed lines 242-244 from:

comm.quest:

Sends information when anything related to a quest happens. The full set of messages is:

to:

There is also a special case for room.info when a room is not mappable such as a clan room. In these cases you will receive a valid room and area name, everything else will be default values:

Added lines 245-279:

room.info { "num": -1, "name": "Emerald Clan Room", "zone": "emerald", "terrain": "",

            "details": "", "exits": {}, "coord": { "id": -1, "x": -1, "y": -1 } }

@]

Aardwolf Comm. modules


comm.channels

The 'comm.channels' set of tags contain channel data and include regular channels, auction/market, tell, say and yell. Unlike the old output tags, these all share the same type of message format and the channel name within the GMCP data is what changes:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" }

  • Notes on channels
   ** Says from mobs have their own channel known as 'mobsay'
   ** Colors can be configured to be ANSI or Raw. See GMCP options.

comm.events

The 'comm.events' group of tags are for actions and events the player may want to know about. Ticks, a global quest starting, the player requesting or completing a quest are all examples of 'events' that can be reported via GMCP. The event group of tags so far is:

comm.tick:

comm.tick { }

comm.quest:

Sends information when anything related to a quest happens. The full set of messages is: [@

December 26, 2010, at 03:53 AM EST by admin
Changed line 128 from:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000 }

to:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000, "tier": 1 }

December 26, 2010, at 12:20 AM EST by admin
Deleted lines 119-128:
Feel free to experiment with these, but do not use them to build production plugins yet. Many of the 
attributes are difficult to put into a single category and could fit in several -- some of them may 
move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break 
any existing scripts, but moving data between tag groups might.

November 06, 2010, at 08:25 PM EST by Abelinc
Deleted line 0:
Changed line 183 from:
  11        Player resting
to:
  11        Player resting or sitting
September 18, 2010, at 02:52 AM EST by admin
Added line 1:
Changed line 92 from:
request questImmediately send current Quest status. See 'comm.event: quest' module doc below.
to:
request questImmediately send current Quest status. See 'comm.quest' module doc below.
Changed line 250 from:

comm.events - tick:

to:

comm.tick:

Changed line 252 from:

comm.event { "type" : "tick" }

to:

comm.tick { }

Changed lines 255-256 from:

comm.events - quest:

to:

comm.quest:

Changed line 260 from:
   comm.event { "type": "quest", "action": "start", "targ": "a swamp ape", "room": "Swamp Ape Enclosure", "area": "Aardwolf Zoological
to:
   comm.quest {"action": "start", "targ": "a swamp ape", "room": "Swamp Ape Enclosure", "area": "Aardwolf Zoological
Changed lines 264-265 from:
   comm.event { "type": "quest", "action": "fail", "wait": 15 }
to:
   comm.quest {"action": "fail", "wait": 15 }
Changed line 267 from:
   comm.event { "type": "quest", "action": "comp", "qp": 18, "tierqp": 9, "pracs": 0, "trains": 1, "tp": 0,
to:
   comm.quest {"action": "comp", "qp": 18, "tierqp": 9, "pracs": 0, "trains": 1, "tp": 0,
Changed lines 271-272 from:
   comm.event { "type": "quest", "action": "timeout", "wait": 30 }
to:
   comm.quest {"action": "timeout", "wait": 30 }
Changed lines 274-275 from:
   comm.event { "type": "quest", "action": "killed", "time": 52 }
to:
   comm.quest {"action": "killed", "time": 52 }
Changed lines 277-278 from:
   comm.event { "type": "quest", "action": "warning", "time": 5 }
to:
   comm.quest {"action": "warning", "time": 5 }
Changed lines 280-281 from:
   comm.event { "type": "quest", "action": "ready" }
to:
   comm.quest {"action": "ready" }
Changed lines 283-284 from:
   comm.event { "type": "quest", "action": "reset", "timer": 1 }
to:
   comm.quest {"action": "reset", "timer": 1 }
Changed lines 288-289 from:
     comm.event { "type": "quest", "action": "status", "status": "ready" }
to:
     comm.quest {"action": "status", "status": "ready" }
Changed line 291 from:
     comm.event { "type": "quest", "action": "status", "targ": "A spirit of strong essence", 
to:
     comm.quest {"action": "status", "targ": "A spirit of strong essence", 
Changed line 295 from:
     comm.event { "type": "quest", "action": "status", "targ": "missing", "room": "", 
to:
     comm.quest {"action": "status", "targ": "missing", "room": "", 
Changed line 299 from:
     comm.event { "type": "quest", "action": "status", "target": "killed", "time": 59 } 
to:
     comm.quest {"action": "status", "target": "killed", "time": 59 } 
Changed lines 304-311 from:
to:

comm.repop:

Sends a simple message with area key when an area repops:

comm.repop { "zone": "aylor" }
September 11, 2010, at 01:52 AM EST by admin
Changed lines 228-234 from:

A sample script to access/print this data in CMUD is:

to:

Aardwolf Comm. modules


comm.channels

The 'comm.channels' set of tags contain channel data and include regular channels, auction/market, tell, say and yell. Unlike the old output tags, these all share the same type of message format and the channel name within the GMCP data is what changes:

Changed lines 236-240 from:
  1. PRINT GMCP.room: %gmcp.room
  2. PRINT GMCP.room.exits: %gmcp.room.info.exits
  3. PRINT GMCP.room.exits.n: %gmcp.room.info.exits.n
  4. PRINT Continent: %gmcp.room.info.coord.id
  5. PRINT -----------------------------------------------
to:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" }

Changed lines 241-247 from:

Which produces:

[@ GMCP.room: info="num=16542|brief=A Quiet Section of the Swamp|zone=fens|sector=forest|flags|exits=""n=16543|s=16545|w=16541""|coord=""id=2|x=5|y=33""" GMCP.room.exits: n=16543|s=16545|w=16541 GMCP.room.exits.n: 16543 Continent: 2

to:
  • Notes on channels
   ** Says from mobs have their own channel known as 'mobsay'
   ** Colors can be configured to be ANSI or Raw. See GMCP options.

comm.events

The 'comm.events' group of tags are for actions and events the player may want to know about. Ticks, a global quest starting, the player requesting or completing a quest are all examples of 'events' that can be reported via GMCP. The event group of tags so far is:

comm.events - tick:

[@ comm.event { "type" : "tick" }

Changed lines 254-261 from:

Aardwolf Comm. modules


comm.channels

The 'comm.channels' set of tags contain channel data and include regular channels, auction/market, tell, say and yell. Unlike the old output tags, these all share the same type of message format and the channel name within the GMCP data is what changes:

to:

comm.events - quest:

Sends information when anything related to a quest happens. The full set of messages is:

Deleted lines 257-278:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" } @]

  • Notes on channels
   ** Says from mobs have their own channel known as 'mobsay'
   ** Colors can be configured to be ANSI or Raw. See GMCP options.

comm.events

The 'comm.events' group of tags are for actions and events the player may want to know about. Ticks, a global quest starting, the player requesting or completing a quest are all examples of 'events' that can be reported via GMCP. The event group of tags so far is:

comm.events - tick:

comm.event { "type" : "tick" }

comm.events - quest:

Sends information when anything related to a quest happens. The full set of messages is: [@

September 11, 2010, at 01:46 AM EST by admin
Changed lines 220-221 from:

A sample script to access/print this data in CMUD is:

to:

There is also a special case for room.info when a room is not mappable such as a clan room. In these cases you will receive a valid room and area name, everything else will be default values:

Added lines 223-229:

room.info { "num": -1, "name": "Emerald Clan Room", "zone": "emerald", "terrain": "",

            "details": "", "exits": {}, "coord": { "id": -1, "x": -1, "y": -1 } }

@]

A sample script to access/print this data in CMUD is: [@

Changed lines 306-307 from:
     comm.event { "type": "quest", "status": "ready" }
to:
     comm.event { "type": "quest", "action": "status", "status": "ready" }
Changed lines 309-311 from:
     comm.event { "type": "quest", "action": "start", "targ": "a living rock", "room": "Before the Fens",
                  "area": "The Curse of the Midnight Fens", "timer": 40 }
to:
     comm.event { "type": "quest", "action": "status", "targ": "A spirit of strong essence", 
                  "room": "The Path of the Dead", "area": "The Deadlights", "timer": 60 }
Changed lines 313-315 from:
     comm.event { "type": "quest", "action": "start", "targ": "a living rock", "room": "Before the Fens", 
                  "area": "The Curse of the Midnight Fens", "timer": 40 }
to:
     comm.event { "type": "quest", "action": "status", "targ": "missing", "room": "", 
                  "area": "", "timer": 60 }
Changed lines 317-318 from:
     comm.event { "type": "quest", "action": "status", "target": "killed", "time": 41 }
to:
     comm.event { "type": "quest", "action": "status", "target": "killed", "time": 59 } 
September 09, 2010, at 10:16 PM EST by admin
Changed lines 216-219 from:

room.info { "num": 16542, "brief" : "A Quiet Section of the Swamp", "zone": "fens", "sector": "forest", "flags": null,

            "exits" : { "n": 16543, "s": 16545, "w": 16541 }, 
            "coord" : { "id": 2, "x": 5, "y": 33 } 
          }
to:

room.info { "num": 5922, "name": "At the entrance of the park", "zone": "zoo", "terrain": "city", "details": "",

            "exits": { "e": 5920, "s": 5916, "w": 12611 }, "coord": { "id": 0, "x": 37, "y": 19, "cont": 0 } }
September 09, 2010, at 05:22 PM EST by admin
Changed line 91 from:
request questImmediately send current Quest status. See 'comm.event.*' module doc below.
to:
request questImmediately send current Quest status. See 'comm.event: quest' module doc below.
Added lines 293-312:
  Qreset self:
   comm.event { "type": "quest", "action": "reset", "timer": 1 }

Responses to 'request quest' GMCP command. These messages are sent in response to a request for status rather than being true 'events'.

  Able to quest right now:
     comm.event { "type": "quest", "status": "ready" }

  Currently on a quest (same as 'quest request' except action is 'status'):
     comm.event { "type": "quest", "action": "start", "targ": "a living rock", "room": "Before the Fens",
                  "area": "The Curse of the Midnight Fens", "timer": 40 }

  On a quest but target missing:
     comm.event { "type": "quest", "action": "start", "targ": "a living rock", "room": "Before the Fens", 
                  "area": "The Curse of the Midnight Fens", "timer": 40 }

  On a quest, target killed:
     comm.event { "type": "quest", "action": "status", "target": "killed", "time": 41 }
September 09, 2010, at 05:06 PM EST by admin
Deleted line 89:
request roomImmediately send GMCP room.info for current room
Added lines 91-92:
request questImmediately send current Quest status. See 'comm.event.*' module doc below.
request roomImmediately send GMCP room.info for current room
September 08, 2010, at 06:28 PM EST by admin
Changed line 2 from:

dsfsf

to:
September 08, 2010, at 06:27 PM EST by admin
Added line 2:

dsfsf

September 08, 2010, at 06:05 PM EST by admin
Changed lines 41-42 from:

For full details on GMCP in Aardwolf using Mushclient, see the Mushclient GMCP page

to:

For full details on GMCP in Aardwolf using Mushclient, see the Mushclient GMCP page.

Changed lines 47-49 from:

For full details on GMCP in Aardwolf using CMUD, see the CMUD GMCP page

to:

For full details on GMCP in Aardwolf using CMUD, see the CMUD GMCP page.

September 08, 2010, at 06:04 PM EST by admin
Added line 29:
September 08, 2010, at 06:02 PM EST by admin
Changed lines 46-48 from:

For full details on GMCP in Aardwolf using CMUD, see the CMUD GMCP page

to:

For full details on GMCP in Aardwolf using CMUD, see the CMUD GMCP page

September 08, 2010, at 06:01 PM EST by admin
Changed lines 40-41 from:

For full details on GMCP in Aardwolf using Mushclient, see the | Mushclient GMCP page

to:

For full details on GMCP in Aardwolf using Mushclient, see the Mushclient GMCP page

Changed lines 46-48 from:

For full details on GMCP in Aardwolf using CMUD, see the | Mushclient CMUD page

to:

For full details on GMCP in Aardwolf using CMUD, see the CMUD GMCP page

September 08, 2010, at 06:00 PM EST by admin
Added line 28:

\\

Changed line 83 from:
to:

\\

Added line 296:

\\

September 08, 2010, at 05:59 PM EST by admin
Changed line 36 from:
to:

\\

Changed line 42 from:
to:

\\

Changed line 49 from:
to:

\\

September 08, 2010, at 05:54 PM EST by admin
Changed lines 294-295 from:
to:


September 08, 2010, at 05:53 PM EST by admin
Deleted lines 56-57:

Aardwolf GMCP related in-game commands

Added lines 58-60:

Aardwolf GMCP related in-game commands

\\

Changed lines 82-83 from:
to:


Deleted lines 93-95:

Aardwolf GMCP Modules

Added lines 96-99:

Aardwolf GMCP Modules


September 08, 2010, at 05:52 PM EST by admin
Changed line 30 from:

GMCP related links

to:

General GMCP related links

Changed lines 33-34 from:
  • Information on GMCP in Mushclient can be found at Mushclient GMCP/ATCP2 Plugin
  • Information on GMCP in Mudlet can be found at Mudlet Forums - GMCP in Mudlet
to:
  • information on GMCP in Mudlet can be found at Mudlet Forums - GMCP in Mudlet
September 08, 2010, at 05:51 PM EST by admin
Changed line 59 from:

Aardwolf Commands

to:

Aardwolf GMCP related in-game commands

Changed lines 83-84 from:

GMCP Commands

to:

Aardwolf GMCP Commands

Deleted line 94:
September 08, 2010, at 05:50 PM EST by admin
Deleted line 4:
Deleted lines 38-41:

GMCP Client Support



September 08, 2010, at 05:50 PM EST by admin
Changed lines 18-19 from:
to:
September 08, 2010, at 05:49 PM EST by admin
Deleted lines 5-8:
Changed lines 15-16 from:
to:
Changed lines 63-66 from:

GMCP Debug Modes

GMCP is a very quiet protocol - all data exchange takes place behind the scenes. This is great when things are working, but can make the protocol difficult to debug when things are not. Aardwolf supports a number of debug options to provide the client with feedback on what is happening server side.

Standard Debug Mode - "Debug 1"

to:

Aardwolf Commands

Changed lines 65-100 from:

When "debug 1" is set in the "packages supported" window, any GMCP errors recognized server side will be sent to the screen. Depending on your client, a situation may occur where you cannot get GMCP working well enough to establish the initial exchange of tags supported so are unable to turn on 'debug 1'. On the Aardwolf test port (aardmud.net 6555) GMCP debug mode defaults to 'on'. To turn it off, explicitly set 'debug 0' in your Cmud settings.\\

to:

The protocols command in Aardwolf MUD exists to provide some feedback on which protocols are enabled:

Using the syntax protocols gmcp will show which specific GMCP options are on and off:

The following commands also help configure or debug GMCP within Aardwolf

CommandAction
protocols gmcp sendbaseImmediately send GMCP char.base variables.
protocols gmcp sendcharImmediately send all GMCP char variables.
protocols gmcp sendmaxImmediately send GMCP char.maxstats data.
protocols gmcp sendstatsImmediately send GMCP char.stats data.
protocols gmcp sendstatusImmediately send GMCP char.status data
protocols gmcp sendvitalsImmediately send GMCP char.vitals data
protocols gmcp sendworthImmediately send GMCP char.worth data
protocols gmcp rawcolorToggle between GMCP rawcolor and ANSI mode
protocols gmcp restartTrigger sending of telnet negotiation to restart GMCP

GMCP Commands

GMCP also supports sending messages from the client to the server. The following "commands" can be sent from the client via GMCP. Some of these duplicate in-game command options, giving you the choice of whether to use GMCP itself to configure the session or in-game commands. The 'request' commands are often useful when a plugin is changed and needs to be redrawn - instead of having special "redraw" functions in the plugin, just let the data refresh and trigger a redraw the normal way.

CommandAction
request roomImmediately send GMCP room.info for current room
request charImmediately request GMCP char.* data
debug on/offTurns the debug mode on or off
rawcolor on/offTurns the rawcolor mode on or off

Aardwolf GMCP Modules

Changed lines 102-117 from:
The data below shows several invalid "supported package" strings and the output seen in the client when debug mode is on:
badopt 1
testopt 3
pudding 1 2 3 4
2

MUD Output:
GMCP Error: core.supports.set -> unsupported keyword badopt (data:badopt 1)

GMCP Error: core.supports.set -> setting should be 0 or 1 - received 3 (data:testopt 3)

GMCP Error: core.supports.set -> expected format is [key 0|1] - received (data:pudding 1 2 3 4)

GMCP Error: core.supports.set -> expected element to be string, got Integer
to:
Deleted lines 119-120:

JSON Debug Mode - "Debug.json 1"

Changed lines 121-131 from:

A number of the standard tags in GMCP use the JSON data format. For each piece of GMCP data sent to Aardwolf, whether or not it will be processed through a JSON parser will depend on the tag type. Most of the standard tags such as 'core.' are in JSON format, most of the Aardwolf specific tags (see below) are not.

There will be times when it is useful to see how the JSON parsed data appears to the server. The 'debug.json' config option is available on the test port only. When this option is turned on, JSON received by the server will be echod back to the client. Note that during connection time no JSON debug information is sent as the "debug.json 1" message has not been exchanged yet. Using the sample program from the CMUD GMPC link with the JSON debug option on:
[@ $response = ""

  1. addkey $response client "CMUD"
  2. addkey $response version 3.22
  3. SENDGMCP "core.hello" $response

$list = {core 1|char 1|room 1|comm 1}

  1. SENDGMCP "core.supports.set" $list
to:

[@ Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.

Changed lines 129-147 from:


Gives the response:

[@


Json Message Received -----------

{

   "client": "CMUD",
   "version": 3.2200000000000002

}


End Json Message --------------


Json Message Received -----------

[

   "core 1",
   "char 1",
   "room 1",
   "comm 1"

]


End Json Message --------------
to:

Aardwolf Char. modules

The goal with these groups is to separate the total pool of stats into groups that tend to change together, rather than sending the whole set of data when any single value changes.

char.base

The 'char.base' set of data contains are items that will rarely change such as your class, subclass, race, clan, name. The char.base data is sent at login for scripts that want to capture this 'header' information and then not sent again unless one of these items changes. [@ char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000 }

Changed lines 142-165 from:


Packet Debug Mode - "Debug.packets 1"


If all else fails and GMCP debug mode combined with Json debug mode are not enough to resolve a problem, turning on this option will cause a byte-level dump of all GMCP (protocol 201) data received to be echod back to the client. For example, with this option active, the program above returns the output below. Note that there are two separate IAC-SB-201 messages because there are 2 'SENDGMCP' statements in the program:

[@


Telnet Data Start-----------------

IAC SB 201 63 6f 72 65 2e 68 65 6c 6c 6f 20 7b 22 63 6c 69 core.hello {"cli 65 6e 74 22 3a 22 43 4d 55 44 22 2c 22 76 65 72 ent":"CMUD","ver 73 69 6f 6e 22 3a 33 2e 32 32 7d sion":3.22} IAC SE


Telnet Data End -----------------


Telnet Data Start-----------------

IAC SB 201 63 6f 72 65 2e 73 75 70 70 6f 72 74 73 2e 73 65 core.supports.se 74 20 5b 22 63 6f 72 65 20 31 22 2c 22 63 68 61 t ["core 1","cha 72 20 31 22 2c 22 72 6f 6f 6d 20 31 22 2c 22 63 r 1","room 1","c 6f 6d 6d 20 31 22 5d omm 1"] IAC SE


Telnet Data End -----------------
to:

char.vitals

Contains health, mana and moves information. Example output is: [@ char.vitals { "hp": 100000, "mana": 90000, "moves": 41599 }

Added lines 149-195:

char.stats

Contains stats that are usually affected by spellups and training:

char.stats { "str": 251, "int": 250, "wis": 250, "dex": 250, "con": 250, "luck": 250, "hr": 2298, "dr": 207, "saves": 13 }

char.maxstats

Contains max values for stats. In a separate group because these change far less often:

char.maxstats { "maxhp": 50099, "maxmana": 50029, "maxmoves": 41629, "maxstr": 51, "maxint": 134, "maxwis": 50, 
                "maxdex": 183, "maxcon": 99, "maxluck": 200 }

char.status

Experience to level, enemy if fighting and enemy percentage. Hunger and Thirst levels, position, etc:

char.status { "level": 210, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1867, "state": 3, 
              "pos": "Standing" , "enemy": "an owl", "enemypct": 93 }

The 'state' field is the character's current state. It partly duplicates the 'position' field but provides more information. The list of values for state is given below. The value of this field is that if you use plugins that send commands to the MUD, you can detect if your character is in note mode or the pager and wait before sending those commands. This is particularly useful for things like spellup scripts.

  1         At login screen, no player yet
  2         Player at MOTD or other login sequence
  3         Player fully active and able to receive MUD commands
  4         Player AFK
  5         Player in note 
  6         Player in Building/Edit mode
  7         Player at paged output prompt
  8         Player in combat
  9         Player sleeping
  11        Player resting

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

char.worth { "gold": 23128310661, "bank": 750000, "qp": 5052186, "tp": 10930, "trains": 6, "pracs": 14 }

Aardwolf Room. modules

Changed lines 198-243 from:

Aardwolf Commands

to:

room.info

Room.info contains information about the current room and is in 3 main sections:

  • The header data such as room name and similar.

  • The exit directions and where they lead, with the following notes:
    • Inside a maze, room ids are not shown, just directions.
    • Custom exits are not shown, only the regular n/e/s/w/u/d for mapping purposes.
    • The recommended way to capture the ASCII map is still using maptags - there is no value in sending this out of band.

  • The coordinate info. The continent list is:
 0 = Mesolar
 1 = Southern Ocean
 2 = Gelidus
 3 = Abend
 4 = Alagh
 5 = Uncharted Oceans
 6 = Vidblain

room.info { "num": 16542, "brief" : "A Quiet Section of the Swamp", "zone": "fens", "sector": "forest", "flags": null, 
            "exits" : { "n": 16543, "s": 16545, "w": 16541 }, 
            "coord" : { "id": 2, "x": 5, "y": 33 } 
          }

A sample script to access/print this data in CMUD is:

#PRINT GMCP.room: %gmcp.room
#PRINT GMCP.room.exits: %gmcp.room.info.exits
#PRINT GMCP.room.exits.n: %gmcp.room.info.exits.n
#PRINT Continent: %gmcp.room.info.coord.id
#PRINT -----------------------------------------------

Which produces:

GMCP.room: info="num=16542|brief=A Quiet Section of the Swamp|zone=fens|sector=forest|flags|exits=""n=16543|s=16545|w=16541""|coord=""id=2|x=5|y=33"""
GMCP.room.exits: n=16543|s=16545|w=16541
GMCP.room.exits.n: 16543
Continent: 2

Aardwolf Comm. modules

Changed lines 245-307 from:

The protocols command in Aardwolf MUD exists to provide some feedback on which protocols are enabled:

Using the syntax protocols gmcp will show which specific GMCP options are on and off:

The following commands also help configure or debug GMCP within Aardwolf

CommandAction
protocols gmcp sendbaseImmediately send GMCP char.base variables.
protocols gmcp sendcharImmediately send all GMCP char variables.
protocols gmcp sendmaxImmediately send GMCP char.maxstats data.
protocols gmcp sendstatsImmediately send GMCP char.stats data.
protocols gmcp sendstatusImmediately send GMCP char.status data
protocols gmcp sendvitalsImmediately send GMCP char.vitals data
protocols gmcp sendworthImmediately send GMCP char.worth data
protocols gmcp rawcolorToggle between GMCP rawcolor and ANSI mode
protocols gmcp restartTrigger sending of telnet negotiation to restart GMCP

GMCP Commands

GMCP also supports sending messages from the client to the server. The following "commands" can be sent from the client via GMCP. Some of these duplicate in-game command options, giving you the choice of whether to use GMCP itself to configure the session or in-game commands. The 'request' commands are often useful when a plugin is changed and needs to be redrawn - instead of having special "redraw" functions in the plugin, just let the data refresh and trigger a redraw the normal way.

CommandAction
request roomImmediately send GMCP room.info for current room
request charImmediately request GMCP char.* data
debug on/offTurns the debug mode on or off
rawcolor on/offTurns the rawcolor mode on or off

Aardwolf GMCP Modules




[@ Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.

to:

comm.channels

The 'comm.channels' set of tags contain channel data and include regular channels, auction/market, tell, say and yell. Unlike the old output tags, these all share the same type of message format and the channel name within the GMCP data is what changes:

[@ comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" }

Changed lines 256-264 from:

Aardwolf Char. modules

The goal with these groups is to separate the total pool of stats into groups that tend to change together, rather than sending the whole set of data when any single value changes.

char.base

The 'char.base' set of data contains are items that will rarely change such as your class, subclass, race, clan, name. The char.base data is sent at login for scripts that want to capture this 'header' information and then not sent again unless one of these items changes.

to:
  • Notes on channels
   ** Says from mobs have their own channel known as 'mobsay'
   ** Colors can be configured to be ANSI or Raw. See GMCP options.

comm.events

The 'comm.events' group of tags are for actions and events the player may want to know about. Ticks, a global quest starting, the player requesting or completing a quest are all examples of 'events' that can be reported via GMCP. The event group of tags so far is:

comm.events - tick:

Changed line 266 from:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000 }

to:

comm.event { "type" : "tick" }

Changed lines 269-271 from:

char.vitals

Contains health, mana and moves information. Example output is:

to:

comm.events - quest:

Sends information when anything related to a quest happens. The full set of messages is:

Changed lines 273-294 from:

char.vitals { "hp": 100000, "mana": 90000, "moves": 41599 }

to:
  Starting a new quest:
   comm.event { "type": "quest", "action": "start", "targ": "a swamp ape", "room": "Swamp Ape Enclosure", "area": "Aardwolf Zoological
                Park", "timer": 52 }

  Failing a quest:
   comm.event { "type": "quest", "action": "fail", "wait": 15 }

  Completing a quest:
   comm.event { "type": "quest", "action": "comp", "qp": 18, "tierqp": 9, "pracs": 0, "trains": 1, "tp": 0,
                "mccp": 2, "lucky": 0, "double": 0, "totqp": 29, "completed": 98 }

  Running out of time:
   comm.event { "type": "quest", "action": "timeout", "wait": 30 }

  Quest target killed:
   comm.event { "type": "quest", "action": "killed", "time": 52 }

  Quest time warning:
   comm.event { "type": "quest", "action": "warning", "time": 5 }

  Can now quest:
   comm.event { "type": "quest", "action": "ready" }
Changed lines 297-301 from:

char.stats

Contains stats that are usually affected by spellups and training: [@ char.stats { "str": 251, "int": 250, "wis": 250, "dex": 250, "con": 250, "luck": 250, "hr": 2298, "dr": 207, "saves": 13 }

to:

GMCP Debug Modes

GMCP is a very quiet protocol - all data exchange takes place behind the scenes. This is great when things are working, but can make the protocol difficult to debug when things are not. Aardwolf supports a number of debug options to provide the client with feedback on what is happening server side.

Standard Debug Mode - "Debug 1"


When "debug 1" is set in the "packages supported" window, any GMCP errors recognized server side will be sent to the screen. Depending on your client, a situation may occur where you cannot get GMCP working well enough to establish the initial exchange of tags supported so are unable to turn on 'debug 1'. On the Aardwolf test port (aardmud.net 6555) GMCP debug mode defaults to 'on'. To turn it off, explicitly set 'debug 0' in your Cmud settings.

The data below shows several invalid "supported package" strings and the output seen in the client when debug mode is on:
badopt 1
testopt 3
pudding 1 2 3 4
2

MUD Output:
[@

GMCP Error: core.supports.set -> unsupported keyword badopt (data:badopt 1)

GMCP Error: core.supports.set -> setting should be 0 or 1 - received 3 (data:testopt 3)

GMCP Error: core.supports.set -> expected format is [key 0|1] - received (data:pudding 1 2 3 4)

GMCP Error: core.supports.set -> expected element to be string, got Integer

Changed lines 322-328 from:

char.maxstats

Contains max values for stats. In a separate group because these change far less often: [@ char.maxstats { "maxhp": 50099, "maxmana": 50029, "maxmoves": 41629, "maxstr": 51, "maxint": 134, "maxwis": 50,

                "maxdex": 183, "maxcon": 99, "maxluck": 200 }
to:


JSON Debug Mode - "Debug.json 1"


A number of the standard tags in GMCP use the JSON data format. For each piece of GMCP data sent to Aardwolf, whether or not it will be processed through a JSON parser will depend on the tag type. Most of the standard tags such as 'core.' are in JSON format, most of the Aardwolf specific tags (see below) are not.

There will be times when it is useful to see how the JSON parsed data appears to the server. The 'debug.json' config option is available on the test port only. When this option is turned on, JSON received by the server will be echod back to the client. Note that during connection time no JSON debug information is sent as the "debug.json 1" message has not been exchanged yet. Using the sample program from the CMUD GMPC link with the JSON debug option on:
[@ $response = ""

  1. addkey $response client "CMUD"
  2. addkey $response version 3.22
  3. SENDGMCP "core.hello" $response

$list = {core 1|char 1|room 1|comm 1}

  1. SENDGMCP "core.supports.set" $list
Changed lines 338-344 from:

char.status

Experience to level, enemy if fighting and enemy percentage. Hunger and Thirst levels, position, etc: [@ char.status { "level": 210, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1867, "state": 3,

              "pos": "Standing" , "enemy": "an owl", "enemypct": 93 }
to:


Gives the response:

[@


Json Message Received -----------

{

   "client": "CMUD",
   "version": 3.2200000000000002

}


End Json Message --------------


Json Message Received -----------

[

   "core 1",
   "char 1",
   "room 1",
   "comm 1"

]


End Json Message --------------
Deleted lines 357-380:

The 'state' field is the character's current state. It partly duplicates the 'position' field but provides more information. The list of values for state is given below. The value of this field is that if you use plugins that send commands to the MUD, you can detect if your character is in note mode or the pager and wait before sending those commands. This is particularly useful for things like spellup scripts.

  1         At login screen, no player yet
  2         Player at MOTD or other login sequence
  3         Player fully active and able to receive MUD commands
  4         Player AFK
  5         Player in note 
  6         Player in Building/Edit mode
  7         Player at paged output prompt
  8         Player in combat
  9         Player sleeping
  11        Player resting

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

char.worth { "gold": 23128310661, "bank": 750000, "qp": 5052186, "tp": 10930, "trains": 6, "pracs": 14 }

Aardwolf Room. modules

Changed lines 360-396 from:

room.info

Room.info contains information about the current room and is in 3 main sections:

  • The header data such as room name and similar.

  • The exit directions and where they lead, with the following notes:
    • Inside a maze, room ids are not shown, just directions.
    • Custom exits are not shown, only the regular n/e/s/w/u/d for mapping purposes.
    • The recommended way to capture the ASCII map is still using maptags - there is no value in sending this out of band.

  • The coordinate info. The continent list is:
 0 = Mesolar
 1 = Southern Ocean
 2 = Gelidus
 3 = Abend
 4 = Alagh
 5 = Uncharted Oceans
 6 = Vidblain

room.info { "num": 16542, "brief" : "A Quiet Section of the Swamp", "zone": "fens", "sector": "forest", "flags": null, 
            "exits" : { "n": 16543, "s": 16545, "w": 16541 }, 
            "coord" : { "id": 2, "x": 5, "y": 33 } 
          }

A sample script to access/print this data in CMUD is:

#PRINT GMCP.room: %gmcp.room
#PRINT GMCP.room.exits: %gmcp.room.info.exits
#PRINT GMCP.room.exits.n: %gmcp.room.info.exits.n
#PRINT Continent: %gmcp.room.info.coord.id
#PRINT -----------------------------------------------

Which produces:

to:

Packet Debug Mode - "Debug.packets 1"


If all else fails and GMCP debug mode combined with Json debug mode are not enough to resolve a problem, turning on this option will cause a byte-level dump of all GMCP (protocol 201) data received to be echod back to the client. For example, with this option active, the program above returns the output below. Note that there are two separate IAC-SB-201 messages because there are 2 'SENDGMCP' statements in the program:

Changed lines 366-369 from:

GMCP.room: info="num=16542|brief=A Quiet Section of the Swamp|zone=fens|sector=forest|flags|exits=""n=16543|s=16545|w=16541""|coord=""id=2|x=5|y=33""" GMCP.room.exits: n=16543|s=16545|w=16541 GMCP.room.exits.n: 16543 Continent: 2

to:

Telnet Data Start-----------------

IAC SB 201 63 6f 72 65 2e 68 65 6c 6c 6f 20 7b 22 63 6c 69 core.hello {"cli 65 6e 74 22 3a 22 43 4d 55 44 22 2c 22 76 65 72 ent":"CMUD","ver 73 69 6f 6e 22 3a 33 2e 32 32 7d sion":3.22} IAC SE


Telnet Data End -----------------


Telnet Data Start-----------------

IAC SB 201 63 6f 72 65 2e 73 75 70 70 6f 72 74 73 2e 73 65 core.supports.se 74 20 5b 22 63 6f 72 65 20 31 22 2c 22 63 68 61 t ["core 1","cha 72 20 31 22 2c 22 72 6f 6f 6d 20 31 22 2c 22 63 r 1","room 1","c 6f 6d 6d 20 31 22 5d omm 1"] IAC SE


Telnet Data End -----------------
Deleted lines 382-384:

Aardwolf Comm. modules

Deleted lines 383-433:

comm.channels

The 'comm.channels' set of tags contain channel data and include regular channels, auction/market, tell, say and yell. Unlike the old output tags, these all share the same type of message format and the channel name within the GMCP data is what changes:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" }

  • Notes on channels
   ** Says from mobs have their own channel known as 'mobsay'
   ** Colors can be configured to be ANSI or Raw. See GMCP options.

comm.events

The 'comm.events' group of tags are for actions and events the player may want to know about. Ticks, a global quest starting, the player requesting or completing a quest are all examples of 'events' that can be reported via GMCP. The event group of tags so far is:

comm.events - tick:

comm.event { "type" : "tick" }

comm.events - quest:

Sends information when anything related to a quest happens. The full set of messages is:

  Starting a new quest:
   comm.event { "type": "quest", "action": "start", "targ": "a swamp ape", "room": "Swamp Ape Enclosure", "area": "Aardwolf Zoological
                Park", "timer": 52 }

  Failing a quest:
   comm.event { "type": "quest", "action": "fail", "wait": 15 }

  Completing a quest:
   comm.event { "type": "quest", "action": "comp", "qp": 18, "tierqp": 9, "pracs": 0, "trains": 1, "tp": 0,
                "mccp": 2, "lucky": 0, "double": 0, "totqp": 29, "completed": 98 }

  Running out of time:
   comm.event { "type": "quest", "action": "timeout", "wait": 30 }

  Quest target killed:
   comm.event { "type": "quest", "action": "killed", "time": 52 }

  Quest time warning:
   comm.event { "type": "quest", "action": "warning", "time": 5 }

  Can now quest:
   comm.event { "type": "quest", "action": "ready" }
September 08, 2010, at 05:48 PM EST by admin
Deleted lines 5-7:
September 08, 2010, at 05:48 PM EST by admin
Added line 46:
September 08, 2010, at 05:17 PM EST by admin
Deleted line 51:
Changed lines 56-60 from:

For full details on GMCP in Aardwolf using CMUD, see the | Mushclient CMUD page

to:

For full details on GMCP in Aardwolf using CMUD, see the | Mushclient CMUD page

September 08, 2010, at 05:07 PM EST by admin
Changed lines 41-42 from:
to:


Changed lines 44-45 from:
to:


\\

Changed lines 53-67 from:

GMCP is supported by default in the Cmud and Mudlet clients. At the time of writing, Cmud support is enabled only in the Cmud 3.22 beta which is available to registered Cmud users at:

The download includes two files:

  • The 'gmcphelper.lua' file should go into your lua library directory. This is the 'lua' directory your main Mushclient directory. For example, if you have Mushclient installed in c:\program files\mushclient then the main lua directory will be c:\program files\mushclient\lua.
  • The 'GMCP_handler.xml' should go into your main plugins directory then needs adding to your plugin list. Add the plugin by selecting the 'File' menu, then 'Plugins' then 'Add' and locate the GMCP_handler.xml file.

The GMCP_handler plugin has two aliases that you can use:

  • gmcpdebug [0|1|2] - View GMCP data coming from the MUD at varying levels of detail (0 is off).
  • sendgmcp [message] - Send raw GMCP data to the MUD. This is useful for sending the GMCP Commands directly to the Aardwolf.

Other than these two aliases, the GMCP handler itself doesn't do a whole lot. Its purpose is to capture the GMCP data into a single table then broadcast to other plugins that a new GMCP message has been received.

to:

GMCP in CMUD

Cmud support for GMCP is available in Cmud 3.22 beta and higher.

For full details on GMCP in Aardwolf using CMUD, see the | Mushclient CMUD page

GMCP in Mudlet

At the time of writing GMCP in Mudlet is only supported via a source version of the client which users have to compile for themselves so is not covered. If this is no longer true, please contact us (or just update the page, it's a wiki after all :) )

While not specifically related to GMCP, anyone using Mudlet on Aardwolf should consider the excellent Mudlet Aardwolf GUI package put together by Zaxes.

GMCP Debug Modes

GMCP is a very quiet protocol - all data exchange takes place behind the scenes. This is great when things are working, but can make the protocol difficult to debug when things are not. Aardwolf supports a number of debug options to provide the client with feedback on what is happening server side.

Standard Debug Mode - "Debug 1"

Changed lines 74-98 from:

Other plugins can then check for a broadcast from the GMCP handler, check to see if they are interested in the type of message and, if they are, request data from the GMCP handler at any level of the overall hierarchy. For example, a snippet from the stats plugin:

[@ function OnPluginBroadcast (msg, id, name, text)

   -- Look for GMCP handler.
   if (id == '3e7dedbe37e44942dd46d264') then
      if (text == "char.stats" or text == "char.maxstats" or text == "char.vitals" or text == "char.worth" or text == "char.status") then
         res, gmcparg = CallPlugin("3e7dedbe37e44942dd46d264","gmcpval","char") --- We just want the gmcp.char section.
         luastmt = "gmcpdata = " .. gmcparg --- Convert the serialized string back into a lua table.

         assert (loadstring (luastmt or "")) ()

         -- We asked for all char data in CallPlugin, so we now have a lua table 'gmcpdata' that can be seen in
         -- full on this page: GMCP Char. table example
      end
   end
   ...

end -- onpluginbroadcast

--- Later in the plugin where the data is actually used: ... fstr = "@GStrength : @C\[@W%3d@C/@W%-3d@C\] @GHealth : @C\[@W%6d@C/@W%6d@C\]@w" s = fstr:format(gmcpval("stats.str"),gmcpval("maxstats.maxstr"),gmcpval("vitals.hp"),gmcpval("maxstats.maxhp")) ...

to:
When "debug 1" is set in the "packages supported" window, any GMCP errors recognized server side will be sent to the screen. Depending on your client, a situation may occur where you cannot get GMCP working well enough to establish the initial exchange of tags supported so are unable to turn on 'debug 1'. On the Aardwolf test port (aardmud.net 6555) GMCP debug mode defaults to 'on'. To turn it off, explicitly set 'debug 0' in your Cmud settings.

The data below shows several invalid "supported package" strings and the output seen in the client when debug mode is on:
badopt 1
testopt 3
pudding 1 2 3 4
2

MUD Output:
[@

GMCP Error: core.supports.set -> unsupported keyword badopt (data:badopt 1)

GMCP Error: core.supports.set -> setting should be 0 or 1 - received 3 (data:testopt 3)

GMCP Error: core.supports.set -> expected format is [key 0|1] - received (data:pudding 1 2 3 4)

GMCP Error: core.supports.set -> expected element to be string, got Integer

Deleted lines 91-111:

GMCP Char. table example

GMCP in CMUD

GMCP comes enabled by default in CMUD. To set high level GMCP modules supported, enter the 'protocols' section of 'preferences' and add/remove items as necessary in the "supported packages" window. Each of the options is included below. For most users, we recommend leaving the defaults enabled and adding a "Debug 1" option.

GMCP in Mudlet

At the time of writing GMCP in Mudlet is only supported via a source version of the client which users have to compile for themselves so is not covered. If this is no longer true, please contact us (or just update the page, it's a wiki after all :) )

While not specifically related to GMCP, anyone using Mudlet on Aardwolf should consider the excellent Mudlet Aardwolf GUI package put together by Zaxes.

GMCP Debug Modes

GMCP is a very quiet protocol - all data exchange takes place behind the scenes. This is great when things are working, but can make the protocol difficult to debug when things are not. Aardwolf supports a number of debug options to provide the client with feedback on what is happening server side.

Standard Debug Mode - "Debug 1"

Changed lines 93-94 from:

When "debug 1" is set in the "packages supported" window, any GMCP errors recognized server side will be sent to the screen. Depending on your client, a situation may occur where you cannot get GMCP working well enough to establish the initial exchange of tags supported so are unable to turn on 'debug 1'. On the Aardwolf test port (aardmud.net 6555) GMCP debug mode defaults to 'on'. To turn it off, explicitly set 'debug 0' in your Cmud settings.\\

to:

JSON Debug Mode - "Debug.json 1"

Changed lines 96-99 from:

The data below shows several invalid "supported package" strings and the output seen in the client when debug mode is on:\\

to:

A number of the standard tags in GMCP use the JSON data format. For each piece of GMCP data sent to Aardwolf, whether or not it will be processed through a JSON parser will depend on the tag type. Most of the standard tags such as 'core.' are in JSON format, most of the Aardwolf specific tags (see below) are not.

There will be times when it is useful to see how the JSON parsed data appears to the server. The 'debug.json' config option is available on the test port only. When this option is turned on, JSON received by the server will be echod back to the client. Note that during connection time no JSON debug information is sent as the "debug.json 1" message has not been exchanged yet. Using the sample program from the CMUD GMPC link with the JSON debug option on: \\

Changed lines 101-105 from:

badopt 1 testopt 3 pudding 1 2 3 4 2@]
MUD Output:\\

to:

$response = ""

  1. addkey $response client "CMUD"
  2. addkey $response version 3.22
  3. SENDGMCP "core.hello" $response

$list = {core 1|char 1|room 1|comm 1}

  1. SENDGMCP "core.supports.set" $list

@]
Gives the response:
\\

Changed lines 112-118 from:

GMCP Error: core.supports.set -> unsupported keyword badopt (data:badopt 1)

GMCP Error: core.supports.set -> setting should be 0 or 1 - received 3 (data:testopt 3)

GMCP Error: core.supports.set -> expected format is [key 0|1] - received (data:pudding 1 2 3 4)

GMCP Error: core.supports.set -> expected element to be string, got Integer

to:

Json Message Received -----------

{

   "client": "CMUD",
   "version": 3.2200000000000002

}


End Json Message --------------


Json Message Received -----------

[

   "core 1",
   "char 1",
   "room 1",
   "comm 1"

]


End Json Message --------------
Changed line 130 from:

JSON Debug Mode - "Debug.json 1"

to:

Packet Debug Mode - "Debug.packets 1"

Changed line 132 from:

A number of the standard tags in GMCP use the JSON data format. For each piece of GMCP data sent to Aardwolf, whether or not it will be processed through a JSON parser will depend on the tag type. Most of the standard tags such as 'core.' are in JSON format, most of the Aardwolf specific tags (see below) are not.\\

to:

If all else fails and GMCP debug mode combined with Json debug mode are not enough to resolve a problem, turning on this option will cause a byte-level dump of all GMCP (protocol 201) data received to be echod back to the client. For example, with this option active, the program above returns the output below. Note that there are two separate IAC-SB-201 messages because there are 2 'SENDGMCP' statements in the program:\\

Changed lines 134-135 from:

There will be times when it is useful to see how the JSON parsed data appears to the server. The 'debug.json' config option is available on the test port only. When this option is turned on, JSON received by the server will be echod back to the client. Note that during connection time no JSON debug information is sent as the "debug.json 1" message has not been exchanged yet. Using the sample program from the CMUD GMPC link with the JSON debug option on: \\

to:
Changed lines 136-141 from:

$response = ""

  1. addkey $response client "CMUD"
  2. addkey $response version 3.22
  3. SENDGMCP "core.hello" $response

$list = {core 1|char 1|room 1|comm 1}

  1. SENDGMCP "core.supports.set" $list
to:

Telnet Data Start-----------------

IAC SB 201 63 6f 72 65 2e 68 65 6c 6c 6f 20 7b 22 63 6c 69 core.hello {"cli 65 6e 74 22 3a 22 43 4d 55 44 22 2c 22 76 65 72 ent":"CMUD","ver 73 69 6f 6e 22 3a 33 2e 32 32 7d sion":3.22} IAC SE


Telnet Data End -----------------


Telnet Data Start-----------------

IAC SB 201 63 6f 72 65 2e 73 75 70 70 6f 72 74 73 2e 73 65 core.supports.se 74 20 5b 22 63 6f 72 65 20 31 22 2c 22 63 68 61 t ["core 1","cha 72 20 31 22 2c 22 72 6f 6f 6d 20 31 22 2c 22 63 r 1","room 1","c 6f 6d 6d 20 31 22 5d omm 1"] IAC SE


Telnet Data End -----------------
Changed lines 154-155 from:

Gives the response:\\

to:

Aardwolf Commands

Deleted lines 156-201:
------------ Json Message Received -----------
{
   "client": "CMUD",
   "version": 3.2200000000000002
}
-------------- End Json Message --------------

------------ Json Message Received -----------
[
   "core 1",
   "char 1",
   "room 1",
   "comm 1"
]
-------------- End Json Message --------------


Packet Debug Mode - "Debug.packets 1"


If all else fails and GMCP debug mode combined with Json debug mode are not enough to resolve a problem, turning on this option will cause a byte-level dump of all GMCP (protocol 201) data received to be echod back to the client. For example, with this option active, the program above returns the output below. Note that there are two separate IAC-SB-201 messages because there are 2 'SENDGMCP' statements in the program:

--------------- Telnet Data Start-----------------
IAC SB 201
63 6f 72 65 2e 68 65 6c 6c 6f 20 7b 22 63 6c 69      core.hello {"cli        
65 6e 74 22 3a 22 43 4d 55 44 22 2c 22 76 65 72      ent":"CMUD","ver        
73 69 6f 6e 22 3a 33 2e 32 32 7d                     sion":3.22}             
IAC SE
---------------- Telnet Data End -----------------

--------------- Telnet Data Start-----------------
IAC SB 201
63 6f 72 65 2e 73 75 70 70 6f 72 74 73 2e 73 65      core.supports.se        
74 20 5b 22 63 6f 72 65 20 31 22 2c 22 63 68 61      t ["core 1","cha        
72 20 31 22 2c 22 72 6f 6f 6d 20 31 22 2c 22 63      r 1","room 1","c        
6f 6d 6d 20 31 22 5d                                 omm 1"]                 
IAC SE
---------------- Telnet Data End -----------------


Aardwolf Commands

\\

Changed lines 192-199 from:

Example client triggers and scripts

CMUD Examples

CMUD - char.vitals.health trigger

The trigger below is a simple example to show data available in CMUD when GMCP messages are received. Whenever the player health changes, a GMCP message is sent to the client. The trigger is on a change in char.vitals.health:

to:

Aardwolf GMCP Modules

Added lines 194-210:
Changed lines 212-216 from:

The full code for this trigger is:

to:


Feel free to experiment with these, but do not use them to build production plugins yet. Many of the 
attributes are difficult to put into a single category and could fit in several -- some of them may 
move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break 
any existing scripts, but moving data between tag groups might.

Aardwolf Char. modules

The goal with these groups is to separate the total pool of stats into groups that tend to change together, rather than sending the whole set of data when any single value changes.

char.base

The 'char.base' set of data contains are items that will rarely change such as your class, subclass, race, clan, name. The char.base data is sent at login for scripts that want to capture this 'header' information and then not sent again unless one of these items changes.

Changed lines 232-263 from:

execwin stats { #clr }

  1. win stats {gmcp.char.base.name -------------------%cr}
  2. win stats {ansi(high, white)%gmcp.char.base.class
            ansi(high, white)%gmcp.char.base.subclass}
  1. win stats {ansi(high, white)%gmcp.char.base.race
            ansi(high, white)%gmcp.char.base.clan}

  1. win stats {ansi(high, cyan)Strength : gmcp.char.stats.str%ansi(high, white) /
               gmcp.char.maxstats.maxstr   ansi(high, green)
               ansi(high, white) / gmcp.char.maxstats.maxhp }
  1. win stats {ansi(high, green)ansi(high, white) /
               gmcp.char.maxstats.maxint   %ansi(high, cyan)Mana   : 
               gmcp.char.vitals.mana%ansi(high, white) / gmcp.char.maxstats.maxmana }
  1. win stats {ansi(high, green)ansi(high, white) /
               gmcp.char.maxstats.maxwis  ansi(high, green)
               ansi(high, white) / gmcp.char.maxstats.maxmoves }
  1. win stats {ansi(high, green)ansi(high, white)
               %ansi(high, white) / gmcp.char.maxstats.maxdex}
  1. win stats {ansi(high, green)ansi(high, white) /
                gmcp.char.maxstats.maxcon   %ansi(high, cyan)
                Hitroll: gmcp.char.stats.hr }
  1. win stats {ansi(high, green)ansi(high, white) /
            gmcp.char.maxstats.maxluck   ansi(high, green)
            %gmcp.char.stats.dr }

  1. win stats {ansi(high, cyan)Exp To Level : gmcp.char.status.tnl
               ansi(high, green)%gmcp.char.status.level}
  1. win stats {ansi(high, yellow)%gmcp.char.status.align
            ansi(high, yellow)%gmcp.char.worth.gold}

  1. win stats {ansi(high, red)Fighting : cr%ansi(high, green)E
            nemy Health : %gmcp.char.status.enemypct}
to:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000 }

Changed lines 235-269 from:

Sample output from this trigger is:

Disclaimer - there are probably better ways to present and format this data. For example, the formatting will completely break once someone with a different class or race uses it. The point of this trigger is to demonstrate how easy it is to get at the GMCP data. Someone else can make it pretty.

Aardwolf GMCP Modules




[@ Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.

to:

char.vitals

Contains health, mana and moves information. Example output is: [@ char.vitals { "hp": 100000, "mana": 90000, "moves": 41599 }

Changed lines 242-250 from:

Aardwolf Char. modules

The goal with these groups is to separate the total pool of stats into groups that tend to change together, rather than sending the whole set of data when any single value changes.

char.base

The 'char.base' set of data contains are items that will rarely change such as your class, subclass, race, clan, name. The char.base data is sent at login for scripts that want to capture this 'header' information and then not sent again unless one of these items changes.

to:

char.stats

Contains stats that are usually affected by spellups and training:

Changed line 246 from:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000 }

to:

char.stats { "str": 251, "int": 250, "wis": 250, "dex": 250, "con": 250, "luck": 250, "hr": 2298, "dr": 207, "saves": 13 }

Changed lines 249-251 from:

char.vitals

Contains health, mana and moves information. Example output is:

to:

char.maxstats

Contains max values for stats. In a separate group because these change far less often:

Changed lines 253-254 from:

char.vitals { "hp": 100000, "mana": 90000, "moves": 41599 }

to:

char.maxstats { "maxhp": 50099, "maxmana": 50029, "maxmoves": 41629, "maxstr": 51, "maxint": 134, "maxwis": 50,

                "maxdex": 183, "maxcon": 99, "maxluck": 200 }
Changed lines 257-259 from:

char.stats

Contains stats that are usually affected by spellups and training:

to:

char.status

Experience to level, enemy if fighting and enemy percentage. Hunger and Thirst levels, position, etc:

Changed lines 261-262 from:

char.stats { "str": 251, "int": 250, "wis": 250, "dex": 250, "con": 250, "luck": 250, "hr": 2298, "dr": 207, "saves": 13 }

to:

char.status { "level": 210, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1867, "state": 3,

              "pos": "Standing" , "enemy": "an owl", "enemypct": 93 }
Deleted lines 264-279:

char.maxstats

Contains max values for stats. In a separate group because these change far less often:

char.maxstats { "maxhp": 50099, "maxmana": 50029, "maxmoves": 41629, "maxstr": 51, "maxint": 134, "maxwis": 50, 
                "maxdex": 183, "maxcon": 99, "maxluck": 200 }

char.status

Experience to level, enemy if fighting and enemy percentage. Hunger and Thirst levels, position, etc:

char.status { "level": 210, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1867, "state": 3, 
              "pos": "Standing" , "enemy": "an owl", "enemypct": 93 }
September 08, 2010, at 05:01 PM EST by admin
Deleted lines 43-44:

GMCP is supported by default in the Cmud and Mudlet clients. At the time of writing, Cmud support is enabled only in the Cmud 3.22 beta which is available to registered Cmud users at:

Added lines 48-54:

For full details on GMCP in Aardwolf using Mushclient, see the | Mushclient GMCP page

GMCP is supported by default in the Cmud and Mudlet clients. At the time of writing, Cmud support is enabled only in the Cmud 3.22 beta which is available to registered Cmud users at:

September 08, 2010, at 04:58 PM EST by admin
Changed lines 103-104 from:
to:

While not specifically related to GMCP, anyone using Mudlet on Aardwolf should consider the excellent Mudlet Aardwolf GUI package put together by Zaxes.

September 08, 2010, at 04:56 PM EST by admin
September 08, 2010, at 04:25 PM EST by admin
September 08, 2010, at 04:08 PM EST by admin
Added lines 89-92:
September 08, 2010, at 04:08 PM EST by admin
Changed line 76 from:
         -- full on this page: MushclientGMCPTable1 GMCP Char. table example
to:
         -- full on this page: GMCP Char. table example
September 08, 2010, at 04:07 PM EST by admin
Changed lines 48-51 from:

The GMCP plugin client for Mushclient can be download here: Mushclient GMCP Plugin. The plugin requires Mushclient version 4.59 or higher as 4.59 is the first version that includes JSON support as part of the Mushclient package.

The package includes two files:

to:

The GMCP plugin client for Mushclient can be download here: Mushclient GMCP Plugin. The plugin requires Mushclient version 4.59 or higher as 4.59 is the first version that includes JSON support as part of the standard Mushclient package.

The download includes two files:

Changed lines 60-61 from:

Other than these two aliases, the GMCP handler itself doesn't do a whole lot. Its purpose is to capture the GMCP data into a single table then broadcast to other plugins that a new GMCP message has been received. Other plugins can then check for a broadcast from the GMCP handler and test the message type to see if they are interested. For example, a snippet from the stats plugin:

to:

Other than these two aliases, the GMCP handler itself doesn't do a whole lot. Its purpose is to capture the GMCP data into a single table then broadcast to other plugins that a new GMCP message has been received.
Other plugins can then check for a broadcast from the GMCP handler, check to see if they are interested in the type of message and, if they are, request data from the GMCP handler at any level of the overall hierarchy. For example, a snippet from the stats plugin:

Added line 72:
Added lines 74-76:
         -- We asked for all char data in CallPlugin, so we now have a lua table 'gmcpdata' that can be seen in
         -- full on this page: MushclientGMCPTable1 GMCP Char. table example
Changed lines 97-103 from:

At the time of writing GMCP in Mudlet is only supported via a source version of the client which users have to compile for themselves so is not covered. If this is no longer true, please contact (or just update the page, it's a wiki after all :) )

to:

At the time of writing GMCP in Mudlet is only supported via a source version of the client which users have to compile for themselves so is not covered. If this is no longer true, please contact us (or just update the page, it's a wiki after all :) )

GMCP Debug Modes

GMCP is a very quiet protocol - all data exchange takes place behind the scenes. This is great when things are working, but can make the protocol difficult to debug when things are not. Aardwolf supports a number of debug options to provide the client with feedback on what is happening server side.

Standard Debug Mode - "Debug 1"

Deleted lines 104-111:

--- to be added ---

GMCP Debug Modes

GMCP is a very quiet protocol - all data exchange takes place behind the scenes. This is great when things are working, but can make the protocol difficult to debug when things are not. Aardwolf supports a number of debug options to provide the client with feedback on what is happening server side.

Standard Debug Mode - "Debug 1"

\\

September 08, 2010, at 03:54 PM EST by admin
Changed lines 42-43 from:

Client Support

to:

GMCP Client Support

Changed lines 46-47 from:

GMCP in Mushclient

to:

GMCP in Mushclient

Changed lines 60-65 from:

The GMCP_handler plugin itself doesn't do a lot. You can use the alias 'gmcpdebug [0|1|2]' to see GMCP JSON data coming into the client at varying levels of detail, and the alias 'sendgmcp' will send raw GMCP data to the MUD.

GMCP in CMUD

to:

Other than these two aliases, the GMCP handler itself doesn't do a whole lot. Its purpose is to capture the GMCP data into a single table then broadcast to other plugins that a new GMCP message has been received. Other plugins can then check for a broadcast from the GMCP handler and test the message type to see if they are interested. For example, a snippet from the stats plugin:

function OnPluginBroadcast (msg, id, name, text)

   -- Look for GMCP handler.
   if (id == '3e7dedbe37e44942dd46d264') then
      if (text == "char.stats" or text == "char.maxstats" or text == "char.vitals" or text == "char.worth" or text == "char.status") then
         res, gmcparg = CallPlugin("3e7dedbe37e44942dd46d264","gmcpval","char") --- We just want the gmcp.char section.
         luastmt = "gmcpdata = " .. gmcparg --- Convert the serialized string back into a lua table.
         assert (loadstring (luastmt or "")) ()
      end
   end
   ...
end -- onpluginbroadcast

--- Later in the plugin where the data is actually used:
...
fstr = "@GStrength     : @C\[@W%3d@C/@W%-3d@C\]     @GHealth  : @C\[@W%6d@C/@W%6d@C\]@w"
s = fstr:format(gmcpval("stats.str"),gmcpval("maxstats.maxstr"),gmcpval("vitals.hp"),gmcpval("maxstats.maxhp"))
...

GMCP in CMUD

Changed lines 89-91 from:

GMCP in Mudlet

to:

GMCP in Mudlet

At the time of writing GMCP in Mudlet is only supported via a source version of the client which users have to compile for themselves so is not covered. If this is no longer true, please contact (or just update the page, it's a wiki after all :) )

September 08, 2010, at 03:41 PM EST by admin
Changed lines 54-55 from:
to:

The GMCP_handler plugin has two aliases that you can use:

  • gmcpdebug [0|1|2] - View GMCP data coming from the MUD at varying levels of detail (0 is off).
  • sendgmcp [message] - Send raw GMCP data to the MUD. This is useful for sending the GMCP Commands directly to the Aardwolf.

The GMCP_handler plugin itself doesn't do a lot. You can use the alias 'gmcpdebug [0|1|2]' to see GMCP JSON data coming into the client at varying levels of detail, and the alias 'sendgmcp' will send raw GMCP data to the MUD.

September 08, 2010, at 03:30 PM EST by admin
Added line 8:
Added lines 45-55:

GMCP in Mushclient

The GMCP plugin client for Mushclient can be download here: Mushclient GMCP Plugin. The plugin requires Mushclient version 4.59 or higher as 4.59 is the first version that includes JSON support as part of the Mushclient package.

The package includes two files:

  • The 'gmcphelper.lua' file should go into your lua library directory. This is the 'lua' directory your main Mushclient directory. For example, if you have Mushclient installed in c:\program files\mushclient then the main lua directory will be c:\program files\mushclient\lua.
  • The 'GMCP_handler.xml' should go into your main plugins directory then needs adding to your plugin list. Add the plugin by selecting the 'File' menu, then 'Plugins' then 'Add' and locate the GMCP_handler.xml file.

September 05, 2010, at 10:04 PM EST by admin
Changed line 304 from:

char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1867, "state": 3,

to:

char.status { "level": 210, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1867, "state": 3,

August 30, 2010, at 12:06 AM EST by admin
August 30, 2010, at 12:06 AM EST by admin
August 29, 2010, at 03:46 AM EST by admin
Added line 15:
Changed line 153 from:
to:
Changed line 155 from:
protocols gmcp sendbaseImmediately send all GMCP base variables.
to:
protocols gmcp sendbaseImmediately send GMCP char.base variables.
Added lines 165-177:

GMCP Commands

GMCP also supports sending messages from the client to the server. The following "commands" can be sent from the client via GMCP. Some of these duplicate in-game command options, giving you the choice of whether to use GMCP itself to configure the session or in-game commands. The 'request' commands are often useful when a plugin is changed and needs to be redrawn - instead of having special "redraw" functions in the plugin, just let the data refresh and trigger a redraw the normal way.

CommandAction
request roomImmediately send GMCP room.info for current room
request charImmediately request GMCP char.* data
debug on/offTurns the debug mode on or off
rawcolor on/offTurns the rawcolor mode on or off

August 29, 2010, at 03:39 AM EST by admin
Changed lines 154-156 from:
protocols gmcp sendcharimmediately send all GMCP char variables.
protocols gmcp sendstatsimmediately send all GMCP stats data.
to:
protocols gmcp sendbaseImmediately send all GMCP base variables.
protocols gmcp sendcharImmediately send all GMCP char variables.
protocols gmcp sendmaxImmediately send GMCP char.maxstats data.
protocols gmcp sendstatsImmediately send GMCP char.stats data.
protocols gmcp sendstatusImmediately send GMCP char.status data
protocols gmcp sendvitalsImmediately send GMCP char.vitals data
protocols gmcp sendworthImmediately send GMCP char.worth data
protocols gmcp rawcolorToggle between GMCP rawcolor and ANSI mode
protocols gmcp restartTrigger sending of telnet negotiation to restart GMCP
August 29, 2010, at 03:36 AM EST by admin
Added lines 150-156:

The following commands also help configure or debug GMCP within Aardwolf

CommandAction
protocols gmcp sendcharimmediately send all GMCP char variables.
protocols gmcp sendstatsimmediately send all GMCP stats data.
August 29, 2010, at 03:30 AM EST by admin
Changed lines 376-377 from:

comm.events - quest:

to:

comm.events - quest:

August 29, 2010, at 03:29 AM EST by admin
Changed lines 381-382 from:
   comm.event { "type": "quest", "action": "start", "targ": "a swamp ape",
                "room": "Swamp Ape Enclosure", "area": "Aardwolf Zoological
to:
   comm.event { "type": "quest", "action": "start", "targ": "a swamp ape", "room": "Swamp Ape Enclosure", "area": "Aardwolf Zoological
Changed lines 388-391 from:
   comm.event { "type": "quest", "action": "comp", "qp": 18, "tierqp": 9,
                "pracs": 0, "trains": 1, "tp": 0, "mccp": 2, "lucky": 0,
                "double": 0, "totqp": 29, "completed": 98 }
to:
   comm.event { "type": "quest", "action": "comp", "qp": 18, "tierqp": 9, "pracs": 0, "trains": 1, "tp": 0,
                "mccp": 2, "lucky": 0, "double": 0, "totqp": 29, "completed": 98 }
August 29, 2010, at 03:28 AM EST by admin
Changed line 371 from:

comm.events - tick

to:

comm.events - tick:

Added lines 376-404:

comm.events - quest:

Sends information when anything related to a quest happens. The full set of messages is:

  Starting a new quest:
   comm.event { "type": "quest", "action": "start", "targ": "a swamp ape",
                "room": "Swamp Ape Enclosure", "area": "Aardwolf Zoological
                Park", "timer": 52 }

  Failing a quest:
   comm.event { "type": "quest", "action": "fail", "wait": 15 }

  Completing a quest:
   comm.event { "type": "quest", "action": "comp", "qp": 18, "tierqp": 9,
                "pracs": 0, "trains": 1, "tp": 0, "mccp": 2, "lucky": 0,
                "double": 0, "totqp": 29, "completed": 98 }

  Running out of time:
   comm.event { "type": "quest", "action": "timeout", "wait": 30 }

  Quest target killed:
   comm.event { "type": "quest", "action": "killed", "time": 52 }

  Quest time warning:
   comm.event { "type": "quest", "action": "warning", "time": 5 }

  Can now quest:
   comm.event { "type": "quest", "action": "ready" }
August 29, 2010, at 03:27 AM EST by admin
Changed lines 363-375 from:
to:
  • Notes on channels
   ** Says from mobs have their own channel known as 'mobsay'
   ** Colors can be configured to be ANSI or Raw. See GMCP options.

comm.events

The 'comm.events' group of tags are for actions and events the player may want to know about. Ticks, a global quest starting, the player requesting or completing a quest are all examples of 'events' that can be reported via GMCP. The event group of tags so far is:

comm.events - tick

comm.event { "type" : "tick" }
August 29, 2010, at 03:23 AM EST by admin
Added lines 220-223:
August 28, 2010, at 07:52 AM EST by Abelinc
Changed lines 38-39 from:
to:
  • Information on GMCP in Tinyfugue can be found at Abelinc's telopts page
August 23, 2010, at 05:27 PM EST by admin
Changed lines 256-257 from:

char.stats { "str": 251, "maxstr": 51, "int": 250, "maxint": 50, "wis": 250, "maxwis": 50, "dex": 250, "maxdex": 50,

             "con": 250, "maxcon": 50, "luck": 250, "maxluck": 50, "hr": 2298, "dr": 207, "saves": 13 }
to:

char.stats { "str": 251, "int": 250, "wis": 250, "dex": 250, "con": 250, "luck": 250, "hr": 2298, "dr": 207, "saves": 13 }

August 23, 2010, at 03:30 PM EST by admin
Added lines 344-359:

Aardwolf Comm. modules


comm.channels

The 'comm.channels' set of tags contain channel data and include regular channels, auction/market, tell, say and yell. Unlike the old output tags, these all share the same type of message format and the channel name within the GMCP data is what changes:

comm.channel { "chan": "gossip", "msg": "You gossip 'Testing'" }

comm.channel { "chan": "tell", "msg": "You tell Razor 'testing gmcp tells'" }

August 23, 2010, at 01:58 AM EST by admin
Changed line 242 from:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing " }

to:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing ", "perlevel": 1000 }

August 13, 2010, at 02:32 AM EST by admin
Changed line 249 from:

char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

to:

char.vitals { "hp": 100000, "mana": 90000, "moves": 41599 }

August 10, 2010, at 04:09 PM EST by admin
Added lines 278-293:
  1         At login screen, no player yet
  2         Player at MOTD or other login sequence
  3         Player fully active and able to receive MUD commands
  4         Player AFK
  5         Player in note 
  6         Player in Building/Edit mode
  7         Player at paged output prompt
  8         Player in combat
  9         Player sleeping
  11        Player resting

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

Changed lines 295-304 from:
  100,1         At login screen, no player yet
  100,2         Player at MOTD or other login sequence
  100,3         Player fully active and able to receive MUD commands
  100,4         Player AFK
  100,5         Player in note mode
  100,6         Player in Building/Edit mode
  100,7         Player at paged output prompt
  100,8         Player in combat
  100,9         Player sleeping
  100,11        Player resting
to:

char.worth { "gold": 23128310661, "bank": 750000, "qp": 5052186, "tp": 10930, "trains": 6, "pracs": 14 }

Deleted lines 297-303:

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

char.worth { "gold": 23128310661, "bank": 750000, "qp": 5052186, "tp": 10930, "trains": 6, "pracs": 14 }
August 10, 2010, at 04:08 PM EST by admin
Changed lines 26-27 from:
to:

August 10, 2010, at 04:01 PM EST by admin
Changed lines 271-272 from:

char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1893, "pos": "Fighting" ,

              "enemy": "an owl", "enemypct": 93 }
to:

char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1867, "state": 3,

              "pos": "Standing" , "enemy": "an owl", "enemypct": 93 }
Changed lines 275-276 from:

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

to:

The 'state' field is the character's current state. It partly duplicates the 'position' field but provides more information. The list of values for state is given below. The value of this field is that if you use plugins that send commands to the MUD, you can detect if your character is in note mode or the pager and wait before sending those commands. This is particularly useful for things like spellup scripts.

Changed lines 278-287 from:

char.worth { "gold": 23128310661, "bank": 750000, "qp": 5052186, "tp": 10930, "trains": 6, "pracs": 14 }

to:
  100,1         At login screen, no player yet
  100,2         Player at MOTD or other login sequence
  100,3         Player fully active and able to receive MUD commands
  100,4         Player AFK
  100,5         Player in note mode
  100,6         Player in Building/Edit mode
  100,7         Player at paged output prompt
  100,8         Player in combat
  100,9         Player sleeping
  100,11        Player resting
Added lines 290-296:

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

char.worth { "gold": 23128310661, "bank": 750000, "qp": 5052186, "tp": 10930, "trains": 6, "pracs": 14 }
August 01, 2010, at 09:45 PM EST by admin
Added line 219:
Changed lines 221-223 from:
to:


August 01, 2010, at 09:45 PM EST by admin
Changed lines 206-207 from:
to:


Deleted line 208:

Aardwolf GMCP Modules

Changed lines 219-220 from:
to:


August 01, 2010, at 09:44 PM EST by admin
Changed line 207 from:
to:
Deleted lines 219-220:

\\

August 01, 2010, at 09:39 PM EST by admin
Added line 19:
August 01, 2010, at 09:38 PM EST by admin
Deleted lines 261-262:

room.info

Added lines 263-264:

room.info

Added lines 289-306:

A sample script to access/print this data in CMUD is:

#PRINT GMCP.room: %gmcp.room
#PRINT GMCP.room.exits: %gmcp.room.info.exits
#PRINT GMCP.room.exits.n: %gmcp.room.info.exits.n
#PRINT Continent: %gmcp.room.info.coord.id
#PRINT -----------------------------------------------

Which produces:

GMCP.room: info="num=16542|brief=A Quiet Section of the Swamp|zone=fens|sector=forest|flags|exits=""n=16543|s=16545|w=16541""|coord=""id=2|x=5|y=33"""
GMCP.room.exits: n=16543|s=16545|w=16541
GMCP.room.exits.n: 16543
Continent: 2
August 01, 2010, at 09:36 PM EST by admin
Changed line 264 from:
to:

\\

Added lines 283-288:
room.info { "num": 16542, "brief" : "A Quiet Section of the Swamp", "zone": "fens", "sector": "forest", "flags": null, 
            "exits" : { "n": 16543, "s": 16545, "w": 16541 }, 
            "coord" : { "id": 2, "x": 5, "y": 33 } 
          }
August 01, 2010, at 09:34 PM EST by admin
Added line 268:
Added line 273:
August 01, 2010, at 09:34 PM EST by admin
Changed lines 269-271 from:
 * Inside a maze, room ids are not shown, just directions.
 * Custom exits are not shown, only the regular n/e/s/w/u/d for mapping purposes.
 * The recommended way to capture the ASCII map is still using maptags - there is no value in sending this out of band.
to:
  • Inside a maze, room ids are not shown, just directions.
  • Custom exits are not shown, only the regular n/e/s/w/u/d for mapping purposes.
  • The recommended way to capture the ASCII map is still using maptags - there is no value in sending this out of band.
August 01, 2010, at 09:33 PM EST by admin
Changed lines 259-280 from:

@]

to:

@]

Aardwolf Room. modules

room.info

Room.info contains information about the current room and is in 3 main sections:

  • The header data such as room name and similar.
  • The exit directions and where they lead, with the following notes:
 * Inside a maze, room ids are not shown, just directions.
 * Custom exits are not shown, only the regular n/e/s/w/u/d for mapping purposes.
 * The recommended way to capture the ASCII map is still using maptags - there is no value in sending this out of band.
  • The coordinate info. The continent list is:
 0 = Mesolar
 1 = Southern Ocean
 2 = Gelidus
 3 = Abend
 4 = Alagh
 5 = Uncharted Oceans
 6 = Vidblain
July 29, 2010, at 02:34 PM EST by admin
Changed lines 198-199 from:

Sample output from this trigger is:

to:

Sample output from this trigger is:

July 29, 2010, at 02:33 PM EST by admin
Changed lines 156-157 from:
to:


July 29, 2010, at 02:33 PM EST by admin
Changed lines 154-155 from:

The trigger below is a simple example to show data available in CMUD when GMCP messages are received. Whenever the player health changes, a GMCP message is sent to the client. The trigger is on a change in char.vitals.health:

to:

The trigger below is a simple example to show data available in CMUD when GMCP messages are received. Whenever the player health changes, a GMCP message is sent to the client. The trigger is on a change in char.vitals.health:

July 29, 2010, at 02:32 PM EST by admin
Added line 153:
Changed lines 158-159 from:
to:

The full code for this trigger is:

July 29, 2010, at 02:30 PM EST by admin
Changed lines 161-174 from:
  1. win stats {ansi(high, white)ansi(high, green)Subclass: gmcp.char.base.subclass}
  2. win stats {ansi(high, white)ansi(high, green)Clan : gmcp.char.base.clan}

  3. win stats {ansi(high, cyan)Strength : gmcp.char.stats.str%ansi(high, white) /gmcp.char.maxstats.maxstr ansi(high, green)ansi(high, white) / gmcp.char.maxstats.maxhp }
  4. win stats {ansi(high, green)ansi(high, white) /gmcp.char.maxstats.maxint ansi(high, green)ansi(high, white) / gmcp.char.maxstats.maxmana }
  5. win stats {ansi(high, green)ansi(high, white) /gmcp.char.maxstats.maxwis ansi(high, green)ansi(high, white) / gmcp.char.maxstats.maxmoves }
  6. win stats {ansi(high, green)ansi(high, white)%ansi(high, white) / gmcp.char.maxstats.maxdex}
  7. win stats {ansi(high, green)ansi(high, white) /gmcp.char.maxstats.maxcon ansi(high, green)%gmcp.char.stats.hr }
  8. win stats {ansi(high, green)ansi(high, white) /gmcp.char.maxstats.maxluck ansi(high, green)%gmcp.char.stats.dr }

  9. win stats {ansi(high, cyan)Exp To Level : gmcp.char.status.tnl ansi(high, green)%gmcp.char.status.level}
  10. win stats {ansi(high, yellow)ansi(high, cyan)Gold : gmcp.char.worth.gold}

  11. win stats {ansi(high, red)Fighting : crgmcp.char.status.enemypct}
to:
  1. win stats {ansi(high, white)%gmcp.char.base.class
            ansi(high, white)%gmcp.char.base.subclass}
  1. win stats {ansi(high, white)%gmcp.char.base.race
            ansi(high, white)%gmcp.char.base.clan}

  1. win stats {ansi(high, cyan)Strength : gmcp.char.stats.str%ansi(high, white) /
               gmcp.char.maxstats.maxstr   ansi(high, green)
               ansi(high, white) / gmcp.char.maxstats.maxhp }
  1. win stats {ansi(high, green)ansi(high, white) /
               gmcp.char.maxstats.maxint   %ansi(high, cyan)Mana   : 
               gmcp.char.vitals.mana%ansi(high, white) / gmcp.char.maxstats.maxmana }
  1. win stats {ansi(high, green)ansi(high, white) /
               gmcp.char.maxstats.maxwis  ansi(high, green)
               ansi(high, white) / gmcp.char.maxstats.maxmoves }
  1. win stats {ansi(high, green)ansi(high, white)
               %ansi(high, white) / gmcp.char.maxstats.maxdex}
  1. win stats {ansi(high, green)ansi(high, white) /
                gmcp.char.maxstats.maxcon   %ansi(high, cyan)
                Hitroll: gmcp.char.stats.hr }
  1. win stats {ansi(high, green)ansi(high, white) /
            gmcp.char.maxstats.maxluck   ansi(high, green)
            %gmcp.char.stats.dr }

  1. win stats {ansi(high, cyan)Exp To Level : gmcp.char.status.tnl
               ansi(high, green)%gmcp.char.status.level}
  1. win stats {ansi(high, yellow)%gmcp.char.status.align
            ansi(high, yellow)%gmcp.char.worth.gold}

  1. win stats {ansi(high, red)Fighting : cr%ansi(high, green)E
            nemy Health : %gmcp.char.status.enemypct}
July 29, 2010, at 02:20 PM EST by admin
Added lines 157-177:
execwin stats { #clr }
#win stats {%ansi(high, white) --------------- Stats for %gmcp.char.base.name -------------------%cr}
#win stats {%ansi(high, green)Class   : %ansi(high, white)%gmcp.char.base.class    %ansi(high, green)Subclass: %ansi(high, white)%gmcp.char.base.subclass}
#win stats {%ansi(high, green)Race    : %ansi(high, white)%gmcp.char.base.race        %ansi(high, green)Clan    : %ansi(high, white)%gmcp.char.base.clan}

#win stats {%cr%ansi(high, cyan)Strength     : %ansi(high, green)%gmcp.char.stats.str%ansi(high, white) /%ansi(high, green) %gmcp.char.maxstats.maxstr   %ansi(high, cyan)Health : %ansi(high, green)%gmcp.char.vitals.hp%ansi(high, white) / %ansi(high, green)%gmcp.char.maxstats.maxhp }
#win stats {%ansi(high, cyan)Intelligence : %ansi(high, green)%gmcp.char.stats.int%ansi(high, white) /%ansi(high, green) %gmcp.char.maxstats.maxint   %ansi(high, cyan)Mana   : %ansi(high, green)%gmcp.char.vitals.mana%ansi(high, white) / %ansi(high, green)%gmcp.char.maxstats.maxmana }
#win stats {%ansi(high, cyan)Wisdom       : %ansi(high, green)%gmcp.char.stats.wis%ansi(high, white) /%ansi(high, green) %gmcp.char.maxstats.maxwis  %ansi(high, cyan) Moves  : %ansi(high, green)%gmcp.char.vitals.moves%ansi(high, white) / %ansi(high, green)%gmcp.char.maxstats.maxmoves }
#win stats {%ansi(high, cyan)Dexterity    : %ansi(high, green)%gmcp.char.stats.dex%ansi(high, white)%ansi(high, white) / %ansi(high, green)%gmcp.char.maxstats.maxdex}
#win stats {%ansi(high, cyan)Constitution : %ansi(high, green)%gmcp.char.stats.con%ansi(high, white) /%ansi(high, green) %gmcp.char.maxstats.maxcon   %ansi(high, cyan)Hitroll: %ansi(high, green)%gmcp.char.stats.hr }
#win stats {%ansi(high, cyan)Luck         : %ansi(high, green)%gmcp.char.stats.luck%ansi(high, white) /%ansi(high, green) %gmcp.char.maxstats.maxluck   %ansi(high, cyan)Damroll: %ansi(high, green)%gmcp.char.stats.dr }

#win stats {%cr%ansi(high, cyan)Exp To Level : %ansi(high, green)%gmcp.char.status.tnl       %ansi(high, cyan)Level    : %ansi(high, green)%gmcp.char.status.level}
#win stats {%ansi(high, cyan)Alignment    : %ansi(high, yellow)%gmcp.char.status.align       %ansi(high, cyan)Gold     : %ansi(high, yellow)%gmcp.char.worth.gold}

#win stats {%cr%ansi(high, red)Fighting     : %gmcp.char.status.enemy%cr%ansi(high, green)Enemy Health : %gmcp.char.status.enemypct}

July 29, 2010, at 02:15 PM EST by admin
Changed line 195 from:
             "con": 250, "maxcon": 50, "luck": 250, "maxluck": 50, "hr": 2298, "dr": 207, "saves": 13, "align": 1946 }
to:
             "con": 250, "maxcon": 50, "luck": 250, "maxluck": 50, "hr": 2298, "dr": 207, "saves": 13 }
Changed lines 210-211 from:

char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "pos": Fighting , "enemy": "an owl", "enemypct": 98 }

to:

char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "align": 1893, "pos": "Fighting" ,

              "enemy": "an owl", "enemypct": 93 }
July 29, 2010, at 01:36 PM EST by admin
Changed lines 198-200 from:

char.status

Experience to level, enemy if fighting and enemy percentage. Hunger and Thirst levels, position, etc:

to:

char.maxstats

Contains max values for stats. In a separate group because these change far less often:

Changed lines 202-203 from:

char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "pos": Fighting , "enemy": "an owl", "enemypct": 98 }

to:

char.maxstats { "maxhp": 50099, "maxmana": 50029, "maxmoves": 41629, "maxstr": 51, "maxint": 134, "maxwis": 50,

                "maxdex": 183, "maxcon": 99, "maxluck": 200 }
Changed lines 206-207 from:

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

to:

char.status

Experience to level, enemy if fighting and enemy percentage. Hunger and Thirst levels, position, etc:

Added lines 210-215:

char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "pos": Fighting , "enemy": "an owl", "enemypct": 98 } @]

char.worth

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc: [@

July 28, 2010, at 01:54 AM EST by admin
Changed line 1 from:
to:
July 28, 2010, at 01:52 AM EST by admin
Added line 1:
July 26, 2010, at 08:43 PM EST by admin
Changed line 32 from:
  • Information on GMCP in Mushclient can be found at Mushclient GCMP/ATCP2 Plugin
to:
  • Information on GMCP in Mushclient can be found at Mushclient GMCP/ATCP2 Plugin
July 26, 2010, at 08:41 PM EST by admin
Added line 32:
  • Information on GMCP in Mushclient can be found at Mushclient GCMP/ATCP2 Plugin
Changed lines 34-35 from:
to:
  • Information on GMCP in Tintin++ can be found at Tintin++ GMCP
July 26, 2010, at 08:39 PM EST by admin
Changed line 30 from:
  • The draft standard for GMCP can be found at Mudstandards.org
to:
  • The draft standard for GMCP can be found at Mudstandards.org
July 25, 2010, at 03:26 PM EST by admin
Added line 161:

\\

Changed lines 170-171 from:


to:
July 25, 2010, at 03:26 PM EST by admin
Deleted lines 160-163:

Aardwolf Char. modules


Added lines 168-170:

Aardwolf Char. modules


July 25, 2010, at 03:25 PM EST by admin
Changed line 164 from:
to:

July 25, 2010, at 03:23 PM EST by admin
Changed lines 158-159 from:
to:

Disclaimer - there are probably better ways to present and format this data. For example, the formatting will completely break once someone with a different class or race uses it. The point of this trigger is to demonstrate how easy it is to get at the GMCP data. Someone else can make it pretty.

July 25, 2010, at 03:19 PM EST by admin
Changed lines 156-168 from:
Received: char { "vitals": { "hp": 30806, "mana": 50029, "moves": 41629, "maxhp": 50034, "maxmana": 50029, "maxmoves": 41629 }, "stats": { "str": 400, "int": 300 }}
------------------------------------------------
GMCP: ||module=char|package|message|char="vitals=""hp=30806|mana=50029|moves=41629|maxhp=50034|maxmana=50029|maxmoves=41629""|stats=""str=400|int=300"""
GMCP.char.vitals: hp=30806|mana=50029|moves=41629|maxhp=50034|maxmana=50029|maxmoves=41629
GMCP.char.stats: str=400|int=300
Health: 30806/50034
Mana : 50029/50029
Moves : 41629/41629

Stats : STR: 400 INT: 300
------------------------------------------------
to:

July 25, 2010, at 03:00 PM EST by admin
Changed lines 23-24 from:

to:

July 25, 2010, at 02:59 PM EST by admin
Changed lines 208-211 from:
to:
char.status { "level": 210, "exp": 2100000, "tnl": 1000, "hunger": 70, "thirst": 70, "pos": Fighting , "enemy": "an owl", "enemypct": 98 }
Changed lines 213-216 from:

char.base

to:

These fields are related to achievements or 'worth' in the game and cover qp, tp, etc:

char.worth { "gold": 23128310661, "bank": 750000, "qp": 5052186, "tp": 10930, "trains": 6, "pracs": 14 }
July 25, 2010, at 02:46 PM EST by admin
Changed line 187 from:

char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

to:

char.base { "name": Lasher, "class": Warrior, "subclass": Soldier, "race": Elf, "clan": wolf, "pretitle": "Testing " }

Changed lines 211-213 from:

to:

char.base

July 25, 2010, at 02:44 PM EST by admin
Deleted line 185:
July 25, 2010, at 02:43 PM EST by admin
Changed lines 191-192 from:
  char.vitals
to:

char.vitals

July 25, 2010, at 02:43 PM EST by admin
Changed lines 172-173 from:
to:


Changed line 175 from:

Note: Feel free to experiment with these, but do not use them to build production plugins yet. Many of the

to:

Feel free to experiment with these, but do not use them to build production plugins yet. Many of the

July 25, 2010, at 02:42 PM EST by admin
Changed line 22 from:

to:

Changed line 174 from:

Feel free to experiment with these, but do not use them to build production plugins yet. Many of the

to:

Note: Feel free to experiment with these, but do not use them to build production plugins yet. Many of the

July 25, 2010, at 02:41 PM EST by admin
Changed line 22 from:

to:

Changed lines 174-177 from:

Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.

to:

Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.

July 25, 2010, at 02:40 PM EST by admin
Changed lines 173-176 from:

---- Note: Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.


to:
Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.
July 25, 2010, at 02:39 PM EST by admin
Added line 22:

July 25, 2010, at 02:38 PM EST by admin
Changed line 172 from:

---

to:

----

Changed lines 174-175 from:

---

to:

July 25, 2010, at 02:37 PM EST by admin
Changed lines 172-173 from:

Note: Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.

to:

--- Note: Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might. ---

July 25, 2010, at 02:35 PM EST by admin
Added lines 172-173:

Note: Feel free to experiment with these, but do not use them to build production plugins yet. Many of the attributes are difficult to put into a single category and could fit in several -- some of them may move. Compared to scraping tagged output such as statmon, adding new fields to groups will not break any existing scripts, but moving data between tag groups might.

Changed lines 176-178 from:

char.vitals

Contains health, mana and moves information. Example output is:

to:

char.base

The 'char.base' set of data contains are items that will rarely change such as your class, subclass, race, clan, name. The char.base data is sent at login for scripts that want to capture this 'header' information and then not sent again unless one of these items changes.

Changed lines 184-186 from:

char.stats

Contains stats that are usually affected by spellups and training:

to:
  char.vitals

Contains health, mana and moves information. Example output is:

Changed lines 188-189 from:

char.stats { "str": 251, "maxstr": 51, "int": 250, "maxint": 50, "wis": 250, "maxwis": 50, "dex": 250, "maxdex": 50,

             "con": 250, "maxcon": 50, "luck": 250, "maxluck": 50, "hr": 2298, "dr": 207, "saves": 13, "align": 1946 }
to:

char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

Added lines 191-198:

char.stats

Contains stats that are usually affected by spellups and training:

char.stats { "str": 251, "maxstr": 51, "int": 250, "maxint": 50, "wis": 250, "maxwis": 50, "dex": 250, "maxdex": 50, 
             "con": 250, "maxcon": 50, "luck": 250, "maxluck": 50, "hr": 2298, "dr": 207, "saves": 13, "align": 1946 }
July 24, 2010, at 09:49 PM EST by admin
Changed lines 181-182 from:

char.stats

to:

char.stats

Changed lines 189-191 from:

to:

char.status

Experience to level, enemy if fighting and enemy percentage. Hunger and Thirst levels, position, etc:

char.worth

July 24, 2010, at 09:47 PM EST by admin
Changed line 178 from:

Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

to:

char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

Changed lines 181-182 from:
to:

char.stats

Contains stats that are usually affected by spellups and training:

char.stats { "str": 251, "maxstr": 51, "int": 250, "maxint": 50, "wis": 250, "maxwis": 50, "dex": 250, "maxdex": 50, 
             "con": 250, "maxcon": 50, "luck": 250, "maxluck": 50, "hr": 2298, "dr": 207, "saves": 13, "align": 1946 }

July 24, 2010, at 09:44 PM EST by admin
Changed lines 22-23 from:

to:

July 24, 2010, at 09:43 PM EST by admin
Changed lines 22-23 from:

to:

Changed line 177 from:

[- [@

to:

[@

Changed lines 180-183 from:

-]

to:

July 24, 2010, at 09:42 PM EST by admin
Changed lines 22-23 from:

to:

Changed lines 177-178 from:

[@ Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

to:

[- [@ Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

Changed lines 180-182 from:

to:

-]

July 24, 2010, at 09:41 PM EST by admin
Changed line 177 from:

[@

to:

[@

July 24, 2010, at 09:41 PM EST by admin
Deleted line 176:

small

Changed line 178 from:

Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

to:

Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

July 24, 2010, at 09:40 PM EST by admin
Added line 177:

small

Changed line 179 from:

smallReceived: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

to:

Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

July 24, 2010, at 09:40 PM EST by admin
Changed lines 22-23 from:
to:

Changed line 178 from:

Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

to:

smallReceived: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

July 24, 2010, at 09:38 PM EST by admin
Changed lines 175-178 from:

Contains health information, target enemy and the enemy percent. The full set of data sent with char.vitals is:

to:

Contains health, mana and moves information. Example output is:

Received: char.vitals { "hp": 44857, "mana": 50154, "moves": 41754, "maxhp": 50159, "maxmana": 50154, "maxmoves": 41754 }

July 24, 2010, at 09:21 PM EST by admin
Added lines 167-178:

Aardwolf GMCP Modules

Aardwolf Char. modules

The goal with these groups is to separate the total pool of stats into groups that tend to change together, rather than sending the whole set of data when any single value changes.

char.vitals

Contains health information, target enemy and the enemy percent. The full set of data sent with char.vitals is:

July 24, 2010, at 09:07 PM EST by admin
July 23, 2010, at 05:32 PM EST by admin
Changed line 23 from:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor. With GMCP the data will be received and parsed by the client as long as you are actively connected to the game.\\\

to:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or inside the output pager. With GMCP the data will be received and parsed by the client as long as you are actively connected to the game.\\\

July 23, 2010, at 02:50 PM EST by admin
Changed line 23 from:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.\\\

to:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor. With GMCP the data will be received and parsed by the client as long as you are actively connected to the game.\\\

July 23, 2010, at 02:30 PM EST by admin
Changed lines 23-24 from:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

to:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

Another advantage with GMCP is lower overhead and bandwidth usage. If you are using the Aardwolf {statmon} tags then all your stats are sent along with each prompt. With GMCP, data is only sent when a value in a module you are subscribed to actually changes.

July 23, 2010, at 12:34 AM EST by admin
Changed line 153 from:

Received: Char.vitals.health 29965

to:

Received: char { "vitals": { "hp": 30806, "mana": 50029, "moves": 41629, "maxhp": 50034, "maxmana": 50029, "maxmoves": 41629 }, "stats": { "str": 400, "int": 300 }}

Changed lines 155-161 from:

GMCP: data=29965||module=Char|package=vitals|message=health|Char="vitals=""health=29965""" GMCP.char: vitals="health=29965" GMCP.char.vitals: health=29965 29965


@]

to:

GMCP: ||module=char|package|message|char="vitals=""hp=30806|mana=50029|moves=41629|maxhp=50034|maxmana=50029|maxmoves=41629""|stats=""str=400|int=300""" GMCP.char.vitals: hp=30806|mana=50029|moves=41629|maxhp=50034|maxmana=50029|maxmoves=41629 GMCP.char.stats: str=400|int=300 Health: 30806/50034 Mana : 50029/50029 Moves : 41629/41629

Stats : STR: 400 INT: 300


@]
July 22, 2010, at 09:14 PM EST by admin
Changed line 107 from:

If all else fails and GMCP debug mode combined with Json debug mode are not enough to resolve a problem, turning on this option will cause a byte-level dump of all GMCP (protocol 201) data received to be echod back to the client. For example, which this option active, the program above returns the output below. Note that there are two separate IAC-SB-201 messages because there are 2 'SENDGMCP' statements in the program:\\

to:

If all else fails and GMCP debug mode combined with Json debug mode are not enough to resolve a problem, turning on this option will cause a byte-level dump of all GMCP (protocol 201) data received to be echod back to the client. For example, with this option active, the program above returns the output below. Note that there are two separate IAC-SB-201 messages because there are 2 'SENDGMCP' statements in the program:\\

July 22, 2010, at 08:59 PM EST by admin
Changed lines 41-43 from:

--- to be added ---

to:

--- to be added ---

July 22, 2010, at 08:59 PM EST by admin
Added line 41:

--- to be added ---

July 22, 2010, at 08:59 PM EST by admin
Changed lines 1-2 from:
to:
July 22, 2010, at 08:58 PM EST by admin
Changed lines 1-2 from:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

to:
Changed lines 24-25 from:

blah

to:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

July 22, 2010, at 08:58 PM EST by admin
Changed lines 25-26 from:

.

to:

blah

July 22, 2010, at 08:57 PM EST by admin
Changed lines 24-25 from:

 

to:

.

July 22, 2010, at 08:57 PM EST by admin
Changed lines 24-25 from:



to:

 

July 22, 2010, at 08:57 PM EST by admin
Changed lines 24-25 from:
to:



July 22, 2010, at 08:54 PM EST by admin
Deleted lines 24-27:



July 22, 2010, at 08:53 PM EST by admin
Changed lines 26-28 from:
to:


July 22, 2010, at 08:53 PM EST by admin
Added line 24:
July 22, 2010, at 08:53 PM EST by admin
Added line 25:
July 22, 2010, at 08:52 PM EST by admin
Deleted lines 21-23:

---

Changed line 24 from:
to:

\\

July 22, 2010, at 08:52 PM EST by admin
Changed line 3 from:
to:
Changed lines 22-24 from:
to:

---

July 22, 2010, at 08:51 PM EST by admin
Changed lines 1-3 from:
to:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

Changed lines 21-22 from:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

to:
July 22, 2010, at 08:50 PM EST by admin
Deleted line 2:
Deleted lines 20-24:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

July 22, 2010, at 08:48 PM EST by admin
Changed lines 22-25 from:

Overview

to:
Added lines 27-29:

July 22, 2010, at 08:47 PM EST by admin
Deleted line 0:
Changed lines 20-21 from:
to:

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

July 22, 2010, at 08:47 PM EST by admin
Changed lines 1-3 from:
to:
July 22, 2010, at 08:44 PM EST by admin
Changed line 3 from:
to:
July 22, 2010, at 08:43 PM EST by admin
Changed lines 1-2 from:
to:
July 22, 2010, at 08:43 PM EST by admin
Changed lines 1-5 from:

Overview

to:
Added lines 23-26:

Overview

July 22, 2010, at 08:42 PM EST by admin
Deleted line 146:

\\

Added line 148:
July 22, 2010, at 08:41 PM EST by admin
Changed line 34 from:

Client Support!!

to:

Client Support

Changed line 144 from:

\\

to:
Added line 146:
July 22, 2010, at 08:39 PM EST by admin
Changed line 145 from:

CMUD Examples

to:

CMUD Examples

Changed lines 147-149 from:

CMUD - char.vitals.health trigger

The trigger below is a simple example to show data available in CMUD when GMCP messages are received. Whenever the player health changes, a GMCP message is sent to the client. The trigger is on a change in char.vitals.health:

to:

CMUD - char.vitals.health trigger

The trigger below is a simple example to show data available in CMUD when GMCP messages are received. Whenever the player health changes, a GMCP message is sent to the client. The trigger is on a change in char.vitals.health:

Changed line 154 from:

to:

[@

July 22, 2010, at 08:38 PM EST by admin
Added lines 20-23:
Added lines 143-163:

Example client triggers and scripts


!! CMUD Examples
!!! CMUD - char.vitals.health trigger The trigger below is a simple example to show data available in CMUD when GMCP messages are received. Whenever the player health changes, a GMCP message is sent to the client. The trigger is on a change in char.vitals.health:

Sample output from this trigger is:

Received: Char.vitals.health 29965


GMCP: data=29965||module=Char|package=vitals|message=health|Char="vitals=""health=29965""" GMCP.char: vitals="health=29965" GMCP.char.vitals: health=29965 29965


@]

July 22, 2010, at 02:02 AM EST by admin
Added lines 1-138:

Overview

GMCP is used to exchange data between the MUD client and Aardwolf server "out of band". Out of band means that the exchange of data takes place behind the scenes rather than via standard game output that is captured by triggers in the client. The benefits of this include a less cluttered screen, fewer triggers to handle and the ability for the MUD and client to exchange data regardless of your status in the game. For example, with regular triggers you may not receive MUD output while in note mode or the description editor, with GMCP the data will be received and parsed by the client as long as you are actively connected to the game.

GMCP related links

  • The draft standard for GMCP can be found at Mudstandards.org
  • Information on GMCP in Cmud can be found at Zuggsoft Forums - GMCP in CMUD
  • Information on GMCP in Mudlet can be found at Mudlet Forums - GMCP in Mudlet

Client Support!!

GMCP is supported by default in the Cmud and Mudlet clients. At the time of writing, Cmud support is enabled only in the Cmud 3.22 beta which is available to registered Cmud users at:

GMCP in CMUD

GMCP comes enabled by default in CMUD. To set high level GMCP modules supported, enter the 'protocols' section of 'preferences' and add/remove items as necessary in the "supported packages" window. Each of the options is included below. For most users, we recommend leaving the defaults enabled and adding a "Debug 1" option.

GMCP in Mudlet



GMCP Debug Modes

GMCP is a very quiet protocol - all data exchange takes place behind the scenes. This is great when things are working, but can make the protocol difficult to debug when things are not. Aardwolf supports a number of debug options to provide the client with feedback on what is happening server side.

Standard Debug Mode - "Debug 1"


When "debug 1" is set in the "packages supported" window, any GMCP errors recognized server side will be sent to the screen. Depending on your client, a situation may occur where you cannot get GMCP working well enough to establish the initial exchange of tags supported so are unable to turn on 'debug 1'. On the Aardwolf test port (aardmud.net 6555) GMCP debug mode defaults to 'on'. To turn it off, explicitly set 'debug 0' in your Cmud settings.

The data below shows several invalid "supported package" strings and the output seen in the client when debug mode is on:
badopt 1
testopt 3
pudding 1 2 3 4
2

MUD Output:
GMCP Error: core.supports.set -> unsupported keyword badopt (data:badopt 1)

GMCP Error: core.supports.set -> setting should be 0 or 1 - received 3 (data:testopt 3)

GMCP Error: core.supports.set -> expected format is [key 0|1] - received (data:pudding 1 2 3 4)

GMCP Error: core.supports.set -> expected element to be string, got Integer


JSON Debug Mode - "Debug.json 1"


A number of the standard tags in GMCP use the JSON data format. For each piece of GMCP data sent to Aardwolf, whether or not it will be processed through a JSON parser will depend on the tag type. Most of the standard tags such as 'core.' are in JSON format, most of the Aardwolf specific tags (see below) are not.

There will be times when it is useful to see how the JSON parsed data appears to the server. The 'debug.json' config option is available on the test port only. When this option is turned on, JSON received by the server will be echod back to the client. Note that during connection time no JSON debug information is sent as the "debug.json 1" message has not been exchanged yet. Using the sample program from the CMUD GMPC link with the JSON debug option on:


$response = ""
#addkey $response client "CMUD"
#addkey $response version 3.22
#SENDGMCP "core.hello" $response
$list = {core 1|char 1|room 1|comm 1}
#SENDGMCP "core.supports.set" $list

Gives the response:

------------ Json Message Received -----------
{
   "client": "CMUD",
   "version": 3.2200000000000002
}
-------------- End Json Message --------------

------------ Json Message Received -----------
[
   "core 1",
   "char 1",
   "room 1",
   "comm 1"
]
-------------- End Json Message --------------


Packet Debug Mode - "Debug.packets 1"


If all else fails and GMCP debug mode combined with Json debug mode are not enough to resolve a problem, turning on this option will cause a byte-level dump of all GMCP (protocol 201) data received to be echod back to the client. For example, which this option active, the program above returns the output below. Note that there are two separate IAC-SB-201 messages because there are 2 'SENDGMCP' statements in the program:

--------------- Telnet Data Start-----------------
IAC SB 201
63 6f 72 65 2e 68 65 6c 6c 6f 20 7b 22 63 6c 69      core.hello {"cli        
65 6e 74 22 3a 22 43 4d 55 44 22 2c 22 76 65 72      ent":"CMUD","ver        
73 69 6f 6e 22 3a 33 2e 32 32 7d                     sion":3.22}             
IAC SE
---------------- Telnet Data End -----------------

--------------- Telnet Data Start-----------------
IAC SB 201
63 6f 72 65 2e 73 75 70 70 6f 72 74 73 2e 73 65      core.supports.se        
74 20 5b 22 63 6f 72 65 20 31 22 2c 22 63 68 61      t ["core 1","cha        
72 20 31 22 2c 22 72 6f 6f 6d 20 31 22 2c 22 63      r 1","room 1","c        
6f 6d 6d 20 31 22 5d                                 omm 1"]                 
IAC SE
---------------- Telnet Data End -----------------


Aardwolf Commands


The protocols command in Aardwolf MUD exists to provide some feedback on which protocols are enabled:

Using the syntax protocols gmcp will show which specific GMCP options are on and off: