Sunday 18 November 2012

MUSHclient GUI: 18-Nov-2012

It's been over two years since I released the last version of the God Wars II plugin.  I finally recovered the development version from my backups (from my old dead laptop) and extended it to properly use the big map.  As you can see from the following screenshot, there's now a small circular icon in the top left corner of the top map, and a downward pointing arrow in the top right corner:

(click image to enlarge)

If you click the circular icon, the big map opens, and you can actually use it to plot a course - clicking on the map sets your target destination to that position.  The small cross in thhe top right corner of the map closes it.  The big map also draws a line between your current position (the yellow circle) and your destination (the red circle), like so:

(click image to enlarge) 

For the time being, the big map is only available within the realm.  Thus if you enter another location, the circle icon will vanish:

(click image to enlarge)

The original maps were fine for my old laptop, but as you can see from the above screenshots there's very little space for the avatars underneath them - and it's even worse on my netbook.  So that's where the arrow icon (in the top right corner of the top map) comes in.  In full sized mode, the maps look like this:

(click image to enlarge)

But if you click the arrow, the maps shrink:

(click image to enlarge) 

Note that the arrow icon is now pointing upwards instead of downwards.

Friday 2 November 2012

GUI snippet version 8

Just a quick update, in case anyone is using version 7.  One of the variables wasn't initialised, resulting in some confusion during negotiation - this has now been fixed, and uploaded for version 8.  There are no other changes other than a couple of additions to the ROM installation instructions.

Wednesday 22 August 2012

GUI snippet version 7

It's been a while since the last version of the snippet, and I've since been working on other things.  But a few issues came up recently, so over the week I decided to create a new version with a few updates.  You can grab the latest version from here (or from MudBytes once they accept the latest submission).

• Tyche pointed out that the snippet didn't correctly respond to client-initiated negotiation.  This has now been corrected.

• A side-effect of the above change is that ECHO is now handled through the snippet.

• MSDP and ATCP could be used without negotiation.  Although this wouldn't really cause any problems, it was sloppy, and has now been fixed.

• I noticed most people didn't use the colours, instead preferring to use their existing Lopes-style implementations.  The snippet can now emulate that style of colour system, and includes an extended selection of default colours.

• MUSHclient wouldn't fully negotiate if it was set to autoconnect, and the same may be true of other clients.  The snippet will now attempt to renegotiate in such cases.

• Someone complained that "public domain" isn't always legally recognised, so I've clarified that the snippet can be used for any purpose without any conditions.

If you're updating from an older version of the snippet, please don't forget to make a backup of your MSSP and MSDP variables before copying the latest version, and update the appropriate literals for your mud name, MCCP, etc (in fact I'd recommend doing a diff just to make sure you don't miss anything).  You'll need to update to use the new ProtocolNoEcho() function (instructions are in the installation text files), but other than that you shouldn't need to make any additional changes to the rest of your mud.

Saturday 19 November 2011

GUI snippet version 6

Version 6 is now available from MudBytes, and contains the following minor changes:

  • Removed a stray semicolon.

The "if ( !pProtocol->bMSDP );" statement had a semicolon at the end, which should be removed.  This bug has very little impact, as MSDP already overrides ATCP, but it does mean that if the user's client supports both MSDP and ATCP, they will be sent the SERVER_ID variable twice.

  • Made it easier to add MCCP support.

Quite a few muds already support MCCP, and had trouble getting it working with the snippet - particularly if they were using copyover as well.  So I've improved the documentation and made it easier to integrate.

  • Made several minor updates to the installation instructions.

The INSTALL_MERC.TXT had actually been written for GodWars rather than Merc, and relied on a couple of GodWars-specific changes.  It's been updated to work with both, and now also defines MSDP_CLASS.  The INSTALL_TBA.TXT instructions now define MSDP_CLASS as well.

  • Added an INSTALL_ROM.TXT.

Although the ROM instructions are very similar to Merc, there are a few minor differences, and someone had trouble adding it to their ROM derivative.  So I added another set of installation instructions.

Thursday 13 October 2011

GUI snippet version 5

Version 4 was just a tiny update to fix a memory allocation problem, but this version has more changes.

While helping Splork get the snippet working in SlothMUD, we came across an interesting problem - it seems that the MXP specification doesn't actually define whether the server should initiate negotiation with IAC WILL MXP or IAC DO MXP. While some clients therefore support both, others support only one or the other. I've therefore updated the snippet to support both (it attempts one if the other fails).

There was also a complaint from another user about the MSSP table being cumbersome to update for non-static fields such as players and uptime. I've therefore changed the table to use function pointers, which should make it much easier to update in future.

Scandum also asked me to change LIST to use an array, as per the latest specification, which I've done.

Other than that there were a couple of bugfixes, but nothing serious. Here's the list of changes:
  • Added symbolic constants for MSDP_TABLE_OPEN/CLOSE and MSDP_ARRAY_OPEN/CLOSE.
  • MSDPSetArray() was using table values rather than the array values. Fixed.
  • Added MSDPSendList(), used for the MSDP LIST command (updated to an array in the spec).
  • Doubled MAX_VARIABLE_LENGTH for the list variables.
  • Some of the LISTs had no separators between values when sent using ATCP. Fixed.
  • The MSSP table now uses function pointers, making it easier to update dynamic fields.
  • Added support for both variants of MXP negotiation.
As usual it can downloaded from the GW2 website: http://www.godwars2.org/download/protocol.tgz

Or from the MudBytes code repository: http://www.mudbytes.net/file-2811

Sunday 28 August 2011

GUI snippet version 3

There was a small update to the snippet on 13th June, to fix a cyclic TTYPE issue, add some extra MSSP variables, and add support for broken packets.  But this update (version 3) is somewhat bigger, primarily due to some changes that were made to the MSDP specification since the snippet was released:

  • Added an AllocString() wrapper function, as strdup() isn't standard C.
  • Added support for the new MSDP tables and arrays.
  • Added support for the new UNREPORT and RESET MSDP commands.
  • Added a new REPORTED_VARIABLES list, as described in the latest MSDP spec.
  • Renamed VARIABLES to SENDABLE_VARIABLES as described in the latest MDSP spec.
  • Cleaned up the code, adding consts and fixing -ansi and -pedantic warnings.
  • Added support for the new Mudlet GUI autoinstaller.
  • Added an MCCP flag to make integration with the snippet easier.
  • Updated CopyoverGet() and CopyoverSet() to include TTYPE, MCCP and CHARSET.
  • Added an MSDPFlush() function for variables that need to be sent immediately.
  • ProtocolOutput() now lets you send tabs.
  • The snippet now recognises that DecafMUD supports 256 colours.
  • Updated the TBA instructions with a fix for strfrmt().
  • Updated the Merc, SMAUG and TBA instructions to use MSDP tables.

You can download it from here: http://www.godwars2.org/download/protocol.tgz

If you're already using the snippet, the README.TXT has some information about updating.

The generic plugin has also been updated: http://www.godwars2.org/download/Generic_Plugin.zip

The plugin doesn't handle fully nested data, but it does handle basic tables and arrays, as used in the installation instructions.

Thursday 18 August 2011

4 Dimensions themed GUI

I've recently been helping 4 Dimensions get my protocol snippet working, and I decided to put together a simple Mudlet GUI to show it in action (and also because I wanted to test out the Mudlet autoinstaller on another mud).  As you can see, the layout is based on the God Wars II GUI, although I've replaced the graphics, recoloured the energy bars (to match 4D's prompt colours), and dropped the second map and bottom-left icons:

(click image to enlarge)

4 Dimensions already has a 'map' command that draws an ASCII map, so it was fairly straightforward to add the same data to an MSDP variable whenever the player changes room, and then I just threw together some basic graphical tiles for the client using Paint.

I decided to put together a MUSHclient version as well, and added some textured background and border graphics to make it feel a little less plain:

(click image to enlarge)

There's no information about your enemy, the spell icons are currently all the same, the avatar is fixed, and (as I recently discovered) there's an important 'stamina' value which will need a bar of its own.  But these were never intended to be final versions, just a way to demonstrate the protocol snippet, and an example of what you can throw together in an afternoon.