diff options
author | Andrei Karas <akaras@inbox.ru> | 2019-05-07 19:47:32 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2019-05-07 19:51:21 +0300 |
commit | c85f93d1cff5d5b053a1e21ea38d6d38beec6a70 (patch) | |
tree | 29a3edd13e3f5ec3202b5293f49cde4570115a07 | |
parent | 45a3cb0def45cbd0bfb6769e116da84edc686d79 (diff) | |
download | hercules-c85f93d1cff5d5b053a1e21ea38d6d38beec6a70.tar.gz hercules-c85f93d1cff5d5b053a1e21ea38d6d38beec6a70.tar.bz2 hercules-c85f93d1cff5d5b053a1e21ea38d6d38beec6a70.tar.xz hercules-c85f93d1cff5d5b053a1e21ea38d6d38beec6a70.zip |
Fix sending guild storage to client (Fixes #2463)
-rw-r--r-- | src/map/clif.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 1214106b7..2f1594477 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2978,7 +2978,8 @@ static void clif_storageItems(struct map_session_data *sd, enum inventory_type t nullpo_retv(sd); nullpo_retv(items); - for (int i = 0, normal_count = 0, equip_count = 0; i < items_length; ++i) { + int normal_count = 0, equip_count = 0; + for (int i = 0; i < items_length; ++i) { if (items[i].nameid == 0) continue; @@ -3019,6 +3020,36 @@ static void clif_storageItems(struct map_session_data *sd, enum inventory_type t equip_count = 0; } } + + if (normal_count > 0) { + storelist_normal.PacketType = storageListNormalType; + storelist_normal.PacketLength = (sizeof(storelist_normal) - sizeof(storelist_normal.list)) + (sizeof(struct NORMALITEM_INFO) * normal_count); + +#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 + storelist_normal.invType = type; +#endif +#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002 + safestrncpy(storelist_normal.name, "Storage", NAME_LENGTH); +#endif + + clif->send(&storelist_normal, storelist_normal.PacketLength, &sd->bl, SELF); + normal_count = 0; + } + + if (equip_count > 0) { + storelist_equip.PacketType = storageListEquipType; + storelist_equip.PacketLength = (sizeof(storelist_equip) - sizeof(storelist_equip.list)) + (sizeof(struct EQUIPITEM_INFO) * equip_count); + +#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 + storelist_equip.invType = type; +#endif +#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002 + safestrncpy(storelist_equip.name, "Storage", NAME_LENGTH); +#endif + + clif->send(&storelist_equip, storelist_equip.PacketLength, &sd->bl, SELF); + equip_count = 0; + } } static void clif_cartList(struct map_session_data *sd) |