Implemented learn preview talents, fixed talents/glyph display

This commit is contained in:
tomrus88 2009-03-03 02:01:16 +03:00
parent 5a967caef4
commit 8f1edbf513
7 changed files with 55 additions and 15 deletions

View file

@ -335,3 +335,15 @@ void WorldSession::HandleSetLfgOpcode( WorldPacket & recv_data )
SendLfgResult(type, entry, 0); SendLfgResult(type, entry, 0);
} }
void WorldSession::HandleLfgSetRoles(WorldPacket &recv_data)
{
CHECK_PACKET_SIZE(recv_data, 1);
sLog.outDebug("CMSG_LFG_SET_ROLES");
uint8 roles;
recv_data >> roles;
_player->m_lookingForGroup.roles = roles;
}

View file

@ -1228,13 +1228,13 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x4AF*/ { "UMSG_UNKNOWN_1199", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4AF*/ { "UMSG_UNKNOWN_1199", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4B0*/ { "UMSG_UNKNOWN_1200", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4B0*/ { "UMSG_UNKNOWN_1200", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4B1*/ { "UMSG_UNKNOWN_1201", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4B1*/ { "UMSG_UNKNOWN_1201", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4B2*/ { "SMSG_UNKNOWN_1202", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4B2*/ { "SMSG_UNKNOWN_1202", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x4B3*/ { "UMSG_UNKNOWN_1203", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4B3*/ { "UMSG_UNKNOWN_1203", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4B4*/ { "UMSG_UNKNOWN_1204", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4B4*/ { "UMSG_UNKNOWN_1204", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4B5*/ { "SMSG_UNKNOWN_1205", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4B5*/ { "SMSG_UNKNOWN_1205", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x4B6*/ { "CMSG_UNKNOWN_1206", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4B6*/ { "CMSG_UNKNOWN_1206", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4B7*/ { "SMSG_UNKNOWN_1207", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4B7*/ { "SMSG_UNKNOWN_1207", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x4B8*/ { "CMSG_LFG_SET_ROLES", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4B8*/ { "CMSG_LFG_SET_ROLES", STATUS_LOGGEDIN, &WorldSession::HandleLfgSetRoles },
/*0x4B9*/ { "UMSG_UNKNOWN_1209", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4B9*/ { "UMSG_UNKNOWN_1209", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4BA*/ { "CMSG_UNKNOWN_1210", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4BA*/ { "CMSG_UNKNOWN_1210", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4BB*/ { "SMSG_UNKNOWN_1211", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4BB*/ { "SMSG_UNKNOWN_1211", STATUS_NEVER, &WorldSession::Handle_ServerSide },
@ -1243,7 +1243,7 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x4BE*/ { "CMSG_UNKNOWN_1214", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4BE*/ { "CMSG_UNKNOWN_1214", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4BF*/ { "SMSG_UNKNOWN_1215", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4BF*/ { "SMSG_UNKNOWN_1215", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x4C0*/ { "SMSG_UNKNOWN_1216", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4C0*/ { "SMSG_UNKNOWN_1216", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x4C1*/ { "CMSG_UNKNOWN_1217", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4C1*/ { "CMSG_UNKNOWN_1217", STATUS_LOGGEDIN, &WorldSession::HandleLearnPreviewTalents },
/*0x4C2*/ { "CMSG_UNKNOWN_1218", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4C2*/ { "CMSG_UNKNOWN_1218", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4C3*/ { "UMSG_UNKNOWN_1219", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4C3*/ { "UMSG_UNKNOWN_1219", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4C4*/ { "UMSG_UNKNOWN_1220", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4C4*/ { "UMSG_UNKNOWN_1220", STATUS_NEVER, &WorldSession::Handle_NULL },

View file

@ -1215,13 +1215,13 @@ enum Opcodes
SMSG_PET_REMOVED_SPELL = 0x49A, SMSG_PET_REMOVED_SPELL = 0x49A,
CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE = 0x49B, CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE = 0x49B,
CMSG_HEARTH_AND_RESURRECT = 0x49C, // not changed in 3.1 CMSG_HEARTH_AND_RESURRECT = 0x49C, // not changed in 3.1
SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x49D, // ? SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x49D, // not changed 9626
SMSG_CRITERIA_DELETED = 0x49E, // ? SMSG_CRITERIA_DELETED = 0x49E, // not changed 9626
SMSG_ACHIEVEMENT_DELETED = 0x49F, // ? SMSG_ACHIEVEMENT_DELETED = 0x49F, // not changed 9626
CMSG_SERVER_INFO_QUERY = 0x4A0, // ? CMSG_SERVER_INFO_QUERY = 0x4A0, // not found
SMSG_SERVER_INFO_RESPONSE = 0x4A1, // ? SMSG_SERVER_INFO_RESPONSE = 0x4A1, // not found
CMSG_CHECK_LOGIN_CRITERIA = 0x4A2, // ? CMSG_CHECK_LOGIN_CRITERIA = 0x4A2, // not found
SMSG_SERVER_BUCK_DATA_START = 0x4A3, // ? SMSG_SERVER_BUCK_DATA_START = 0x4A3, // not found
CMSG_QUERY_VEHICLE_STATUS = 0x4A4, // not found CMSG_QUERY_VEHICLE_STATUS = 0x4A4, // not found
UMSG_UNKNOWN_1189 = 0x4A5, // not found, old SMSG_PET_GUIDS UMSG_UNKNOWN_1189 = 0x4A5, // not found, old SMSG_PET_GUIDS
SMSG_UNKNOWN_1190 = 0x4A6, // smsg unk, old SMSG_CLIENTCACHE_VERSION SMSG_UNKNOWN_1190 = 0x4A6, // smsg unk, old SMSG_CLIENTCACHE_VERSION
@ -1248,11 +1248,11 @@ enum Opcodes
SMSG_UNKNOWN_1211 = 0x4BB, // SMSG, calendar related SMSG_UNKNOWN_1211 = 0x4BB, // SMSG, calendar related
SMSG_UNKNOWN_1212 = 0x4BC, // SMSG, equipment manager list? SMSG_UNKNOWN_1212 = 0x4BC, // SMSG, equipment manager list?
CMSG_UNKNOWN_1213 = 0x4BD, // CMSG, lua: SaveEquipmentSet CMSG_UNKNOWN_1213 = 0x4BD, // CMSG, lua: SaveEquipmentSet
CMSG_UNKNOWN_1214 = 0x4BE, // CMSG CMSG_UNKNOWN_1214 = 0x4BE, // CMSG, missle?
SMSG_UNKNOWN_1215 = 0x4BF, // SMSG, uint64, uint8, 3 x float SMSG_UNKNOWN_1215 = 0x4BF, // SMSG, uint64, uint8, 3 x float
SMSG_UNKNOWN_1216 = 0x4C0, // SMSG, talents related SMSG_UNKNOWN_1216 = 0x4C0, // SMSG, talents related
CMSG_UNKNOWN_1217 = 0x4C1, // CMSG, lua: LearnPreviewTalents CMSG_UNKNOWN_1217 = 0x4C1, // CMSG, lua: LearnPreviewTalents (for player?)
CMSG_UNKNOWN_1218 = 0x4C2, // CMSG, lua: LearnPreviewTalents CMSG_UNKNOWN_1218 = 0x4C2, // CMSG, lua: LearnPreviewTalents (for pet?)
UMSG_UNKNOWN_1219 = 0x4C3, // not found UMSG_UNKNOWN_1219 = 0x4C3, // not found
UMSG_UNKNOWN_1220 = 0x4C4, // not found UMSG_UNKNOWN_1220 = 0x4C4, // not found
UMSG_UNKNOWN_1221 = 0x4C5, // not found UMSG_UNKNOWN_1221 = 0x4C5, // not found

View file

@ -356,6 +356,7 @@ struct LookingForGroup
LookingForGroupSlot slots[MAX_LOOKING_FOR_GROUP_SLOT]; LookingForGroupSlot slots[MAX_LOOKING_FOR_GROUP_SLOT];
LookingForGroupSlot more; LookingForGroupSlot more;
std::string comment; std::string comment;
uint8 roles;
}; };
enum PlayerMovementType enum PlayerMovementType

View file

@ -36,6 +36,30 @@ void WorldSession::HandleLearnTalentOpcode( WorldPacket & recv_data )
recv_data >> talent_id >> requested_rank; recv_data >> talent_id >> requested_rank;
_player->LearnTalent(talent_id, requested_rank); _player->LearnTalent(talent_id, requested_rank);
_player->SendTalentInfoData(false);
}
void WorldSession::HandleLearnPreviewTalents(WorldPacket& recvPacket)
{
sLog.outDebug("CMSG_UNKNOWN_1217");
CHECK_PACKET_SIZE(recvPacket, 4);
uint32 talentsCount;
recvPacket >> talentsCount;
uint32 talentId, talentRank;
for(uint32 i = 0; i < talentsCount; ++i)
{
CHECK_PACKET_SIZE(recvPacket, recvPacket.rpos()+4+4);
recvPacket >> talentId >> talentRank;
_player->LearnTalent(talentId, talentRank);
}
_player->SendTalentInfoData(false);
} }
void WorldSession::HandleTalentWipeOpcode( WorldPacket & recv_data ) void WorldSession::HandleTalentWipeOpcode( WorldPacket & recv_data )

View file

@ -5373,12 +5373,13 @@ void Spell::EffectApplyGlyph(uint32 i)
if(gp->TypeFlags != gs->TypeFlags) if(gp->TypeFlags != gs->TypeFlags)
{ {
SendCastResult(SPELL_FAILED_INVALID_GLYPH); SendCastResult(SPELL_FAILED_INVALID_GLYPH);
return; // glyph slot missmatch return; // glyph slot mismatch
} }
} }
player->CastSpell(m_caster, gp->SpellId, true); player->CastSpell(m_caster, gp->SpellId, true);
player->SetGlyph(m_glyphIndex, glyph); player->SetGlyph(m_glyphIndex, glyph);
player->SendTalentInfoData(false);
} }
} }
} }

View file

@ -492,6 +492,7 @@ class MANGOS_DLL_SPEC WorldSession
void HandleCancelAutoRepeatSpellOpcode(WorldPacket& recvPacket); void HandleCancelAutoRepeatSpellOpcode(WorldPacket& recvPacket);
void HandleLearnTalentOpcode(WorldPacket& recvPacket); void HandleLearnTalentOpcode(WorldPacket& recvPacket);
void HandleLearnPreviewTalents(WorldPacket& recvPacket);
void HandleTalentWipeOpcode(WorldPacket& recvPacket); void HandleTalentWipeOpcode(WorldPacket& recvPacket);
void HandleUnlearnSkillOpcode(WorldPacket& recvPacket); void HandleUnlearnSkillOpcode(WorldPacket& recvPacket);
@ -598,6 +599,7 @@ class MANGOS_DLL_SPEC WorldSession
void HandleLfmSetNoneOpcode(WorldPacket& recv_data); void HandleLfmSetNoneOpcode(WorldPacket& recv_data);
void HandleLfmSetOpcode(WorldPacket& recv_data); void HandleLfmSetOpcode(WorldPacket& recv_data);
void HandleLfgSetCommentOpcode(WorldPacket& recv_data); void HandleLfgSetCommentOpcode(WorldPacket& recv_data);
void HandleLfgSetRoles(WorldPacket& recv_data);
void HandleChooseTitleOpcode(WorldPacket& recv_data); void HandleChooseTitleOpcode(WorldPacket& recv_data);
void HandleRealmStateRequestOpcode(WorldPacket& recv_data); void HandleRealmStateRequestOpcode(WorldPacket& recv_data);
void HandleTimeSyncResp(WorldPacket& recv_data); void HandleTimeSyncResp(WorldPacket& recv_data);