Table of Contents


Introduction

   The Draknor MUD client was written by David Carroll (Taeloch) for exclusive use with The Lands of Draknor. The program operation was loosely based off of Daniel Kelly's GMud32, though I did not consult with him nor look at his program's source code. It was written entirely by me, with two notable exceptions: to make the main window display colored text, I adapted the ColorPane class, published by O'Reilly books. The network connection is handled by the Apache Commons Net library.

   Getting started is easy: just click the "Character List" button and then "Connect". That will connect you to the game. If you already have a game character, you can start setting them up there. Explaining the game itself is beyond the scope of this document, but there are a lot of help files available in-game, and the people playing can answer questions you may have. That's all you really need to play the game, but this program offers some more advanced features that many long-time MUD players rely on to make the game more fun or easier.


The Character List

   The Character List window is where you can configure settings for multiple characters, giving each one their own set of macros, aliases, etc. Or you can share one set with multiple characters. The Character List window is accessed by clicking the "Character List" button on the main screen, or using the menu of the same name.

   The list box on the left side of the Character List window is a list of all characters that you have set up. Starting off, there is just a single entry, called "Default". This is the character that is loaded automatically when the program starts. This information can be deleted once you have created one of your own character entries. To the right of the list are four dropdown boxes that allow you to select the set of Macros, Triggers, Aliases, and Variables that each character has assigned to them. Explanations of these concepts are found below.

   To the right of each dropdown box are buttons that let you manage these sets of macros, etc. To change these, you must first select a character, at which time the dropdowns will change to show which sets are selected for that character. For these items, the "Edit" button will bring up the appropriate editor, which is the same as the ones accessible from the main screen.

   The text box in the middle, "description", is purely for your own good and does not do anything except save per-character. This is in case you have multiple characters and get them confused, you could put "Lev. 50 Human Conjurer" in it for one character and "Lev. 32 Orc Barbarian" in for another. The second box contains text that will be sent to the game as soon as you click "Connect." Usually, this would be a character name, followed by that character's password, which would be "username[enter]password[enter]". For security purposes, this information is obscured in the configuration file so that your passwords can't be easily retrieved by viruses, prying eyes, etc.

   The buttons along the bottom of the window are for managing the character list: New to create a new character, Delete/Rename to remove/rename the selected character. Close will close the window and save all changes. Connect will close the window, save all changes, and connect to the game with the selected character's settings. If that character has text in the "output upon connect" window, it will immediately be sent to the game.


Macros

   The simplest feature of the program is called "macros". These allow you to send one or more commands to the game at once just by clicking a button or pressing a function key. The macro buttons are the buttons that line the right side of the window, and the "F#" label represents the function key you can press.

   To edit the macros, click the "Edit Macros" button or the menu item from the main screen, or select a macro set from the appropriate list on the Character List screen and click "Edit". The list along the left side of the "Edit Macros" window lists "F1" through "F12", which corresponds to the keyboard key or button you can press to activate the macro. To edit one, just click on the list entry you wish to configure. The "Button Text" field shows the text that the button will display. The large text pane shows the commands that will be sent to the game when you click the button or press the appropriate function key.

   There are numerous uses for macros, though they are most commonly used for simple tasks, such as casting spells. Your most common spells or skills can be set up to activate just by pressing a function key. As stated previously, you can send multiple commands at once as well. For instance, if you keep food in a container, the macro can get a food item from your container and then eat it, allowing you to save a little bit of typing time. These can be enhanced with the use of variables, described below.


Triggers

   Triggers allow you to automatically react to something that happens in the game. For instance, when the game announces that someone has gained a level, you can automatically announce your congratulations! At this time, the trigger cannot identify exactly who has gained a level, so your congratulations cannot be personalized.

   Another useful trigger could take the place of the "eating" macro example above. Whenever the game announces that you are hungry, you can get a food item from your container and eat it.

   To access the trigger configuration, click on the "Edit Trigers" button or menu item, or select one from the list on the Character List screen and click "Edit". To add a new trigger, click the "New" button. In the window that pops up, enter the text that will enable the trigger. For instance, this could be "You are hungry." Then press enter or click "OK" to add it to the list. The new trigger will be automatically selected, so just type into the large box the commands that will be sent when the trigger text appears on the screen. It's that simple!

   As a warning, you should try to make your trigger text as specific as possible. If, for instance, you made a trigger with the word "the", it would go off quite often! Also, it is possible that some nefarious gamers can take advantage of your triggers, so it may be best to not announce them. In the example used, if someone says "You are hungry" over and over while in the same room, you will eat for every time they say it. It's not likely to happen, but you should be aware that it is possible. It is also possible to cause a trigger to go off based on commands sent by a macro or alias. Further, if an action performed by your trigger causes another trigger event to fire, a loop can occur. In some cases this is a desireable event, but it should generally be avoided unless you are aware of what you are doing.

   Triggers can also be enhanced with the use of variables, described below.


Aliases

   Used simply, aliases are not much more complicated than macros, except that it reacts to what you type instead of a button or function key press. Used to its fullest, it can make a complicated task very easy, once understood. But taking full advantage of aliases can make them a bit complicated. Because of this, this helpfile section is pretty long. But to take advantage of the advanced features, it is suggested you read it in its entirety, as it points out some common problems that may be encountered and avoided.

   Aliases can be modified by clicking on the "Edit Aliases" button or menu, or editing one from the Character List window. Clicking "New Alias" brings up a small window into which you can type the command you want to use to send your commands to the game. You can use spaces in your alias command, though it usually makes things confusing, and is unnecessary. Also be aware that if you make an alias that is named the same as a command in the game, the alias will take priority, and the game command will not be available to you unless it is one of the commands sent by your alias to the game.

   In its most basic form, an alias allows you to send one, or multiple, command(s) by typing some short word or phrase that you have set up. To continue with the food examples, you could make an alias called "food" that, whenever typed, would get a specific food item from your container and eat it.

   If you have opened the Alias Editer screen, you have probably noticed a field just below the alias list called "Argument Split Char". This is where aliases can become far more useful, and complicated. You can make an alias that takes arguments and modifies itself before sending the commands to the game. These arguments are separated by the character seen in that box (by default, ":").

   The arguments separated by the split character (":") will be assigned to variables in your alias, noted by "%#": where the first argument is "%1", the second is "%2", and so on. This may seem a bit confusing right now, but an example may help clear it up. Note that this example assumes that you have not changed the split character from its default value of ":". If you have, just substitute your preferred character.

Example #1: You have a fine collection of wands at your disposal, and like to keep them in your backpack. You would like to have a single command that will get any one of these wands from your backpack, zap someone with it, and put it back where it belongs. That's quite a few commands, when a single alias would take care of this easily. Just make a new alias (we will call ours "bzap") and enter this into the text pane:
get %1 backpack
hold %1
zap %2
remove %1
put %1 backpack

Now to activate it, you can type this:
bzap bless:bob
...and your good friend Bob will now be blessed! But you can use the exact same alias on those you don't like:
bzap fireball:bird
...and that annoying bird is now engulfed in flames!

   Misusing the alias arguments can result in unexpected behavior. If there is a %# in your alias, but you do not provide enough arguments, it will be sent as it was ("%2", for instance). See:
Example #2: We will assume again your alias is called "bzap"
get %1 backpack
zap %2

If you then accidentally typed this:
bzap bob
The commands that would be sent are:
get bob backpack
zap %2

Obviously, this is not what you wanted!

   Sometimes you only want one argument to an alias, in which case you would not need to use the split character. This is handled in two different ways. If there is a "%1" in your alias, everything entered after the alias text will be inserted in place of "%1". If "%1" is not found, however, the text will just be appended to the end of the alias. These examples may help explain (the alias will again be called "bzap":
Example #3: Inserting a single argument
get %1 backpack
And you type this:
bzap wand
The text that would be sent is:
get wand backpack

Example #4: Appending a single argument
get wand
And you typed this:
bzap backpack
The text that would be sent is:
get wand backpack

This also can result in unexpected behavior if you aren't careful, especially when you have multi-line aliases:
Example #5: Unexpected appending
get wand
zap bob

And you typed this, expecting to get the wand from the backpack:
bzap backpack
The text that would be sent is:
get wand
zap bob backpack


Variables

   Using variables is a way to change the actions of your Macros, Triggers, and Aliases without constantly changing them. It lets you replace an easily-changed value for a phrase, command, or word. Describing this can be a bit difficult, so an example may help illustrate the idea. The example below assumes that you have not changed the default variable character of "@".

Example: You create variables called "food" and "container", with the values "apple" and "backpack", respectively. You have a macro that looks like this
get @food @container
eat @food

When the macro runs, this will happen:
get apple backpack
eat apple

If you then change the value of "food" to steak, the same macro will do this:
get steak backpack
eat steak



Command History

   The MUD client keeps track of previous commands you have typed and allows you to go back to them easily, simply by pressing the "up" key on your keyboard. If you happened to pass by the command you were looking for, just press the "down" key to go back to it.

   There is also an option (available under the "options" menu, in "Configuration") called "History Search" that lets you easily find commands typed long ago without having to scroll through your entire history. If enabled, you can type a short phrase, select it, and press "up" to find the last command that begins with the selected text. If that wasn't the right one, you can just press "up" again to find the previous command that matches.


Auto-Clear Input

   Auto-Clear Input will empty the input text field upon pressing "return". If it is disabled, the just-sent command will remain in the input field and become highlighted. That way, if you wish to send the same command a second time, you can just press "enter" again, rather than typing it out again. It is highlighted so that typing a new command will remove the selected text without pressing "delete" or "backspace".

   By default, the input box will be cleared automatically each time you press enter, but if you wish to enable this feature, go to "Configuration" under the "Options" menu and turn off "Auto-Clear input".


Local Echo On

   Local Echo means that whenever you type a command, it will appear in the output window. Turning this off will prevent your commands from being displayed after you send them. Local Echo is on by default, but can be disabled by going to "Configuration" under the "Options" menu.


Command Stacking

   Sometimes you would like to send multiple commands at once, but don't want to mess with an alias or macro. In that case, you can just stack your commands. This is generally used in conjunction with the command history to execute a few commands repeatedly.

   To configure command stacking, choose "Configure" from the "Options" menu. In the configuration screen is a section for stacking: a checkbox to enable or disable the feature, and a textbox so you can configure the character that enables stacking. Keep in mind that the character will ALWAYS cause the commands to split, which is why you have the option to disable it. For example, if you were to type a message with a common emoticon (assuming the default character has not been changed):
say You shall die! ;) Just kidding!
The resulting commands would be:
say You shall die!
) Just kidding!

And unless ")" is a valid game command (it's not normally), "Just kidding" will not appear... That could obviously lead to a dangerous misunderstandings.


NumPad Directions

   When this option is enabled, you can enter directions using the number pad. 8=North, 2=South, 6=East, 4=West, 9=Up, 3=Down. Numlock must be on for this feature to work. It can be enabled or disabled under the Options menu, and selecting "Configuration".


Speed Walking

   Sometimes you want to get some place far away but don't have any way to get there with magic, and typing all those direction commands can be annoying. You could use command stacking, but there's a more convenient method called Speed Walk, sometimes called "paths". One string can send all the commands needed to get somewhere, even through closed doors!

   First, the option needs to be enabled (it is by default), and the first character must be a special character ("#" by default) that can be set by going to the "Options" menu and choosing "Configuration". In the window that appears is a checkbox to enable/disable speed walking, and a text box that lets you choose your own speedwalk character. The command is not case sensitive (upper and lower case are treated the same). The easiest way to explain how Speed Walking works is just to show an example:

Example: entering the following command into the client
#3n2eXnOnnw
...would send the following set of commands to the game:
North
North
North
East
East
Unlock North
Open North
North
West


   You may notice that there is an "unlock" ('X') command in the middle. You would need to have the appropriate key available for it to work, otherwise you will not go through the door, but the rest of the commands will still run, so you may end up somewhere you were not expecting to be!


The Color Editor

   The client gives you the ability to customize all of the colors used in the game, though it's generally not advised. However, some monitors or videa cards may be improperly calibrated, causing certain colors to be too dark, or just look wrong. If this is the case -- or if you feel like changing the colors for any other reason -- you can go to the "Options" menu and select "Edit Colors". Once the Color Editor window is opened, click on the color you wish to edit on the right side, then choose the color to change it to on the left.

   The "reset" button will change everything back to their default, ANSI standard values. Also, it is important to keep in mind that changing the "Black" color will change the background color of the output window.