diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-01-05 23:29:36 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-05-20 23:39:39 +0200 |
| commit | 91753a94b33b73185ebb0ef551c02bae422b1a46 (patch) | |
| tree | ccf571fe97ac9de999353e15b8d87ae3dfadddc6 /src/server/game/Server | |
| parent | 5287f70a4f5c308aec2fafeaf0c0d4dd6659f5e4 (diff) | |
Core/PacketIO: Updated character list packets for 7.x
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 91 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 26 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/SystemPackets.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/SystemPackets.h | 3 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 16 |
5 files changed, 78 insertions, 70 deletions
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index d30779d49c2..dfa4bbb3bfa 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -24,11 +24,13 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel { // 0 1 2 3 4 5 6 7 // "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.skin, characters.face, characters.hairStyle, " - // 8 9 10 11 12 13 14 15 - // "characters.hairColor, characters.facialStyle, characters.level, characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, " - // 16 17 18 19 20 21 22 + // 8 9 10 11 12 13 + // "characters.hairColor, characters.facialStyle, characters.customDisplay1, characters.customDisplay2, characters.customDisplay3, characters.level, " + // 14 15 16 17 18 + // "characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, " + // 19 20 21 22 23 24 25 // "guild_member.guildid, characters.playerFlags, characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.equipmentCache, " - // 23 24 25 26 + // 26 27 28 29 // "character_banned.guid, characters.slot, characters.logout_time, character_declinedname.genitive" Guid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); @@ -41,18 +43,21 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel HairStyle = fields[7].GetUInt8(); HairColor = fields[8].GetUInt8(); FacialHair = fields[9].GetUInt8(); - Level = fields[10].GetUInt8(); - ZoneId = int32(fields[11].GetUInt16()); - MapId = int32(fields[12].GetUInt16()); - PreLoadPosition.x = fields[13].GetFloat(); - PreLoadPosition.y = fields[14].GetFloat(); - PreLoadPosition.z = fields[15].GetFloat(); - - if (ObjectGuid::LowType guildId = fields[16].GetUInt64()) + CustomDisplay[0] = fields[10].GetUInt8(); + CustomDisplay[1] = fields[11].GetUInt8(); + CustomDisplay[2] = fields[12].GetUInt8(); + Level = fields[13].GetUInt8(); + ZoneId = int32(fields[14].GetUInt16()); + MapId = int32(fields[15].GetUInt16()); + PreLoadPosition.x = fields[16].GetFloat(); + PreLoadPosition.y = fields[17].GetFloat(); + PreLoadPosition.z = fields[18].GetFloat(); + + if (ObjectGuid::LowType guildId = fields[19].GetUInt64()) GuildGuid = ObjectGuid::Create<HighGuid::Guild>(guildId); - uint32 playerFlags = fields[17].GetUInt32(); - uint32 atLoginFlags = fields[18].GetUInt16(); + uint32 playerFlags = fields[20].GetUInt32(); + uint32 atLoginFlags = fields[21].GetUInt16(); if (atLoginFlags & AT_LOGIN_RESURRECT) playerFlags &= ~PLAYER_FLAGS_GHOST; @@ -69,10 +74,10 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel if (atLoginFlags & AT_LOGIN_RENAME) Flags |= CHARACTER_FLAG_RENAME; - if (fields[23].GetUInt64()) + if (fields[26].GetUInt64()) Flags |= CHARACTER_FLAG_LOCKED_BY_BILLING; - if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[26].GetString().empty()) + if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[29].GetString().empty()) Flags |= CHARACTER_FLAG_DECLINED; if (atLoginFlags & AT_LOGIN_CUSTOMIZE) @@ -88,10 +93,10 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel // show pet at selection character in character list only for non-ghost character if (!(playerFlags & PLAYER_FLAGS_GHOST) && (Class == CLASS_WARLOCK || Class == CLASS_HUNTER || Class == CLASS_DEATH_KNIGHT)) { - if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(fields[19].GetUInt32())) + if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(fields[22].GetUInt32())) { - Pet.CreatureDisplayId = fields[20].GetUInt32(); - Pet.Level = fields[21].GetUInt16(); + Pet.CreatureDisplayId = fields[23].GetUInt32(); + Pet.Level = fields[24].GetUInt16(); Pet.CreatureFamily = creatureInfo->family; } } @@ -100,9 +105,9 @@ WorldPackets::Character::EnumCharactersResult::CharacterInfo::CharacterInfo(Fiel ProfessionIds[0] = 0; ProfessionIds[1] = 0; - Tokenizer equipment(fields[22].GetString(), ' '); - ListPosition = fields[24].GetUInt8(); - LastPlayedTime = fields[25].GetUInt32(); + Tokenizer equipment(fields[25].GetString(), ' '); + ListPosition = fields[27].GetUInt8(); + LastPlayedTime = fields[28].GetUInt32(); for (uint8 slot = 0; slot < INVENTORY_SLOT_BAG_END; ++slot) { @@ -119,9 +124,17 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write() _worldPacket.WriteBit(Success); _worldPacket.WriteBit(IsDeletedCharacters); + _worldPacket.WriteBit(IsDemonHunterCreationAllowed); + _worldPacket.WriteBit(HasDemonHunterOnRealm); + _worldPacket.WriteBit(HasLevel70OnAccount); + _worldPacket.WriteBit(Unknown7x); + _worldPacket.WriteBit(DisabledClassesMask.is_initialized()); _worldPacket << uint32(Characters.size()); _worldPacket << uint32(FactionChangeRestrictions.size()); + if (DisabledClassesMask) + _worldPacket << uint32(*DisabledClassesMask); + for (CharacterInfo const& charInfo : Characters) { _worldPacket << charInfo.Guid; @@ -134,6 +147,7 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write() _worldPacket << uint8(charInfo.HairStyle); _worldPacket << uint8(charInfo.HairColor); _worldPacket << uint8(charInfo.FacialHair); + _worldPacket.append(charInfo.CustomDisplay.data(), charInfo.CustomDisplay.size()); _worldPacket << uint8(charInfo.Level); _worldPacket << int32(charInfo.ZoneId); _worldPacket << int32(charInfo.MapId); @@ -190,6 +204,7 @@ void WorldPackets::Character::CreateCharacter::Read() _worldPacket >> CreateInfo->HairColor; _worldPacket >> CreateInfo->FacialHairStyle; _worldPacket >> CreateInfo->OutfitId; + _worldPacket.read(CreateInfo->CustomDisplay.data(), CreateInfo->CustomDisplay.size()); CreateInfo->Name = _worldPacket.ReadString(nameLength); if (hasTemplateSet) CreateInfo->TemplateSet = _worldPacket.read<int32>(); @@ -244,6 +259,7 @@ void WorldPackets::Character::CharCustomize::Read() _worldPacket >> CustomizeInfo->HairStyleID; _worldPacket >> CustomizeInfo->FacialHairStyleID; _worldPacket >> CustomizeInfo->FaceID; + _worldPacket.read(CustomizeInfo->CustomDisplay.data(), CustomizeInfo->CustomDisplay.size()); CustomizeInfo->CharName = _worldPacket.ReadString(_worldPacket.ReadBits(6)); } @@ -255,32 +271,16 @@ void WorldPackets::Character::CharRaceOrFactionChange::Read() uint32 nameLength = _worldPacket.ReadBits(6); - bool const hasSkinID = _worldPacket.ReadBit(); - bool const hasHairColorID = _worldPacket.ReadBit(); - bool const hasHairStyleID = _worldPacket.ReadBit(); - bool const hasFacialHairStyleID = _worldPacket.ReadBit(); - bool const hasFaceID = _worldPacket.ReadBit(); - _worldPacket >> RaceOrFactionChangeInfo->Guid; _worldPacket >> RaceOrFactionChangeInfo->SexID; _worldPacket >> RaceOrFactionChangeInfo->RaceID; - + _worldPacket >> RaceOrFactionChangeInfo->SkinID; + _worldPacket >> RaceOrFactionChangeInfo->HairColorID; + _worldPacket >> RaceOrFactionChangeInfo->HairStyleID; + _worldPacket >> RaceOrFactionChangeInfo->FacialHairStyleID; + _worldPacket >> RaceOrFactionChangeInfo->FaceID; + _worldPacket.read(RaceOrFactionChangeInfo->CustomDisplay.data(), RaceOrFactionChangeInfo->CustomDisplay.size()); RaceOrFactionChangeInfo->Name = _worldPacket.ReadString(nameLength); - - if (hasSkinID) - RaceOrFactionChangeInfo->SkinID = _worldPacket.read<uint8>(); - - if (hasHairColorID) - RaceOrFactionChangeInfo->HairColorID = _worldPacket.read<uint8>(); - - if (hasHairStyleID) - RaceOrFactionChangeInfo->HairStyleID = _worldPacket.read<uint8>(); - - if (hasFacialHairStyleID) - RaceOrFactionChangeInfo->FacialHairStyleID = _worldPacket.read<uint8>(); - - if (hasFaceID) - RaceOrFactionChangeInfo->FaceID = _worldPacket.read<uint8>(); } WorldPacket const* WorldPackets::Character::CharFactionChangeResult::Write() @@ -300,6 +300,7 @@ WorldPacket const* WorldPackets::Character::CharFactionChangeResult::Write() _worldPacket << uint8(Display->FacialHairStyleID); _worldPacket << uint8(Display->FaceID); _worldPacket << uint8(Display->RaceID); + _worldPacket.append(Display->CustomDisplay.data(), Display->CustomDisplay.size()); _worldPacket.WriteString(Display->Name); } @@ -522,6 +523,7 @@ WorldPackets::Character::CharCustomizeResponse::CharCustomizeResponse(WorldPacke FacialHairStyleID = info->FacialHairStyleID; FaceID = info->FaceID; CharName = info->CharName; + CustomDisplay = info->CustomDisplay; } WorldPacket const* WorldPackets::Character::CharCustomizeResponse::Write() @@ -533,6 +535,7 @@ WorldPacket const* WorldPackets::Character::CharCustomizeResponse::Write() _worldPacket << uint8(HairStyleID); _worldPacket << uint8(FacialHairStyleID); _worldPacket << uint8(FaceID); + _worldPacket.append(CustomDisplay.data(), CustomDisplay.size()); _worldPacket.WriteBits(CharName.length(), 6); _worldPacket.FlushBits(); _worldPacket.WriteString(CharName); diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 017dddd1d06..6edf7bc097c 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -48,6 +48,7 @@ namespace WorldPackets uint8 HairStyle = 0; uint8 HairColor = 0; uint8 FacialHairStyle = 0; + std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay; uint8 OutfitId = 0; Optional<int32> TemplateSet; std::string Name; @@ -72,20 +73,22 @@ namespace WorldPackets uint8 HairColorID = 0; uint8 FacialHairStyleID = 0; uint8 SkinID = 0; + std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay; }; struct CharRaceOrFactionChangeInfo { - Optional<uint8> HairColorID; + uint8 HairColorID = 0; uint8 RaceID = RACE_NONE; uint8 SexID = GENDER_NONE; - Optional<uint8> SkinID; - Optional<uint8> FacialHairStyleID; + uint8 SkinID = 0; + uint8 FacialHairStyleID = 0; ObjectGuid Guid; bool FactionChange = false; std::string Name; - Optional<uint8> FaceID; - Optional<uint8> HairStyleID; + uint8 FaceID = 0; + uint8 HairStyleID = 0; + std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay; }; struct CharacterUndeleteInfo @@ -123,6 +126,7 @@ namespace WorldPackets uint8 HairStyle = 0; uint8 HairColor = 0; uint8 FacialHair = 0; + std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay; uint8 Level = 0; int32 ZoneId = 0; int32 MapId = 0; @@ -170,9 +174,15 @@ namespace WorldPackets bool Success = false; ///< bool IsDeletedCharacters = false; ///< used for character undelete list + bool IsDemonHunterCreationAllowed = false; + bool HasDemonHunterOnRealm = false; + bool HasLevel70OnAccount = false; + bool Unknown7x = false; + + Optional<uint32> DisabledClassesMask; - std::list<CharacterInfo> Characters; ///< all characters on the list - std::list<RestrictedFactionChangeRuleInfo> FactionChangeRestrictions; ///< @todo: research + std::vector<CharacterInfo> Characters; ///< all characters on the list + std::vector<RestrictedFactionChangeRuleInfo> FactionChangeRestrictions; ///< @todo: research }; class CreateCharacter final : public ClientPacket @@ -311,6 +321,7 @@ namespace WorldPackets uint8 FacialHairStyleID = 0; uint8 FaceID = 0; uint8 RaceID = RACE_NONE; + std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay; }; CharFactionChangeResult() : ServerPacket(SMSG_CHAR_FACTION_CHANGE_RESULT, 20 + sizeof(CharFactionChangeDisplayInfo)) { } @@ -705,6 +716,7 @@ namespace WorldPackets uint8 HairStyleID = 0; uint8 FacialHairStyleID = 0; uint8 FaceID = 0; + std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> CustomDisplay; }; class CharCustomizeFailed final : public ServerPacket diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 68b835c85ab..eb64ecc386b 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -48,7 +48,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket.WriteBit(CommerceSystemEnabled); _worldPacket.WriteBit(Unk67); _worldPacket.WriteBit(WillKickFromWorld); - _worldPacket.WriteBit(UnkBit61); + _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.FlushBits(); @@ -72,15 +72,6 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket << int32(SessionAlert->DisplayTime); } - /*if (bit61) - { - var int88 = packet.ReadInt32("int88"); - for (int i = 0; i < int88; i++) - packet.ReadByte("byte23", i); - }*/ - - _worldPacket.FlushBits(); - return &_worldPacket; } @@ -94,6 +85,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write() _worldPacket.WriteBit(Unk14); _worldPacket.WriteBit(WillKickFromWorld); _worldPacket.WriteBit(IsExpansionPreorderInStore); + _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.FlushBits(); _worldPacket << int32(TokenPollTimeSeconds); diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 5d6d2a9c071..03c1e0a5369 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -84,7 +84,7 @@ namespace WorldPackets bool RestrictedAccount = false; bool TutorialsEnabled = false; bool NPETutorialsEnabled = false; - bool UnkBit61 = false; + bool KioskModeEnabled = false; }; class FeatureSystemStatusGlueScreen final : public ServerPacket @@ -102,6 +102,7 @@ namespace WorldPackets bool Unk14 = false; // NYI bool WillKickFromWorld = false; // NYI bool IsExpansionPreorderInStore = false; + bool KioskModeEnabled = false; int32 TokenPollTimeSeconds = 0; // NYI int32 TokenRedeemIndex = 0; // NYI }; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index bef4760025f..b7159ea08ae 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -229,9 +229,9 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CHANGE_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ChangeSubGroup, &WorldSession::HandleChangeSubGroupOpcode); DEFINE_HANDLER(CMSG_CHARACTER_RENAME_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterRenameRequest, &WorldSession::HandleCharRenameOpcode); - DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharCustomize, &WorldSession::HandleCharCustomizeOpcode); + DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharCustomize, &WorldSession::HandleCharCustomizeOpcode); DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharDelete, &WorldSession::HandleCharDeleteOpcode); - DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharRaceOrFactionChange, &WorldSession::HandleCharRaceOrFactionChangeOpcode); + DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharRaceOrFactionChange, &WorldSession::HandleCharRaceOrFactionChangeOpcode); DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessageChannel, &WorldSession::HandleChatAddonMessageChannelOpcode); DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessage, &WorldSession::HandleChatAddonMessageOpcode); DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatAddonMessage, &WorldSession::HandleChatAddonMessageOpcode); @@ -299,7 +299,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CONFIRM_RESPEC_WIPE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Talent::ConfirmRespecWipe, &WorldSession::HandleConfirmRespecWipeOpcode); DEFINE_HANDLER(CMSG_CONNECT_TO_FAILED, STATUS_NEVER, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess); DEFINE_HANDLER(CMSG_CONVERT_RAID, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ConvertRaid, &WorldSession::HandleConvertRaidOpcode); - DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Character::CreateCharacter, &WorldSession::HandleCharCreateOpcode); + DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CreateCharacter, &WorldSession::HandleCharCreateOpcode); DEFINE_HANDLER(CMSG_CREATE_SHIPMENT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_DB_QUERY_BULK, STATUS_AUTHED, PROCESS_INPLACE, WorldPackets::Query::DBQueryBulk, &WorldSession::HandleDBQueryBulk); DEFINE_HANDLER(CMSG_DECLINE_GUILD_INVITES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::DeclineGuildInvites, &WorldSession::HandleDeclineGuildInvites); @@ -965,9 +965,9 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_UPGRADE_QUEUED, 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, 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_UNHANDLED, 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); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_DOWN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1046,15 +1046,15 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCHANTMENT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FAILED_PLAYER_CONDITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FEIGN_DEATH_RESISTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_ESCAPED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FISH_NOT_HOOKED, STATUS_NEVER, CONNECTION_TYPE_REALM); |
