diff --git a/src/game/LFGHandler.cpp b/src/game/LFGHandler.cpp index 8ec053df9..ddfdd0a6a 100644 --- a/src/game/LFGHandler.cpp +++ b/src/game/LFGHandler.cpp @@ -147,38 +147,59 @@ static void AttemptAddMore(Player* _player) } } -void WorldSession::HandleLfgSetAutoJoinOpcode( WorldPacket & /*recv_data*/ ) +void WorldSession::HandleLfgJoinOpcode( WorldPacket & recv_data ) { - sLog.outDebug("CMSG_LFG_SET_AUTOJOIN"); + sLog.outDebug("CMSG_LFG_JOIN"); LookingForGroup_auto_join = true; + uint8 counter1, counter2; + std::string comment; + + recv_data >> Unused(); // lfg roles + recv_data >> Unused(); // unk1 (unused?) + recv_data >> Unused(); // unk2 (unused?) + + recv_data >> counter1; + for (uint8 i = 0; i < counter1; i++) + recv_data >> Unused(); // queue block? (type/zone?) + + recv_data >> counter2; + for (uint8 i = 0; i < counter2; i++) + recv_data >> Unused(); // unk (unused?) + + recv_data >> comment; // lfg comment + if(!_player) // needed because STATUS_AUTHED return; AttemptJoin(_player); } -void WorldSession::HandleLfgClearAutoJoinOpcode( WorldPacket & /*recv_data*/ ) +void WorldSession::HandleLfgLeaveOpcode( WorldPacket & /*recv_data*/ ) { - sLog.outDebug("CMSG_LFG_CLEAR_AUTOJOIN"); + sLog.outDebug("CMSG_LFG_LEAVE"); LookingForGroup_auto_join = false; } -void WorldSession::HandleLfmSetAutoFillOpcode( WorldPacket & /*recv_data*/ ) +void WorldSession::HandleSearchLfgJoinOpcode( WorldPacket & recv_data ) { - sLog.outDebug("CMSG_LFM_SET_AUTOFILL"); + sLog.outDebug("CMSG_SEARCH_LFG_JOIN"); LookingForGroup_auto_add = true; + recv_data >> Unused(); // join id? + if(!_player) // needed because STATUS_AUTHED return; AttemptAddMore(_player); } -void WorldSession::HandleLfmClearAutoFillOpcode( WorldPacket & /*recv_data*/ ) +void WorldSession::HandleSearchLfgLeaveOpcode( WorldPacket & recv_data ) { - sLog.outDebug("CMSG_LFM_CLEAR_AUTOFILL"); + sLog.outDebug("CMSG_SEARCH_LFG_LEAVE"); LookingForGroup_auto_add = false; + + recv_data >> Unused(); // join id? } void WorldSession::HandleLfgClearOpcode( WorldPacket & /*recv_data */ ) diff --git a/src/game/Opcodes.cpp b/src/game/Opcodes.cpp index 8d84bd205..13ae0795a 100644 --- a/src/game/Opcodes.cpp +++ b/src/game/Opcodes.cpp @@ -886,10 +886,10 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] = /*0x359*/ { "MSG_MOVE_START_ASCEND", STATUS_LOGGEDIN, &WorldSession::HandleMovementOpcodes }, /*0x35A*/ { "MSG_MOVE_STOP_ASCEND", STATUS_LOGGEDIN, &WorldSession::HandleMovementOpcodes }, /*0x35B*/ { "SMSG_ARENA_TEAM_STATS", STATUS_NEVER, &WorldSession::Handle_ServerSide }, - /*0x35C*/ { "CMSG_LFG_JOIN", STATUS_LOGGEDIN, &WorldSession::HandleLfgSetAutoJoinOpcode }, - /*0x35D*/ { "CMSG_LFG_LEAVE", STATUS_LOGGEDIN, &WorldSession::HandleLfgClearAutoJoinOpcode }, - /*0x35E*/ { "CMSG_SEARCH_LFG_JOIN", STATUS_LOGGEDIN, &WorldSession::HandleLfmSetAutoFillOpcode }, - /*0x35F*/ { "CMSG_SEARCH_LFG_LEAVE", STATUS_LOGGEDIN, &WorldSession::HandleLfmClearAutoFillOpcode }, + /*0x35C*/ { "CMSG_LFG_JOIN", STATUS_LOGGEDIN, &WorldSession::HandleLfgJoinOpcode }, + /*0x35D*/ { "CMSG_LFG_LEAVE", STATUS_LOGGEDIN, &WorldSession::HandleLfgLeaveOpcode }, + /*0x35E*/ { "CMSG_SEARCH_LFG_JOIN", STATUS_LOGGEDIN, &WorldSession::HandleSearchLfgJoinOpcode }, + /*0x35F*/ { "CMSG_SEARCH_LFG_LEAVE", STATUS_LOGGEDIN, &WorldSession::HandleSearchLfgLeaveOpcode }, /*0x360*/ { "SMSG_UPDATE_LFG_LIST", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x361*/ { "SMSG_LFG_PROPOSAL_DECLINED", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x362*/ { "CMSG_LFG_PROPOSAL_RESULT", STATUS_LOGGEDIN, &WorldSession::Handle_NULL }, diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h index 776b1043e..3c4cd778b 100644 --- a/src/game/WorldSession.h +++ b/src/game/WorldSession.h @@ -641,10 +641,10 @@ class MANGOS_DLL_SPEC WorldSession void HandleSetDungeonDifficultyOpcode(WorldPacket& recv_data); void HandleSetRaidDifficultyOpcode(WorldPacket& recv_data); void HandleMoveSetCanFlyAckOpcode(WorldPacket& recv_data); - void HandleLfgSetAutoJoinOpcode(WorldPacket& recv_data); - void HandleLfgClearAutoJoinOpcode(WorldPacket& recv_data); - void HandleLfmSetAutoFillOpcode(WorldPacket& recv_data); - void HandleLfmClearAutoFillOpcode(WorldPacket& recv_data); + void HandleLfgJoinOpcode(WorldPacket& recv_data); + void HandleLfgLeaveOpcode(WorldPacket& recv_data); + void HandleSearchLfgJoinOpcode(WorldPacket& recv_data); + void HandleSearchLfgLeaveOpcode(WorldPacket& recv_data); void HandleLfgClearOpcode(WorldPacket& recv_data); void HandleLfmClearOpcode(WorldPacket& recv_data); void HandleSetLfmOpcode(WorldPacket& recv_data);