Section I

1.0 - CREDITS

Thanks goes out to:

  • Marcus Rating - The Creator of UOX
  • Everyone I've stolen hints and tips from
  • The Dev Team(Includes all programmers)
  • The Script Team(Includes all Script writers)
  • Various homepages for info about UOX :) None mentioned, none forgotten.
  • And Sephiroth of course.
  • And last but not least, NoFear for converting the first version of this Guide to HTML :)
  • 1.1 - INTRODUCTION

    Welcome to Xuri's Guide to the UOX3 Galaxy! Hopefully you will be able to find solutions to all your UOX3 problems somewhere in this Guide *grin*. If you find any errors, send me a note at xuri@uox3.org, and I will fix it for the next version of the Guide. Also, don't hesitate sending me an email if there's something you would like to see added/changed!

    This is version 3.0 of this guide, and is intended for use with UOX3 0.98-3.6 or newer.

    1.2 - WHAT IS UOX3?

    UOX3 stands for Ultima Offline eXperiment 3.
    It is a server emulator for OSI's Ultima Online Server, and the very first version was created by the mysterious figure known as Jaegermeister way back in 1996 or 97. Marcus Rating(Cironian) took over development of UOX, and then created UOX2, followed by UOX3 (current version). This server emulator enables you to create your own UO server and play on it either locally, over modem, LAN or the internet with at least(but not by any means limited to..) 32 people at a time, depending on your server hardware/connection speed.

    There is no fee to set up an UOX3 server, and there should be no fees associated with playing on one(paying for your own general access to the Internet excluded). UOX3 is more or less always in an "Alpha"-stage, since there's no clear set goals for what a "finished" UOX3 should consist of. Nor is it likely that UOX3 will ever reach such a "finished state", since new people arrive with new ideas and thoughts, thus the emulator keeps evolving/changing.

    Even though Marcus Rating created UOX2 & 3, he released the sourcecode for the server emulator and slowly backed down from active development. Over the years many other programmers have worked together to further enhance and improve the emulator. To see a small list of some of the people who have contributed to UOX3, check out the UOX3 Hall of Fame located in the History-section of UOX3.org.

    Another thing that came with the release of the UOX3 source-code, was that no one can run a public UO server with modified UOX3 code, without releasing that modified code to whoever requests to see it, which will hopefully help make UOX3 a public/common effort instead of having a few "elitist"-shards, each with their own carefully treasured secrets.

    1.3 - FEATURES

    Note that this list is by no means a complete nor official list of what features UOX3 has. To keep such a list updated and complete at all times would be an impossibility in itself, not to mention writing down the full list in the first place.

    Main Features:
    - Open Source :) If you've got the skills, you don't have to depend on a centralized group of developers to fix stuff/add new features...you can do it all by yourself.
    - Versatile JavaScripting Engine, with which you can override existing hard-coded behaviour, customize already scripted behaviour, or script completely new behaviour yourself. Your control extends to such features as the Magery system, Commands, Skill-usage, and much more.
    - Support for (at least) UO Client versions v4.0.0p - v7.0.25.0, as long as the encryption is removed with tools like Razor.
    - Support for multiple "facets" alã Felucca & Trammel on OSI shards.
    - Multi-language support - Each user can see UOX3's system messages in his/her language!
    - Works by default with most Windows versions, and usually also with most versions of Linux, but has also been known for compiling successfully on Solaris and FreeBSD in the past.

    Other Features:
    - Adding Items/NPCs
    - Aggressive NPCs
    - Animated Emotes (Incl. Third Dawn ones)
    - Automatic/Manual world saves
    - Automatic Worldfile Backup-system
    - Automatic Weathersystem
    - Banks (Standard + Regional)
    - Backpack
    - Broadcasting
    - Combat (Fully working)
    - Corpse Carving
    - Customizable oretypes, define which ore can be found in any specific region.
    - Item-Decay
    - Doubleclicking on characters (Paperdoll)
    - Doubleclicking on items
    - GM Paging
    - Guards
    - Guildstones
    - Townstones
    - Healers
    - House deeds
    - Lighting Control (day & night & dungeon light)
    - Magic Wands & Weapons & Armor
    - Moving Items
    - Multiplayer capability for at least(but not limited to..)32 players(no known maximum)
    - Murder count & death count tracking
    - Newbie Items
    - NPC Movement
    - NPC Speech
    - Players get hungry and do worse when not eating
    - Player Races
    - Polymorphing
    - Ridable horses/ostards
    - Reputation system with Karma/Fame
    - Running
    - Singleclicking
    - Skills Window with all skills
    - Spawning of items/monsters on ground or in chests
    - Sound Effects
    - Spellbooks with all spells except Telekinesis working
    - Status Window
    - Talking
    - Towncriers
    - Walking
    - Wearing Items
    - Working clocks
    - Z positioning
    - Lots more. Too much to list here really :P

    1.4 - SYSTEM REQUIREMENTS

    I do not have the exact system requirements for running an UOX3 server, but I know that it at least RUNS on a p100 with 24 mb ram for local use(Not recommended though :). Windows 95/98/ME/2k/XP/NT or Linux is also required.

    A well know fact is that the server and your UO client will run slower if you run them both on the same machine. If possible run the UOX3 server on one machine, and your client on another.

    Another speed-up tips:
    Copy all the UO-files needed by UOX3(see in UOX.INI) to a directory of it's own, and reset the paths in UOX.INI to these files. By letting the UOX3 server and your UO Client use different files, you may speed up the system a bit.... More exact system requirements will come later...

    1.5 - LINUX USERS

    If the latest UOX3 version isn't compatible with Linux, you must download a version complied for Linux, OR compile it yourself. Go to https://www.uox3.org and ask around in the forums there.

    1.6 - UOX3 LINKS

    https://www.uox3.org - UOX3 News and Resource site.
    https://wb.uox3.org - Xuri's WorldBuilder; GM Tool for UOX3
    https://www.wpdev.org (Broken link) - Home of Wolfpack, an UO emu which got it's roots from UOX3.
    https://lonewolf.uox3.org - Home of Lonewolf, an UO emu which derived from Wolfpack (look above).

    1.7 - UOX3 SERVER SETUP

    In the past, this guide would suggest updating to the very latest version of Ultima Online. This is no longer the case, as UOX3 now works best with certain specific versions of the UO client. Check UO client versions/expansions and compatibility with UOX3 for up-to-date information about what client version to use.

    Then what you need to do, is/ download the latest version of UOX3. If there is an "All-In-One"-package available, download it. If not, download both the EXE and the entire DFN/Script package. Note that there might be newer versions of UOX3 available in the form of "experimental builds" that are made available in between the proper releases. Usually these are drop-in-replacements of UOX3.exe only. See the Experimental UOX3 builds from CVS forum-thread at UOX3.org for more details.

    Now, when you unzip your UOX3.zip file(name of .zip may vary, another example is all-in-one.zip)you will get a directory called UOX3. Inside that directory there will be several more directories.
    Here is a summary of what is in each Directory in the zip.

    UOX3:
    | The UOX3 directory contains all the files needed to run your UOX3 server
    | successfully.
    |
    |--------------ACCOUNTS:
    | The ACCOUNTS directory contains all user accounts for your shard.
    |
    |--------------ARCHIVES:
    | All automatic backups of worldfile-saves are archived in here.
    |
    |--------------BOOKS:
    | All books on your shard which players write in will be saved here.
    |
    |--------------DFNDATA:
    | This is where all the "definition"-files are kept. They contain information on various
    | aspects of your shard, which is easily customizable, like item/NPC-stats, HTML-templates,
    | region-setup, and other assorted stuff.
    |
    |--------------DICTIONARIES:
    | Contains files with language-specific system messages that can be translated into languages supported by the UO client.
    |
    |--------------DOCS:
    | The UOX3 Docs! Various documents =P
    |
    |--------------HELP:
    | Folder which contains help-files that area accessible from in-game.
    |
    |--------------HTML:
    | This is where the Server Status page is saved, along with other HTML output files.
    |
    |--------------JS:
    | This is where all the JavaScript files for UOX3 are located, and also where you put any
    | custom JavaScript files you have acquired/written.
    |
    |--------------LOGS:
    | All log-files for your server are saved here.
    |
    |--------------MSGBOARDS:
    | This is where any posts from ingame bulletin boards are saved.
    |
    |--------------SHARED:
    | The SHARED directory is where all the world-data is saved. All items & NPCs and characters that are added to your world will be saved in a file in this directory.

    Alright, you're still with me? Good. Now, let's configure your shard and get it up and running.

    1) Open the UOX.INI file, located in the root UOX3 folder, with your favourite text-editor (Notepad, Notepad++, Sublime Text, etc). There are a lot of settings available in this file (see UOX3 Server Settings for a full list), but for now we'll focus on the essentials. Locate the section called [play server list], which should look something like this:

    [play server list]
    {
    SERVERLIST=Default UOX3 Server,127.0.0.1,2593
    }

    Instead of "Default UOX3 Server", enter the name you want to give your UOX3 shard. Try to keep the shard-name short, anything above 30 characters probably won't show up in the server list anyway.

    Next up is the IP-address. If you're running the UOX3 shard on the same computer as your UO Client, leave the IP-address (127.0.0.1) alone. It's the local ip of your computer, and will suffice. If, however, you plan to use the UOX3 shard on a LAN, or on the Internet, you must replace 127.0.0.1 with your LAN IP or your Internet IP.

    Alternatively, add additional SERVERLIST= lines, and have one local login, one LAN login, and one Internet login.

    2593 is the Port address your UOX3 server will be using. Using the default port address is recommended, but can be modified in the ini file.

    2) Scroll down to the [directories] section. This is where you configure the various file-paths that UOX3 should use. By default, the only filepath you should have to change is the one that looks like this:

    DATADIRECTORY=c:/program files/ultima online/

    If you're running the UOX3 shard on a stand-alone computer, without the UO Client installed, point the DATADIRECTORY filepath to a directory on your computer's drive which contains (at minimum) the following UO Client data-files: Map0.mul, Statics0.mul, Staidx0.mul, Multi.mul, Multi.idx, Tiledata.mul (and alternatively, Verdata.mul).

    If you're running the server on the same computer as your UO Client, point the DATADIRECTORY filepath to the directory where you installed Ultima Online. That may or may not be c:/program files/ultima online/, depending on what you specified when installing the client.

    For a small speed-up when running both the Shard and Client on same computer, copy the above mentioned UO Client-data files into a folder of it's own, like...UOX3\DATA\, so they both read from separate sets of data-files.

    3) Close UOX.INI and browse your way to UOX3\ACCOUNTS\ and open ACCOUNTS.ADM. You'll see something similar to this on the first couple of lines (after the commented lines which are preceded by two forward slashes):

    SECTION ACCOUNT 0
    {
    NAME admin
    PASS admin
    FLAGS 0x8000
    PATH /uox3/accounts/admin/
    TIMEBAN 0x0
    LASTIP 127.0.0.1 CONTACT unknown
    CHARACTER-1 0xffffffff [UNKNOWN]
    CHARACTER-2 0xffffffff [UNKNOWN]
    CHARACTER-3 0xffffffff [UNKNOWN]
    CHARACTER-4 0xffffffff [UNKNOWN]
    CHARACTER-5 0xffffffff [UNKNOWN]
    }


    This is ACCOUNT 0, which is the Admin account on your shard. By default the Username is "admin", and the password is "admin"; Change both the username and the password for this account immediately, to something else of your choice. Avoid passwords like "secret" or "god" or "sex". A password consisting of both numbers and letters is advisable.

    "SECTION ACCOUNT 1" is the first normal user account in your ACCOUNTS.ADM file. By default it is setup with "guest1" as both the username and password. You can either keep this if you want to have a guest account on your shard which anyone can access, or you can change the username and password to reflect the login-details of the first normal player on your shard. Yourself.

    It's wise to keep a normal player account for yourself in addition to the Admin account, in order to easily test stuff as a normal player. The Admin account is not really suitable for that, since Admins and GMs are privileged in many aspects of the game (No Line of Sight checks, no delays when casting spells, no reagents required, etc.)

    There are two ways to add more accounts to your shard. One is to edit the ACCOUNTS.ADM file manually like we've just done. Copy the entire SECTION ACCOUNT 1 and paste it at the bottom of the file. Remember to change the account number from 1 to the next available account number. The changes you do will either go into effect when you start up your server, or - if the server is already running - when you reload the account-files from the server console menu.

    The second way of adding new accounts is to open the file called NEWACCOUNTS.ADM (If it doesn't already exist, simply create a blank text file with this name). Now simply write the following to add a new account:
    USER=bobby,whee123

    Optionally, you can also specify any "flags" you want the account to have, as well as the e-mail address of the user who owns the account, like this:
    USER=bobby,whee123,0x0,bob@bobland.com

    For each new account you wish to add, enter another USER= line. Remember to press ENTER after the last USER= line, or that line will not be read by UOX3! The new accounts you specify in NEWACCOUNTS.ADM  will be automagically added to ACCOUNTS.ADM the next time you start up your UOX3 shard.

    4) Okay, that's it for your UOX3 Shard itself. Now to start it up:

    Either double-click the UOX3.EXE file in the root UOX3 folder, or run UOX3.EXE from a command prompt. The latter method is recommended, since when doing that the window will stay open if UOX3 should crash/fail to startup for any reason, allowing you to see any potential error messages. If you double-click the UOX3.EXE the window will simply close itself as soon as it encounters an error, making it impossible to see what's wrong.

    If everything goes well, you should have encountered no errors during startup, and the UOX3 window should stay open, with these two lines showing at the bottom:
    | Thread: CheckConsoleThread has started

    Note that the UOX3-window needs to stay open, do not close it!

    5) Only two things remain of the basic setup process - removing the encryption from the UO Client, and logging onto your shard for the first time!

    Removing the encryption from the UO Client is necessary to allow the Client to communicate with UOX3, which doesn't support the encryption in the Client. There are several ways one can remove the encryption from the UO Client, we'll concentrate on one particular method; By using Razor.

    Razor removes the encryption from your computer's memory during runtime, meaning it doesn't do any permanent modifications to your UO Client. So if you use the Client on the official UO servers as well, you can simply start up UO normally the next time you want to login to those servers.

    Download the latest version of Razor from it's webpage at https://www.uorazor.com/. Then unzip, and install.

    After downloading and installing Razor, start it up. You will be greeted by a welcome screen. Leave "Load Client:" on "2D Client (Auto Detect" unless you encounter a problem with auto-detecting the client, or you have multiple clients installed. Make sure the "Patch client encryption" flag is checked, then enter the IP and port of your UOX3 shard. If you're running the UO client on the same computer as your UOX3 shard, enter 127.0.0.1 as IP and 2593 as port.

    Once you've completed the initial setup of Razor, click on the Okay button to launch the UO client. You should now be ready to log onto your UOX3 server by entering the username and password you specified in ACCOUNTS.ADM during the UOX3 setup process.

    The first thing you'll notice after you've logged in, is that your world is completely empty of any Non-Player Characters (NPCs) as well as any decorative items. You can fix this by either populating and decorating your world manually, or by downloading premade world/spawn-files from the UOX3 Downloads-page at https://www.uox3.org.

    1.8 - THE BASICS OF GM'ing

    Assuming you've managed to setup, run, and login to your UOX3 shard, this will be your first chance to use your newfound Game Master powers.

    The first thing you should know is that there is something called "Command prefix" which is the key you type in front of commands in UO so the server recognizes them as commands instead of normal speech. By default this Command Prefix is set to the key ' , which means you will have to use the key ' before every command you use ingame. This Command Prefix is scriptable, you can choose which key to use as prefix yourself, just open UOX.INI your favourite text editor then locate COMMANDPREFIX=' and change ' to whatever key you want to use, for instance "!". Note: You CANNOT use "/" as command prefix, as the UO client uses this key for letting you send messages to party members.

    The absolute first thing you should do is type in 'ADD; it is your main tool. It lets you do things such as make NPC's, items, or anything else you will need. First lets make you a GM robe. Your "add menu" is open right? Navigate your way first to the "GM Menu", then to "GM Skins". A number of items should appear in the list, including one called "GM Robe". Click the blue button next to it to add one GM Robe to your character's backpack(inventory).

    Open your paperdoll by double-clicking on your character, then open your backpack by double-clicking on the backpack-image in the paperdoll. You'll see some newbie equipment, along with an item which simply says "GM Robe". Click, hold and drag this GM Robe onto your paperdoll. You should now be wearing it, although there's possibly something sticking out on top - your hair! Type 'KILL HAIR and press enter, then target yourself to remove every strand of hair from your head. Better? The robe is still a bit dull though, so type 'DYE, press enter and target your GM Robe. Select a colour and press Okay.

    There's another, simpler way of assigning yourself a GM Robe, of course. But that method turns you INTO a GM Robe, instead of simply wearing one. This method can also be used to turn other people into Game Masters, though if you simply want to give them access to the GM Commands, use the 'SET COMMANDLEVEL 2 command and target them. COMMANDLEVEL 1 is counselors, 0 is normal players. 3 and above is for Admins only. Now, to turn yourself into a true GM body(which allows you to walk through doors, for instance)- try the 'MAKE GM command. To return a character to normal player state, use the 'MAKE PLAYER command, or use 'SET ID 0x0190 (or 0x0191 if female) along with 'SET COMMANDLEVEL 0.

    Some other basic commands are 'TELE which is the same as casting the spell teleport, 'OPENLAYER will open any targeted character's backpack (this means you can add\look at loot in a monster's backpack) Something else you might want to check out is the 'SET command. You can for instance do 'SET Skill # where skill is the name of the skill you are changing and # is the amount of skillpoints to assign the specified skill.

    Example: To set someone's SWORDSMANSHIP skill to 90 skillpoints, you would use the 'SET SWORDSMANSHIP 900 command. 900 = 90.0 = 90. If you'd done 'SET SWORDSMANSHIP 908 the character would've gotten 90.8 skillpoints instead.

    You can also use this command to change the STR, DEX or INT values of a character. Example:
    'SET STR 100 gives the targeted character 100 strength-points.

    Also take a look at the 'TWEAK command, which you can use to change many different stats on both items and characters.

    Next, scroll through the ADD-MENU (type 'ADD and press enter) until you locate the NPC section. (Hint: It's the last entry in the menu;). Select an NPC from the menu and place it somewhere on your screen. If you added a monster, it's name will appear over it's head with red letters, indicating that it is an NPC with aggressive/monster AI. It will not attack you, however, because as a character on the Admin account you are by default INVULNERABLE! This also means you'll be unable to fight the monster though, since combat can only take place between two VULNERABLE characters in UOX3.

    To fight the monster you added, first get yourself some weapons and armour from the ADD-MENU, equip whatever items you've added, then use the 'INVUL FALSE command on yourself to make yourself vulnerable. If you die, use the 'RESURRECT command to bring yourself back to life. :)

    And if the NPC proves too worthy an opponent, simply execute it using the 'KILL CHAR command ;)

    That's it for this basic tutorial in GMing! Good luck :)

    1.9 - WORLD SAVING

    It's not always wise to just rely on remembering to do the 'SAVE command regularly to save all your hard work to file after a long day. It's then preferable to set up the server to auto-save at certain intervals.

    To do that, open the file UOX.INI in a text editor and locate the section called [system]. In that section, find the following line: SAVESTIMER=1200

    That line tells UOX3 how often - in seconds - it should perform an automatic worldsave. Remember that the larger your world is the longer it takes to save... So if you have a really huge world the players won't appreciate it if you save every 5 minutes :) Choose a save-time that both you and your players can live with.

    After changing the SAVESTIMER value, you must either restart UOX3 or reload the .INI file from the UOX3 console before the change goes into effect. To reload the .INI file from the UOX3 console, press * to unlock the console, followed by '1'.

    1.10 - SERVER BACKUPS

    UOX3 comes with the option of automatically archiving/backing up your worldfiles into a specified folder on any of your drives. By default this folder is the UOX3\ARCHIVES folder, but that can be changed by editing the file-path listed in UOX.INI, more specifically under the [directories] section.

    To enable this archiving of worldfiles, open UOX.INI and change BACKUPSENABLED=0 to BACKUPSENABLED=1. The line directly below it, saying BACKUPSAVERATIO, specifies how often UOX3 should back up worldfiles. If you enter "5" as the value for this setting, every fifth world-save will be backed up. It's not a good idea to create a backup of every worldsave though, especially if the time between worldsaves is low, as this can quickly eat up a lot of space on your drive!

    1.11 - FAQ - FREQUENTLY ASKED QUESTIONS

    --Why does my client halt at "Verifying account" or "Connecting to server"?
    There might be several reasons for this. Here are some of the things that may cause these problems:

    • You have forgotten to use an encryption removing tool to start up the UO Client. Only un-encrypted Clients are allowed to log into UOX3 shards. Try Razor for this purpose.
    • You have put the wrong IP or PORT in UOX.INI. Make sure you have the correct IP address setup in this file, or else you will be unable to login to your shard. If both server and client are on the same computer, use your computers "loopback/localhost IP", which is 127.0.01. Else use your LAN-IP or Internet-IP depending on how you want to access the shard.
    • You are using the wrong UO Client, or an old UOX3 server version. Check the UOX3 Downloads page for the latest UOX3 version, and the UO client versions/expansions and compatibility with UOX3 for info on which client version to use.

    --What is "Razor"?

    Razor has the ability to remove the encryption from the UO Client during runtime, allowing you to log into UOX3 shards. Unless you use a tool like this to remove the encryption, you'll simply be unable to login to any UOX3 shard.

    --Why doesn't Lumberjacking work on my shard?
    Lumberjacking works on every shard, when people can't seem to do it, it's because of either of these reasons:

    • They target the leaves of the tree instead of the trunk of the tree.
    • They have transparency enabled so they actually target behind the tree instead of the tree itself

    --Why is my world empty of NPCs and items when I log on for the first time? UOX3 comes without any pre-made worldfiles or spawnfiles, and you'll need to populate your world yourself, though you can download existing spawn/world-files already created by someone else. You'll find examples of those on the UOX3 Downloads page at https://www.uox3.org.

    1.12 - CUSTOM SCRIPTS

    Creating custom script-files with your own Items and/or NPCs and/or other scriptable objects is easy in UOX3, and a nice way of ensuring that your new objects aren't overwritten by any official script-updates.

    All "definitions" for Items/NPCs/Everything else is kept in the UOX3/DFNDATA/ folder, which contains several subfolders which again has different contents depending on the folder name. Now lets say you want to create a new, unique Item for your shard; You can either copy the definition of an item that already exists from any of the files in UOX3/DFNDATA/ITEMS/  and then paste it as a new item(which you then customize, and give a unique header ID) in the same file - OR you can create your own custom item-dfn file to contain your new item. As long as you name the file-extension .DFN and place the file in DFNDATA/ITEMS/, UOX3 will find it and read the definition of your item just as if you placed it in one of the existing files.

    Doing it this way makes it easier to maintain your unique/custom changes when you get around to downloading official script updates, since you can just copy & paste the changed files into the respective directories instead of having to transfer your custom items from the old files to the updated ones every time the official scripts are updated.