diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/clif.c | 33 | ||||
-rw-r--r-- | src/map/packets_struct.h | 16 |
2 files changed, 34 insertions, 15 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 53fb9af00..66e3971f1 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4755,26 +4755,29 @@ static void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum sen /// 009d <id>.L <name id>.W <identified>.B <x>.W <y>.W <amount>.W <subX>.B <subY>.B static void clif_getareachar_item(struct map_session_data *sd, struct flooritem_data *fitem) { - int view,fd; + int view, fd; + struct PACKET_ZC_ITEM_ENTRY p; nullpo_retv(sd); nullpo_retv(fitem); - fd=sd->fd; + fd = sd->fd; - WFIFOHEAD(fd,packet_len(0x9d)); - WFIFOW(fd,0)=0x9d; - WFIFOL(fd,2)=fitem->bl.id; - if((view = itemdb_viewid(fitem->item_data.nameid)) > 0) - WFIFOW(fd,6)=view; + WFIFOHEAD(fd, sizeof(p)); + p.packetType = 0x9d; + p.AID = fitem->bl.id; + if ((view = itemdb_viewid(fitem->item_data.nameid)) > 0) + p.itemId = view; else - WFIFOW(fd,6)=fitem->item_data.nameid; - WFIFOB(fd,8)=fitem->item_data.identify; - WFIFOW(fd,9)=fitem->bl.x; - WFIFOW(fd,11)=fitem->bl.y; - WFIFOW(fd,13)=fitem->item_data.amount; - WFIFOB(fd,15)=fitem->subx; - WFIFOB(fd,16)=fitem->suby; - WFIFOSET(fd,packet_len(0x9d)); + p.itemId = fitem->item_data.nameid; + p.identify = fitem->item_data.identify; + p.x = fitem->bl.x; + p.y = fitem->bl.y; + p.amount = fitem->item_data.amount; + p.subX = fitem->subx; + p.subY = fitem->suby; + + memcpy(WFIFOP(fd, 0), &p, sizeof(p)); + WFIFOSET(fd, sizeof(p)); } static void clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send_target target) diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 71f71f083..eb3f11475 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -1810,6 +1810,22 @@ struct PACKET_ZC_NOTIFY_PLAYERCHAT { char Message[]; } __attribute__((packed)); +struct PACKET_ZC_ITEM_ENTRY { + int16 packetType; + uint32 AID; +#if PACKETVER_RE_NUM >= 20180704 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 identify; + uint16 x; + uint16 y; + uint16 amount; + uint8 subX; + uint8 subY; +} __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 |