Jump to content

Recommended Posts

  • 41 years later...
Posted

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

Posted

It was already reported - its not only about log-off, even if you run into building while being mounted you won't be able to get into some doors.

Something must be missing at sending to client I guess as its client-side problem...

Posted

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.

  • 5 weeks later...
Posted

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

MSG_MOVE_SET_COLLISION_HGT broadcasted to eveyone except mover: {mover_guid, MovementInfo, float height}.

You may look at how it implemented here

  • 5 months later...
Posted
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;

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