diff options
-rw-r--r-- | src/map/clif.c | 31 | ||||
-rw-r--r-- | src/map/packets_struct.h | 23 |
2 files changed, 36 insertions, 18 deletions
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 |