summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2017-08-16 19:41:24 +0300
committerAndrei Karas <akaras@inbox.ru>2017-08-16 19:41:24 +0300
commit23a9bf91fc75a208b62e8c8a3ce8e5e5bb42ef36 (patch)
treea30e292c314e97df52619ff5fc2373ea694bcd0e
parenta4a23b1e0188f47d21a568447d93a1ac4562324d (diff)
downloadmv-23a9bf91fc75a208b62e8c8a3ce8e5e5bb42ef36.tar.gz
mv-23a9bf91fc75a208b62e8c8a3ce8e5e5bb42ef36.tar.bz2
mv-23a9bf91fc75a208b62e8c8a3ce8e5e5bb42ef36.tar.xz
mv-23a9bf91fc75a208b62e8c8a3ce8e5e5bb42ef36.zip
Load evol packet offset from first packet from server.
-rw-r--r--src/client.cpp2
-rw-r--r--src/net/eathena/loginrecv.cpp7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/client.cpp b/src/client.cpp
index ef0e5af31..d67b58dce 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -180,6 +180,7 @@ LoginData loginData;
Client *client = nullptr;
extern FPSmanager fpsManager;
+extern int evolPacketOffset;
volatile bool runCounters;
bool isSafeMode = false;
@@ -1961,6 +1962,7 @@ void Client::unloadData()
serverVersion = 0;
packetVersion = 0;
tmwServerVersion = 0;
+ evolPacketOffset = 0;
}
void Client::runValidate()
diff --git a/src/net/eathena/loginrecv.cpp b/src/net/eathena/loginrecv.cpp
index b9abf20aa..555d1a2c1 100644
--- a/src/net/eathena/loginrecv.cpp
+++ b/src/net/eathena/loginrecv.cpp
@@ -45,6 +45,7 @@
#include "debug.h"
extern int packetVersion;
+extern int evolPacketOffset;
namespace EAthena
{
@@ -153,7 +154,7 @@ void LoginRecv::processUpdateHost2(Net::MessageIn &msg)
void LoginRecv::processServerVersion(Net::MessageIn &msg)
{
- msg.readInt16("len");
+ const int len = msg.readInt16("len");
msg.readInt32("unused");
serverVersion = msg.readInt32("server version");
if (serverVersion > 0)
@@ -167,6 +168,10 @@ void LoginRecv::processServerVersion(Net::MessageIn &msg)
logger->log("autofix Hercules packet version to: %d",
packetVersion);
}
+ if (serverVersion >= 16 && len >= 18)
+ {
+ evolPacketOffset = msg.readInt16("evol packet offset");
+ }
}
else
{