summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/clif.c33
-rw-r--r--src/map/packets_struct.h16
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