summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2019-02-05 22:30:04 +0300
committerAndrei Karas <akaras@inbox.ru>2019-02-06 03:55:32 +0300
commit1efc9f3571988551407191a0784b363022c7fcc5 (patch)
treee4c66832131d6ba39d40c25733641b01a87f31c4
parent0b408f5971a9e4152b2aadc2b9208a0e8643f6e3 (diff)
downloadhercules-1efc9f3571988551407191a0784b363022c7fcc5.tar.gz
hercules-1efc9f3571988551407191a0784b363022c7fcc5.tar.bz2
hercules-1efc9f3571988551407191a0784b363022c7fcc5.tar.xz
hercules-1efc9f3571988551407191a0784b363022c7fcc5.zip
Add packet CZ_CLIENT_VERSION
For now unused, but can be used. This packet works in some old clients near 2015 versions.
-rwxr-xr-xconfigure2
-rw-r--r--src/map/clif.c9
-rw-r--r--src/map/clif.h1
-rw-r--r--src/map/packets.h4
-rw-r--r--src/map/packets_struct.h8
5 files changed, 23 insertions, 1 deletions
diff --git a/configure b/configure
index 41b308828..0560d8d85 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac e207bf99b.
+# From configure.ac 5b2340b4d.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69.
#
diff --git a/src/map/clif.c b/src/map/clif.c
index 44635d699..ae92e7b2c 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -22289,6 +22289,14 @@ static void clif_parse_NPCBarterPurchase(int fd, struct map_session_data *sd)
#endif
}
+static void clif_parse_clientVersion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_clientVersion(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20090406 || PACKETVER_RE_NUM >= 20090408 || PACKETVER_SAK_NUM >= 20090408 || defined(PACKETVER_ZERO)
+ // TODO: show or store client version
+#endif
+}
+
/*==========================================
* Main client packet processing function
*------------------------------------------*/
@@ -23478,4 +23486,5 @@ void clif_defaults(void)
clif->npc_barter_open = clif_npc_barter_open;
clif->pNPCBarterClosed = clif_parse_NPCBarterClosed;
clif->pNPCBarterPurchase = clif_parse_NPCBarterPurchase;
+ clif->pClientVersion = clif_parse_clientVersion;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index 1aee11c33..36c360cbc 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -1599,6 +1599,7 @@ struct clif_interface {
void (*npc_barter_open) (struct map_session_data *sd, struct npc_data *nd);
void (*pNPCBarterClosed) (int fd, struct map_session_data *sd);
void (*pNPCBarterPurchase) (int fd, struct map_session_data *sd);
+ void (*pClientVersion) (int fd, struct map_session_data *sd);
};
#ifdef HERCULES_CORE
diff --git a/src/map/packets.h b/src/map/packets.h
index d430a6de8..50784f09a 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -649,6 +649,10 @@ packet(0x96e,clif->ackmergeitems);
packet(0x0439,clif->pUseItem,2,4);
#endif
+#if PACKETVER_MAIN_NUM >= 20090406 || PACKETVER_RE_NUM >= 20090408 || PACKETVER_SAK_NUM >= 20090408 || defined(PACKETVER_ZERO)
+ packet(0x044a,clif->pClientVersion);
+#endif
+
// 2009-05-20aRagexe, 2009-05-20aRagexeRE
#if PACKETVER >= 20090520
// new packets
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index 9ebc8a75e..2339935ec 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -3152,6 +3152,14 @@ struct PACKET_ZC_USESKILL_ACK {
DEFINE_PACKET_HEADER(ZC_USESKILL_ACK, 0x013e);
#endif
+#if PACKETVER_MAIN_NUM >= 20090406 || PACKETVER_RE_NUM >= 20090408 || PACKETVER_SAK_NUM >= 20090408 || defined(PACKETVER_ZERO)
+struct PACKET_CZ_CLIENT_VERSION {
+ int16 packetType;
+ uint32 clientVersion;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_CLIENT_VERSION, 0x044a);
+#endif
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris