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

View File

@ -115,8 +115,13 @@ Quest::Quest(Field* questRecord)
PointY = questRecord[103].GetFloat();
PointOpt = questRecord[104].GetUInt32();
m_detailsemotecount = 0;
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)
{ DetailsEmoteDelay[i] = questRecord[109 + i].GetUInt32(); }

View File

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