From af9ee21c486c3099f4811e63f8c6d91d509a1034 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 9 Aug 2019 00:47:52 +0300 Subject: Convert ZC_SKILLINFO_UPDATE2 into struct. Add new packet versions --- src/map/clif.c | 36 +++++++++++++++++++----------------- src/map/packets_struct.h | 31 ++++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 42cfe38d7..ff018c00a 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -5402,32 +5402,34 @@ static void clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill /// 07e1 .W .L .W .W .W .B static void clif_skillinfo(struct map_session_data *sd, int skill_id, int inf) { + nullpo_retv(sd); + const int fd = sd->fd; int idx = skill->get_index(skill_id); - int skill_lv; - - nullpo_retv(sd); Assert_retv(idx >= 0 && idx < MAX_SKILL_DB); - skill_lv = sd->status.skill[idx].lv; - - WFIFOHEAD(fd,packet_len(0x7e1)); - WFIFOW(fd,0) = 0x7e1; - WFIFOW(fd,2) = skill_id; - WFIFOL(fd,4) = inf?inf:skill->get_inf(skill_id); - WFIFOW(fd,8) = skill_lv; + WFIFOHEAD(fd, sizeof(struct PACKET_ZC_SKILLINFO_UPDATE2)); + struct PACKET_ZC_SKILLINFO_UPDATE2 *p = WFIFOP(fd, 0); + p->packetType = HEADER_ZC_SKILLINFO_UPDATE2; + int skill_lv = sd->status.skill[idx].lv; + p->id = skill_id; + p->inf = skill->get_inf(skill_id); + p->level = skill_lv; if (skill_lv > 0) { - WFIFOW(fd,10) = skill->get_sp(skill_id, skill_lv); - WFIFOW(fd,12) = skill->get_range2(&sd->bl, skill_id, skill_lv); + p->sp = skill->get_sp(skill_id, skill_lv); + p->range2 = skill->get_range2(&sd->bl, skill_id, skill_lv); } else { - WFIFOW(fd,10) = 0; - WFIFOW(fd,12) = 0; + p->sp = 0; + p->range2 = 0; } +#if PACKETVER_RE_NUM >= 20190807 + p->level2 = skill_lv; +#endif if (sd->status.skill[idx].flag == SKILL_FLAG_PERMANENT) - WFIFOB(fd,14) = (skill_lv < skill->tree_get_max(skill_id, sd->status.class))? 1:0; + p->upFlag = (skill_lv < skill->tree_get_max(skill_id, sd->status.class)) ? 1 : 0; else - WFIFOB(fd,14) = 0; - WFIFOSET(fd,packet_len(0x7e1)); + p->upFlag = 0; + WFIFOSET(fd, sizeof(struct PACKET_ZC_SKILLINFO_UPDATE2)); } /// Notifies clients in area, that an object is about to use a skill. diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 233c6d9c2..b40064abf 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -3556,17 +3556,13 @@ struct SKILLDATA { } __attribute__((packed)); #endif -#if PACKETVER_RE_NUM >= 20190807 struct PACKET_ZC_ADD_SKILL { int16 packetType; struct SKILLDATA skill; } __attribute__((packed)); +#if PACKETVER_RE_NUM >= 20190807 DEFINE_PACKET_HEADER(ZC_ADD_SKILL, 0x0b31); #else -struct PACKET_ZC_ADD_SKILL { - int16 packetType; - struct SKILLDATA skill; -} __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_ADD_SKILL, 0x0111); #endif @@ -3581,6 +3577,31 @@ DEFINE_PACKET_HEADER(ZC_SKILLINFO_LIST, 0x0b32); DEFINE_PACKET_HEADER(ZC_SKILLINFO_LIST, 0x010f); #endif +#if PACKETVER_RE_NUM >= 20190807 +struct PACKET_ZC_SKILLINFO_UPDATE2 { + int16 packetType; + uint16 id; + int inf; + uint16 level; + uint16 sp; + uint16 range2; + uint8 upFlag; + uint16 level2; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SKILLINFO_UPDATE2, 0x0b33); +#else +struct PACKET_ZC_SKILLINFO_UPDATE2 { + int16 packetType; + uint16 id; + int inf; + uint16 level; + uint16 sp; + uint16 range2; + uint8 upFlag; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SKILLINFO_UPDATE2, 0x07e1); +#endif + #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-70-g09d2