This is the fix I made to get rid of the ZoneID =0 error.
Add this to the Client.cpp file for the world compile. Under case OP_EnterWorld: // Enter world.
Replace the Current call "charid = database.GetCharacterInfo(char_name, &tmpaccid, &zoneID);" with this
Code:
long LOCounter;
do {
charid = database.GetCharacterInfo(char_name, &tmpaccid, &zoneID);
LOCounter++;
}while ((zoneID == 0) && (LOCounter > 10000));
This will call the database until the ZoneID is not equal to 0 or the counter hits 10001. You may need to tweek the counter number for your server depending on how fast or slow it is.
**SO