本文整理汇总了C++中WorldPacket::WriteByteSeq方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldPacket::WriteByteSeq方法的具体用法?C++ WorldPacket::WriteByteSeq怎么用?C++ WorldPacket::WriteByteSeq使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldPacket
的用法示例。
在下文中一共展示了WorldPacket::WriteByteSeq方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WriteMonsterMove
void PacketBuilder::WriteMonsterMove(const MoveSpline& moveSpline, WorldPacket& data, Unit* unit)
{
ObjectGuid guid = unit->GetGUID();
ObjectGuid transport = unit->GetTransGUID();
MonsterMoveType type = GetMonsterMoveType(moveSpline);
G3D::Vector3 const& firstPoint = moveSpline.spline.getPoint(moveSpline.spline.first());
data << float(firstPoint.z);
data << float(firstPoint.x);
data << uint32(moveSpline.GetId());
data << float(firstPoint.y);
data << float(0.f); // Most likely transport Y
data << float(0.f); // Most likely transport Z
data << float(0.f); // Most likely transport X
data.WriteBit(1); // Parabolic speed // esi+4Ch
data.WriteBit(guid[0]);
data.WriteBits(type, 3);
if (type == MonsterMoveFacingTarget)
{
ObjectGuid targetGuid = moveSpline.facing.target;
data.WriteBit(targetGuid[6]);
data.WriteBit(targetGuid[4]);
data.WriteBit(targetGuid[3]);
data.WriteBit(targetGuid[0]);
data.WriteBit(targetGuid[5]);
data.WriteBit(targetGuid[7]);
data.WriteBit(targetGuid[1]);
data.WriteBit(targetGuid[2]);
}
data.WriteBit(1);
data.WriteBit(1);
data.WriteBit(1);
uint32 uncompressedSplineCount = moveSpline.splineflags & MoveSplineFlag::UncompressedPath ? moveSpline.splineflags.cyclic ? moveSpline.spline.getPointCount() - 3 : moveSpline.spline.getPointCount() - 2 : 1;
data.WriteBits(uncompressedSplineCount, 20);
data.WriteBit(!moveSpline.splineflags.raw());
data.WriteBit(guid[3]);
data.WriteBit(1);
data.WriteBit(1);
data.WriteBit(1);
data.WriteBit(!moveSpline.Duration());
data.WriteBit(guid[7]);
data.WriteBit(guid[4]);
data.WriteBit(1);
data.WriteBit(guid[5]);
int32 compressedSplineCount = moveSpline.splineflags & MoveSplineFlag::UncompressedPath ? 0 : moveSpline.spline.getPointCount() - 3;
data.WriteBits(compressedSplineCount, 22); // WP count
data.WriteBit(guid[6]);
data.WriteBit(0); // Fake bit
data.WriteBit(transport[7]);
data.WriteBit(transport[1]);
data.WriteBit(transport[3]);
data.WriteBit(transport[0]);
data.WriteBit(transport[6]);
data.WriteBit(transport[4]);
data.WriteBit(transport[5]);
data.WriteBit(transport[2]);
data.WriteBit(0); // Send no block
data.WriteBit(0);
data.WriteBit(guid[2]);
data.WriteBit(guid[1]);
data.FlushBits();
if (compressedSplineCount)
WriteLinearPath(moveSpline.spline, data);
data.WriteByteSeq(guid[1]);
data.WriteByteSeq(transport[6]);
data.WriteByteSeq(transport[4]);
data.WriteByteSeq(transport[1]);
data.WriteByteSeq(transport[7]);
data.WriteByteSeq(transport[0]);
data.WriteByteSeq(transport[3]);
data.WriteByteSeq(transport[5]);
data.WriteByteSeq(transport[2]);
if (moveSpline.splineflags & MoveSplineFlag::UncompressedPath)
{
if (moveSpline.splineflags.cyclic)
WriteUncompressedCyclicPath(moveSpline.spline, data);
else
WriteUncompressedPath(moveSpline.spline, data);
}
else
{
G3D::Vector3 const& point = moveSpline.spline.getPoint(moveSpline.spline.getPointCount() - 2);
data << point.y << point.x << point.z;
}
if (type == MonsterMoveFacingTarget)
{
//.........这里部分代码省略.........
示例2: WriteMonsterMove
void PacketBuilder::WriteMonsterMove(const MoveSpline& move_spline, WorldPacket& data)
{
ObjectGuid moverGuid;
ObjectGuid transportGuid;
MoveSplineFlag splineflags = move_spline.splineflags;
G3D::Vector3 const& firstPoint = move_spline.spline.getPoint(move_spline.spline.first());
uint8 splineType = 0;
switch (splineflags & MoveSplineFlag::Mask_Final_Facing)
{
case MoveSplineFlag::Final_Target:
splineType = MonsterMoveFacingTarget;
break;
case MoveSplineFlag::Final_Angle:
splineType = MonsterMoveFacingAngle;
break;
case MoveSplineFlag::Final_Point:
splineType = MonsterMoveFacingSpot;
break;
default:
splineType = MonsterMoveNormal;
break;
}
data << float(firstPoint.z);
data << float(firstPoint.x);
data << uint32(move_spline.GetId());
data << float(firstPoint.y);
data << float(0.f); // Most likely transport Y
data << float(0.f); // Most likely transport Z
data << float(0.f); // Most likely transport X
data.WriteBit(1); // Parabolic speed 21
data.WriteBit(moverGuid[0]); // 32
data.WriteBits(splineType, 3); // 68
if (splineType == MonsterMoveFacingTarget)
{
ObjectGuid targetGuid = move_spline.facing.target;
data.WriteBit(targetGuid[6]); // 190
data.WriteBit(targetGuid[4]); // 188
data.WriteBit(targetGuid[3]); // 187
data.WriteBit(targetGuid[0]); // 184
data.WriteBit(targetGuid[5]); // 189
data.WriteBit(targetGuid[7]); // 191
data.WriteBit(targetGuid[1]); // 185
data.WriteBit(targetGuid[2]); // 186
}
data.WriteBit(1); // 19
data.WriteBit(1); // 69
data.WriteBit(1); // 120
uint32 uncompressedSplineCount = move_spline.splineflags & MoveSplineFlag::UncompressedPath ? move_spline.splineflags.cyclic ? move_spline.spline.getPointCount() - 2 : move_spline.spline.getPointCount() - 3 : 1;
data.WriteBits(uncompressedSplineCount, 20);
data.WriteBit(!move_spline.splineflags.raw()); // 16
data.WriteBit(moverGuid[3]); // 35
data.WriteBit(1); // 108
data.WriteBit(1); // 22
data.WriteBit(1); // 109
data.WriteBit(!move_spline.Duration()); // 20
data.WriteBit(moverGuid[7]); // 39
data.WriteBit(moverGuid[4]); // 36
data.WriteBit(1); // 18
data.WriteBit(moverGuid[5]); // 37
int32 compressedSplineCount = move_spline.splineflags & MoveSplineFlag::UncompressedPath ? 0 : move_spline.spline.getPointCount() - 3;
data.WriteBits(compressedSplineCount, 22); // WP count
data.WriteBit(moverGuid[6]); // 38
data.WriteBit(0); // unk
data.WriteBit(transportGuid[7]); // 119
data.WriteBit(transportGuid[1]); // 113
data.WriteBit(transportGuid[3]); // 115
data.WriteBit(transportGuid[0]); // 112
data.WriteBit(transportGuid[6]); // 118
data.WriteBit(transportGuid[4]); // 116
data.WriteBit(transportGuid[5]); // 117
data.WriteBit(transportGuid[2]); // 114
data.WriteBit(0); // 176 unk
data.WriteBit(0); // 56 unk
data.WriteBit(moverGuid[2]); // 34
data.WriteBit(moverGuid[1]); // 33
data.FlushBits();
if (compressedSplineCount)
WriteLinearPath(move_spline.spline, data);
data.WriteByteSeq(moverGuid[1]);
data.WriteByteSeq(transportGuid[6]); // 118
//.........这里部分代码省略.........
示例3: WriteMonsterMove
void PacketBuilder::WriteMonsterMove(const MoveSpline& move_spline, WorldPacket& data, Unit* unit)
{
ObjectGuid guid = unit->GetGUID();
ObjectGuid transport = unit->GetTransGUID();
uint32 type;
data << float(0.f); // Most likely transport Y
data << uint32(getMSTime());
data << float(0.f); // Most likely transport Z
data << float(0.f); // Most likely transport X
if (!move_spline.isCyclic())
{
Vector3 dest = move_spline.FinalDestination();
data << float(dest.x);
data << float(dest.y);
data << float(dest.z);
}
else
data << Vector3::zero();
data.WriteBit(guid[3]);
data.WriteBit(!move_spline.splineflags.raw());
data.WriteBit(guid[6]);
data.WriteBit(1);
data.WriteBit(1);
switch (move_spline.splineflags & MoveSplineFlag::Mask_Final_Facing)
{
case MoveSplineFlag::Final_Target:
type = 3;
break;
case MoveSplineFlag::Final_Angle:
type = 4;
break;
case MoveSplineFlag::Final_Point:
type = 2;
break;
default:
type = 0;
break;
}
data.WriteBits(type, 3);
data.WriteBit(1);
data.WriteBit(guid[2]);
data.WriteBit(guid[7]);
data.WriteBit(guid[5]);
if (type == 3)
{
ObjectGuid targetGuid = move_spline.facing.target;
data.WriteBit(targetGuid[6]);
data.WriteBit(targetGuid[7]);
data.WriteBit(targetGuid[0]);
data.WriteBit(targetGuid[5]);
data.WriteBit(targetGuid[2]);
data.WriteBit(targetGuid[3]);
data.WriteBit(targetGuid[4]);
data.WriteBit(targetGuid[1]);
}
data.WriteBit(1);
data.WriteBit(guid[4]);
int32 splineWpCount = move_spline.splineflags & MoveSplineFlag::UncompressedPath ? 0 : move_spline.spline.getPointCount() - 3;
//int32 splineWpCount = move_spline.splineflags & MoveSplineFlag::UncompressedPath ? 1 : move_spline.spline.getPointCount() - 3;
data.WriteBits(splineWpCount, 22); // WP count
data.WriteBit(1);
data.WriteBit(0);
data.WriteBit(guid[0]);
data.WriteBit(transport[3]);
data.WriteBit(transport[6]);
data.WriteBit(transport[5]);
data.WriteBit(transport[0]);
data.WriteBit(transport[1]);
data.WriteBit(transport[2]);
data.WriteBit(transport[4]);
data.WriteBit(transport[7]);
data.WriteBit(1);
data.WriteBit(1); // Parabolic speed // esi+4Ch
data.WriteBit(1);
//data.WriteBits(!splineWpCount ? move_spline.spline.getPointCount() - 2 : 1, 20);
data.WriteBits(!splineWpCount ? move_spline.spline.getPointCount() - (move_spline.splineflags.cyclic ? 2 : 3) : 1, 20);
data.WriteBit(guid[1]);
data.WriteBit(0); // Send no block
data.WriteBit(0);
data.WriteBit(!move_spline.Duration());
data.FlushBits();
if (type == 3)
{
ObjectGuid targetGuid = move_spline.facing.target;
data.WriteByteSeq(targetGuid[5]);
//.........这里部分代码省略.........
示例4: BuildChatPacket
//.........这里部分代码省略.........
data.WriteBit(senderGUID[2]);
data.WriteBit(senderGUID[1]);
data.WriteBit(senderGUID[5]);
data.WriteBit(senderGUID[4]);
data.WriteBit(senderGUID[6]);
data.WriteBit(!hasAchievementId);
data.WriteBit(!message.length());
if (hasChannelName)
data.WriteBits(channelName.length(), 7);
if (message.length())
data.WriteBits(message.length(), 12);
data.WriteBit(!hasReceiverName);
if (hasPrefix)
data.WriteBits(addonPrefix.length(), 5);
data.WriteBit(1); // RealmID ?
if (hasReceiverName)
data.WriteBits(receiverName.length(), 11);
data.WriteBit(0); // Fake Bit
data.WriteBit(guildGUID[2]);
data.WriteBit(guildGUID[5]);
data.WriteBit(guildGUID[7]);
data.WriteBit(guildGUID[4]);
data.WriteBit(guildGUID[0]);
data.WriteBit(guildGUID[1]);
data.WriteBit(guildGUID[3]);
data.WriteBit(guildGUID[6]);
data.WriteByteSeq(guildGUID[4]);
data.WriteByteSeq(guildGUID[5]);
data.WriteByteSeq(guildGUID[7]);
data.WriteByteSeq(guildGUID[3]);
data.WriteByteSeq(guildGUID[2]);
data.WriteByteSeq(guildGUID[6]);
data.WriteByteSeq(guildGUID[0]);
data.WriteByteSeq(guildGUID[1]);
if (hasChannelName)
data.WriteString(channelName);
if (hasPrefix)
data.WriteString(addonPrefix);
// if (hasFakeTime)
// data << float(fakeTime);
data.WriteByteSeq(senderGUID[4]);
data.WriteByteSeq(senderGUID[7]);
data.WriteByteSeq(senderGUID[1]);
data.WriteByteSeq(senderGUID[5]);
data.WriteByteSeq(senderGUID[0]);
data.WriteByteSeq(senderGUID[6]);
data.WriteByteSeq(senderGUID[2]);
data.WriteByteSeq(senderGUID[3]);
data << uint8(chatType);
if (hasAchievementId)
data << uint32(achievementId);
data.WriteByteSeq(groupGUID[1]);
data.WriteByteSeq(groupGUID[3]);
data.WriteByteSeq(groupGUID[4]);
data.WriteByteSeq(groupGUID[6]);
data.WriteByteSeq(groupGUID[0]);
data.WriteByteSeq(groupGUID[2]);
data.WriteByteSeq(groupGUID[5]);
data.WriteByteSeq(groupGUID[7]);
data.WriteByteSeq(receiverGUID[2]);
data.WriteByteSeq(receiverGUID[5]);
data.WriteByteSeq(receiverGUID[3]);
data.WriteByteSeq(receiverGUID[6]);
data.WriteByteSeq(receiverGUID[7]);
data.WriteByteSeq(receiverGUID[4]);
data.WriteByteSeq(receiverGUID[1]);
data.WriteByteSeq(receiverGUID[0]);
if (language)
data << uint8(language);
if (message.length())
data.WriteString(message);
if (hasReceiverName)
data.WriteString(receiverName);
if (hasSenderName)
data.WriteString(senderName);
return data.wpos();
}