Here's my compiled version which uses a variation of screamingogre's fix for the zone_id=0 problem. You can get the world.exe file here. The only difference I made is that it waits up to 20 seconds to get a zone_id that's not equal to zero rather than running through a counter. Here is the code incase anyone is interested.
In client.cpp in the World project replace the line
Code:
charid = database.GetCharacterInfo(char_name, &tmpaccid, &zoneID);
with this:
Code:
__time64_t curtime1,curtime2;
_time64(&curtime1);
do
{
charid = database.GetCharacterInfo(char_name, &tmpaccid, &zoneID);
_time64(&curtime2);
}while(curtime2 - curtime1 <= 20 && zoneID == 0);
Nothing fancy, just a quick fix for now so we can zone without locking up.
Edit: Removed link as the file has been removed. Look my post later in this thread.