diff --git a/src/map/clif.cpp b/src/map/clif.cpp index c214847813..6abd0ad2cf 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -15459,19 +15459,19 @@ void clif_parse_HomMoveToMaster(int fd, map_session_data *sd){ } -/// Request to move homunculus/mercenary (CZ_REQUEST_MOVENPC). -/// 0232 .L .3B +/// Request to move homunculus/mercenary. +/// 0232 .L .3B (CZ_REQUEST_MOVENPC) void clif_parse_HomMoveTo(int fd, map_session_data *sd){ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - int id = RFIFOL(fd,info->pos[0]); // Mercenary or Homunculus +#if PACKETVER >= 20050425 + const PACKET_CZ_REQUEST_MOVENPC* p = reinterpret_cast( RFIFOP( fd, 0 ) ); struct block_list *bl = nullptr; short x, y; - RFIFOPOS(fd, info->pos[1], &x, &y, nullptr); + RBUFPOS( p->PosDir, 0, &x, &y, nullptr ); - if( sd->md && sd->md->bl.id == id ) + if( sd->md && sd->md->bl.id == p->GID ) bl = &sd->md->bl; // Moving Mercenary - else if( hom_is_active(sd->hd) && sd->hd->bl.id == id ) + else if( hom_is_active(sd->hd) && sd->hd->bl.id == p->GID ) bl = &sd->hd->bl; // Moving Homunculus else return; @@ -15480,6 +15480,7 @@ void clif_parse_HomMoveTo(int fd, map_session_data *sd){ return; unit_walktoxy(bl, x, y, 4); +#endif } diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index 17006dc619..de9eefca15 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -563,7 +563,7 @@ // 2005-04-25aSakexe #if PACKETVER >= 20050425 parseable_packet(0x022d,5,clif_parse_HomMenu,2,4); - parseable_packet(0x0232,9,clif_parse_HomMoveTo,2,6); + parseable_packet( HEADER_CZ_REQUEST_MOVENPC, sizeof( PACKET_CZ_REQUEST_MOVENPC ), clif_parse_HomMoveTo, 0 ); parseable_packet(0x0233,11,clif_parse_HomAttack,2,6,10); parseable_packet(0x0234,6,clif_parse_HomMoveToMaster,2); #endif diff --git a/src/map/packets.hpp b/src/map/packets.hpp index 2968088048..bc582f9b66 100644 --- a/src/map/packets.hpp +++ b/src/map/packets.hpp @@ -1362,6 +1362,13 @@ struct PACKET_ZC_NOTIFY_ACT{ DEFINE_PACKET_HEADER(ZC_NOTIFY_ACT, 0x8a); #endif +struct PACKET_CZ_REQUEST_MOVENPC{ + int16 packetType; + uint32 GID; + uint8 PosDir[3]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_REQUEST_MOVENPC, 0x232); + // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 ) #pragma pack( pop )