summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2018-04-07 01:04:43 +0300
committerAndrei Karas <akaras@inbox.ru>2018-04-07 01:54:33 +0300
commite74554d22e2308ffb7ecdcae07477b8414f64a3b (patch)
treed59c687df470788bac0f7ed146d87699b604f27b
parent8720859cf97b5b0865a17d6d96c17a3481a3c2ae (diff)
downloadmv-e74554d22e2308ffb7ecdcae07477b8414f64a3b.tar.gz
mv-e74554d22e2308ffb7ecdcae07477b8414f64a3b.tar.bz2
mv-e74554d22e2308ffb7ecdcae07477b8414f64a3b.tar.xz
mv-e74554d22e2308ffb7ecdcae07477b8414f64a3b.zip
Add packet SMSG_QUEST_LIST 0x09f8.
-rw-r--r--src/net/eathena/packetsin.inc1
-rw-r--r--src/net/eathena/questrecv.cpp19
2 files changed, 19 insertions, 1 deletions
diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc
index bbc6dc805..01ae61d3e 100644
--- a/src/net/eathena/packetsin.inc
+++ b/src/net/eathena/packetsin.inc
@@ -925,6 +925,7 @@ if (packetVersion >= 20150513)
packet(SMSG_BEING_MOVE, 0x09fd, -1, &BeingRecv::processBeingMove, 20150513);
packet(SMSG_PLAYER_HEAL, 0x0a27, 8, &PlayerRecv::processPlayerHeal, 20150513);
packet(SMSG_HOMUNCULUS_INFO, 0x09f7, 75, &HomunculusRecv::processHomunculusInfo, 20150513);
+ packet(SMSG_QUEST_LIST, 0x09f8, -1, &QuestRecv::processAddQuests, 20150513);
}
// 20150805
diff --git a/src/net/eathena/questrecv.cpp b/src/net/eathena/questrecv.cpp
index e3277f030..8b709062d 100644
--- a/src/net/eathena/questrecv.cpp
+++ b/src/net/eathena/questrecv.cpp
@@ -94,7 +94,24 @@ void QuestRecv::processAddQuests(Net::MessageIn &msg)
{
msg.readInt32("time diff");
msg.readInt32("time");
- msg.readInt16("objectives count");
+ const int cnt = msg.readInt16("objectives count");
+ for (int d = 0; d < cnt; d ++)
+ {
+ if (msg.getVersion() >= 20150513)
+ {
+ msg.readInt32("hunt ident");
+ msg.readInt32("mob type");
+ }
+ msg.readInt32("mob id");
+ if (msg.getVersion() >= 20150513)
+ {
+ msg.readInt16("level min");
+ msg.readInt16("level max");
+ }
+ msg.readInt16("hunt count");
+ msg.readInt16("max count");
+ msg.readString(24, "mob name");
+ }
}
if (questsWindow != nullptr)
questsWindow->updateQuest(var, val, 0, 0, 0);