From 4faa745012d31e99b854109b24ba2a02a4b1aa06 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 14 Jun 2017 22:20:49 +0300 Subject: Add packet 0x0a43 for party member info. Based on rathena commit: commit 816d8ab2d0934f823a1d26f7fcac244f8245f14b Author: Lemongrass3110 Date: Mon Jun 5 23:07:09 2017 +0200 Fixed party window for 2017 clients Thanks to @mrdiablo for his help again! --- src/map/clif.c | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'src/map') diff --git a/src/map/clif.c b/src/map/clif.c index c89a033e8..19ab32362 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -6525,6 +6525,7 @@ void clif_party_created(struct map_session_data *sd,int result) /// Adds new member to a party. /// 0104 .L .L .W .W .B .24B .24B .16B (ZC_ADD_MEMBER_TO_GROUP) /// 01e9 .L .L .W .W .B .24B .24B .16B .B .B (ZC_ADD_MEMBER_TO_GROUP2) +/// 0a43 .L .L .W .W .W .W .B .24B .24B .16B .B .B (ZC_ADD_MEMBER_TO_GROUP3) /// role: /// 0 = leader /// 1 = normal @@ -6533,8 +6534,17 @@ void clif_party_created(struct map_session_data *sd,int result) /// 1 = disconnected void clif_party_member_info(struct party_data *p, struct map_session_data *sd) { - unsigned char buf[81]; int i; +#if PACKETVER < 20170524 + unsigned char buf[81]; + const int cmd = 0x1e9; + const int offset = 0; +#else + unsigned char buf[85]; +// [4144] probably 0xa43 packet can works on older clients because in client was added in 2015-10-07 + const int cmd = 0xa43; + int offset = 4; +#endif nullpo_retv(p); nullpo_retv(sd); @@ -6547,18 +6557,22 @@ void clif_party_member_info(struct party_data *p, struct map_session_data *sd) return; //Should never happen... sd = p->data[i].sd; - WBUFW(buf, 0) = 0x1e9; + WBUFW(buf, 0) = cmd; WBUFL(buf, 2) = sd->status.account_id; WBUFL(buf, 6) = (p->party.member[i].leader) ? 0 : 1; - WBUFW(buf, 10) = sd->bl.x; - WBUFW(buf, 12) = sd->bl.y; - WBUFB(buf, 14) = (p->party.member[i].online) ? 0 : 1; - memcpy(WBUFP(buf, 15), p->party.name, NAME_LENGTH); - memcpy(WBUFP(buf, 39), sd->status.name, NAME_LENGTH); - mapindex->getmapname_ext(map->list[sd->bl.m].custom_name ? map->list[map->list[sd->bl.m].instance_src_map].name : map->list[sd->bl.m].name, WBUFP(buf, 63)); - WBUFB(buf, 79) = (p->party.item & 1) ? 1 : 0; - WBUFB(buf, 80) = (p->party.item & 2) ? 1 : 0; - clif->send(buf, packet_len(0x1e9), &sd->bl, PARTY); +#if PACKETVER >= 20170524 + WBUFW(buf, 10) = sd->status.class; + WBUFW(buf, 12) = sd->status.base_level; +#endif + WBUFW(buf, offset + 10) = sd->bl.x; + WBUFW(buf, offset + 12) = sd->bl.y; + WBUFB(buf, offset + 14) = (p->party.member[i].online) ? 0 : 1; + memcpy(WBUFP(buf, offset + 15), p->party.name, NAME_LENGTH); + memcpy(WBUFP(buf, offset + 39), sd->status.name, NAME_LENGTH); + mapindex->getmapname_ext(map->list[sd->bl.m].custom_name ? map->list[map->list[sd->bl.m].instance_src_map].name : map->list[sd->bl.m].name, WBUFP(buf, offset + 63)); + WBUFB(buf, offset + 79) = (p->party.item & 1) ? 1 : 0; + WBUFB(buf, offset + 80) = (p->party.item & 2) ? 1 : 0; + clif->send(buf, packet_len(cmd), &sd->bl, PARTY); } /// Sends party information (ZC_GROUP_LIST). -- cgit v1.2.3-70-g09d2