diff options
author | Andrei Karas <akaras@inbox.ru> | 2018-07-08 05:49:28 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2018-07-15 20:36:23 +0300 |
commit | 6323bbbd1c4dbc8eb8f0059cef6c97187f1d14c6 (patch) | |
tree | 0654926b94bde080fb867703c57550b00d10a7ee /src/map/clif.c | |
parent | 5bc2addaf71e514285de98ab31779cf37e6ba276 (diff) | |
download | hercules-6323bbbd1c4dbc8eb8f0059cef6c97187f1d14c6.tar.gz hercules-6323bbbd1c4dbc8eb8f0059cef6c97187f1d14c6.tar.bz2 hercules-6323bbbd1c4dbc8eb8f0059cef6c97187f1d14c6.tar.xz hercules-6323bbbd1c4dbc8eb8f0059cef6c97187f1d14c6.zip |
Update packet PACKET_ZC_ACK_SCHEDULER_CASHITEM.
Diffstat (limited to 'src/map/clif.c')
-rw-r--r-- | src/map/clif.c | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 2e08cd14b..eaf5ec30d 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -18566,25 +18566,35 @@ static void clif_parse_CashShopClose(int fd, struct map_session_data *sd) static void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); static void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd) { + clif->cashShopSchedule(fd, sd); +} + +void clif_cashShopSchedule(int fd, struct map_session_data *sd) +{ #if PACKETVER >= 20110614 - int i, j = 0; + int i = 0; - for( i = 0; i < CASHSHOP_TAB_MAX; i++ ) { - if( clif->cs.item_count[i] == 0 ) + nullpo_retv(sd); + for (i = 0; i < CASHSHOP_TAB_MAX; i++) { + const int len = sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM) + (clif->cs.item_count[i] * sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub)); + int j = 0; + struct PACKET_ZC_ACK_SCHEDULER_CASHITEM *p; + if (clif->cs.item_count[i] == 0) continue; // Skip empty tabs, the client only expects filled ones - WFIFOHEAD(fd, 8 + ( clif->cs.item_count[i] * 6 ) ); - WFIFOW(fd, 0) = 0x8ca; - WFIFOW(fd, 2) = 8 + ( clif->cs.item_count[i] * 6 ); - WFIFOW(fd, 4) = clif->cs.item_count[i]; - WFIFOW(fd, 6) = i; + WFIFOHEAD(fd, len); + p = WFIFOP(fd, 0); + p->packetType = 0x8ca; + p->packetLength = len; + p->count = clif->cs.item_count[i]; + p->tabNum = i; - for( j = 0; j < clif->cs.item_count[i]; j++ ) { - WFIFOW(fd, 8 + ( 6 * j ) ) = clif->cs.data[i][j]->id; - WFIFOL(fd, 10 + ( 6 * j ) ) = clif->cs.data[i][j]->price; + for (j = 0; j < clif->cs.item_count[i]; j++) { + p->items[j].itemId = clif->cs.data[i][j]->id; + p->items[j].price = clif->cs.data[i][j]->price; } - WFIFOSET(fd, 8 + ( clif->cs.item_count[i] * 6 )); + WFIFOSET(fd, len); } #endif } @@ -21615,6 +21625,7 @@ void clif_defaults(void) clif->getareachar_item = clif_getareachar_item; clif->cart_additem_ack = clif_cart_additem_ack; clif->cashshop_load = clif_cashshop_db; + clif->cashShopSchedule = clif_cashShopSchedule; clif->package_announce = clif_package_item_announce; clif->item_drop_announce = clif_item_drop_announce; /* unit-related */ |