From 2763fe4d17402c1cbfb895ff5706b717405ccfeb Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 1 Aug 2018 08:28:17 +0300 Subject: Update shuffle packets and keys. --- src/map/packets_keys_main.h | 7 +++++-- src/map/packets_keys_zero.h | 7 +++++-- src/map/packets_shuffle_main.h | 7 +++++-- src/map/packets_shuffle_re.h | 7 +++++-- src/map/packets_shuffle_zero.h | 7 +++++-- 5 files changed, 25 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h index 43221f965..6e7f27166 100644 --- a/src/map/packets_keys_main.h +++ b/src/map/packets_keys_main.h @@ -874,7 +874,7 @@ packetKeys(0x6A596301,0x76866D0E,0x32294A45); #endif -// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE +// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE #if PACKETVER == 20131223 || \ PACKETVER == 20140508 || \ PACKETVER == 20140611 || \ @@ -896,7 +896,10 @@ PACKETVER == 20180621 || \ PACKETVER == 20180704 || \ PACKETVER == 20180711 || \ - PACKETVER >= 20180718 + PACKETVER == 20180718 || \ + PACKETVER == 20180801 || \ + PACKETVER == 20180808 || \ + PACKETVER >= 20180822 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h index 4d1267fbb..42a6aaf37 100644 --- a/src/map/packets_keys_zero.h +++ b/src/map/packets_keys_zero.h @@ -29,7 +29,7 @@ /* This file is autogenerated, please do not commit manual changes */ -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero +// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero #if PACKETVER == 20171018 || \ PACKETVER == 20171019 || \ PACKETVER == 20171023 || \ @@ -51,7 +51,10 @@ PACKETVER == 20180627 || \ PACKETVER == 20180703 || \ PACKETVER == 20180711 || \ - PACKETVER >= 20180725 + PACKETVER == 20180725 || \ + PACKETVER == 20180801 || \ + PACKETVER == 20180808 || \ + PACKETVER >= 20180822 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h index 41b4cbba5..441415df2 100644 --- a/src/map/packets_shuffle_main.h +++ b/src/map/packets_shuffle_main.h @@ -3344,7 +3344,7 @@ packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #endif -// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe +// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe #if PACKETVER == 20140611 || \ PACKETVER == 20150225 || \ PACKETVER == 20180315 || \ @@ -3362,7 +3362,10 @@ PACKETVER == 20180620 || \ PACKETVER == 20180621 || \ PACKETVER == 20180704 || \ - PACKETVER >= 20180718 + PACKETVER == 20180718 || \ + PACKETVER == 20180801 || \ + PACKETVER == 20180808 || \ + PACKETVER >= 20180822 packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h index 2e4dedbce..ee268a8f5 100644 --- a/src/map/packets_shuffle_re.h +++ b/src/map/packets_shuffle_re.h @@ -9662,10 +9662,13 @@ packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE +// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE #if PACKETVER == 20180704 || \ PACKETVER == 20180711 || \ - PACKETVER >= 20180718 + PACKETVER == 20180718 || \ + PACKETVER == 20180801 || \ + PACKETVER == 20180808 || \ + PACKETVER >= 20180822 packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h index 2d7757a08..479cf634a 100644 --- a/src/map/packets_shuffle_zero.h +++ b/src/map/packets_shuffle_zero.h @@ -36,7 +36,7 @@ /* This file is autogenerated, please do not commit manual changes */ -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero +// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero #if PACKETVER == 20171018 || \ PACKETVER == 20171019 || \ PACKETVER == 20171023 || \ @@ -58,7 +58,10 @@ PACKETVER == 20180627 || \ PACKETVER == 20180703 || \ PACKETVER == 20180711 || \ - PACKETVER >= 20180725 + PACKETVER == 20180725 || \ + PACKETVER == 20180801 || \ + PACKETVER == 20180808 || \ + PACKETVER >= 20180822 packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD -- cgit v1.2.3-60-g2f50 From 380a56ca6151fbed4c758168e07504a9ae54e281 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 1 Aug 2018 08:34:51 +0300 Subject: Update non shuffle packets list. --- src/map/packets.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src') diff --git a/src/map/packets.h b/src/map/packets.h index 6fb637185..f2f642dbc 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -4255,4 +4255,35 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +#ifndef PACKETVER_ZERO +// 2018-08-01cRagexe, 2018-08-01cRagexeRE +#if PACKETVER >= 20180801 +// new packets + packet(0x0b03,-1); + packet(0x0b04,80,clif->pDull/*,XXX*/); +// changed packet sizes +#endif +#endif // PACKETVER_ZERO + +// 2018-08-08_2aRagexe_zero +#if PACKETVER_ZERO_NUM >= 20180808 +// new packets + packet(0x0b04,80,clif->pDull/*,XXX*/); +// changed packet sizes +#endif + +// 2018-08-22aRagexe_zero +#if PACKETVER_ZERO_NUM >= 20180822 +// new packets + packet(0x0b05,59); + packet(0x0b06,53,clif->pDull/*,XXX*/); + packet(0x0b07,-1); + packet(0x0b08,26,clif->pDull/*,XXX*/); + packet(0x0b09,-1,clif->pDull/*,XXX*/); + packet(0x0b0a,-1,clif->pDull/*,XXX*/); + packet(0x0b0b,3,clif->pDull/*,XXX*/); + packet(0x0b0c,155,clif->pDull/*,XXX*/); +// changed packet sizes +#endif + #endif /* MAP_PACKETS_H */ -- cgit v1.2.3-60-g2f50 From 742947960df6c2d1fc7ba8c2859b42966e9d22b7 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 8 Aug 2018 06:30:02 +0300 Subject: Update messages list. --- src/map/messages_main.h | 2 +- src/map/messages_re.h | 2 +- src/map/messages_zero.h | 12 ++++++++---- 3 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/map/messages_main.h b/src/map/messages_main.h index 1d42ff2bb..dd000d2f1 100644 --- a/src/map/messages_main.h +++ b/src/map/messages_main.h @@ -23,7 +23,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20180718 +Latest version: 20180808 */ enum clif_messages { diff --git a/src/map/messages_re.h b/src/map/messages_re.h index 899f0c708..bf2927d6b 100644 --- a/src/map/messages_re.h +++ b/src/map/messages_re.h @@ -23,7 +23,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20180718 +Latest version: 20180808 */ enum clif_messages { diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h index 19959dc70..05e3f1479 100644 --- a/src/map/messages_zero.h +++ b/src/map/messages_zero.h @@ -23,7 +23,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20180725 +Latest version: 20180822 */ enum clif_messages { @@ -17357,15 +17357,19 @@ DEATH : %.1f%% ( basic 100.0%% %s %.1f%%) MSG_ID_DD1 = 0xdd1, #endif #if PACKETVER >= 20180725 -/*20180725 to latest +/*20180725 to 20180801 ' +20180808 to latest +영문이나 러시아어 단독으로만 사용이 가능합니다. */ MSG_ID_DD2 = 0xdd2, -/*20180725 to latest +/*20180725 to 20180801 ; +20180822 to latest +you must have an AccessTicket to login */ MSG_ID_DD3 = 0xdd3, -/*20180725 to latest +/*20180725 to 20180801 -- */ MSG_ID_DD4 = 0xdd4, -- cgit v1.2.3-60-g2f50 From e73bc865155c275994d24a87e54b7e5ae327493d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 4 Aug 2018 21:02:36 +0300 Subject: Split packet CZ_REQ_STYLE_CHANGE to CZ_REQ_STYLE_CHANGE and CZ_REQ_STYLE_CHANGE2. --- src/map/clif.c | 24 ++++++++++++++++++++++-- src/map/clif.h | 1 + src/map/packets.h | 4 ++-- src/map/packets_struct.h | 12 ++++++++++-- 4 files changed, 35 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 4e8e84f41..dfb6aae06 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -21548,13 +21548,32 @@ static void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd) clif->cz_req_style_change_sub(sd, LOOK_HEAD_MID, p->MidAccessory, true); if (p->BottomAccessory > 0) clif->cz_req_style_change_sub(sd, LOOK_HEAD_BOTTOM, p->BottomAccessory, true); -#if PACKETVER_RE_NUM >= 20180718 + clif->style_change_response(sd, STYLIST_SHOP_SUCCESS); + return; +} + +static void clif_parse_cz_req_style_change2(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +static void clif_parse_cz_req_style_change2(int fd, struct map_session_data *sd) +{ + const struct PACKET_CZ_REQ_STYLE_CHANGE2 *p = RP2PTR(fd); + + if (p->HeadStyle > 0) + clif->cz_req_style_change_sub(sd, LOOK_HAIR, p->HeadStyle, false); + if (p->HeadPalette > 0) + clif->cz_req_style_change_sub(sd, LOOK_HAIR_COLOR, p->HeadPalette, false); + if (p->BodyPalette > 0) + clif->cz_req_style_change_sub(sd, LOOK_CLOTHES_COLOR, p->BodyPalette, false); + if (p->TopAccessory > 0) + clif->cz_req_style_change_sub(sd, LOOK_HEAD_TOP, p->TopAccessory, true); + if (p->MidAccessory > 0) + clif->cz_req_style_change_sub(sd, LOOK_HEAD_MID, p->MidAccessory, true); + if (p->BottomAccessory > 0) + clif->cz_req_style_change_sub(sd, LOOK_HEAD_BOTTOM, p->BottomAccessory, true); if (p->BodyStyle > 0) { if (pc->has_second_costume(sd)) { clif->cz_req_style_change_sub(sd, LOOK_BODY2, p->BodyStyle, false); } } -#endif clif->style_change_response(sd, STYLIST_SHOP_SUCCESS); return; } @@ -22775,6 +22794,7 @@ void clif_defaults(void) clif->style_change_validate_requirements = clif_style_change_validate_requirements; clif->stylist_send_rodexitem = clif_stylist_send_rodexitem; clif->pReqStyleChange = clif_parse_cz_req_style_change; + clif->pReqStyleChange2 = clif_parse_cz_req_style_change2; clif->cz_req_style_change_sub = clif_cz_req_style_change_sub; clif->style_change_response = clif_style_change_response; diff --git a/src/map/clif.h b/src/map/clif.h index 3ed9b96ae..406c6ca6a 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1514,6 +1514,7 @@ struct clif_interface { bool (*style_change_validate_requirements) (struct map_session_data *sd, int type, int16 idx); void (*stylist_send_rodexitem) (struct map_session_data *sd, int itemid); void (*pReqStyleChange) (int fd, struct map_session_data *sd); + void (*pReqStyleChange2) (int fd, struct map_session_data *sd); void (*cz_req_style_change_sub) (struct map_session_data *sd, int type, int16 idx, bool isitem); void (*style_change_response) (struct map_session_data *sd, enum stylist_shop flag); void (*pPetEvolution) (int fd, struct map_session_data *sd); diff --git a/src/map/packets.h b/src/map/packets.h index f2f642dbc..94da86b9e 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -4121,7 +4121,7 @@ packet(0x96e,-1,clif->ackmergeitems); // 2018-05-16cRagexe, 2018-05-16cRagexeRE #if PACKETVER >= 20180516 // new packets - packet(0x0afc,16,clif->pReqStyleChange); + packet(0x0afc,16,clif->pReqStyleChange2); // changed packet sizes #endif #endif // PACKETVER_ZERO @@ -4130,7 +4130,7 @@ packet(0x96e,-1,clif->ackmergeitems); // 2018-05-23aRagexe_zero #if PACKETVER >= 20180523 // new packets - packet(0x0afc,16,clif->pReqStyleChange); + packet(0x0afc,16,clif->pReqStyleChange2); // changed packet sizes #endif #endif // PACKETVER_ZERO diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index e6d207fad..d0815317f 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -1883,9 +1883,17 @@ struct PACKET_CZ_REQ_STYLE_CHANGE { int16 TopAccessory; int16 MidAccessory; int16 BottomAccessory; -#if PACKETVER_RE_NUM >= 20180718 +} __attribute__((packed)); + +struct PACKET_CZ_REQ_STYLE_CHANGE2 { + int16 PacketType; + int16 HeadPalette; + int16 HeadStyle; + int16 BodyPalette; + int16 TopAccessory; + int16 MidAccessory; + int16 BottomAccessory; int16 BodyStyle; -#endif } __attribute__((packed)); struct PACKET_ZC_STYLE_CHANGE_RES { -- cgit v1.2.3-60-g2f50 From 4ad2108e53c32c767afe9c25ae47fb1584bc3822 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 6 Aug 2018 08:24:21 +0300 Subject: Fix some packets sizes. Was used wrong size from known two sizes. --- src/map/packets.h | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/map/packets.h b/src/map/packets.h index 94da86b9e..1d1046e8a 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -1759,7 +1759,7 @@ packet(0x96e,-1,clif->ackmergeitems); #if PACKETVER >= 20100413 //packet(0x081A,10); packet(0x0820,11); - //packet(0x0821,2); + packet(0x0821,2); //packet(0x0822,9); //packet(0x0823,-1); #endif @@ -3994,9 +3994,6 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0af2,40,clif->pDull/*,XXX*/); packet(0x0af3,-1,clif->pDull/*,XXX*/); // changed packet sizes -#ifndef PACKETVER_RE - packet(0x0821,102,clif->pDull/*,XXX*/); // AC_OTP_USER -#endif #endif #ifdef PACKETVER_ZERO @@ -4011,11 +4008,6 @@ packet(0x96e,-1,clif->ackmergeitems); #endif #endif // PACKETVER_ZERO -#if PACKETVER >= 20180131 -// changed packet sizes - packet(0x0821,102); // AC_OTP_USER -#endif - #ifdef PACKETVER_ZERO // 2018-02-07bRagexe_zero #if PACKETVER >= 20180207 @@ -4091,14 +4083,6 @@ packet(0x96e,-1,clif->ackmergeitems); #endif #endif // PACKETVER_ZERO -#ifdef PACKETVER_RE -// 2018-04-04cRagexeRE -#if PACKETVER >= 20180404 -// changed packet sizes - packet(0x0821,102,clif->pDull/*,XXX*/); // AC_OTP_USER -#endif -#endif - #ifndef PACKETVER_ZERO // 2018-04-18aRagexe, 2018-04-18bRagexeRE #if PACKETVER >= 20180418 @@ -4138,7 +4122,7 @@ packet(0x96e,-1,clif->ackmergeitems); // 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-05bRagexe_zero #if PACKETVER >= 20180605 // new packets - packet(0x0afd,155); + packet(0x0afd,-1); packet(0x0afe,-1,clif->pDull/*,XXX*/); packet(0x0aff,-1,clif->pDull/*,XXX*/); // changed packet sizes -- cgit v1.2.3-60-g2f50 From 327f8c62cf1515901fe0c64b5d0d772ac2d0ecb9 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 11 Aug 2018 03:17:02 +0300 Subject: Add packet ZC_EQUIPWIN_MICROSCOPE_V7. --- src/map/clif.c | 3 +++ src/map/packets_struct.h | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index dfb6aae06..4e55f7d0c 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9327,6 +9327,9 @@ static void clif_viewequip_ack(struct map_session_data *sd, struct map_session_d #endif viewequip_list.headpalette = tsd->vd.hair_color; viewequip_list.bodypalette = tsd->vd.cloth_color; +#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 + viewequip_list.body2 = tsd->vd.body_style; +#endif viewequip_list.sex = tsd->vd.sex; clif->send(&viewequip_list, viewequip_list.PacketLength, &sd->bl, SELF); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index d0815317f..e3aea5ed1 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -279,10 +279,15 @@ enum packet_headers { #else unequipitemackType = 0xac, #endif -#if PACKETVER >= 20150226 +#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 + viewequipackType = 0xb03, +#elif PACKETVER >= 20150226 viewequipackType = 0xa2d, #elif PACKETVER >= 20120925 viewequipackType = 0x997, +// [4144] not supported due other packets/structs not updated +//#elif (PACKETVER_MAIN_NUM >= 20111207) || (PACKETVER_RE_NUM >= 20111122) +// viewequipackType = 0x906, #elif PACKETVER >= 20101124 viewequipackType = 0x859, #else @@ -1221,6 +1226,9 @@ struct packet_viewequip_ack { #endif int16 headpalette; int16 bodypalette; +#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 + int16 body2; +#endif uint8 sex; struct EQUIPITEM_INFO list[MAX_INVENTORY]; } __attribute__((packed)); -- cgit v1.2.3-60-g2f50 From 759065f794b8ef7ee3e9276da1b47c1f86478cdc Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 19 Aug 2018 00:42:12 +0300 Subject: Add packet ZC_GUILD_POSITION. --- src/map/clif.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/map/clif.h | 3 +++ src/map/guild.c | 4 ++-- src/map/packets_struct.h | 7 +++++++ 4 files changed, 57 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 4e55f7d0c..e04132386 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8310,6 +8310,49 @@ static void clif_guild_broken(struct map_session_data *sd, int flag) WFIFOSET(fd,packet_len(0x15e)); } +static void clif_guild_position_selected(struct map_session_data *sd) +{ +#if PACKETVER >= 20180801 + clif->guild_set_position(sd); +#else + clif->charnameupdate(sd); +#endif +} + +static void clif_guild_set_position(struct map_session_data *sd) +{ + nullpo_retv(sd); + + int len = sizeof(struct PACKET_ZC_GUILD_POSITION); + const char *name = NULL; + if (sd->status.guild_id > 0) { + struct guild *g = sd->guild; + + nullpo_retv(g); + + int i = 0; + int ps = -1; + ARR_FIND(0, g->max_member, i, g->member[i].account_id == sd->status.account_id && g->member[i].char_id == sd->status.char_id); + if (i < g->max_member) + ps = g->member[i].position; + + if (ps >= 0 && ps < MAX_GUILDPOSITION) { + len += 24; + name = g->position[ps].name; + } + } + + unsigned char buf[sizeof(struct PACKET_ZC_GUILD_POSITION) + NAME_LENGTH]; + struct PACKET_ZC_GUILD_POSITION *p = WBUFP(buf, 0); + p->packetType = 0xafd; + p->packetLength = len; + p->AID = sd->bl.id; + if (name != NULL) + memcpy(&p->position, name, 24); + + clif->send(buf, len, &sd->bl, AREA); +} + /// Displays emotion on an object (ZC_EMOTION). /// 00c0 .L .B /// type: @@ -22319,6 +22362,8 @@ void clif_defaults(void) clif->guild_positionnamelist = clif_guild_positionnamelist; clif->guild_positioninfolist = clif_guild_positioninfolist; clif->guild_expulsionlist = clif_guild_expulsionlist; + clif->guild_set_position = clif_guild_set_position; + clif->guild_position_selected = clif_guild_position_selected; clif->validate_emblem = clif_validate_emblem; /* battleground-specific */ clif->bg_hp = clif_bg_hp; diff --git a/src/map/clif.h b/src/map/clif.h index 406c6ca6a..b74eb8625 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1041,6 +1041,9 @@ struct clif_interface { void (*guild_positionnamelist) (struct map_session_data *sd); void (*guild_positioninfolist) (struct map_session_data *sd); void (*guild_expulsionlist) (struct map_session_data* sd); + void (*guild_set_position) (struct map_session_data *sd); + void (*guild_position_selected) (struct map_session_data *sd); + bool (*validate_emblem) (const uint8* emblem, unsigned long emblem_len); /* battleground-specific */ void (*bg_hp) (struct map_session_data *sd); diff --git a/src/map/guild.c b/src/map/guild.c index 28954edf1..f82928c4d 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -1129,7 +1129,7 @@ static int guild_memberposition_changed(struct guild *g, int idx, int pos) // Update char position in client [LuzZza] if(g->member[idx].sd != NULL) - clif->charnameupdate(g->member[idx].sd); + clif->guild_position_selected(g->member[idx].sd); return 0; } @@ -1165,7 +1165,7 @@ static int guild_position_changed(int guild_id, int idx, const struct guild_posi // Update char name in client [LuzZza] for(i=0;imax_member;i++) if(g->member[i].position == idx && g->member[i].sd != NULL) - clif->charnameupdate(g->member[i].sd); + clif->guild_position_selected(g->member[i].sd); return 0; } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index e3aea5ed1..d6885a696 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2706,6 +2706,13 @@ struct PACKET_ZC_GROUP_ISALIVE { uint8 isDead; } __attribute__((packed)); +struct PACKET_ZC_GUILD_POSITION { + int16 packetType; + int16 packetLength; + uint32 AID; + char position[]; +} __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-60-g2f50 From 39e50b6a4d8820635035ba691abbc9b59a420d91 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 20 Aug 2018 20:43:18 +0300 Subject: Add missing field into ZC_ACK_WHISPER02. --- src/map/clif.c | 3 ++- src/map/packets_struct.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index e04132386..1c8f51856 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -6180,6 +6180,7 @@ static void clif_wis_message(int fd, const char *nick, const char *mes, int mes_ /// 1 = target character is not logged in /// 2 = ignored by target /// 3 = everyone ignored by target +/// other = target character is not logged in static void clif_wis_end(int fd, int flag) { struct map_session_data *sd = sockt->session_is_valid(fd) ? sockt->session[fd]->session_data : NULL; @@ -6191,7 +6192,7 @@ static void clif_wis_end(int fd, int flag) p.PacketType = wisendType; p.result = (char)flag; #if PACKETVER >= 20131223 - p.unknown = 0; + p.AID = sd->bl.id; #endif clif->send(&p, sizeof(p), &sd->bl, SELF); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index d6885a696..a92bc52ab 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -1358,7 +1358,7 @@ struct packet_wis_end { int16 PacketType; int8 result; #if PACKETVER >= 20131223 - uint32 unknown;/* maybe AID, not sure what for (works sending as 0) */ + uint32 AID; #endif } __attribute__((packed)); -- cgit v1.2.3-60-g2f50 From a365de2b0735e51fc3c089253a8b4a2a54050be7 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 21 Aug 2018 04:25:58 +0300 Subject: Fix version check for achivment packets. --- src/map/clif.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 1c8f51856..beb9cdf47 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -20318,7 +20318,7 @@ static unsigned short clif_parse_cmd_optional(int fd, struct map_session_data *s */ static void clif_achievement_send_list(int fd, struct map_session_data *sd) { -#if PACKETVER >= 20141016 +#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) int i = 0, count = 0, curr_exp_tmp = 0; struct packet_achievement_list p = { 0 }; @@ -20381,7 +20381,7 @@ static void clif_achievement_send_list(int fd, struct map_session_data *sd) */ static void clif_achievement_send_update(int fd, struct map_session_data *sd, const struct achievement_data *ad) { -#if PACKETVER >= 20141016 +#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) struct packet_achievement_update p = { 0 }; struct achievement *a = NULL; int i = 0, points = 0, rank = 0, curr_rank_points = 0; @@ -20435,7 +20435,6 @@ static void clif_achievement_send_update(int fd, struct map_session_data *sd, co static void clif_parse_achievement_get_reward(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); static void clif_parse_achievement_get_reward(int fd, struct map_session_data *sd) { -#if PACKETVER >= 20141016 int ach_id = RFIFOL(fd, 2); const struct achievement_data *ad = NULL; struct achievement *ach = NULL; @@ -20449,7 +20448,6 @@ static void clif_parse_achievement_get_reward(int fd, struct map_session_data *s if (achievement->check_complete(sd, ad) && ach->completed_at && ach->rewarded_at == 0) { achievement->get_rewards(sd, ad); } -#endif // PACKETVER >= 20141016 } /** @@ -20458,7 +20456,7 @@ static void clif_parse_achievement_get_reward(int fd, struct map_session_data *s */ static void clif_achievement_reward_ack(int fd, struct map_session_data *sd, const struct achievement_data *ad) { -#if PACKETVER >= 20141016 +#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) struct packet_achievement_reward_ack p = { 0 }; nullpo_retv(sd); -- cgit v1.2.3-60-g2f50 From dfd6225e667744753c7bfab94d87fcdbcf3fc93b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 23 Aug 2018 04:45:56 +0300 Subject: Add packet ZC_FORMATSTRING_MSG_COLOR. --- src/map/clif.c | 31 +++++++++++++++++++++++++++++++ src/map/clif.h | 1 + src/map/packets_struct.h | 8 ++++++++ 3 files changed, 40 insertions(+) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index beb9cdf47..a57f43613 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9479,6 +9479,36 @@ static void clif_msgtable_str(struct map_session_data *sd, enum clif_messages ms aFree(p); } +/** + * Displays a format string from msgstringtable.txt with a %s value and color (ZC_FORMATSTRING_MSG). + * + * @param sd The target character. + * @param msg_id msgstringtable message index, 0-based (@see enum clif_messages) + * @param value The value to fill %s. + * @param color The color to use + */ +static void clif_msgtable_str_color(struct map_session_data *sd, enum clif_messages msg_id, const char *value, uint32 color) +{ +#if PACKETVER >= 20160330 + nullpo_retv(sd); + nullpo_retv(value); + + int message_len = (int)strlen(value) + 1; + const int len = sizeof(struct PACKET_ZC_FORMATSTRING_MSG_COLOR) + message_len + 1; + struct PACKET_ZC_FORMATSTRING_MSG_COLOR *p = (struct PACKET_ZC_FORMATSTRING_MSG_COLOR *)aMalloc(len); + + p->PacketType = 0xa6f; + p->PacketLength = len; + p->messageId = msg_id; + p->color = color; + safestrncpy(p->messageString, value, message_len); + p->messageString[message_len] = 0; + + clif->send(p, p->PacketLength, &sd->bl, SELF); + aFree(p); +#endif +} + /** * Displays a format string from msgstringtable.txt with a color (ZC_MSG_COLOR). * @@ -22273,6 +22303,7 @@ void clif_defaults(void) clif->msgtable = clif_msgtable; clif->msgtable_num = clif_msgtable_num; clif->msgtable_str = clif_msgtable_str; + clif->msgtable_str_color = clif_msgtable_str_color; clif->msgtable_color = clif_msgtable_color; clif->message = clif_displaymessage; clif->messageln = clif_displaymessage2; diff --git a/src/map/clif.h b/src/map/clif.h index b74eb8625..9e71386b7 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -952,6 +952,7 @@ struct clif_interface { void (*msgtable_num) (struct map_session_data *sd, enum clif_messages msg_id, int value); void (*msgtable_skill) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id); void (*msgtable_str) (struct map_session_data *sd, enum clif_messages, const char *value); + void (*msgtable_str_color) (struct map_session_data *sd, enum clif_messages, const char *value, uint32 color); void (*msgtable_color) (struct map_session_data *sd, enum clif_messages, uint32 color); void (*message) (const int fd, const char* mes); void (*messageln) (const int fd, const char* mes); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index a92bc52ab..346c11692 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -1843,6 +1843,14 @@ struct PACKET_ZC_FORMATSTRING_MSG { char MessageString[]; } __attribute__((packed)); +struct PACKET_ZC_FORMATSTRING_MSG_COLOR { + uint16 PacketType; + uint16 PacketLength; + uint16 messageId; + uint32 color; + char messageString[]; +} __attribute__((packed)); + struct PACKET_ZC_MSG_COLOR { uint16 PacketType; uint16 MessageId; -- cgit v1.2.3-60-g2f50 From 27c7f333121f99ec13acf669db21fecd53b315ec Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 23 Aug 2018 20:55:41 +0300 Subject: Add script command msgtable and msgtable2. New script commands: msgtable msgId [, color] msgtable2 msgId, param [, color] --- configure | 2 +- doc/script_commands.txt | 15 +++++++++++++++ src/map/script.c | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/configure b/configure index d8b95d5c8..b8f002e32 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac b60eb4b69. +# From configure.ac dfd6225e6. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69. # diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 10b4e5653..414a72924 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -10136,3 +10136,18 @@ the available flags are: Opens the styling shop on client --------------------------------------- + +*msgtable({, }) + +Show in client message by from msg string table +with optional . + +--------------------------------------- + +*msgtable2(, {, }) + +Show in client message by from msg string table. + is parameter for this message. Can be string or int. +Optional can be used for set color for whole message. + +--------------------------------------- diff --git a/src/map/script.c b/src/map/script.c index 846075c0e..61059b811 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -24655,6 +24655,44 @@ static BUILDIN(openstylist) return true; } +static BUILDIN(msgtable) +{ + struct map_session_data *sd = script_rid2sd(st); + if (sd == NULL) + return false; + + const enum clif_messages msgId = script_getnum(st, 2); + if (script_hasdata(st, 3)) { + clif->msgtable_color(sd, msgId, script_getnum(st, 3)); + } else { + clif->msgtable(sd, msgId); + } + + return true; +} + +static BUILDIN(msgtable2) +{ + struct map_session_data *sd = script_rid2sd(st); + if (sd == NULL) + return false; + + const enum clif_messages msgId = script_getnum(st, 2); + if (script_isstringtype(st, 3)) { + const char *value = script_getstr(st, 3); + if (script_hasdata(st, 4)) { + clif->msgtable_str_color(sd, msgId, value, script_getnum(st, 4)); + } else { + clif->msgtable_str(sd, msgId, value); + } + } else { + const int value = script_getnum(st, 3); + clif->msgtable_num(sd, msgId, value); + } + + return true; +} + /** * Adds a built-in script function. * @@ -25231,6 +25269,8 @@ static void script_parse_builtin(void) BUILDIN_DEF(buyingstore,"i"), BUILDIN_DEF(searchstores,"ii"), BUILDIN_DEF(showdigit,"i?"), + BUILDIN_DEF(msgtable, "i?"), + BUILDIN_DEF(msgtable2, "iv?"), // WoE SE BUILDIN_DEF(agitstart2,""), BUILDIN_DEF(agitend2,""), -- cgit v1.2.3-60-g2f50 From 538c34ac4534390112837f631b1f9898f79c0796 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 23 Aug 2018 23:03:57 +0300 Subject: Add packet PACKET_ZC_INVENTORY_MOVE_FAILED. --- src/map/clif.c | 21 +++++++++++++++++++-- src/map/clif.h | 1 + src/map/packets_struct.h | 6 ++++++ src/map/storage.c | 6 ++++-- 4 files changed, 30 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index a57f43613..1797a8fae 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2633,6 +2633,22 @@ static void clif_dropitem(struct map_session_data *sd, int n, int amount) WFIFOSET(fd,packet_len(0xaf)); } +static void clif_item_movefailed(struct map_session_data *sd, int n) +{ +#if PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO) + int fd = sd->fd; + const int len = sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED); + WFIFOHEAD(fd, len); + struct PACKET_ZC_INVENTORY_MOVE_FAILED *p = WFIFOP(fd, 0); + p->packetType = 0xaa7; + p->index = n; + p->unknown = 1; + WFIFOSET(fd, len); +#else + clif->dropitem(sd, n, 0); +#endif +} + /// Notifies the client, that an inventory item was deleted (ZC_DELETE_ITEM_FROM_BODY). /// 07fa .W .W .W /// delete type: @see enum delitem_reason @@ -11067,7 +11083,7 @@ static void clif_parse_DropItem(int fd, struct map_session_data *sd) } //Because the client does not like being ignored. - clif->dropitem(sd, item_index, 0); + clif->item_movefailed(sd, item_index); } static void clif_parse_UseItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); @@ -11562,7 +11578,7 @@ static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd) if (!pc_iscarton(sd)) return; if ( (flag = pc->putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4))) ) { - clif->dropitem(sd, RFIFOW(fd,2)-2,0); + clif->item_movefailed(sd, RFIFOW(fd,2)-2); clif->cart_additem_ack(sd,flag == 1?0x0:0x1); } } @@ -22067,6 +22083,7 @@ void clif_defaults(void) clif->dropitem = clif_dropitem; clif->delitem = clif_delitem; clif->takeitem = clif_takeitem; + clif->item_movefailed = clif_item_movefailed; clif->item_equip = clif_item_equip; clif->item_normal = clif_item_normal; clif->arrowequip = clif_arrowequip; diff --git a/src/map/clif.h b/src/map/clif.h index 9e71386b7..a94a08080 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -716,6 +716,7 @@ struct clif_interface { void (*dropitem) (struct map_session_data *sd,int n,int amount); void (*delitem) (struct map_session_data *sd,int n,int amount, short reason); void (*takeitem) (struct block_list* src, struct block_list* dst); + void (*item_movefailed) (struct map_session_data *sd, int n); void (*item_equip) (short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos); void (*item_normal) (short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id); void (*arrowequip) (struct map_session_data *sd,int val); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 346c11692..1f22d5081 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2721,6 +2721,12 @@ struct PACKET_ZC_GUILD_POSITION { char position[]; } __attribute__((packed)); +struct PACKET_ZC_INVENTORY_MOVE_FAILED { + int16 packetType; + int16 index; + int16 unknown; +} __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 diff --git a/src/map/storage.c b/src/map/storage.c index 4123ddc7c..ba8dcee3a 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -297,7 +297,7 @@ static int storage_add_from_inventory(struct map_session_data *sd, int index, in if (storage->additem(sd, &sd->status.inventory[index], amount) == 0) pc->delitem(sd, index, amount, 0, DELITEM_TOSTORAGE, LOG_TYPE_STORAGE); else - clif->dropitem(sd, index, 0); + clif->item_movefailed(sd, index); return 1; } @@ -398,7 +398,9 @@ static int storage_storagegettocart(struct map_session_data *sd, int index, int if ((flag = pc->cart_additem(sd, it, amount, LOG_TYPE_STORAGE)) == 0) storage->delitem(sd, index, amount); else { + // probably this line is useless? it remove inventory lock but not storage [4144] clif->dropitem(sd, index,0); + clif->cart_additem_ack(sd, flag == 1?0x0:0x1); } @@ -638,7 +640,7 @@ static int storage_guild_storageadd(struct map_session_data *sd, int index, int if( gstorage->additem(sd,stor,&sd->status.inventory[index],amount) == 0 ) pc->delitem(sd, index, amount, 0, DELITEM_TOSTORAGE, LOG_TYPE_GSTORAGE); else - clif->dropitem(sd, index, 0); + clif->item_movefailed(sd, index); return 1; } -- cgit v1.2.3-60-g2f50 From 69165395c7c6d4d23cd8b3044a4a5bf82a4216d1 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 24 Aug 2018 02:02:05 +0300 Subject: Update packet ZC_ACK_BAN_GUILD. --- src/map/clif.c | 25 ++++++++++++------------- src/map/clif.h | 2 +- src/map/guild.c | 2 +- src/map/packets_struct.h | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 1797a8fae..41076b160 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8126,26 +8126,25 @@ static void clif_guild_leave(struct map_session_data *sd, const char *name, cons /// Notifies clients of a guild of an expelled member. /// 015c .24B .40B .24B (ZC_ACK_BAN_GUILD) /// 0839 .24B .40B (ZC_ACK_BAN_GUILD_SSO) -static void clif_guild_expulsion(struct map_session_data *sd, const char *name, const char *mes, int account_id) +static void clif_guild_expulsion(struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id) { - unsigned char buf[128]; -#if PACKETVER < 20100803 - const unsigned short cmd = 0x15c; -#else - const unsigned short cmd = 0x839; -#endif - nullpo_retv(sd); nullpo_retv(name); nullpo_retv(mes); - WBUFW(buf,0) = cmd; - safestrncpy(WBUFP(buf,2), name, NAME_LENGTH); - safestrncpy(WBUFP(buf,26), mes, 40); + struct PACKET_ZC_ACK_BAN_GUILD p; + p.packetType = guildExpulsion; +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) + p.GID = char_id; +#else + safestrncpy(&p.name[0], name, NAME_LENGTH); +#endif + safestrncpy(&p.reason[0], mes, 40); + #if PACKETVER < 20100803 - memset(WBUFP(buf,66), 0, NAME_LENGTH); // account name (not used for security reasons) + memset(&p.account_name, 0, NAME_LENGTH); // account name (not used for security reasons) #endif - clif->send(buf, packet_len(cmd), &sd->bl, GUILD_NOBG); + clif->send(&p, sizeof(p), &sd->bl, GUILD_NOBG); } /// Guild expulsion list (ZC_BAN_LIST). diff --git a/src/map/clif.h b/src/map/clif.h index a94a08080..7307e7461 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1025,7 +1025,7 @@ struct clif_interface { void (*guild_invite) (struct map_session_data *sd,struct guild *g); void (*guild_inviteack) (struct map_session_data *sd,int flag); void (*guild_leave) (struct map_session_data *sd,const char *name,const char *mes); - void (*guild_expulsion) (struct map_session_data* sd, const char* name, const char* mes, int account_id); + void (*guild_expulsion) (struct map_session_data* sd, const char* name, int char_id, const char* mes, int account_id); void (*guild_positionchanged) (struct guild *g,int idx); void (*guild_memberpositionchanged) (struct guild *g,int idx); void (*guild_emblem) (struct map_session_data *sd,struct guild *g); diff --git a/src/map/guild.c b/src/map/guild.c index f82928c4d..01372921b 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -927,7 +927,7 @@ static int guild_member_withdraw(int guild_id, int account_id, int char_id, int if(!flag) clif->guild_leave(online_member_sd, name, mes); else - clif->guild_expulsion(online_member_sd, name, mes, account_id); + clif->guild_expulsion(online_member_sd, name, char_id, mes, account_id); // remove member from guild memset(&g->member[i],0,sizeof(struct guild_member)); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 1f22d5081..5aeb40be5 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -421,6 +421,13 @@ enum packet_headers { #else skilWarpPointType = 0x11c, #endif +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) + guildExpulsion = 0xa82, +#elif PACKETVER >= 20100803 + guildExpulsion = 0x839, +#else + guildExpulsion = 0x15c, +#endif }; #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute @@ -2727,6 +2734,33 @@ struct PACKET_ZC_INVENTORY_MOVE_FAILED { int16 unknown; } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) +#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD3 +#elif PACKETVER >= 20100803 +#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD2 +#else +#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD1 +#endif + +struct PACKET_ZC_ACK_BAN_GUILD1 { + int16 packetType; + char name[NAME_LENGTH]; + char reason[40]; + char account_name[NAME_LENGTH]; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_BAN_GUILD2 { + int16 packetType; + char name[NAME_LENGTH]; + char reason[40]; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_BAN_GUILD3 { + int16 packetType; + char reason[40]; + uint32 GID; +} __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-60-g2f50 From 8829a0c4cfeebed780b4ec31bde3bf84b1658e37 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 24 Aug 2018 02:19:04 +0300 Subject: Update packet ZC_ACK_LEAVE_GUILD. --- src/map/clif.c | 19 ++++++++++++------- src/map/clif.h | 2 +- src/map/guild.c | 2 +- src/map/packets_struct.h | 23 +++++++++++++++++++++++ 4 files changed, 37 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 41076b160..71ae22ec3 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8111,16 +8111,21 @@ static void clif_guild_inviteack(struct map_session_data *sd, int flag) /// Notifies clients of a guild of a leaving member (ZC_ACK_LEAVE_GUILD). /// 015a .24B .40B -static void clif_guild_leave(struct map_session_data *sd, const char *name, const char *mes) +static void clif_guild_leave(struct map_session_data *sd, const char *name, int char_id, const char *mes) { - unsigned char buf[128]; - nullpo_retv(sd); + nullpo_retv(name); + nullpo_retv(mes); - WBUFW(buf, 0)=0x15a; - memcpy(WBUFP(buf, 2),name,NAME_LENGTH); - memcpy(WBUFP(buf,26),mes,40); - clif->send(buf,packet_len(0x15a),&sd->bl,GUILD_NOBG); + struct PACKET_ZC_ACK_LEAVE_GUILD p; + p.packetType = guildLeave; +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) + p.GID = char_id; +#else + safestrncpy(&p.name[0], name, NAME_LENGTH); +#endif + safestrncpy(&p.reason[0], mes, 40); + clif->send(&p, sizeof(p), &sd->bl, GUILD_NOBG); } /// Notifies clients of a guild of an expelled member. diff --git a/src/map/clif.h b/src/map/clif.h index 7307e7461..d20c30a24 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1024,7 +1024,7 @@ struct clif_interface { void (*guild_memberlogin_notice) (struct guild *g,int idx,int flag); void (*guild_invite) (struct map_session_data *sd,struct guild *g); void (*guild_inviteack) (struct map_session_data *sd,int flag); - void (*guild_leave) (struct map_session_data *sd,const char *name,const char *mes); + void (*guild_leave) (struct map_session_data *sd, const char *name, int char_id, const char *mes); void (*guild_expulsion) (struct map_session_data* sd, const char* name, int char_id, const char* mes, int account_id); void (*guild_positionchanged) (struct guild *g,int idx); void (*guild_memberpositionchanged) (struct guild *g,int idx); diff --git a/src/map/guild.c b/src/map/guild.c index 01372921b..780d21326 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -925,7 +925,7 @@ static int guild_member_withdraw(int guild_id, int account_id, int char_id, int #endif if(!flag) - clif->guild_leave(online_member_sd, name, mes); + clif->guild_leave(online_member_sd, name, char_id, mes); else clif->guild_expulsion(online_member_sd, name, char_id, mes, account_id); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 5aeb40be5..852a44cb8 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -428,6 +428,11 @@ enum packet_headers { #else guildExpulsion = 0x15c, #endif +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) + guildLeave = 0xa83, +#else + guildLeave = 0x15a, +#endif }; #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute @@ -2761,6 +2766,24 @@ struct PACKET_ZC_ACK_BAN_GUILD3 { uint32 GID; } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) +#define PACKET_ZC_ACK_LEAVE_GUILD PACKET_ZC_ACK_LEAVE_GUILD2 +#else +#define PACKET_ZC_ACK_LEAVE_GUILD PACKET_ZC_ACK_LEAVE_GUILD1 +#endif + +struct PACKET_ZC_ACK_LEAVE_GUILD1 { + int16 packetType; + char name[NAME_LENGTH]; + char reason[40]; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_LEAVE_GUILD2 { + int16 packetType; + uint32 GID; + char reason[40]; +} __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-60-g2f50 From 49a106f6d4c605005ff411a5377285a8abcf51b5 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 24 Aug 2018 02:27:56 +0300 Subject: Update HPM. --- src/common/HPMDataCheck.h | 9 ++ src/plugins/HPMHooking/HPMHooking.Defs.inc | 18 ++- .../HPMHooking/HPMHooking_map.HPMHooksCore.inc | 20 +++ .../HPMHooking/HPMHooking_map.HookingPoints.inc | 5 + src/plugins/HPMHooking/HPMHooking_map.Hooks.inc | 154 +++++++++++++++++++-- 5 files changed, 190 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 28c6e3b1d..31bce72b2 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -626,6 +626,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_CZ_REQ_REFRESH_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_REFRESH_MAIL_LIST), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_REMOVE_ITEM_MAIL", sizeof(struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_STYLE_CHANGE", sizeof(struct PACKET_CZ_REQ_STYLE_CHANGE), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_STYLE_CHANGE2", sizeof(struct PACKET_CZ_REQ_STYLE_CHANGE2), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_TRADE_BUYING_STORE", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_TRADE_BUYING_STORE_sub", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_ZENY_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ZENY_FROM_MAIL), SERVER_TYPE_MAP }, @@ -634,11 +635,16 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_CZ_SEARCH_STORE_INFO_item", sizeof(struct PACKET_CZ_SEARCH_STORE_INFO_item), SERVER_TYPE_MAP }, { "PACKET_CZ_SEND_MAIL", sizeof(struct PACKET_CZ_SEND_MAIL), SERVER_TYPE_MAP }, { "PACKET_CZ_SSILIST_ITEM_CLICK", sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_BAN_GUILD1", sizeof(struct PACKET_ZC_ACK_BAN_GUILD1), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_BAN_GUILD2", sizeof(struct PACKET_ZC_ACK_BAN_GUILD2), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_BAN_GUILD3", sizeof(struct PACKET_ZC_ACK_BAN_GUILD3), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_CLAN_LEAVE", sizeof(struct PACKET_ZC_ACK_CLAN_LEAVE), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_DELETE_MAIL", sizeof(struct PACKET_ZC_ACK_DELETE_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_ITEM_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ITEM_FROM_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_ITEMLIST_BUYING_STORE", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_LEAVE_GUILD1", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD1), SERVER_TYPE_MAP }, + { "PACKET_ZC_ACK_LEAVE_GUILD2", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD2), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_OPEN_WRITE_MAIL", sizeof(struct PACKET_ZC_ACK_OPEN_WRITE_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_REMOVE_ITEM_MAIL", sizeof(struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_ACK_REQMAKINGITEM", sizeof(struct PACKET_ZC_ACK_REQMAKINGITEM), SERVER_TYPE_MAP }, @@ -660,9 +666,12 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_FEED_MER", sizeof(struct PACKET_ZC_FEED_MER), SERVER_TYPE_MAP }, { "PACKET_ZC_FEED_PET", sizeof(struct PACKET_ZC_FEED_PET), SERVER_TYPE_MAP }, { "PACKET_ZC_FORMATSTRING_MSG", sizeof(struct PACKET_ZC_FORMATSTRING_MSG), SERVER_TYPE_MAP }, + { "PACKET_ZC_FORMATSTRING_MSG_COLOR", sizeof(struct PACKET_ZC_FORMATSTRING_MSG_COLOR), SERVER_TYPE_MAP }, { "PACKET_ZC_GROUP_ISALIVE", sizeof(struct PACKET_ZC_GROUP_ISALIVE), SERVER_TYPE_MAP }, { "PACKET_ZC_GROUP_LIST", sizeof(struct PACKET_ZC_GROUP_LIST), SERVER_TYPE_MAP }, { "PACKET_ZC_GROUP_LIST_SUB", sizeof(struct PACKET_ZC_GROUP_LIST_SUB), SERVER_TYPE_MAP }, + { "PACKET_ZC_GUILD_POSITION", sizeof(struct PACKET_ZC_GUILD_POSITION), SERVER_TYPE_MAP }, + { "PACKET_ZC_INVENTORY_MOVE_FAILED", sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED), SERVER_TYPE_MAP }, { "PACKET_ZC_ITEM_ENTRY", sizeof(struct PACKET_ZC_ITEM_ENTRY), SERVER_TYPE_MAP }, { "PACKET_ZC_ITEM_PICKUP_PARTY", sizeof(struct PACKET_ZC_ITEM_PICKUP_PARTY), SERVER_TYPE_MAP }, { "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP }, diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 0c63a98b6..c5de44fa9 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -1116,6 +1116,8 @@ typedef void (*HPMHOOK_pre_clif_delitem) (struct map_session_data **sd, int *n, typedef void (*HPMHOOK_post_clif_delitem) (struct map_session_data *sd, int n, int amount, short reason); typedef void (*HPMHOOK_pre_clif_takeitem) (struct block_list **src, struct block_list **dst); typedef void (*HPMHOOK_post_clif_takeitem) (struct block_list *src, struct block_list *dst); +typedef void (*HPMHOOK_pre_clif_item_movefailed) (struct map_session_data **sd, int *n); +typedef void (*HPMHOOK_post_clif_item_movefailed) (struct map_session_data *sd, int n); typedef void (*HPMHOOK_pre_clif_item_equip) (short *idx, struct EQUIPITEM_INFO **p, struct item **i, struct item_data **id, int *eqp_pos); typedef void (*HPMHOOK_post_clif_item_equip) (short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos); typedef void (*HPMHOOK_pre_clif_item_normal) (short *idx, struct NORMALITEM_INFO **p, struct item **i, struct item_data **id); @@ -1566,6 +1568,8 @@ typedef void (*HPMHOOK_pre_clif_msgtable_skill) (struct map_session_data **sd, u typedef void (*HPMHOOK_post_clif_msgtable_skill) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id); typedef void (*HPMHOOK_pre_clif_msgtable_str) (struct map_session_data **sd, enum clif_messages *p1, const char **value); typedef void (*HPMHOOK_post_clif_msgtable_str) (struct map_session_data *sd, enum clif_messages p1, const char *value); +typedef void (*HPMHOOK_pre_clif_msgtable_str_color) (struct map_session_data **sd, enum clif_messages *p1, const char **value, uint32 *color); +typedef void (*HPMHOOK_post_clif_msgtable_str_color) (struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color); typedef void (*HPMHOOK_pre_clif_msgtable_color) (struct map_session_data **sd, enum clif_messages *p1, uint32 *color); typedef void (*HPMHOOK_post_clif_msgtable_color) (struct map_session_data *sd, enum clif_messages p1, uint32 color); typedef void (*HPMHOOK_pre_clif_message) (const int *fd, const char **mes); @@ -1690,10 +1694,10 @@ typedef void (*HPMHOOK_pre_clif_guild_invite) (struct map_session_data **sd, str typedef void (*HPMHOOK_post_clif_guild_invite) (struct map_session_data *sd, struct guild *g); typedef void (*HPMHOOK_pre_clif_guild_inviteack) (struct map_session_data **sd, int *flag); typedef void (*HPMHOOK_post_clif_guild_inviteack) (struct map_session_data *sd, int flag); -typedef void (*HPMHOOK_pre_clif_guild_leave) (struct map_session_data **sd, const char **name, const char **mes); -typedef void (*HPMHOOK_post_clif_guild_leave) (struct map_session_data *sd, const char *name, const char *mes); -typedef void (*HPMHOOK_pre_clif_guild_expulsion) (struct map_session_data **sd, const char **name, const char **mes, int *account_id); -typedef void (*HPMHOOK_post_clif_guild_expulsion) (struct map_session_data *sd, const char *name, const char *mes, int account_id); +typedef void (*HPMHOOK_pre_clif_guild_leave) (struct map_session_data **sd, const char **name, int *char_id, const char **mes); +typedef void (*HPMHOOK_post_clif_guild_leave) (struct map_session_data *sd, const char *name, int char_id, const char *mes); +typedef void (*HPMHOOK_pre_clif_guild_expulsion) (struct map_session_data **sd, const char **name, int *char_id, const char **mes, int *account_id); +typedef void (*HPMHOOK_post_clif_guild_expulsion) (struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id); typedef void (*HPMHOOK_pre_clif_guild_positionchanged) (struct guild **g, int *idx); typedef void (*HPMHOOK_post_clif_guild_positionchanged) (struct guild *g, int idx); typedef void (*HPMHOOK_pre_clif_guild_memberpositionchanged) (struct guild **g, int *idx); @@ -1728,6 +1732,10 @@ typedef void (*HPMHOOK_pre_clif_guild_positioninfolist) (struct map_session_data typedef void (*HPMHOOK_post_clif_guild_positioninfolist) (struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_guild_expulsionlist) (struct map_session_data **sd); typedef void (*HPMHOOK_post_clif_guild_expulsionlist) (struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_guild_set_position) (struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_guild_set_position) (struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_guild_position_selected) (struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_guild_position_selected) (struct map_session_data *sd); typedef bool (*HPMHOOK_pre_clif_validate_emblem) (const uint8 **emblem, unsigned long *emblem_len); typedef bool (*HPMHOOK_post_clif_validate_emblem) (bool retVal___, const uint8 *emblem, unsigned long emblem_len); typedef void (*HPMHOOK_pre_clif_bg_hp) (struct map_session_data **sd); @@ -2580,6 +2588,8 @@ typedef void (*HPMHOOK_pre_clif_stylist_send_rodexitem) (struct map_session_data typedef void (*HPMHOOK_post_clif_stylist_send_rodexitem) (struct map_session_data *sd, int itemid); typedef void (*HPMHOOK_pre_clif_pReqStyleChange) (int *fd, struct map_session_data **sd); typedef void (*HPMHOOK_post_clif_pReqStyleChange) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pReqStyleChange2) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pReqStyleChange2) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_cz_req_style_change_sub) (struct map_session_data **sd, int *type, int16 *idx, bool *isitem); typedef void (*HPMHOOK_post_clif_cz_req_style_change_sub) (struct map_session_data *sd, int type, int16 idx, bool isitem); typedef void (*HPMHOOK_pre_clif_style_change_response) (struct map_session_data **sd, enum stylist_shop *flag); diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index c4394d7f4..d875ab6e2 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -708,6 +708,8 @@ struct { struct HPMHookPoint *HP_clif_delitem_post; struct HPMHookPoint *HP_clif_takeitem_pre; struct HPMHookPoint *HP_clif_takeitem_post; + struct HPMHookPoint *HP_clif_item_movefailed_pre; + struct HPMHookPoint *HP_clif_item_movefailed_post; struct HPMHookPoint *HP_clif_item_equip_pre; struct HPMHookPoint *HP_clif_item_equip_post; struct HPMHookPoint *HP_clif_item_normal_pre; @@ -1158,6 +1160,8 @@ struct { struct HPMHookPoint *HP_clif_msgtable_skill_post; struct HPMHookPoint *HP_clif_msgtable_str_pre; struct HPMHookPoint *HP_clif_msgtable_str_post; + struct HPMHookPoint *HP_clif_msgtable_str_color_pre; + struct HPMHookPoint *HP_clif_msgtable_str_color_post; struct HPMHookPoint *HP_clif_msgtable_color_pre; struct HPMHookPoint *HP_clif_msgtable_color_post; struct HPMHookPoint *HP_clif_message_pre; @@ -1320,6 +1324,10 @@ struct { struct HPMHookPoint *HP_clif_guild_positioninfolist_post; struct HPMHookPoint *HP_clif_guild_expulsionlist_pre; struct HPMHookPoint *HP_clif_guild_expulsionlist_post; + struct HPMHookPoint *HP_clif_guild_set_position_pre; + struct HPMHookPoint *HP_clif_guild_set_position_post; + struct HPMHookPoint *HP_clif_guild_position_selected_pre; + struct HPMHookPoint *HP_clif_guild_position_selected_post; struct HPMHookPoint *HP_clif_validate_emblem_pre; struct HPMHookPoint *HP_clif_validate_emblem_post; struct HPMHookPoint *HP_clif_bg_hp_pre; @@ -2172,6 +2180,8 @@ struct { struct HPMHookPoint *HP_clif_stylist_send_rodexitem_post; struct HPMHookPoint *HP_clif_pReqStyleChange_pre; struct HPMHookPoint *HP_clif_pReqStyleChange_post; + struct HPMHookPoint *HP_clif_pReqStyleChange2_pre; + struct HPMHookPoint *HP_clif_pReqStyleChange2_post; struct HPMHookPoint *HP_clif_cz_req_style_change_sub_pre; struct HPMHookPoint *HP_clif_cz_req_style_change_sub_post; struct HPMHookPoint *HP_clif_style_change_response_pre; @@ -7259,6 +7269,8 @@ struct { int HP_clif_delitem_post; int HP_clif_takeitem_pre; int HP_clif_takeitem_post; + int HP_clif_item_movefailed_pre; + int HP_clif_item_movefailed_post; int HP_clif_item_equip_pre; int HP_clif_item_equip_post; int HP_clif_item_normal_pre; @@ -7709,6 +7721,8 @@ struct { int HP_clif_msgtable_skill_post; int HP_clif_msgtable_str_pre; int HP_clif_msgtable_str_post; + int HP_clif_msgtable_str_color_pre; + int HP_clif_msgtable_str_color_post; int HP_clif_msgtable_color_pre; int HP_clif_msgtable_color_post; int HP_clif_message_pre; @@ -7871,6 +7885,10 @@ struct { int HP_clif_guild_positioninfolist_post; int HP_clif_guild_expulsionlist_pre; int HP_clif_guild_expulsionlist_post; + int HP_clif_guild_set_position_pre; + int HP_clif_guild_set_position_post; + int HP_clif_guild_position_selected_pre; + int HP_clif_guild_position_selected_post; int HP_clif_validate_emblem_pre; int HP_clif_validate_emblem_post; int HP_clif_bg_hp_pre; @@ -8723,6 +8741,8 @@ struct { int HP_clif_stylist_send_rodexitem_post; int HP_clif_pReqStyleChange_pre; int HP_clif_pReqStyleChange_post; + int HP_clif_pReqStyleChange2_pre; + int HP_clif_pReqStyleChange2_post; int HP_clif_cz_req_style_change_sub_pre; int HP_clif_cz_req_style_change_sub_post; int HP_clif_style_change_response_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index e5584cc43..0088847b1 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -378,6 +378,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->dropitem, HP_clif_dropitem) }, { HP_POP(clif->delitem, HP_clif_delitem) }, { HP_POP(clif->takeitem, HP_clif_takeitem) }, + { HP_POP(clif->item_movefailed, HP_clif_item_movefailed) }, { HP_POP(clif->item_equip, HP_clif_item_equip) }, { HP_POP(clif->item_normal, HP_clif_item_normal) }, { HP_POP(clif->arrowequip, HP_clif_arrowequip) }, @@ -603,6 +604,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->msgtable_num, HP_clif_msgtable_num) }, { HP_POP(clif->msgtable_skill, HP_clif_msgtable_skill) }, { HP_POP(clif->msgtable_str, HP_clif_msgtable_str) }, + { HP_POP(clif->msgtable_str_color, HP_clif_msgtable_str_color) }, { HP_POP(clif->msgtable_color, HP_clif_msgtable_color) }, { HP_POP(clif->message, HP_clif_message) }, { HP_POP(clif->messageln, HP_clif_messageln) }, @@ -684,6 +686,8 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->guild_positionnamelist, HP_clif_guild_positionnamelist) }, { HP_POP(clif->guild_positioninfolist, HP_clif_guild_positioninfolist) }, { HP_POP(clif->guild_expulsionlist, HP_clif_guild_expulsionlist) }, + { HP_POP(clif->guild_set_position, HP_clif_guild_set_position) }, + { HP_POP(clif->guild_position_selected, HP_clif_guild_position_selected) }, { HP_POP(clif->validate_emblem, HP_clif_validate_emblem) }, { HP_POP(clif->bg_hp, HP_clif_bg_hp) }, { HP_POP(clif->bg_xy, HP_clif_bg_xy) }, @@ -1110,6 +1114,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->style_change_validate_requirements, HP_clif_style_change_validate_requirements) }, { HP_POP(clif->stylist_send_rodexitem, HP_clif_stylist_send_rodexitem) }, { HP_POP(clif->pReqStyleChange, HP_clif_pReqStyleChange) }, + { HP_POP(clif->pReqStyleChange2, HP_clif_pReqStyleChange2) }, { HP_POP(clif->cz_req_style_change_sub, HP_clif_cz_req_style_change_sub) }, { HP_POP(clif->style_change_response, HP_clif_style_change_response) }, { HP_POP(clif->pPetEvolution, HP_clif_pPetEvolution) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index f2ce1505c..3b21eb3e6 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -9213,6 +9213,32 @@ void HP_clif_takeitem(struct block_list *src, struct block_list *dst) { } return; } +void HP_clif_item_movefailed(struct map_session_data *sd, int n) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_item_movefailed_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, int *n); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_movefailed_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_item_movefailed_pre[hIndex].func; + preHookFunc(&sd, &n); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.item_movefailed(sd, n); + } + if (HPMHooks.count.HP_clif_item_movefailed_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, int n); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_movefailed_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_item_movefailed_post[hIndex].func; + postHookFunc(sd, n); + } + } + return; +} void HP_clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *i, struct item_data *id, int eqp_pos) { int hIndex = 0; if (HPMHooks.count.HP_clif_item_equip_pre > 0) { @@ -15105,6 +15131,32 @@ void HP_clif_msgtable_str(struct map_session_data *sd, enum clif_messages p1, co } return; } +void HP_clif_msgtable_str_color(struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_msgtable_str_color_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, enum clif_messages *p1, const char **value, uint32 *color); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_color_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_msgtable_str_color_pre[hIndex].func; + preHookFunc(&sd, &p1, &value, &color); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.msgtable_str_color(sd, p1, value, color); + } + if (HPMHooks.count.HP_clif_msgtable_str_color_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, enum clif_messages p1, const char *value, uint32 color); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_msgtable_str_color_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_msgtable_str_color_post[hIndex].func; + postHookFunc(sd, p1, value, color); + } + } + return; +} void HP_clif_msgtable_color(struct map_session_data *sd, enum clif_messages p1, uint32 color) { int hIndex = 0; if (HPMHooks.count.HP_clif_msgtable_color_pre > 0) { @@ -16719,14 +16771,14 @@ void HP_clif_guild_inviteack(struct map_session_data *sd, int flag) { } return; } -void HP_clif_guild_leave(struct map_session_data *sd, const char *name, const char *mes) { +void HP_clif_guild_leave(struct map_session_data *sd, const char *name, int char_id, const char *mes) { int hIndex = 0; if (HPMHooks.count.HP_clif_guild_leave_pre > 0) { - void (*preHookFunc) (struct map_session_data **sd, const char **name, const char **mes); + void (*preHookFunc) (struct map_session_data **sd, const char **name, int *char_id, const char **mes); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_clif_guild_leave_pre[hIndex].func; - preHookFunc(&sd, &name, &mes); + preHookFunc(&sd, &name, &char_id, &mes); } if (*HPMforce_return) { *HPMforce_return = false; @@ -16734,25 +16786,25 @@ void HP_clif_guild_leave(struct map_session_data *sd, const char *name, const ch } } { - HPMHooks.source.clif.guild_leave(sd, name, mes); + HPMHooks.source.clif.guild_leave(sd, name, char_id, mes); } if (HPMHooks.count.HP_clif_guild_leave_post > 0) { - void (*postHookFunc) (struct map_session_data *sd, const char *name, const char *mes); + void (*postHookFunc) (struct map_session_data *sd, const char *name, int char_id, const char *mes); for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_leave_post; hIndex++) { postHookFunc = HPMHooks.list.HP_clif_guild_leave_post[hIndex].func; - postHookFunc(sd, name, mes); + postHookFunc(sd, name, char_id, mes); } } return; } -void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, const char *mes, int account_id) { +void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id) { int hIndex = 0; if (HPMHooks.count.HP_clif_guild_expulsion_pre > 0) { - void (*preHookFunc) (struct map_session_data **sd, const char **name, const char **mes, int *account_id); + void (*preHookFunc) (struct map_session_data **sd, const char **name, int *char_id, const char **mes, int *account_id); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_clif_guild_expulsion_pre[hIndex].func; - preHookFunc(&sd, &name, &mes, &account_id); + preHookFunc(&sd, &name, &char_id, &mes, &account_id); } if (*HPMforce_return) { *HPMforce_return = false; @@ -16760,13 +16812,13 @@ void HP_clif_guild_expulsion(struct map_session_data *sd, const char *name, cons } } { - HPMHooks.source.clif.guild_expulsion(sd, name, mes, account_id); + HPMHooks.source.clif.guild_expulsion(sd, name, char_id, mes, account_id); } if (HPMHooks.count.HP_clif_guild_expulsion_post > 0) { - void (*postHookFunc) (struct map_session_data *sd, const char *name, const char *mes, int account_id); + void (*postHookFunc) (struct map_session_data *sd, const char *name, int char_id, const char *mes, int account_id); for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_expulsion_post; hIndex++) { postHookFunc = HPMHooks.list.HP_clif_guild_expulsion_post[hIndex].func; - postHookFunc(sd, name, mes, account_id); + postHookFunc(sd, name, char_id, mes, account_id); } } return; @@ -17213,6 +17265,58 @@ void HP_clif_guild_expulsionlist(struct map_session_data *sd) { } return; } +void HP_clif_guild_set_position(struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_guild_set_position_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_set_position_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_guild_set_position_pre[hIndex].func; + preHookFunc(&sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.guild_set_position(sd); + } + if (HPMHooks.count.HP_clif_guild_set_position_post > 0) { + void (*postHookFunc) (struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_set_position_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_guild_set_position_post[hIndex].func; + postHookFunc(sd); + } + } + return; +} +void HP_clif_guild_position_selected(struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_guild_position_selected_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_position_selected_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_guild_position_selected_pre[hIndex].func; + preHookFunc(&sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.guild_position_selected(sd); + } + if (HPMHooks.count.HP_clif_guild_position_selected_post > 0) { + void (*postHookFunc) (struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_guild_position_selected_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_guild_position_selected_post[hIndex].func; + postHookFunc(sd); + } + } + return; +} bool HP_clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) { int hIndex = 0; bool retVal___ = false; @@ -28314,6 +28418,32 @@ void HP_clif_pReqStyleChange(int fd, struct map_session_data *sd) { } return; } +void HP_clif_pReqStyleChange2(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pReqStyleChange2_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange2_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pReqStyleChange2_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pReqStyleChange2(fd, sd); + } + if (HPMHooks.count.HP_clif_pReqStyleChange2_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pReqStyleChange2_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pReqStyleChange2_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} void HP_clif_cz_req_style_change_sub(struct map_session_data *sd, int type, int16 idx, bool isitem) { int hIndex = 0; if (HPMHooks.count.HP_clif_cz_req_style_change_sub_pre > 0) { -- cgit v1.2.3-60-g2f50 From bfdbfaadddf66d2eaa7b21cc5d7568aab1f3fc56 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 24 Aug 2018 02:43:20 +0300 Subject: Fix out of bound access in clif_guild_belonginfo. --- src/map/clif.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 71ae22ec3..fd8a3c783 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7629,12 +7629,13 @@ static void clif_guild_created(struct map_session_data *sd, int flag) /// mode: @see enum guild_permission static void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g) { - int ps,fd; nullpo_retv(sd); nullpo_retv(g); - fd=sd->fd; - ps=guild->getposition(g,sd); + int fd = sd->fd; + int ps = guild->getposition(g, sd); + Assert_retv(ps != -1); + WFIFOHEAD(fd,packet_len(0x16c)); WFIFOW(fd,0)=0x16c; WFIFOL(fd,2)=g->guild_id; -- cgit v1.2.3-60-g2f50