DetailsEmote for quests (SMSG packet structure)

This commit is contained in:
Olion 2017-06-24 15:57:46 +03:00 committed by Antz
parent 59a0d7dd33
commit 09f2a1f64d
3 changed files with 20 additions and 16 deletions

View File

@ -457,9 +457,10 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* pQuest, ObjectGuid guid
{ {
ItemPrototype const* IProto; ItemPrototype const* IProto;
data << uint32(pQuest->GetRewChoiceItemsCount()); uint32 count = pQuest->GetRewChoiceItemsCount();
data << uint32(count);
for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) for (uint32 i = 0; i < count; ++i)
{ {
data << uint32(pQuest->RewChoiceItemId[i]); data << uint32(pQuest->RewChoiceItemId[i]);
data << uint32(pQuest->RewChoiceItemCount[i]); data << uint32(pQuest->RewChoiceItemCount[i]);
@ -472,9 +473,10 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* pQuest, ObjectGuid guid
{ data << uint32(0x00); } { data << uint32(0x00); }
} }
data << uint32(pQuest->GetRewItemsCount()); count = pQuest->GetRewItemsCount();
data << uint32(count);
for (uint32 i = 0; i < QUEST_REWARDS_COUNT; ++i) for (uint32 i = 0; i < count; ++i)
{ {
data << uint32(pQuest->RewItemId[i]); data << uint32(pQuest->RewItemId[i]);
data << uint32(pQuest->RewItemCount[i]); data << uint32(pQuest->RewItemCount[i]);
@ -490,19 +492,14 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* pQuest, ObjectGuid guid
data << uint32(pQuest->GetRewOrReqMoney()); data << uint32(pQuest->GetRewOrReqMoney());
} }
data << pQuest->GetReqItemsCount(); data << uint32(pQuest->GetRewSpell());
for (uint32 i = 0; i < QUEST_OBJECTIVES_COUNT; i++)
{
data << pQuest->ReqItemId[i];
data << pQuest->ReqItemCount[i];
}
uint32 count = pQuest->GetDetailsEmoteCount();
data << pQuest->GetReqCreatureOrGOcount(); data << uint32(count);
for (uint32 i = 0; i < QUEST_OBJECTIVES_COUNT; i++) for (uint32 i = 0; i < count; ++i)
{ {
data << uint32(pQuest->ReqCreatureOrGOId[i]); data << uint32(pQuest->DetailsEmote[i]);
data << pQuest->ReqCreatureOrGOCount[i]; data << uint32(pQuest->DetailsEmoteDelay[i]); // delay between emotes in ms
} }
GetMenuSession()->SendPacket(&data); GetMenuSession()->SendPacket(&data);

View File

@ -115,8 +115,13 @@ Quest::Quest(Field* questRecord)
PointY = questRecord[103].GetFloat(); PointY = questRecord[103].GetFloat();
PointOpt = questRecord[104].GetUInt32(); PointOpt = questRecord[104].GetUInt32();
m_detailsemotecount = 0;
for (int i = 0; i < QUEST_EMOTE_COUNT; ++i) for (int i = 0; i < QUEST_EMOTE_COUNT; ++i)
{ DetailsEmote[i] = questRecord[105 + i].GetUInt32(); } {
DetailsEmote[i] = questRecord[105 + i].GetUInt32();
if (DetailsEmote[i] != 0)
m_detailsemotecount = i + 1;
}
for (int i = 0; i < QUEST_EMOTE_COUNT; ++i) for (int i = 0; i < QUEST_EMOTE_COUNT; ++i)
{ DetailsEmoteDelay[i] = questRecord[109 + i].GetUInt32(); } { DetailsEmoteDelay[i] = questRecord[109 + i].GetUInt32(); }

View File

@ -249,6 +249,7 @@ class Quest
uint32 GetPointOpt() const { return PointOpt; } uint32 GetPointOpt() const { return PointOpt; }
uint32 GetIncompleteEmote() const { return IncompleteEmote; } uint32 GetIncompleteEmote() const { return IncompleteEmote; }
uint32 GetCompleteEmote() const { return CompleteEmote; } uint32 GetCompleteEmote() const { return CompleteEmote; }
uint32 GetDetailsEmoteCount() const { return m_detailsemotecount; }
uint32 GetQuestStartScript() const { return QuestStartScript; } uint32 GetQuestStartScript() const { return QuestStartScript; }
uint32 GetQuestCompleteScript() const { return QuestCompleteScript; } uint32 GetQuestCompleteScript() const { return QuestCompleteScript; }
@ -296,6 +297,7 @@ class Quest
uint32 m_reqCreatureOrGOcount; uint32 m_reqCreatureOrGOcount;
uint32 m_rewchoiceitemscount; uint32 m_rewchoiceitemscount;
uint32 m_rewitemscount; uint32 m_rewitemscount;
uint32 m_detailsemotecount; // actual allowed value 0..4
bool m_isActive; bool m_isActive;