f you like or want to use lots of macros (and it's the only way to go), then
you will hate to discover that you are standing around vulnerable while doing so
manually after connecting to the game. It doesn't have to be that way.
What is a Macro?
What is a "macro" you ask? It's a key combination (key combos) which has been
defined in the UO game to "trigger" a command or series of commands. Some of
UO's commands can ONLY be triggered by a macro (such as "bow" and "salute"), so
you really need to learn how to create them. Fortunately creating macros is
easy, either within the UO game itself or offline.
First, you need to recognize that there are two kinds of macros: UO macros, and
Windows macros. UO macros are a part of the game interface, and run within the
game. Windows macros run within Windows but outside of the game and game
interface. A Windows macro can run a UO macro, but it can't substitute for one
except possibly for pumping speech. Only UO macros are discussed here.
The default UO macro definitions reside in a file in the UO game directory
on YOUR local hard drive (not the UO server) called, oddly enough, "macros2d.txt".
It's a text file, which has a mix of ASCII and Unicode characters. Because
of that mix, you cannot easily modify it with a text editor such as
Notepad or any other regular editor for that matter. To still be able
to edit the macros2d.txt file by hand, I suggest you use the UO
Macro Editor that comes with the UO
Magic Tool by Xena Dragon.
Every UO character has it's own macros2d.txt file. Whenever you create
a new character in UO, a directory on your disk is created. You can find that directory at
C:\Documents and Settings\[WindowsUserName]\My Documents\EA Games\Ultima Online Legacy\User Data\[accountname]\[shardname]\[charactername]. The macros2d.txt
file from C:\Program Files\EA Games\Ultima Online 2D Client\ is then copied to the character's directory, and any
changes you make to that character's macros in-game will be stored in
his own private macros2d.txt file. So, if you want to have a set of macros
that every character you create will use, edit the main macros2d.txt file
and you're all set.
There is another file called "default.mac" which is initially identical to
"macros2d.txt", but the latter is the one which holds your customizations.
"Default.mac" is there to be copyied over "macros2d.txt" when you press the
"reset" button in the "Macros" definition screen. (If you want to confirm this,
it's simple to do: just modify "default.mac" and "reset" your macros. Backup
"macros2d.txt" first unless you want to add all your changes again.)
Understanding The File Layout
The file layout is very simple: no blank lines; each macro begins with a line
identifying the key combo which activates it; the game commands each on a
separate line; and the definition ends with a separator line of exactly eight
(8) "pound signs" (#). For example the default definition of "Open Backpack"
(provided by UO in the initial "macros2d.txt" and "default.mac" files) is:
B 1 0 0
Several entries would look like this:
O 0 1 0
X 0 1 0
F1 0 0 0
B 1 0 0
Say Honored to see you.
S 1 0 0
Num 8 0 1 0
(Note the 4th macro, Ctrl-b, consists of two game commands: the bow action, and "Say".)
Outside of knowing the game commands which can be used in a macro, the trickiest
part is understanding the first, key combo, line. That's dead easy and logical.
I will refer to the single key you pick to trigger the macro as the "trigger
key". Though entered in the macro in upper case, it always refers to the lower
case, or "unshifted" key when pressed. It will become obvious why in a moment.
The three numbers are simple bit-maps: 0 = off (not used) and 1 = on (pressed
simultaneously with the defined key). I will refer to these as the "modifier
The sequence for the key combo line and it's bit-map is:
Trigger Key, Ctrl, Alt, Shift.
So the default "Open Backpack" macro (key combo: B 1 0 0) is triggered by
Multiple "modifier keys" can be used in combination. You could define "Open
Backpack" as any of the following:
"Ctrl-b" (B 1 0 0)
"ALT-b" (B 0 1 0)
"Shift-b" (B 0 0 1)
"Ctrl-Alt-b" (B 1 1 0)
"ALT-Shift-b" (B 0 1 1)
"Ctrl-Shift-b" (B 1 0 1)
"Ctrl-Alt-Shift-b" (B 1 1 1)
Valid keys (tested so far), as recognized by UO macros are:
all the letters (a-z)
all the numbers across the top of the keyboard (1-0)
all function keys (F1-F12)
all numbers on the numeric keypad (Num 1-9)
Keys with special meaning when used at the beginning of the text, either
during normal game conversation or in a "Say" macro (each is followed by a
required space to have the defined effect):
"; " (semi-colon) = "whisper" the text to only adjacent tiles.
"! " (exclamation) = "yell" the text half a screen beyond that displayed.
": " (colon) = "emote" the text between "*"s and in emote color.
All work with all the modifier keys, with the exception of the keypad numbers.*
Documenting your Settings
This leads to a related issue: how to document your key combos so you can easily
find the macro you need at the moment. How you decide to arrange it is up to
you (I use one sheet for function keys and numbers, another for letters), but
fitting as much as possible on a page can get to be a challenge. All those
"Ctrl-Alt-shift-b" entries will chew up half your available space just to
identify the key. The solution I've found is to use a symbol for each modifier
key. A common notation scheme easy to keep straight is:
"^"=Ctrl, "@"=Alt, and "#"=Shift.
In my diagrams, I prefer to put the trigger key first since that's what I look
for first on the keyboard. I also depict the modifier keys in the same order as
the bit-map to reinforce the pattern, and print the legend of "symbol to key"
across the top of each page. So the same possible set of key combos for "Open
Backpack" could be represented by:
^=Ctrl @=Alt #=Shift
b^ = "Ctrl-b" (B 1 0 0)
b^# = "Ctrl-Shift-b" (B 1 0 1)
[email protected] = "ALT-b" (B 0 1 0)
[email protected]# = "ALT-Shift-b" (B 0 1 1)
b# = "Shift-b" (B 0 0 1)
b^@ = "Ctrl-Alt-b" (B 1 1 0)
b^@# = "Ctrl-Alt-Shift-b" (B 1 1 1)
Using this scheme, I can easily fit three columns of key combos across a page. I
also use "Shift" + the "Open" key combo as the "Close" combo. Therefor "b^" for
"Open Backpack" has the companion combo of "b^#" defined as "Close Backpack".
By listing the "Shift" combo under the un-shifted combo it becomes very easy to
see and remember key combos. I also use a "programmable throttle" and define
my most commonly used combos to it. With this scheme it's very easy to define
the throttle keys to the "Open" combos and use the "Shift" key in combination
with the throttle for "Close". But, use whatever works for you.
A last bit of advice: When in doubt about whether or not a key combo will work,
or how it's represented in the "macros2d.txt" file, try to create a macro from the
game paperdoll "Options" screen and then check the results in your "macros2d.txt"
file. Now that you know what you're looking at, it's easy to work out.
Mapping to Keypad Numbers
It is possible to map macros to the keypad numbers, however to do so you must turn off 'Num Lock'. In addition you need to check that the keynames.txt file uses the same description for the keys. To do this, first record a test macro through the paperdoll in game, with Num Lock off. Next open the character's macro2d.txt file in notepad and find the macro:
NUM 1 1 1 0
+S a y t h i s i s a t e s t
In this example the key used is ctrl - Alt - NUM 1 (note the recorded entry in the macro2d.txt file generated the number as NUM - all caps.)
The formatting of this can vary depending on the operating system or the keyboard's 'country' settings. Alternatives are Num or num.
Now find the keynames.txt file in the C:\Program Files\EA Games\Ultima Online 2D Client\ folder. Open this file in notepad and scroll down to the numbers.
This file must have exactly the same name for the keys as that generated in the macros2d.txt file. If they are different, edit this file to match the macros2d.txt file. If the case formatting in the keynames.txt file does not match that generated in the macros2d.txt file, when recording a macro through the paperdoll, the macro will not save.
To simplify: If macros2d.txt shows NUM 1 then keynames.txt must show NUM 1. If macros2d.txt shows Num 1, then keynames.txt must show Num 1. etc.
- Petra Fyde