I didn't want to just throw the program written for the resource map away, instead I made a resource radar for EQ2. It operates by reading EQ2's data about the resources (including mobs) and then displays them on the map. It all looks like the resource map but the nodes aren't static, they update as things change inside the game.
I saw this little project as an opportunity to learn and put some reverse engineering and ASM skills to the test. All went well and I have uploaded the source to the resource map's download tab. The source there isn't complete though, it only contains the frame for the program. The actual core, which extracts and processes the data, has been removed as I don't want to ruin the game by creating an in game radar that anyone can use. The core isn't that exciting so the frame should be as useful as the whole thing when it comes to delphi programming.
Here's a screenshot (very similar to the resource map):
The green squares are land resources, the red dots are mobs. I'm currenty working on improving the map metrics (it's a few pixels off), the filters and on implementing a zoom feature.
One should always test theories multiple times, not just once or twice. It appears that nodes are in fact not static but appear at a random location within an area. Hence the theory that the project was based on is false and hence there's no use in continuing. I did try the theory in the graveyard and in the Commonlands but I must have been very lucky (or rather unlucky) to have the node respawn at the same spot.
I will upload the source-code for the project for those interested. It contains some useful code for parsing, updating and projecting things on a map based on ingame coordinates. Here's the Commonlands with the SE mapped:
A new tab has been created to hold the source-code.
The resource map project will be a bit different from the previous projects. A large part of the result will be the website containing the generating maps. This means that the resource map project won't have a standard tab on the main page. It will instead reside on its own website with its own design. A link will however be provided from the main website.
The project is progressing at a steady speak. Things that have been completed since the last update:
I'm currently working on the websites design and parallel with porting the viewer program's code to php to dynamically generate the images on the website.
I have decided to start mapping Norrath's (the world of EQ2) resources. This will include a lot of non-programming work for me but I plan on including as much programming as possible.
The result I strive for is a website with as much of Norrath's resource nodes as possible mapped in large databases. From the website one should be able to look at dynamically generated pictures showing ingame maps and the nodes' locations. I also plan to include a client that anyone can run on their computer that downloads the latest updates and shows them in a window on the computer. From that client one should also be able to add to the databases.
There are some major parts that I have never done before which makes this project very interesting to me:
Here's a small picture from a testviewer that I made so I can see that the parsing of my logs are done correctly. The two markers are two locations that I logged with the /log on feature in EQ2.
I'm back with a program that reads things directly from EverQuest's memory. I have uploaded the source-code for a simple program that reads memory addresses. In it is an example where the EQ character's loc is read and printed in a label. The loc in the example is only updated when the character zones. It is possible to get the loc that is updated every time the character moves, it just requires some work to find the correct memory address. Actually it is possible to read pretty much everything that the client knows about. I didn't include it in the example though because it's all basically done in the same way.
The example is a general one and the same principle can be employed to read the memory of pretty much any process.
Next up is replicating actions in EQ. I'm currently not really sure how to do it but I will try to find out. I'm guessing it's done by either replicating packages or inserting some hooks into the system.
I will set up some new section for all this with the example in it. There are some plans that if successful should make the final product of this project a rather large one (if I can find the time that is).