diff --git a/src/game/GossipDef.cpp b/src/game/GossipDef.cpp index 8d18c6cca..3093651de 100644 --- a/src/game/GossipDef.cpp +++ b/src/game/GossipDef.cpp @@ -548,6 +548,7 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest ) data << uint32(pQuest->GetQuestId()); // quest id data << uint32(pQuest->GetQuestMethod()); // Accepted values: 0, 1 or 2. 0==IsAutoComplete() (skip objectives/details) data << uint32(pQuest->GetQuestLevel()); // may be 0, static data, in other cases must be used dynamic level: Player::GetQuestLevel + data << uint32(0); // min level data << uint32(pQuest->GetZoneOrSort()); // zone or sort to display in quest log data << uint32(pQuest->GetType()); // quest type @@ -560,6 +561,7 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest ) data << uint32(0); // RequiredOpositeRepValue, required faction value with another (oposite) faction (objective) data << uint32(pQuest->GetNextQuestInChain()); // client will request this quest from NPC, if not 0 + data << uint32(0); // unk 3.3.0 if (pQuest->HasFlag(QUEST_FLAGS_HIDDEN_REWARDS)) data << uint32(0); // Hide money rewarded @@ -570,9 +572,9 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest ) data << uint32(pQuest->GetRewSpell()); // reward spell, this spell will display (icon) (casted if RewSpellCast==0) data << uint32(pQuest->GetRewSpellCast()); // casted spell - // rewarded honor points + // rewarded honor points (raw) data << uint32(MaNGOS::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills())); - data << float(1); // weird honor multiplier + data << float(0); // new reward honor (multipled by ~62 at client side) data << uint32(pQuest->GetSrcItemId()); // source item id data << uint32(pQuest->GetFlags() & 0xFFFF); // quest flags data << uint32(pQuest->GetCharTitleId()); // CharTitleId, new 2.4.0, player gets this title (id from CharTitles) @@ -607,10 +609,10 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest ) for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // reward factions ids data << uint32(0); - for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // columnid+1 QuestFactionReward.dbc? + for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // columnid in QuestFactionReward.dbc (zero based)? data << uint32(0); - for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // unk (0) + for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // reward reputation override? data << uint32(0); data << pQuest->GetPointMapId(); @@ -622,7 +624,7 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest ) data << Objectives; data << Details; data << EndText; - data << uint8(0); // some string + data << uint8(0); // Return to text for (iI = 0; iI < QUEST_OBJECTIVES_COUNT; ++iI) { diff --git a/src/game/Opcodes.cpp b/src/game/Opcodes.cpp index f7bb4cc7d..1a31d35c3 100644 --- a/src/game/Opcodes.cpp +++ b/src/game/Opcodes.cpp @@ -1305,4 +1305,6 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] = /*0x4FC*/ { "SMSG_UNKNOWN_1276", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4FD*/ { "SMSG_UNKNOWN_1277", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4FE*/ { "UMSG_UNKNOWN_1278", STATUS_NEVER, &WorldSession::Handle_NULL }, + /*0x4FF*/ { "CMSG_QUERY_QUESTS_COMPLETED", STATUS_NEVER, &WorldSession::Handle_NULL }, + /*0x500*/ { "SMSG_QUERY_QUESTS_COMPLETED_RESPONSE", STATUS_NEVER, &WorldSession::Handle_ServerSide }, }; diff --git a/src/game/Opcodes.h b/src/game/Opcodes.h index fcdb96dbd..3224ad0c9 100644 --- a/src/game/Opcodes.h +++ b/src/game/Opcodes.h @@ -1313,7 +1313,9 @@ enum Opcodes SMSG_UNKNOWN_1276 = 0x4FC, // does nothing in 10554 SMSG_UNKNOWN_1277 = 0x4FD, // loot related? UMSG_UNKNOWN_1278 = 0x4FE, // not found 10554 - NUM_MSG_TYPES = 0x4FF + CMSG_QUERY_QUESTS_COMPLETED = 0x4FF, // lua: QueryQuestsCompleted + SMSG_QUERY_QUESTS_COMPLETED_RESPONSE = 0x500, // response to 0x4FF + NUM_MSG_TYPES = 0x501 }; /// Player state diff --git a/src/game/UpdateFields.h b/src/game/UpdateFields.h index fe238e766..99e2f9df3 100644 --- a/src/game/UpdateFields.h +++ b/src/game/UpdateFields.h @@ -19,7 +19,7 @@ #ifndef _UPDATEFIELDS_AUTO_H #define _UPDATEFIELDS_AUTO_H -// Auto generated for version 0, 3, 0, 10554 +// Auto generated for version 0, 3, 0, 10571 enum EObjectFields { diff --git a/src/realmd/AuthCodes.h b/src/realmd/AuthCodes.h index 88e315c4f..9f869d094 100644 --- a/src/realmd/AuthCodes.h +++ b/src/realmd/AuthCodes.h @@ -66,9 +66,9 @@ enum LoginResult // we need to stick to 1 version or half of the stuff will work for someone // others will not and opposite -// will only support WoW, WoW:TBC and WoW:WotLK 3.3.0 client build 10554... +// will only support WoW, WoW:TBC and WoW:WotLK 3.3.0 client build 10571... -#define EXPECTED_MANGOS_CLIENT_BUILD {10554, 0} +#define EXPECTED_MANGOS_CLIENT_BUILD {10571, 0} // At update excepted builds please update if need define DEFAULT_MAX_LEVEL // in DBCEnum.h to default max player level expected by build diff --git a/src/realmd/AuthSocket.cpp b/src/realmd/AuthSocket.cpp index bac584888..912e2682a 100644 --- a/src/realmd/AuthSocket.cpp +++ b/src/realmd/AuthSocket.cpp @@ -348,6 +348,11 @@ bool AuthSocket::_HandleLogonChallenge() buf[buf.size() - 1] = 0; sAuthLogonChallenge_C *ch = (sAuthLogonChallenge_C*)&buf[0]; + ///- Read the remaining of the packet + ibuf.Read((char *)&buf[4], remaining); + DEBUG_LOG("[AuthChallenge] got full packet, %#04x bytes", ch->size); + DEBUG_LOG("[AuthChallenge] name(%d): '%s'", ch->I_len, ch->I); + // BigEndian code, nop in little endian case // size already converted EndianConvert(*((uint32*)(&ch->gamename[0]))); @@ -358,11 +363,6 @@ bool AuthSocket::_HandleLogonChallenge() EndianConvert(ch->timezone_bias); EndianConvert(ch->ip); - ///- Read the remaining of the packet - ibuf.Read((char *)&buf[4], remaining); - DEBUG_LOG("[AuthChallenge] got full packet, %#04x bytes", ch->size); - DEBUG_LOG("[AuthChallenge] name(%d): '%s'", ch->I_len, ch->I); - ByteBuffer pkt; _login = (const char*)ch->I;