:idea: Zone Points: How do they actually work?
This requires a bit of background. I am working on puting together a server that only uses part of the original EQ world. If you spend much time in the IRC chat during the evenings, you have probably head me bitching about it and asking for advice so often that you have me on ignore. The problem I have been struggling with is that the zone points do not change where they point based upon the target_zone column in the zone_points table. The target zones are hard-wired into the zonepoints themselves.
This error is caused by the way that zoneing packets are produced, and it wasn't until tonite that I looked up their handling in the source. The zonepoint passes the ID of the target zone to the world server which promptly looks up and points out the appropriate zone name. The ID information is held in the entries of the zonepoints_raw table in the form of a BLOB. While I have not completely decifered the blob, I can say with certianty what bytes hold the target zone number. The last 8 bits (1 byte, 2 hex digits). So for all of you who are interested in making GFay zone to ECommons instead of BB, you just have to change the last two bytes. Make sure to convert the zone id number to hex (the windows calculator works well for this) and make sure that you fix up all the appropriate entries in the database. Since I got started on this: Does anyone really care what the rest of the blob format of the raw points is? Basically I'm asking if I whether should keep fiddling with it to find out more, or is that information utterly moot. - Daemonsleyr - Daemon's World - |
I logged onto live EQ and zoned from north freeport to west freeport to see what I could find it common. I noticed that as said, the list byte is the target zone id. I also noticed that the target x and y were there as well. Although it ponders me why they do not give the target z as well ~shrug~. Anyways, hopefully this proves to be useful. Here is the struct:
Code:
struct ZoneLineData_Struct |
I wanted to elaberate on that a bit. Here is what I could figure out. I didn't get a chance to make changes to one and try it in game, but looking at the data it works
Code:
struct ZoneLineData_Struct |
Yeah, I did some more research on it last night, and you're right about the target_x, target_dir, and you're also right about the values to keep the same direction. Although I have not tested these in the game, it appears to be correct from everything I have examined and tested on EQLive (zoning and seeing what values match where, but everytime a Z was the same on both sides of the zoneline it was 0xF0237449.
|
Wow! Thanks folks. Now all my zonelines rock just the way I want them to.
A question though: I assumed that the zoneline data would include some sort of location data. When I remove a zoneline from the DB, it's gone in game, and since I never grokked any zone-line location data in the struct, I never tried hand editing. Anyone find a way to move, and/or create new zonelines? Might be nifty to make little teleporters in big zones to shatter the travel time barrier. Again, thank you for your help on this. - Daemon Sleyr - Daemon's World - |
I believe that the zonelines are stored inside of the zone data in the executable therefor making them not changable (although, I might be wrong).
|
All times are GMT -4. The time now is 10:52 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.