mirror of
https://github.com/mangosfour/server.git
synced 2025-12-18 10:37:01 +00:00
Implemented basis movement packet thx Sovak
This commit is contained in:
parent
dc1543b609
commit
6c8037d531
2 changed files with 61 additions and 15 deletions
|
|
@ -86,7 +86,9 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
||||||
{
|
{
|
||||||
bool hasTransportData = false,
|
bool hasTransportData = false,
|
||||||
hasMovementFlags = false,
|
hasMovementFlags = false,
|
||||||
hasMovementFlags2 = false;
|
hasMovementFlags2 = false,
|
||||||
|
hasUnkTime = false;
|
||||||
|
uint32 counterCount = 0;
|
||||||
|
|
||||||
MovementStatusElements* sequence = GetMovementStatusElementsSequence(opcode);
|
MovementStatusElements* sequence = GetMovementStatusElementsSequence(opcode);
|
||||||
if(!sequence)
|
if(!sequence)
|
||||||
|
|
@ -127,13 +129,6 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (element >= MSEGuid2Byte0 && element <= MSEGuid2Byte7)
|
|
||||||
//{
|
|
||||||
// if (guid2[element - MSEGuid2Byte0])
|
|
||||||
// guid2[element - MSEGuid2Byte0] ^= data.ReadUInt8();
|
|
||||||
// continue;
|
|
||||||
//}
|
|
||||||
|
|
||||||
if (element >= MSETransportGuidByte0 && element <= MSETransportGuidByte7)
|
if (element >= MSETransportGuidByte0 && element <= MSETransportGuidByte7)
|
||||||
{
|
{
|
||||||
if (hasTransportData && t_guid[element - MSETransportGuidByte0])
|
if (hasTransportData && t_guid[element - MSETransportGuidByte0])
|
||||||
|
|
@ -154,6 +149,12 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
||||||
case MSEHasUnknownBit:
|
case MSEHasUnknownBit:
|
||||||
data.ReadBit();
|
data.ReadBit();
|
||||||
break;
|
break;
|
||||||
|
//case MSEHasUnknownBit2:
|
||||||
|
// si.unkBit2 = data.ReadBit();
|
||||||
|
// break;
|
||||||
|
//case MSEHasUnkInt32:
|
||||||
|
// si.hasUnkInt32 = !data.ReadBit();
|
||||||
|
// break;
|
||||||
case MSETimestamp:
|
case MSETimestamp:
|
||||||
if (si.hasTimeStamp)
|
if (si.hasTimeStamp)
|
||||||
data >> time;
|
data >> time;
|
||||||
|
|
@ -270,12 +271,31 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
||||||
if (hasTransportData && si.hasTransportTime3)
|
if (hasTransportData && si.hasTransportTime3)
|
||||||
data >> fallTime;
|
data >> fallTime;
|
||||||
break;
|
break;
|
||||||
|
case MSECounterCount:
|
||||||
|
counterCount = data.ReadBits(22);
|
||||||
|
break;
|
||||||
case MSEMovementCounter:
|
case MSEMovementCounter:
|
||||||
|
for (int i = 0; i < counterCount; i++)
|
||||||
data.read_skip<uint32>();
|
data.read_skip<uint32>();
|
||||||
break;
|
break;
|
||||||
//case MSEByteParam:
|
//case MSEUnknownCount:
|
||||||
// data >> byteParam;
|
// unkArray.resize(data.ReadBits(24));
|
||||||
// break;
|
// break;
|
||||||
|
//case MSEUnknownArray:
|
||||||
|
// for (std::list<uint32>::iterator itr = unkArray.begin(); itr != unkArray.end(); ++itr)
|
||||||
|
// data >> *itr;
|
||||||
|
// break;
|
||||||
|
//case MSEUnkInt32:
|
||||||
|
// if (si.hasUnkInt32)
|
||||||
|
// data >> unkInt32;
|
||||||
|
// break;
|
||||||
|
case MSEHasUnkTime:
|
||||||
|
hasUnkTime = !data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEUnkTime:
|
||||||
|
if (hasUnkTime)
|
||||||
|
data.read_skip<uint32>();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
MANGOS_ASSERT(false && "Wrong movement status element");
|
MANGOS_ASSERT(false && "Wrong movement status element");
|
||||||
break;
|
break;
|
||||||
|
|
@ -357,6 +377,12 @@ void MovementInfo::Write(ByteBuffer& data, uint16 opcode) const
|
||||||
case MSEHasUnknownBit:
|
case MSEHasUnknownBit:
|
||||||
data.WriteBit(false);
|
data.WriteBit(false);
|
||||||
break;
|
break;
|
||||||
|
//case MSEHasUnknownBit2:
|
||||||
|
// data.WriteBit(si.unkBit2);
|
||||||
|
// break;
|
||||||
|
//case MSEHasUnkInt32:
|
||||||
|
// data.WriteBit(!si.hasUnkInt32);
|
||||||
|
// break;
|
||||||
case MSEHasFallData:
|
case MSEHasFallData:
|
||||||
data.WriteBit(si.hasFallData);
|
data.WriteBit(si.hasFallData);
|
||||||
break;
|
break;
|
||||||
|
|
@ -457,9 +483,26 @@ void MovementInfo::Write(ByteBuffer& data, uint16 opcode) const
|
||||||
if (hasTransportData && si.hasTransportTime3)
|
if (hasTransportData && si.hasTransportTime3)
|
||||||
data << uint32(fallTime);
|
data << uint32(fallTime);
|
||||||
break;
|
break;
|
||||||
|
case MSECounterCount:
|
||||||
|
data.WriteBits(0, 22);
|
||||||
|
break;
|
||||||
case MSEMovementCounter:
|
case MSEMovementCounter:
|
||||||
data << uint32(0);
|
data << uint32(0);
|
||||||
break;
|
break;
|
||||||
|
//case MSEUnknownCount:
|
||||||
|
// data.WriteBits(unkArray.size(), 24);
|
||||||
|
// break;
|
||||||
|
//case MSEUnknownArray:
|
||||||
|
// for (std::list<uint32>::const_iterator itr = unkArray.begin(); itr != unkArray.end(); ++itr)
|
||||||
|
// data << uint32(*itr);
|
||||||
|
// break;
|
||||||
|
//case MSEUnkInt32:
|
||||||
|
// if (si.hasUnkInt32)
|
||||||
|
// data << int32(unkInt32);
|
||||||
|
// break;
|
||||||
|
case MSEUintCount:
|
||||||
|
data << uint32(0);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
MANGOS_ASSERT(false && "Wrong movement status element");
|
MANGOS_ASSERT(false && "Wrong movement status element");
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -97,11 +97,14 @@ enum MovementStatusElements
|
||||||
MSEMovementCounter,
|
MSEMovementCounter,
|
||||||
MSEUnknownArray,
|
MSEUnknownArray,
|
||||||
MSEUnkInt32,
|
MSEUnkInt32,
|
||||||
|
MSECounterCount,
|
||||||
|
MSEUintCount,
|
||||||
|
MSEHasUnkTime,
|
||||||
|
MSEUnkTime,
|
||||||
MSEEnd,
|
MSEEnd,
|
||||||
MSE_COUNT
|
MSE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
MovementStatusElements PlayerMoveSequence[] =
|
MovementStatusElements PlayerMoveSequence[] =
|
||||||
{
|
{
|
||||||
MSEHasPitch,
|
MSEHasPitch,
|
||||||
|
|
@ -136,7 +139,7 @@ MovementStatusElements PlayerMoveSequence[] =
|
||||||
MSEHasTimestamp,
|
MSEHasTimestamp,
|
||||||
MSEFlags2,
|
MSEFlags2,
|
||||||
MSEGuidBit5,
|
MSEGuidBit5,
|
||||||
MSEHasUnknownBit,
|
MSECounterCount,
|
||||||
MSEGuidBit6,
|
MSEGuidBit6,
|
||||||
MSEPositionY,
|
MSEPositionY,
|
||||||
MSETransportGuidByte7,
|
MSETransportGuidByte7,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue