Code: Select all
if (PChar->getZone() == 0)
{
WBUFB(data,(0x80)-4) = 1;
WBUFW(data,(0x30)-4) = PChar->loc.prevzone; // form zone
WBUFW(data,(0x42)-4) = PChar->loc.prevzone; // from zone
WBUFW(data,(0xAA)-4) = GetMogHouseID(PChar); // Mog House id
WBUFB(data,(0xAE)-4) = GetMosHouseFlag(PChar); // Mog House leaving flag
} else {
WBUFB(data,(0x80)-4) = 2;
WBUFW(data,(0x30)-4) = PChar->getZone(); // to zone
WBUFW(data,(0x42)-4) = PChar->getZone(); // to zone
WBUFW(data,(0xAA)-4) = 0x01FF;
WBUFB(data,(0xAC)-4) = csid > 0 ? 0x01 : 0x00; //if 0x01 then pause between zone
WBUFB(data,(0xAF)-4) = PChar->loc.zone->CanUseMisc(MISC_MOGMENU); // флаг, позволяет использовать mog menu за пределами mog house
}
- Player creates a new character and starts in Sandy.
- Player logs out or has key error.
- Players prevzone is force set to Lower Jeuno using your suggestion.
- Players currzone has the chance to corrupt and become 0.
- Player times out, then logs back in which they log into their mog house even though they were in Sandy.
- Player leaves their mog house and they are now in Lower Jeuno due to their prev zone being set.
It's rare to happen, but having your zones corrupt to 0 in the database is not unheard of.