LandSandBoat / server

:sailboat: LandSandBoat - a server emulator for Final Fantasy XI
https://landsandboat.github.io/server/
GNU General Public License v3.0
301 stars 603 forks source link

🔨 Support for "ZoneInEntitiesRequired" #3215

Open ghost opened 2 years ago

ghost commented 2 years ago

I affirm:

Describe the feature

The zone-in packet contains a counter value that indicates how many specially-marked entity packets need to be received before the client can continue on after the zone-in.

Packet 0x00A:

Existing code: ref<uint8>(0xAC) = csid > 0 ? 0x01 : 0x00; // if 0x01 then pause between zone

Packet 0x00E:

Relevant code: ref<uint16>(0x1A) = PEntity->m_TargID << 1; (that bit 0 is where this flag lives)

AFAIR entities like the ships always have this bit set.

If you're on retail and ever notice that some zones sit on a black screen a little longer than others when you zone in, this is why.

github-actions[bot] commented 2 years ago

✨ Thanks for the report! ✨

This is a friendly automated reminder that the maintainers won't look at your report until you've properly completed all of the checkboxes in the pre-filled template.

TeoTwawki commented 2 years ago

If you're on retail and ever notice that some zones sit on a black screen a little longer than others when you zone in, this is why.

neat!

claywar commented 2 years ago

@zach2good Interesting CI fail on this for checks, need to tolower/upper the fields for checkboxes.

WinterSolstice8 commented 2 years ago

Incredibly useful information you've been posting. Thank you.

claywar commented 2 years ago

This is pretty huge, and I've noticed in several caps that even SE doesn't leverage this. Would be interesting to check modern day caps for this implementation.

EDIT: Doesn't leverage in all cases

ghost commented 1 year ago

One oddity I noticed when trying to datamine this is that, I think it's the mog house case, when you enter a mog house, the required entity count for the associated zone might be non-zero, but there are no actual corresponding entities. The client may have something to bypass this check when entering a mog house.

TeoTwawki commented 1 year ago

One oddity I noticed when trying to datamine this is that, I think it's the mog house case, when you enter a mog house, the required entity count for the associated zone might be non-zero, but there are no actual corresponding entities. The client may have something to bypass this check when entering a mog house.

likely because the mog house isn't its own "real" zone, and counts as wherever you entered from for most purposes such as cs events and messages.