From 0a7e3dee7e935254ae5bbc9ac4520f8b56dafb90 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Fri, 6 Jul 2018 23:09:07 +0300
Subject: Update packet ZC_UPDATE_ITEM_FROM_BUYING_STORE.

---
 src/map/clif.c           | 31 +++++++++++++------------------
 src/map/packets_struct.h | 23 +++++++++++++++++++++++
 2 files changed, 36 insertions(+), 18 deletions(-)

(limited to 'src')

diff --git a/src/map/clif.c b/src/map/clif.c
index 03e92340b..c279546b5 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -17837,28 +17837,23 @@ static void clif_buyingstore_trade_failed_buyer(struct map_session_data *sd, sho
 static void clif_buyingstore_update_item(struct map_session_data *sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny)
 {
 	int fd;
-#if PACKETVER < 20141016  // TODO : not sure for client date [Napster]
-	const int cmd = 0x81b;
-#else
-	const int cmd = 0x9e6;
-#endif
-	const int len = packet_len(cmd);
+	struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE p;
 
 	nullpo_retv(sd);
+
 	fd = sd->fd;
-	WFIFOHEAD(fd, len);
-	WFIFOW(fd, 0) = cmd;
-	WFIFOW(fd, 2) = nameid;
-	WFIFOW(fd, 4) = amount;  // amount of nameid received
-#if PACKETVER < 20141016
-	WFIFOL(fd, 6) = sd->buyingstore.zenylimit;
-#else
-	WFIFOL(fd, 6) = zeny;  // zeny
-	WFIFOL(fd, 10) = sd->buyingstore.zenylimit;
-	WFIFOL(fd, 14) = char_id;  // GID
-	WFIFOL(fd, 18) = (int)time(NULL);  // date
+	WFIFOHEAD(fd, sizeof(p));
+	p.packetType = buyingStoreUpdateItemType;
+	p.itemId = nameid;
+	p.amount = amount;
+	p.zenyLimit = sd->buyingstore.zenylimit;
+#if PACKETVER >= 20141016
+	p.zeny = zeny;
+	p.charId = char_id;  // GID
+	p.updateTime = (int)time(NULL);
 #endif
-	WFIFOSET(fd, len);
+	memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+	WFIFOSET(fd, sizeof(p));
 }
 
 /// Deletes item from inventory, that was sold to a buying store (ZC_ITEM_DELETE_BUYING_STORE).
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index f3f4d65ef..2699f9108 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -390,6 +390,11 @@ enum packet_headers {
 #else
 	sendLookType = 0xc3,
 #endif
+#if PACKETVER >= 20141016
+	buyingStoreUpdateItemType = 0x9e6,
+#else
+	buyingStoreUpdateItemType = 0x81b,
+#endif
 };
 
 #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
@@ -2047,6 +2052,24 @@ struct PACKET_ZC_ITEM_PICKUP_PARTY {
 	uint8 itemType;
 } __attribute__((packed));
 
+struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE {
+	int16 packetType;
+#if PACKETVER_RE_NUM >= 20180704
+	uint32 itemId;
+#else
+	uint16 itemId;
+#endif
+	uint16 amount;
+#if PACKETVER >= 20141016
+	uint32 zeny;
+	uint32 zenyLimit;
+	uint32 charId;
+	uint32 updateTime;
+#else
+	uint32 zenyLimit;
+#endif
+} __attribute__((packed));
+
 #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
-- 
cgit v1.2.3-70-g09d2