summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-09-09 22:15:19 +0300
committerAndrei Karas <akaras@inbox.ru>2015-09-09 22:15:19 +0300
commita2af952c687ff666208a316d8b7b4e394df19d2f (patch)
treeef20e0d49ac16397d3aa7b47db8657e89e175dc7
parent847ad4c18e4355cac45102f5ad8f8bbf4e43f84f (diff)
downloadplus-a2af952c687ff666208a316d8b7b4e394df19d2f.tar.gz
plus-a2af952c687ff666208a316d8b7b4e394df19d2f.tar.bz2
plus-a2af952c687ff666208a316d8b7b4e394df19d2f.tar.xz
plus-a2af952c687ff666208a316d8b7b4e394df19d2f.zip
Read server packet version from server (hercules).
-rw-r--r--src/client.cpp2
-rw-r--r--src/dyetool/client.cpp1
-rw-r--r--src/net/eathena/loginrecv.cpp16
-rw-r--r--src/net/tmwa/loginrecv.cpp3
4 files changed, 22 insertions, 0 deletions
diff --git a/src/client.cpp b/src/client.cpp
index 8c8276f7e..d0c4e38c0 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -171,6 +171,7 @@ extern FPSmanager fpsManager;
volatile bool runCounters;
bool isSafeMode = false;
int serverVersion = 0;
+int packetVersion = 0;
unsigned int tmwServerVersion = 0;
int start_time;
unsigned int mLastHost = 0;
@@ -1010,6 +1011,7 @@ int Client::gameExec()
loginData.clearUpdateHost();
serverVersion = 0;
+ packetVersion = 0;
tmwServerVersion = 0;
// Allow changing this using a server choice dialog
diff --git a/src/dyetool/client.cpp b/src/dyetool/client.cpp
index 77964bd17..72e58385e 100644
--- a/src/dyetool/client.cpp
+++ b/src/dyetool/client.cpp
@@ -94,6 +94,7 @@ extern FPSmanager fpsManager;
volatile bool runCounters;
bool isSafeMode = false;
int serverVersion = 0;
+int packetVersion = 0;
unsigned int tmwServerVersion = 0;
int start_time;
unsigned int mLastHost = 0;
diff --git a/src/net/eathena/loginrecv.cpp b/src/net/eathena/loginrecv.cpp
index 472ce76be..cd0a09060 100644
--- a/src/net/eathena/loginrecv.cpp
+++ b/src/net/eathena/loginrecv.cpp
@@ -35,6 +35,8 @@
#include "debug.h"
+extern int packetVersion;
+
namespace EAthena
{
@@ -145,9 +147,23 @@ void LoginRecv::processServerVersion(Net::MessageIn &msg)
msg.readInt32("unused");
serverVersion = msg.readInt32("server version");
if (serverVersion > 0)
+ {
logger->log("Evol2 server version: %d", serverVersion);
+ if (serverVersion >= 8)
+ {
+ packetVersion = msg.readInt32("packet version");
+ logger->log("Hercules packet version: %d", packetVersion);
+ }
+ else
+ {
+ packetVersion = 20150000;
+ logger->log("Possible hercules packet version: %d", packetVersion);
+ }
+ }
else
+ {
logger->log("Hercules without version");
+ }
client->setState(STATE_LOGIN);
}
diff --git a/src/net/tmwa/loginrecv.cpp b/src/net/tmwa/loginrecv.cpp
index 772691573..d5ca68241 100644
--- a/src/net/tmwa/loginrecv.cpp
+++ b/src/net/tmwa/loginrecv.cpp
@@ -33,6 +33,8 @@
#include "debug.h"
+extern int packetVersion;
+
namespace TmwAthena
{
@@ -45,6 +47,7 @@ enum ServerFlags
void LoginRecv::processServerVersion(Net::MessageIn &msg)
{
+ packetVersion = 0;
const uint8_t b1 = msg.readUInt8("b1"); // -1
const uint8_t b2 = msg.readUInt8("b2");
const uint8_t b3 = msg.readUInt8("b3");