Core/PacketsIO: Updated and enabled SMSG_CHAR_CUSTOMIZE, SMSG_CHAR_CUSTOMIZE_FAILED

Closes #14789
This commit is contained in:
DJScias
2015-05-28 18:46:45 +02:00
committed by Carbenium
parent b15a0b96bf
commit 33ba6b74bd
4 changed files with 77 additions and 18 deletions

View File

@@ -2574,25 +2574,18 @@ void WorldSession::SendCharRename(ResponseCodes result, WorldPackets::Character:
void WorldSession::SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo)
{
/// @todo: fix 6.x implementation
(void)result;
(void)customizeInfo;
/*
WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1 + 8 + customizeInfo.NewName.size() + 1 + 6);
data << uint8(result);
if (result == RESPONSE_SUCCESS)
{
data << customizeInfo.Guid;
data << customizeInfo.NewName;
data << uint8(customizeInfo.Gender);
data << uint8(customizeInfo.Skin);
data << uint8(customizeInfo.Face);
data << uint8(customizeInfo.HairStyle);
data << uint8(customizeInfo.HairColor);
data << uint8(customizeInfo.FacialHair);
WorldPackets::Character::CharCustomizeResponse response(customizeInfo);
SendPacket(response.Write());
}
else
{
WorldPackets::Character::CharCustomizeFailed failed;
failed.Result = uint8(result);
failed.CharGUID = customizeInfo->CharGUID;
SendPacket(failed.Write());
}
SendPacket(&data);
*/
}
void WorldSession::SendCharFactionChange(ResponseCodes result, WorldPackets::Character::CharRaceOrFactionChangeInfo const* factionChangeInfo)

View File

@@ -498,3 +498,40 @@ WorldPacket const* WorldPackets::Character::SetFactionVisible::Write()
_worldPacket << FactionIndex;
return &_worldPacket;
}
WorldPackets::Character::CharCustomizeResponse::CharCustomizeResponse(WorldPackets::Character::CharCustomizeInfo const* info)
: ServerPacket(SMSG_CHAR_CUSTOMIZE, 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1)
{
CharGUID = info->CharGUID;
SexID = info->SexID;
SkinID = info->SkinID;
HairColorID = info->HairColorID;
HairStyleID = info->HairStyleID;
FacialHairStyleID = info->FacialHairStyleID;
FaceID = info->FaceID;
CharName = info->CharName;
}
WorldPacket const* WorldPackets::Character::CharCustomizeResponse::Write()
{
_worldPacket << CharGUID;
_worldPacket << uint8(SexID);
_worldPacket << uint8(SkinID);
_worldPacket << uint8(HairColorID);
_worldPacket << uint8(HairStyleID);
_worldPacket << uint8(FacialHairStyleID);
_worldPacket << uint8(FaceID);
_worldPacket.WriteBits(CharName.length(), 6);
_worldPacket.FlushBits();
_worldPacket.WriteString(CharName);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Character::CharCustomizeFailed::Write()
{
_worldPacket << uint8(Result);
_worldPacket << CharGUID;
return &_worldPacket;
}

View File

@@ -686,6 +686,35 @@ namespace WorldPackets
uint32 FactionIndex = 0;
};
class CharCustomizeResponse final : public ServerPacket
{
public:
CharCustomizeResponse() : ServerPacket(SMSG_CHAR_CUSTOMIZE, 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1) { }
CharCustomizeResponse(CharCustomizeInfo const* customizeInfo);
WorldPacket const* Write() override;
ObjectGuid CharGUID;
std::string CharName;
uint8 SexID = 0;
uint8 SkinID = 0;
uint8 HairColorID = 0;
uint8 HairStyleID = 0;
uint8 FacialHairStyleID = 0;
uint8 FaceID = 0;
};
class CharCustomizeFailed final : public ServerPacket
{
public:
CharCustomizeFailed() : ServerPacket(SMSG_CHAR_CUSTOMIZE_FAILED, 1 + 16) { }
WorldPacket const* Write() override;
uint8 Result = 0;
ObjectGuid CharGUID;
};
}
}

View File

@@ -1001,8 +1001,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_STARTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_AUTO_RESPONDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);