ZC_ACK_REQNAME_BYGID

This commit is contained in:
Atemo 2024-05-26 00:25:33 +02:00
parent 6edc930f4a
commit 11d84fb634
5 changed files with 38 additions and 28 deletions

View File

@ -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). /// Returns character name requested by char_id.
/// 0194 <char id>.L <name>.24B /// 0194 <char id>.L <name>.24B (ZC_ACK_REQNAME_BYGID)
/// 0af7 <flag>.W <char id>.L <name>.24B /// 0af7 <flag>.W <char id>.L <name>.24B (ZC_ACK_REQNAME_BYGID)
void clif_solved_charname(int fd, int charid, const char* name) 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 #if PACKETVER >= 20180221
WFIFOHEAD(fd,packet_len(0xaf7)); packet.flag = name[0] ? 3 : 2;
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));
#endif #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){ void clif_produceeffect(map_session_data* sd,int flag, t_itemid nameid){
nullpo_retv( sd ); 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; struct PACKET_ZC_ACK_REQMAKINGITEM p;

View File

@ -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_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_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 ); 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_self(bl) clif_name( (bl), (bl), SELF )
#define clif_name_area(bl) clif_name( (bl), (bl), AREA ) #define clif_name_area(bl) clif_name( (bl), (bl), AREA )

View File

@ -238,7 +238,6 @@
packet( HEADER_ZC_TALKBOX_CHATCONTENTS, sizeof( struct PACKET_ZC_TALKBOX_CHATCONTENTS ) ); packet( HEADER_ZC_TALKBOX_CHATCONTENTS, sizeof( struct PACKET_ZC_TALKBOX_CHATCONTENTS ) );
packet(0x0192,24); packet(0x0192,24);
parseable_packet(0x0193,6,clif_parse_SolveCharName,2); parseable_packet(0x0193,6,clif_parse_SolveCharName,2);
packet(0x0194,30);
packet( HEADER_ZC_ACK_REQNAMEALL, sizeof( struct PACKET_ZC_ACK_REQNAMEALL ) ); packet( HEADER_ZC_ACK_REQNAMEALL, sizeof( struct PACKET_ZC_ACK_REQNAMEALL ) );
packet(0x0196,9); packet(0x0196,9);
parseable_packet(0x0197,4,clif_parse_ResetChar,2); parseable_packet(0x0197,4,clif_parse_ResetChar,2);
@ -2228,7 +2227,6 @@
// 2018-02-21aRagexeRE or 2018-02-21bRagexeRE // 2018-02-21aRagexeRE or 2018-02-21bRagexeRE
#if PACKETVER >= 20180221 #if PACKETVER >= 20180221
packet(0x0206,35); // ZC_FRIENDS_STATE packet(0x0206,35); // ZC_FRIENDS_STATE
packet(0x0af7,32);
#endif #endif
// 2018-03-07bRagexeRE // 2018-03-07bRagexeRE

View File

@ -1939,8 +1939,8 @@ void map_addnickdb(int charid, const char* nick)
req = p->requests; req = p->requests;
p->requests = req->next; p->requests = req->next;
sd = map_charid2sd(req->charid); sd = map_charid2sd(req->charid);
if( sd ) if( sd != nullptr )
clif_solved_charname(sd->fd, charid, p->nick); clif_solved_charname( *sd, charid, p->nick );
aFree(req); aFree(req);
} }
} }
@ -1961,8 +1961,8 @@ void map_delnickdb(int charid, const char* name)
req = p->requests; req = p->requests;
p->requests = req->next; p->requests = req->next;
sd = map_charid2sd(req->charid); sd = map_charid2sd(req->charid);
if( sd ) if( sd != nullptr )
clif_solved_charname(sd->fd, charid, name); clif_solved_charname( *sd, charid, name );
aFree(req); aFree(req);
} }
aFree(p); aFree(p);
@ -1980,16 +1980,16 @@ void map_reqnickdb(map_session_data * sd, int charid)
nullpo_retv(sd); nullpo_retv(sd);
tsd = map_charid2sd(charid); 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; return;
} }
p = (struct charid2nick*)idb_ensure(nick_db, charid, create_charid2nick); p = (struct charid2nick*)idb_ensure(nick_db, charid, create_charid2nick);
if( *p->nick ) if( *p->nick )
{ {
clif_solved_charname(sd->fd, charid, p->nick); clif_solved_charname( *sd, charid, p->nick );
return; return;
} }
// not in cache, request it // not in cache, request it

View File

@ -1058,6 +1058,23 @@ struct PACKET_ZC_MONSTER_INFO {
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_MONSTER_INFO, 0x18c); 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 // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 ) #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
#pragma pack( pop ) #pragma pack( pop )