diff --git a/src/game/Opcodes.cpp b/src/game/Opcodes.cpp index 2b1267d45..04cf550df 100644 --- a/src/game/Opcodes.cpp +++ b/src/game/Opcodes.cpp @@ -141,8 +141,8 @@ void InitializeOpcodes() //OPCODE(SMSG_QUEST_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //OPCODE(CMSG_GAMEOBJECT_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGameObjectQueryOpcode ); //OPCODE(SMSG_GAMEOBJECT_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - //OPCODE(CMSG_CREATURE_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCreatureQueryOpcode ); - //OPCODE(SMSG_CREATURE_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + OPCODE(CMSG_CREATURE_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCreatureQueryOpcode ); + OPCODE(SMSG_CREATURE_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); OPCODE(CMSG_WHO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWhoOpcode ); OPCODE(SMSG_WHO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); OPCODE(CMSG_WHOIS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWhoisOpcode ); diff --git a/src/game/Opcodes.h b/src/game/Opcodes.h index 8e07df4a7..607d9e5da 100644 --- a/src/game/Opcodes.h +++ b/src/game/Opcodes.h @@ -135,8 +135,8 @@ enum Opcodes SMSG_QUEST_QUERY_RESPONSE = 0x105E, CMSG_GAMEOBJECT_QUERY = 0x105F, SMSG_GAMEOBJECT_QUERY_RESPONSE = 0x1060, - CMSG_CREATURE_QUERY = 0x1061, - SMSG_CREATURE_QUERY_RESPONSE = 0x1062, + CMSG_CREATURE_QUERY = 0x2706, // 4.3.4 15595 + SMSG_CREATURE_QUERY_RESPONSE = 0x6024, // 4.3.4 15595 CMSG_WHO = 0x6C15, SMSG_WHO = 0x6907, CMSG_WHOIS = 0x6B05, @@ -188,7 +188,7 @@ enum Opcodes SMSG_GUILD_EVENT = 0x1093, SMSG_GUILD_COMMAND_RESULT = 0x1094, UMSG_UPDATE_GUILD = 0x1095, - CMSG_MESSAGECHAT = 0x1096, + CMSG_MESSAGECHAT_SAY = 0x1154, SMSG_MESSAGECHAT = 0x1097, CMSG_JOIN_CHANNEL = 0x0156, CMSG_LEAVE_CHANNEL = 0x1099, diff --git a/src/game/QueryHandler.cpp b/src/game/QueryHandler.cpp index 6cf52f76b..a3313a26e 100644 --- a/src/game/QueryHandler.cpp +++ b/src/game/QueryHandler.cpp @@ -157,8 +157,8 @@ void WorldSession::HandleCreatureQueryOpcode(WorldPacket& recv_data) { int loc_idx = GetSessionDbLocaleIndex(); - char const* name = ci->Name; - char const* subName = ci->SubName; + std::string name = ci->Name; + std::string subName = ci->SubName; sObjectMgr.GetCreatureLocaleStrings(entry, loc_idx, &name, &subName); DETAIL_LOG("WORLD: CMSG_CREATURE_QUERY '%s' - Entry: %u.", ci->Name, entry); @@ -166,10 +166,14 @@ void WorldSession::HandleCreatureQueryOpcode(WorldPacket& recv_data) WorldPacket data(SMSG_CREATURE_QUERY_RESPONSE, 100); data << uint32(entry); // creature entry data << name; - data << uint8(0) << uint8(0) << uint8(0); // name2, name3, name4, always empty + + for (uint8 i = 0; i < 7; ++i) + data << uint8(0); // name2, name3, name4, always empty + data << subName; data << ci->IconName; // "Directions" for guard, string for Icons 2.3.0 data << uint32(ci->type_flags); // flags + data << uint32(0); // unk data << uint32(ci->type); // CreatureType.dbc data << uint32(ci->family); // CreatureFamily.dbc data << uint32(ci->rank); // Creature Rank (elite, boss, etc) @@ -185,6 +189,7 @@ void WorldSession::HandleCreatureQueryOpcode(WorldPacket& recv_data) for (uint32 i = 0; i < 6; ++i) data << uint32(ci->questItems[i]); // itemId[6], quest drop data << uint32(ci->movementId); // CreatureMovementInfo.dbc + data << uint32(0); //unk SendPacket(&data); DEBUG_LOG("WORLD: Sent SMSG_CREATURE_QUERY_RESPONSE"); }