mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 19:37:03 +00:00
Implemented learn preview talents, fixed talents/glyph display
This commit is contained in:
parent
5a967caef4
commit
8f1edbf513
7 changed files with 55 additions and 15 deletions
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 },
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 )
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue