summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/net')
-rw-r--r--src/net/eathena/network.h2
-rw-r--r--src/net/eathena/packetsin.inc1
-rw-r--r--src/net/eathena/questrecv.cpp23
-rw-r--r--src/net/eathena/questrecv.h1
4 files changed, 26 insertions, 1 deletions
diff --git a/src/net/eathena/network.h b/src/net/eathena/network.h
index ec8890cfc..494641e63 100644
--- a/src/net/eathena/network.h
+++ b/src/net/eathena/network.h
@@ -29,7 +29,7 @@
* Protocol version, reported to the eAthena char and mapserver who can adjust
* the protocol accordingly.
*/
-#define CLIENT_PROTOCOL_VERSION 19
+#define CLIENT_PROTOCOL_VERSION 20
namespace EAthena
{
diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc
index d180a84a4..4e67ef2f0 100644
--- a/src/net/eathena/packetsin.inc
+++ b/src/net/eathena/packetsin.inc
@@ -823,6 +823,7 @@ if (serverVersion > 0)
packet(SMSG_PLAYER_UPDATE_SKILL2, 0x0b20, -1, &SkillRecv::processSkillUpdate2, 0);
packet(SMSG_WALK_ERROR, 0x0b21, 10, &PlayerRecv::processWalkError, 0);
packet(SMSG_HOMUNCULUS_EXP, 0x0b22, 10, &HomunculusRecv::processHomunculusExp, 0);
+ packet(SMSG_QUEST_LIST2, 0x0b23, -1, &QuestRecv::processAddQuests2, 0);
// char server
packet(SMSG_CHAR_PASSWORD_RESPONSE, 0x0062, 3, &LoginRecv::processCharPasswordResponse, 0);
diff --git a/src/net/eathena/questrecv.cpp b/src/net/eathena/questrecv.cpp
index 206ed7798..dc2ed0c18 100644
--- a/src/net/eathena/questrecv.cpp
+++ b/src/net/eathena/questrecv.cpp
@@ -85,6 +85,29 @@ void QuestRecv::processAddQuests(Net::MessageIn &msg)
questsWindow->rebuild(false);
}
+void QuestRecv::processAddQuests2(Net::MessageIn &msg)
+{
+ msg.readInt16("len");
+ const int num = msg.readInt32("quests count");
+ for (int f = 0; f < num; f ++)
+ {
+ const int var = msg.readInt32("quest id");
+ msg.readUInt8("state");
+ const int val = msg.readInt32("count1");
+ // +++ need use all this fields
+ msg.readInt32("count2");
+ msg.readInt32("count3");
+ msg.readInt32("time");
+ if (questsWindow)
+ questsWindow->updateQuest(var, val);
+ if (skillDialog)
+ skillDialog->updateQuest(var, val);
+ }
+
+ if (questsWindow)
+ questsWindow->rebuild(false);
+}
+
void QuestRecv::processAddQuestsObjectives(Net::MessageIn &msg)
{
msg.readInt16("len");
diff --git a/src/net/eathena/questrecv.h b/src/net/eathena/questrecv.h
index 246bd4ddd..3c17010df 100644
--- a/src/net/eathena/questrecv.h
+++ b/src/net/eathena/questrecv.h
@@ -32,6 +32,7 @@ namespace EAthena
{
void processAddQuest(Net::MessageIn &msg);
void processAddQuests(Net::MessageIn &msg);
+ void processAddQuests2(Net::MessageIn &msg);
void processAddQuestsObjectives(Net::MessageIn &msg);
void processUpdateQuestsObjectives(Net::MessageIn &msg);
void processRemoveQuest(Net::MessageIn &msg);