Jump to content

[Bug] VMaps height calculation


Auntie Mangos

Recommended Posts

  • 41 years later...

Hi again :)

There is a bug with VMaps concerning height calculation of Players.

How to reproduce:

1. log off while sitting on a mount

2. login again and unmount

3. try to walk through a door

You will see that you are not able to enter buildings.

Regards

Janu

Link to comment
Share on other sites

Actually problem is that we don't handle SMSG_MOVE_SET_COLLISION_HGT (0x516), CMSG_MOVE_SET_COLLISION_HGT_ACK (0x517) and MSG_MOVE_SET_COLLISION_HGT (0x518) packets.

SMSG_MOVE_SET_COLLISION_HGT is sent at mounting and dismounting (just before SMSG_DISMOUNT). Structure used in 12340: packed guid of player + dword packet counter + float collision height.

CMSG_MOVE_SET_COLLISION_HGT_ACK is sent by client as reply. Structure: packed guid of player + dword packet counter (same value as in SMSG) + MovementInfo + float collision height (same value too).

I have do idea what third packed is used for...

Collision height is dependent from race and gender. For dismounting it can be taken from CreatureModelData.dbc. For mounting we must calculate it somehow taking into account mount height also. I currently don't have exact formula, only approximation.

Link to comment
Share on other sites

  • 5 weeks later...
  • 5 months later...
Actually problem is that we don't handle SMSG_MOVE_SET_COLLISION_HGT (0x516), CMSG_MOVE_SET_COLLISION_HGT_ACK (0x517) and MSG_MOVE_SET_COLLISION_HGT (0x518) packets.

SMSG_MOVE_SET_COLLISION_HGT is sent at mounting and dismounting (just before SMSG_DISMOUNT). Structure used in 12340: packed guid of player + dword packet counter + float collision height.

CMSG_MOVE_SET_COLLISION_HGT_ACK is sent by client as reply. Structure: packed guid of player + dword packet counter (same value as in SMSG) + MovementInfo + float collision height (same value too).

I have do idea what third packed is used for...

Collision height is dependent from race and gender. For dismounting it can be taken from CreatureModelData.dbc. For mounting we must calculate it somehow taking into account mount height also. I currently don't have exact formula, only approximation.

The correct formula can be found in the client code. When logging in, mounted, the client does not expect SMSG_MOVE_SET_COLLISION_HGT and calculates the collision height itself.

How the client calculates it boils down to this:

Player Scale * Mount's CreatureModelData.MountHeight (field after CollisionHeight) + Player's CreatureModelData.CollisionHeight * 0.5f;

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use