HOWTO: Getting your server working with OpenZone/ZoneProxy
Well, according to those who've responded to my poll, some people are having problems getting their OpenZone and ZoneProxy working with EQEmu. Here I'll try as best I can to explain the steps involved and how to perform them.
First let me start with a brief explanation of what the programs do and how everything fits together. OpenZone, as most of you are probably aware, is a program that lets you create EQ zones that you can play in. It lets you export .S3D files, which are the same format as every other zone that comes with the game. The trick is getting the client to actually load them. The EQ client is hardcoded to only load certain zones: those zones that come from SOE. To get the client to load zones that you or others create with OpenZone (zones it hasn't been explicitly told to allow), we have to make it think that the zone is acceptable. To accomplish this, we use ZoneProxy and a version of the EQEmu server that works with it. You can get ZoneProxy and OpenZone from the Files link on the EQEmu homepage, but as of this writing you'll need to recompile EQEmu to make it work with ZoneProxy, since no one has as yet released a binary distribution of EQEmu that supports it. I've uploaded the EQEmu source files in which I've made the necessary changes: they're stored alongside ZoneProxy and OpenZone under the package "EQEmu 0.5.3-DR2-ZP". In each of the source files, my chages are bracketed by the comments: Code:
// ZONEPROXY BEGIN Once you've made a version of EQEmu that has the ZoneProxy-friendly changes and have gotten a good compile, it's time to modify your database so it also supports ZoneProxy. The first step in this is to add a new column to the "zone" table called "thirdparty". You can do this with the following SQL command: Code:
alter table zone add thirdparty int(2) unsigned default '0'; Code:
C: The next step is to add entries to the zone table for each OpenZone zone you created. If you exported your zone to "deadgulch" (which created deadgulch.s3d, deadgulch_chr.s3d, and deadgulch_obj.s3d), then you need to add an entry where the short_name is "deadgulch". Also make sure to give it a unique value in the zoneidnumber field (800, for example). DO NOT USE 999 as my EQEmu server changes use that as a special value to force zone reloading. Once you've added the new entries, set the new thirdparty column to 1 for each of the OpenZone zones. That way the EQEmu server will know that they need to be set up using ZoneProxy. After you've made all these changes, you're ready to try it out. I recommend first using minilogin to do your initial testing to eliminate the possibility of Internet lag. Take the following steps: 1. Copy your OpenZone .S3D files to your EQ client directory. 2. Copy ZoneProxy.exe and ZoneProxy.ini (preferably from ZoneProxy 1.1) to your EQ client directory. 3. Start your recompiled EQEmu server (minilogin, if necessary, then the world and zone servers). 4. Start ZoneProxy. YOU MUST ALWAYS DO THIS BEFORE STARTING YOUR EQ CLIENT. 5. Start your EQ client. 6. Log in as normal. Once you're in, use the #zone command to go to one of your OpenZone zones (e.g. #zone deadgulch). It should work just like normal. If you get a zone unavailable message, try it again -- I've occasionally seen glitches when first entering the world (though never once I'm ingame). HOW IT WORKS The process of loading an OpenZone zone is done by making it look like a zone that the client will load. I call this an "alias" zone, and by default it's the tutorial zone (though this can be changed in zoneproxy.ini). When the server is told to send you to a zone and the thirdparty column tells it that the zone is one that the client won't normally load, it sends a message over a socket to the client's ZoneProxy program asking it what the alias zone is. It then tells the client to set up the third party zone (the zone the server wants to use), which means that ZoneProxy will overwrite the alias zone with the third party zone and re-code the files so that they look like the alias zone (don't worry, it backs up the alias zone on startup if necessary and restores it on exit). When ZoneProxy is done it notifies the EQEmu server, and the server then tells the client to zone to the ALIAS zone. The result is that the client thinks it's in the alias zone (e.g. tutorial), but the server knows better. This way you can have as many zones as you want. WC |
Most importantly! Make sure you turn off "Texture Caching" under options in your client, or you will see no textures! Please, trust me, WC and I spent HOURS only to discover this causes textures to default to EQ textures versus your own custom textures.
|
and for those of you who want to add other changes but cant compile cause they can't afford the compilers that do work i will begin adding the devc++ changes(thanks to tertiary and others..) to the ZP source hopefully these changes wont have any effect on zp(which i doubt) once i get them compiled(that is if nothing goes wrong) i will be testin them a bit on larons testing server so please do step in. I most likely use winds zones since im still working on mine. If i do end up using my zones i will release em. will start adding the changes today but I most likely wont get done since i dont have much time.
|
Good Job
Good Job ! I Would Thank yall for letting me get a server up finally. Hehe Thanx :lol:
|
WC, I got some errors trying to zone into zone1 on my server.
World.exe Output Code:
[Status] CURRENT_WORLD_VERSION:EQEMu 0.5.5-DR1 Code:
[Status] CURRENT_ZONE_VERSION: EQEMu 0.5.5-DR1 |
"CannotSetZone" means that ZoneProxy couldn't find the zone files in its folder. You should make sure that ZoneProxy is in your EQ folder (and that, if you're using a shortcut, that the "Start in" folder is set correctly) and that the zone files are indeed there.
|
Quote:
|
Just those two files. I'm logged into your server right now, and it's working, though I'm getting the red text that says ZP not found (though my zoneproxy.log says that your server is talking to it). I'm looking at my code right now to see if there's anything I can find. I'd test zoning to Zone1 on your server myself, but I don't have permission to use the #zone command :wink:
WC |
Hehe, sorry bout that, the status issue has been fixed, feel free to test it out :)
|
Here is Zone.exe errors:
Code:
[Status] CURRENT_ZONE_VERSION: EQEMu 0.5.5-DR1 |
Yeah I tried WC's binaries and I had problems liek that. And I couldn't log in. Big problems. So I switched back to Tertiary's binaries and it works.
Still waiting for a fix for the zone/boot to server select screen problem... |
Are you using the latest binaries from WC Rex? He has changed them several times with new fixes.. I am using the latest ones and have NO such troubles.. Just get booted once in a while (but that happens to me with my own compiled binaries also hehe)....
|
I'm not sure which version I had. I'm looking for a link to the newest ones now...
|
Anyone have 5.7-DR3 source enabled to use ZoneProxy or know if the newer releases already come with ZoneProxy support?
|
I'm sitting on the sidelines waiting for 0.5.7 final to come out, then I plan to port my version over to be compatible. Right now, the version on my PC is compatible with 0.5.5. Once I release the ZP version of 0.5.7 I'll release ZoneProxy 1.4, and then I'm planning on retiring from the EQEmu scene (sniff). Someone else will then have to take up the torch and keep EQEmu-ZP up-to-date.
WC |
All times are GMT -4. The time now is 02:06 AM. |
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.