From 11d84fb6345bb11862c465bd8e6c6d8431bd8537 Mon Sep 17 00:00:00 2001 From: Atemo Date: Sun, 26 May 2024 00:25:33 +0200 Subject: [PATCH] ZC_ACK_REQNAME_BYGID --- src/map/clif.cpp | 31 +++++++++++++------------------ src/map/clif.hpp | 2 +- src/map/clif_packetdb.hpp | 2 -- src/map/map.cpp | 14 +++++++------- src/map/packets.hpp | 17 +++++++++++++++++ 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/src/map/clif.cpp b/src/map/clif.cpp index da14c2bb50..18d1942110 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -7004,25 +7004,20 @@ void clif_wis_end( map_session_data& sd, e_ack_whisper result ){ } -/// Returns character name requested by char_id (ZC_ACK_REQNAME_BYGID). -/// 0194 .L .24B -/// 0af7 .W .L .24B -void clif_solved_charname(int fd, int charid, const char* name) -{ +/// Returns character name requested by char_id. +/// 0194 .L .24B (ZC_ACK_REQNAME_BYGID) +/// 0af7 .W .L .24B (ZC_ACK_REQNAME_BYGID) +void clif_solved_charname( map_session_data& sd, uint32 charid, const char* name ){ + PACKET_ZC_ACK_REQNAME_BYGID packet{}; + + packet.packetType = HEADER_ZC_ACK_REQNAME_BYGID; #if PACKETVER >= 20180221 - WFIFOHEAD(fd,packet_len(0xaf7)); - WFIFOW(fd,0) = 0xaf7; - WFIFOW(fd,2) = name[0] ? 3 : 2; - WFIFOL(fd,4) = charid; - safestrncpy(WFIFOCP(fd, 8), name, NAME_LENGTH); - WFIFOSET(fd,packet_len(0x0af7)); -#else - WFIFOHEAD(fd,packet_len(0x194)); - WFIFOW(fd,0)=0x194; - WFIFOL(fd,2)=charid; - safestrncpy(WFIFOCP(fd,6), name, NAME_LENGTH); - WFIFOSET(fd,packet_len(0x194)); + packet.flag = name[0] ? 3 : 2; #endif + packet.CID = charid; + safestrncpy( packet.name, name, NAME_LENGTH ); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -8175,7 +8170,7 @@ void clif_movetoattack( map_session_data& sd, block_list& bl ){ void clif_produceeffect(map_session_data* sd,int flag, t_itemid nameid){ nullpo_retv( sd ); - clif_solved_charname( sd->fd, sd->status.char_id, sd->status.name ); + clif_solved_charname( *sd, sd->status.char_id, sd->status.name ); struct PACKET_ZC_ACK_REQMAKINGITEM p; diff --git a/src/map/clif.hpp b/src/map/clif.hpp index 4295393bdb..46b601fdd1 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -952,7 +952,7 @@ void clif_efst_status_change_sub(struct block_list *tbl, struct block_list *bl, void clif_wis_message(map_session_data* sd, const char* nick, const char* mes, size_t mes_len, int gmlvl); void clif_wis_end( map_session_data& sd, e_ack_whisper result ); -void clif_solved_charname(int fd, int charid, const char* name); +void clif_solved_charname( map_session_data& sd, uint32 charid, const char* name ); void clif_name( struct block_list* src, struct block_list *bl, send_target target ); #define clif_name_self(bl) clif_name( (bl), (bl), SELF ) #define clif_name_area(bl) clif_name( (bl), (bl), AREA ) diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index e92d37d952..7cad53b1a8 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -238,7 +238,6 @@ packet( HEADER_ZC_TALKBOX_CHATCONTENTS, sizeof( struct PACKET_ZC_TALKBOX_CHATCONTENTS ) ); packet(0x0192,24); parseable_packet(0x0193,6,clif_parse_SolveCharName,2); - packet(0x0194,30); packet( HEADER_ZC_ACK_REQNAMEALL, sizeof( struct PACKET_ZC_ACK_REQNAMEALL ) ); packet(0x0196,9); parseable_packet(0x0197,4,clif_parse_ResetChar,2); @@ -2228,7 +2227,6 @@ // 2018-02-21aRagexeRE or 2018-02-21bRagexeRE #if PACKETVER >= 20180221 packet(0x0206,35); // ZC_FRIENDS_STATE - packet(0x0af7,32); #endif // 2018-03-07bRagexeRE diff --git a/src/map/map.cpp b/src/map/map.cpp index 2735df8ae2..aeb8482776 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -1939,8 +1939,8 @@ void map_addnickdb(int charid, const char* nick) req = p->requests; p->requests = req->next; sd = map_charid2sd(req->charid); - if( sd ) - clif_solved_charname(sd->fd, charid, p->nick); + if( sd != nullptr ) + clif_solved_charname( *sd, charid, p->nick ); aFree(req); } } @@ -1961,8 +1961,8 @@ void map_delnickdb(int charid, const char* name) req = p->requests; p->requests = req->next; sd = map_charid2sd(req->charid); - if( sd ) - clif_solved_charname(sd->fd, charid, name); + if( sd != nullptr ) + clif_solved_charname( *sd, charid, name ); aFree(req); } aFree(p); @@ -1980,16 +1980,16 @@ void map_reqnickdb(map_session_data * sd, int charid) nullpo_retv(sd); tsd = map_charid2sd(charid); - if( tsd ) + if( tsd != nullptr ) { - clif_solved_charname(sd->fd, charid, tsd->status.name); + clif_solved_charname( *sd, charid, tsd->status.name ); return; } p = (struct charid2nick*)idb_ensure(nick_db, charid, create_charid2nick); if( *p->nick ) { - clif_solved_charname(sd->fd, charid, p->nick); + clif_solved_charname( *sd, charid, p->nick ); return; } // not in cache, request it diff --git a/src/map/packets.hpp b/src/map/packets.hpp index e3445a5d9e..2c0dfeeede 100644 --- a/src/map/packets.hpp +++ b/src/map/packets.hpp @@ -1058,6 +1058,23 @@ struct PACKET_ZC_MONSTER_INFO { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_MONSTER_INFO, 0x18c); +#if PACKETVER >= 20180221 +struct PACKET_ZC_ACK_REQNAME_BYGID { + int16 packetType; + uint16 flag; + uint32 CID; + char name[NAME_LENGTH]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_REQNAME_BYGID, 0xaf7); +#else +struct PACKET_ZC_ACK_REQNAME_BYGID { + int16 packetType; + uint32 CID; + char name[NAME_LENGTH]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_REQNAME_BYGID, 0x194); +#endif + // 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 )