ZlizEQMap is a map tool mainly designed for servers that emulate old versions of EverQuest. It features a local database of maps from the old EQAtlas website (now hosted on allakabor.com and tessmage.com), along with player positioning (x plotted on map), transparent overlay, waypoints, zone connections, and more.
1 Download
2 Features
3 Screenshots
4 Requirements
5 Installation and Running
6 Usage
6.1 Other Features
7 Settings
8 Tips
9 How it Works
10 Adding New Maps
11 FAQ (Problem Solving)
12 Contact
13 Source Code and Map Editing
14 Version History
14.1 v10 (August 28th, 2023)
14.2 v9 (May 14th, 2023)
14.3 v8 (January 21, 2017)
14.4 v7 (September 16, 2016)
14.5 v6 (September 5, 2015)
14.6 v5 (August 3, 2015)
14.7 v4 (January 11, 2015)
14.8 v3 (November 16, 2014)
14.9 v2 (November 1, 2014)
14.10 v1 (October 25, 2014)
- Complete EQAtlas map library for the old world, The Planes, Kunark, Velious and selected other zones (some maps slightly improved and edited)
- Player location on the map, marked with an 'x' when you perform a /loc in-game
- In addition to marking the player location, can show direction arrow (based on Sense Heading)
- Automatic zone switching as you zone in-game
- EQAtlas map legend (some slightly edited)
- Automatic detection of which character you're playing
- Multiple maps per zone, for example in dungeons with multiple floors
- List of clickable connected zones for each zone
- Waypoint functionality
- Adjustable transparency and always-on-top
- Server-agnostic; supports Project1999, The Al'Kabor Project, and can be extended to match any server
- Classic eqatlas.com look
General map view; player location marked by red arrow.
Displaying map overlay feature; adjustable window transparency.
- Microsoft Windows
- .NET Framework 4.0+
Tested on Windows 7 and 10 64-bit.
- Extract the contents of the .zip file to any directory you like
- Run ZlizEQMap.exe
Running it for the first time, a form will pop up where you must input the path to your EverQuest directory. Second, choose a zone dataset that matches the server you want to play on. You must also choose whether the log files for your EQ install are found in the \Logs subdirectory or in the root EQ directory. For somewhat modern clients such as Titanium, often used by Project1999, choose the "\Logs directory" option. For The Al'Kabor Project (EQMac client), choose the "Root directory" option.
All of the options can be changed later.
Furthermore, you can click a button to enable logging permanently in EQ.
Click OK, and the map window will open, by default in East Commonlands.
First, you must enable logging in EverQuest, if you haven't done it already upon the first run of the program. Open your EQ directory in a file explorer and find the file named "eqclient.ini". Open it in your favorite text editor, and look for a line starting with "Log=". If it says "Log=TRUE", logging is enabled. If it says "Log=FALSE", simply change it to "Log=TRUE". Save the file and exit your text editor. EQ will now automatically log everything you see in your chat window(s) to text files named after your character and server, for example "eqlog_Zliz_project1999.txt".
If the program hasn't switched zones already for you (it won't detect it on the very first load, and not always if you start it up after having started EQ - a design/performance compromise), choose the zone you're in in the combobox in the top right corner.
As soon as the slightest thing is added to your log file (anything in your chat windows for example), the program will pick it up and display the name of the active character in the program's title bar at the top.
Now type /loc in-game and your position will be updated within a second with a red 'x' on the map. It's a good idea to make a macro (social) with /loc in it, bound to an easily accessible hotkey.
You can furthermore make it show the direction you're facing. This is dependent on performing a successful Sense Heading within 1 second before you do the /loc. If your Sense Heading fails or is on cooldown, the normal 'x' will be shown. In order to best make this work, make a macro like this:
...where the "1" after /doability points to the position your Sense Heading skill is in on the 2x3 "Abilities" grid./doability 1
/loc
If you run "off the map" and perform a /loc, a red circle will be shown instead of an 'x' where your location was last plotted. You will see this if you run down the East Commonlands tunnel towards Northern Desert of Ro, as the map only contains the mouth of the tunnel where traders hang out. Another zone where this is prominent is Eastern Plains of Karana, where the very long gorge leading towards Highpass Hold is not drawn on the map.
- Click the connected zones links to zap around the world (or use the combobox in the top right corner).
- When entering a zone with multiple maps, such as Befallen, click the thumbnails on the right to switch maps and legend. They do not switch automatically. If you don't switch, your position might be nonsense, depending on how the different submaps overlap.
- Click the "Wiki" link to the left of the zone combobox in order to open the zone's page on the Wiki - by default set to the Wiki of Project1999. This only works if the Wiki has the precise in-game zone name as the page title, although you can simply create a redirect page on the Wiki to make the link work.
- Adjust the slider at the bottom to change the opacity (transparency) of the window.
- Check the "AOT" checkbox at the bottom to make the window Always-On-Top.
- Enter a location in the textbox at the top right, then click the "Set WP" button to plot a waypoint on the map. The waypoint will be shown with a small blue circle. The loc is in the format of Y,X and separated by a comma. Spaces will be trimmed, and both + and - in front of the numbers are accepted. Click the button again to clear the waypoint.
- The font size of the legend text can be changed in the Settings & Help form (default: 10).
Click the "Settings & Help" button in the bottom right corner to open a form where you adjust certain settings and find help.
At the top are the settings for the two possible profiles you can use. After starting the program, Profile 1 will be filled out with the settings you entered upon starting. You may fill out the second profile and switch between the two, for example if you're actively playing on two different servers.
For somewhat modern clients such as Titanium, often used by Project1999, choose the "\Logs directory" option. For The Al'Kabor Project (EQMac client), choose the "Root directory" option.
Settings, including some you can't tweak via the GUI, are stored in a file named "ZlizEQMap.ini" located in the "%appdata%\ZlizEQMap" directory (%appdata% is expanded to the ..\AppData\Roaming directory for your Windows user account).
The program works best when placed on a secondary monitor while you play EQ on your primary, so you can view the map while playing.
If you're familiar with AHK scripting, I recommend binding a hotkey to activate the program. This way, you can make it a sort-of map overlay that you can activate with a hotkey while playing. Here's an example to bind Win+H to make it activate the program:
#IfWinExist, ahk_exe ZlizEQMap.exe
#h::
WinActivate, ahk_exe ZlizEQMap.exe
return
#IfWinExist
You can furthermore use WinEQ2 (or AHK for that matter) to bind a hotkey to activate EQ again after you've viewed the map, allowing you to quickly switch back and forth.
The program scans your EQ directory for log files, and picks the file to monitor which has been last modified. When you log in a character, EQ will start logging to that file and the program will pick it up. The log file is then scanned for changes every 500 milliseconds. Don't worry, only changes since the last polling are read, and read in a stream, not to memory. The relevant log file events are zone changes, /loc output, and sense heading, which are used to make the whole thing work.
The program has a store of all zones in plain .txt files in the \ZoneData directory with metadata that describes the zones. Correspondingly, the maps (image files) are found in the \ZoneMaps directory. Feel free to open them, just don't mess around with the files unless you know what you're doing. For those interested, here's what the .txt file for East Commonlands (ecommons1.txt) means:
475|143|7234|3152
Orc Camp ("Orc Camp 2")
Inn with Alcohol, Cloth Armor, Magician Books, Spell Components, Tiny Daggers, and Gems (Inn 4)
Hut with Shields, Food, Herbs, and Compass
...
475 and 143 are the pixel point (475, 143) on the map image file where loc (0, 0) in EQ is located
7234 and 3152 are the total number of EQ coords (on the X-axis and Y-axis respectively) that the map image file contains.
All lines after the first are map legend data. Lines starting with a * are shown as bullet points (unordered list) at the bottom, after the legend.
The program looks for an image file with a name matching the .txt file, so in this case it will load ecommons1.jpg.
The "full" zone names are translated via the files named ZoneData-*.txt, where the * represents the map package (typically servername), for example ZoneData-Project1999.txt
The zone connections are stored in the ZoneConnections.txt file.
The program can be extended with new maps without requiring editing of the code. Here's how.
First, you will need a simple image editing or viewing program, I recommend Paint.NET. Second, go online and find a good image with a map of the zone you want to add. The classic EQAtlas, which is the source for almost all Classic maps in the program, is mirrored here: EQAtlas @ Alla Kabor, and you can also find a large repository of Classic, Kunark and Velious maps on EverQuest Map Preserve. Note that in order for the program to properly plot your position on the map, you must be able to determine the scale of the map, i.e. have a coordinate grid printed on the map. Almost all of the old EQAtlas maps have this.
In this example, we'll add a map of The Nexus from the Luclin expansion. The best map is found on EQAtlas here:
http://www.allakabor.com/eqatlas/images/nexus.jpg
Download this image to your computer. Note that both JPG, GIF and PNG images are supported. Now to find the correct name and location for the file: Open the ZlizEQMap directory, go to the ZoneMaps sub-directory, and you will see a number of sub-directories, roughly one for each era or continent of the game. There is already a directory named 07Luclin (the 07 is just for sorting), so save the nexus.jpg image there. Next, every image needs to have a proper name and a trailing number. The naming convention for zones is typically their "short name" in EQ, which for example is "nro" (long name: "Northern Desert of Ro"). An obvious choice for The Nexus zone is "nexus". Since this image will be the primary map for The Nexus, name file nexus1.jpg, and place it in the 07Luclin directory.
Next, some data about the map image's coordinates and location need to calculated by hand, as it would otherwise be impossible for the ZlizEQMap program to determine where you are when perform a /loc in-game. Open the map image in Paint.NET. We need to figure out three things:
- At which pixel-point the (0,0) loc of the map is
- How many coords the map image contains on the X-axis (horizontal)
- How many coords the map image contains on the Y-axis (vertical)
To figure out all these, we need to use the "Rectangle Select" tool (in the Tools window, top left) in Paint.NET. It also helps to utilize the zoom in/out feature (Ctrl + mouse wheel) for precision's sake. The Nexus map's (0,0) coordinate is right in the center, where it says "Arrival Spot"). Zoom in for precision, then click on the (0,0) coordinate and start dragging a little square, it doesn't matter how large. You will see the status bar in the bottom of the window update and display info about "Selection top left". It should say approximately 263, 258. This means that the pixel-point coordinate 263, 258 is where the (0,0) EQ location is on the map image.
Second, we need to figure out how many EQ coords the map image contains on the X-axis (horizontal) and Y-axis (vertical), respectively. To calculate the X-axis, use the Rectangle Select tool, and draw a box from the vertical line on the left where it says "500" at the top, to the line on the right where it says "-500". The height of the box doesn't matter, since we are calculating horizontal pixels. The bottom status bar will now update again, and it should say approximately "Bounding rectangle size: 454 x __". This means that for each 454 pixels of the image, there are 1000 EQ coordinates, since we drew a rectangle spanning 1000 EQ coords (from 500 to -500). Now we need to convert this into how many coords there are on the total width of the image, via a simple calculation. Make a note of the total width of the image, which can be seen in the bottom status bar, second from right (572x532 in this case). The formula is:total coords = (selected coords) / (selected pixels) * (total image pixel width)
total coords = 1000 / 454 * 572
= 1260 (rounded)
Third, for the Y-axis. The procedure is precisely the same: Draw a box from the top coordinate line (+500) to the bottom (-500) to cover 1000 pixels. There are approximately 452 pixels, and the image is 532 pixels tall, so the calculation is:
total coords = 1000 / 452 * 532
= 1177 (rounded)
For other maps which are not as simple as The Nexus map, you can fundamentally use any amount of pixels to perform the above calculation, it doesn't have to be 1000. For precision, always draw a box as large as possible; for example on the huge map for Iceclad Ocean, you could draw a box that is 20000 pixels wide, to get the best precision.
Now we have the numbers we need.
Enter the ZoneData sub-directory of the ZlizEQMap directory. Again, each sub-directory represents an era or continent of EQ, and these directories contain meta-data about the zone map images, such as the coordinates and the legend. Create a new text file with precisely the same name as the map image (remember the number 1), but with a .txt extension: nexus1.txt. Open the file in your favorite text editor. The first line needs to contain the four numbers we calculated in the earlier steps, separated by the pipe | character, in the following order:
(X-axis location of 0,0)|(Y-axis location of 0,0)|(total coords of the image horizontally)|(total coords of the image vertically)
In our example this is:
263|258|1260|1177
Optionally, you can write one more pipe | and then type a name that further describes the map. This is usually used for sub-maps to describe which area of the zone the map is for. See for example the gfaydark2.txt file in the 02Faydwer directory, where the first line reads:
275|265|5978|6180|Kelethin
On the rest of the lines, you can optionally enter (typically copy/paste from EQAtlas) the data for the legend of the zone image, the helper text that explains what the different numbers on the map mean. The Nexus map has no legend on EQAtlas, but other zones have up to 20 or more. Simply enter one legend line per line, without the number in front, and the legend will be automatically displayed with numbers in the program. See for example the gfaydark1.txt file in the 02Faydwer directory to see a sample of a zone with legend text. To add un-ordered bullet points at the end of the list, write a * (asterisk) in front of the line.
275|265|5978|6180
Orc Camps
Abandoned Druid Ring
Bandit Camp
Wizard Ring
Finally, the zone information needs to be tied together in two files:
ZoneConnections.txt: Contains information about which zones connect to which
ZoneData-________.txt: Contains server/emu-specific information about the in-game names of the zones, for example ZoneData-Project1999.txt.
A few notes about these files: Lines starting with // are comments, and ignored, and the actual order of the zones and continents do not matter, as everything is sorted automatically by the program.
The zone connections are optional to enter, but an entry must exist in the ZoneConnections.txt file. Scroll down to the line that says "// 07Luclin" and enter a new line after the existing, so it looks like, for example, this:
// 07Luclin
shadeweaver=sharvahl
sharvahl=shadeweaver
nexus=
Next, the ZoneData-________.txt file must be edited so the program knows the full name of the zone you see in-game when entering the zone, and so that it can automatically switch maps as you zone. As each emulated server can determine its own custom names for zones, and because they are very inconsistent, even across emu servers of the same era, this name needs to be server/emu-specific. Let's assume we are editing data for the The Al'Kabor Project emu (TAK), so we will edit the file ZoneData-The Al'Kabor Project.txt, which contains zone data for TAK.
Either in-game, or by checking your log files, find the actual name displayed when you enter the zone ("You have entered _______"). Let's assume in this example that the full name of the zone is literally "The Nexus", but on some servers it might just be "Nexus", and this has to be verified in-game. Scroll down to where it says "// 07Luclin", and add another line like this:
// 07Luclin
shadeweaver=Shadeweaver's Thicket
sharvahl=Shar Vahl
nexus=The Nexus
All done! It's a lot of work, but all this data is necessary. Restart ZlizEQMap, and you should see The Nexus available as a zone available in the Zone drop-down in the top right of the program, organized under Luclin zones. The map will also automatically be displayed when entering the zone, and if you did the math correctly, your position will be plotted as you perform a /loc in-game.
To go further, you can add all the other Luclin maps, and work on perfecting all the zone connections between the maps if you wish. You can also add multiple maps per zone, which can be useful in dungeons. Simple add extra sets of files; for example nexus2.jpg and a matching nexus2.txt file describing the map image. Both maps will then be loaded. See for example the map for Befallen (Antonica zone), which has two maps. It is however impossible for the game to know which sub-map it should display, so you will have to switch manually.
You can also add a whole new zone data set for a new emu server, by simply creating a new ZoneData-________.txt file, for example ZoneData-PEQ The Grand Creation.txt. All the map images, their coordinate and legend data, and the zone connections are shared across all servers (it's assumed they are the same), but the in-game long zone names might be different.
Q: The program crashes upon startup or just suddenly while playing.
A: First, try to delete the program's settings file. Open Explorer or Start->Run and type "%appdata%" (without quotes). In the directory that opens, locate the directory "ZlizEQMap", and delete the file "ZlizEQMap.ini" found inside. Now try to start the program again and enter the basic settings from scratch.
If you still have problems, send me a screenshot including steps to reproduce the error. See the Contact section below for email.
Q: The program isn't showing my position and isn't picking up my active log file
A: In rare cases, EQ will not log even though logging is turned on. Restart the client and it should be fixed.
Q: My 'x' position on the map is slightly inaccurate
A: This is to be expected. The maps are hand-drawn, and I have gathered metadata about the map dimensions by hand, one by one.
Q: My 'x' position on the map is way off
A: There are two possible reasons: Either I messed something up, or the map you're on is just not accurate. Particularly the maps for Freeport and Neriak are between somewhat and totally off, the worst example being Neriak Third Gate. I assume our old friend Muse, the creator of EQAtlas, made these as his first maps and did not draw them to scale.
If you experience weird positioning of the 'x' in zones other than Freeport and Neriak, contact me and I will check it out.
Q: A red circle is being shown instead of the 'x'
A: You've run "off the map", see above section
Q: As I switched zones or clicked a connected zones link, I get a dialog box with an error saying "Unable to find zone 'xxx' in Zone Data"
A: I have probably made a typing error. Let me know.
Q: I'm trying to match the in-game /loc output to the map locs, but X and Y appear reversed?
A: Remember that EQ outputs locs in the format of (Y, X, Z). Furthermore, the X-axis is reversed, so increasing X numbers means you're travellings west.
Q: I launched the program after EQ, and it automatically switched to my zone after a while
A: I coded it such that the program checks the last 5000 bytes in the active log file upon startup for a potential zone change. This is so that it in most cases switches to the correct zone, but only after something else has been logged to the log file, making it the active log file.
Q: After doing a /loc it takes relatively long (1-2 seconds) for the program to plot the red x on the map
A: This might be because you have a very large log file. Camp, then delete the character's log file (or rename it if you want to save it for future parsing). EQ will create a fresh one upon re-entering the world.
Contact me at zlizeq@almx.dk
Download the source code for the latest version of ZlizEQMap
Fans have put ZlizEQMap on GitHub, which can be found here: https://github.com/hada79/ZlizEQMap
The program is coded in C# and made with Visual Studio 2010. The contents of the \ZoneMaps has been omitted from the .zip file due to size; simply copy the \ZoneMaps directory from the program directory to your development directory.
You can add (or edit) other maps by adding .txt and corresponding image files (.jpg, .gif or .png extensions supported) in the manner described above, and everything will be dynamically added to the program upon restarting it. You can add new continents by adding a new directory under the \ZoneMaps and \ZoneData directories, prefixed with a number for sorting purposes.
- Bugfix: Now handles zones with internal names ending with a number correctly (for example qeynos2). This caused North Qeynos and West Karana not to load properly.
- You can now customize the light yellow/brown background image used in the program, which was taken from the original EQAtlas map website. You can now use your own image and overwrite the 'background.jpg' file found in the application directory, which will then be used. Consider it a primitive form of 'dark mode' if you put in a dark image :)
- The zone name for Field of Bone has been corrected in the data for Al'kabor.
- A check for a potentially corrupted .ini settings file has been added. It seems to be a sporadic Windows 10 bug.
- The zone name for The Warrens, actually just named 'Warrens' on Project1999, has been corrected, preventing the app from displaying an error message upon entering the zone.
- The legend for Paineel was mistakenly the same as Erudin, which has been corrected.
- A map for Plane of Growth has been added.
- The program should now be more tolerant of a suddenly missing / moved EverQuest directory and prompt you to choose it again when starting up.
- The font size of the legend text can now be changed in the Settings & Help form. Default size is 10.
- Fixed incorrectly named Great Divide zone name in the ZoneData-Project1999.txt file, so that the map for Great Divide now loads without errors.
- Fixed a small error in the vertical loc labels on the Ocean of Tears map.
- Adjusted zone names in the ZoneData-Project1999.txt file to properly support Velious on Project1999.
- Added missing map data and image for Plane of Mischief.
- The program has been renamed to simply ZlizEQMap.
- The way zone data is stored and other things has been majorly rewritten, and you should thus delete all existing files before upgrading. Settings will be reset and a dialog will be shown upon running the program for the first time where you must set your EQ directory and other options. You may cleanup the .ini file that contained settings for the old version by deleting the directory named "%appdata%\ZlizEQMapP1999".
- Maps for Velious have been added, although the full zone names (e.g. The Great Divide) have not been verified against how they are/will be on the emu servers. In case of mistakes, contact me. The zone names can be also be changed in the files named ZoneData-xxx.txt in the \ZoneData directory.
- Extra maps have been added for the following zones: Plane of Fear, Howling Stones (Charasis).
- The program can now be tweaked to support any emu server, not only Project1999. Currently, Project1999 and The Al'Kabor Project are implemented.
- A simple profile management system has been implemented, which can be adjusted in the Settings & Help form. You may have a second profile that runs off a different EQ directory and a different zone dataset. Upon switching profile (click the Save button), the map data (different zone names and available zones for example) is reloaded without having to restart.
- Submaps for a zone now sometimes have a description for them, e.g. "Levels One and Two" for the first map of Befallen. The description is shown when hovering the mouse over the map image thumbnail.
- The version number of the program has been moved to the bottom of the Settings & Help form.
- The readme for the program is now found on http://www.zlizeq.com/ZlizEQ_Projects-ZlizEQMap
- Bugfix: The program now handles the case where you have renamed your EQ directory after last running it. The dialog for starting the program for the first time will be shown instead of just crashing.
- Bugfix: Submap thumbnails are now sorted correctly.
- Bugfix: The red direction arrow plotted on the map is now more persistent. It is no longer turned into an 'x' upon minimizing and restoring the program, and is also shown correctly if you performed a /loc while the program was minimized.
- Bugfix: Fixed incorrect loc scaling in Grobb map.
- Bugfix: Fixed incorrect full zone name for Runnyeye Citadel (Project1999 - was previously named Clan RunnyEye).
- Technical change: The text files and images have been renamed to the shorthand name of the zones, e.g. "ecommons1.txt". The mapping between the shorthand and full zone names (e.g. East Commonlands) can be found in the ZoneData-xxx.txt files in the \ZoneData directory.
- Technical change: The connections for a zone are now stored in the ZoneConnections.txt file in the \ZoneData directory.
- Technical change: Added support for map images in GIF and PNG format.
- Fixed incorrectly named Everfrost map.
- Added alternative map for Trakanon's Teeth, useful for pursuing the Forager/Hunter cycle.
- Moved active char label to window title.
- Added Opacity (transparency) slider (minimum value is 10% to prevent the window from being lost).
- Added the ability to make the program always-on-top (check the "AOT" checkbox at the bottom).
- Added the ability to minimize the program to the system tray. The setting can be toggled under the Settings & Help form.
- Added the ability to plot a waypoint on the current map. Enter a location in the textbox in the top right corner and click the Set WP button. Click it again to clear the waypoint. The waypoint will be shown with a small blue circle. The loc is in the format of Y,X and separated by a comma. Spaces will be trimmed, and both + and - in front of the numbers are accepted.
- Added two alternative maps for Southern Plains of Karana suitable for Quillmane farming.
- Added missing Grobb map.
- Fixed incorrect Crushbone zone name which caused a crash.
- Added a Settings & About button in the bottom right corner which opens a form where you can adjust some core settings, find help, and read some About info.
- Added a "Wiki" link next to the zone combobox which can be clicked to open the zone's page on the P1999 Wiki. If the page does not exist, simply create a redirect page on the Wiki to make it work.
- Initial release.