Converted ZC_ENTER_ROOM to struct (#8590)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
This commit is contained in:
parent
247483c538
commit
d6f2f49b6d
@ -168,7 +168,8 @@ int chat_joinchat(map_session_data* sd, int chatid, const char* pass)
|
||||
|
||||
pc_setchatid(sd,cd->bl.id);
|
||||
|
||||
clif_joinchatok(sd, cd); //To the person who newly joined the list of all
|
||||
// To the person who newly joined the chat
|
||||
clif_joinchatok(*sd, *cd);
|
||||
clif_addchat(cd, sd); //Reports To the person who already in the chat
|
||||
clif_dispchat(cd, 0); //Reported number of changes to the people around
|
||||
|
||||
|
@ -4557,38 +4557,42 @@ void clif_joinchatfail( map_session_data& sd, e_refuse_enter_room result ){
|
||||
/// role:
|
||||
/// 0 = owner (menu)
|
||||
/// 1 = normal
|
||||
void clif_joinchatok(map_session_data *sd,struct chat_data* cd)
|
||||
{
|
||||
int fd;
|
||||
int i,t;
|
||||
void clif_joinchatok(map_session_data& sd, chat_data& cd){
|
||||
|
||||
nullpo_retv(sd);
|
||||
nullpo_retv(cd);
|
||||
|
||||
fd = sd->fd;
|
||||
if (!session_isActive(fd))
|
||||
return;
|
||||
t = (int)(cd->owner->type == BL_NPC);
|
||||
WFIFOHEAD(fd, 8 + (28*(cd->users+t)));
|
||||
WFIFOW(fd, 0) = 0xdb;
|
||||
WFIFOW(fd, 2) = 8 + (28*(cd->users+t));
|
||||
WFIFOL(fd, 4) = cd->bl.id;
|
||||
PACKET_ZC_ENTER_ROOM* p = reinterpret_cast<PACKET_ZC_ENTER_ROOM*>( packet_buffer );
|
||||
|
||||
if(cd->owner->type == BL_NPC){
|
||||
WFIFOL(fd, 30) = 1;
|
||||
WFIFOL(fd, 8) = 0;
|
||||
safestrncpy(WFIFOCP(fd, 12), ((struct npc_data *)cd->owner)->name, NAME_LENGTH);
|
||||
for (i = 0; i < cd->users; i++) {
|
||||
WFIFOL(fd, 8+(i+1)*28) = 1;
|
||||
safestrncpy(WFIFOCP(fd, 8+(i+t)*28+4), cd->usersd[i]->status.name, NAME_LENGTH);
|
||||
p->packetType = HEADER_ZC_ENTER_ROOM;
|
||||
p->packetSize = sizeof(*p);
|
||||
p->chatId = cd.bl.id;
|
||||
|
||||
if(cd.owner->type == BL_NPC){
|
||||
PACKET_ZC_ENTER_ROOM_sub& owner = p->members[0];
|
||||
owner.flag = 0;
|
||||
safestrncpy(owner.name, reinterpret_cast<npc_data*>(cd.owner)->name, sizeof(owner.name));
|
||||
p->packetSize += static_cast<decltype(p->packetSize)>( sizeof( owner ) );
|
||||
|
||||
for (size_t i = 0; i < cd.users; i++) {
|
||||
PACKET_ZC_ENTER_ROOM_sub& member = p->members[i + 1];
|
||||
|
||||
member.flag = 1;
|
||||
safestrncpy(member.name, cd.usersd[i]->status.name, sizeof(member.name));
|
||||
|
||||
p->packetSize += static_cast<decltype(p->packetSize)>( sizeof( member ) );
|
||||
}
|
||||
}else{
|
||||
for (i = 0; i < cd->users; i++) {
|
||||
WFIFOL(fd, 8+i*28) = (i != 0 || cd->owner->type == BL_NPC);
|
||||
safestrncpy(WFIFOCP(fd, 8+(i+t)*28+4), cd->usersd[i]->status.name, NAME_LENGTH);
|
||||
for (size_t i = 0; i < cd.users; i++) {
|
||||
PACKET_ZC_ENTER_ROOM_sub& member = p->members[i];
|
||||
|
||||
member.flag = i > 0;
|
||||
safestrncpy(member.name, cd.usersd[i]->status.name, sizeof(member.name));
|
||||
|
||||
p->packetSize += static_cast<decltype(p->packetSize)>( sizeof( member ) );
|
||||
}
|
||||
}
|
||||
WFIFOSET(fd, WFIFOW(fd, 2));
|
||||
|
||||
clif_send(p,p->packetSize,&sd.bl,SELF);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -884,7 +884,7 @@ void clif_GlobalMessage( block_list& bl, const char* message, enum send_target t
|
||||
void clif_createchat( map_session_data& sd, e_create_chatroom flag );
|
||||
void clif_dispchat(struct chat_data* cd, int fd); // area or fd
|
||||
void clif_joinchatfail( map_session_data& sd, e_refuse_enter_room result );
|
||||
void clif_joinchatok(map_session_data *sd,struct chat_data* cd); // self
|
||||
void clif_joinchatok(map_session_data& sd,chat_data& cd);
|
||||
void clif_addchat(struct chat_data* cd,map_session_data *sd); // chat
|
||||
void clif_changechatowner(struct chat_data* cd, map_session_data* sd); // chat
|
||||
void clif_clearchat(struct chat_data *cd,int fd); // area or fd
|
||||
|
@ -92,7 +92,6 @@
|
||||
packet(0x00d7,-1);
|
||||
packet(0x00d8,6);
|
||||
parseable_packet(0x00d9,14,clif_parse_ChatAddMember,2,6);
|
||||
packet(0x00db,-1);
|
||||
packet(0x00dc,28);
|
||||
packet(0x00dd,29);
|
||||
parseable_packet(0x00de,-1,clif_parse_ChatRoomStatusChange,2,4,6,7,15);
|
||||
|
@ -906,6 +906,19 @@ struct PACKET_ZC_REFUSE_ENTER_ROOM {
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_REFUSE_ENTER_ROOM, 0xda);
|
||||
|
||||
struct PACKET_ZC_ENTER_ROOM_sub{
|
||||
uint32 flag;
|
||||
char name[NAME_LENGTH];
|
||||
} __attribute__((packed));
|
||||
|
||||
struct PACKET_ZC_ENTER_ROOM{
|
||||
uint16 packetType;
|
||||
uint16 packetSize;
|
||||
uint32 chatId;
|
||||
PACKET_ZC_ENTER_ROOM_sub members[];
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_ENTER_ROOM, 0xdb);
|
||||
|
||||
struct PACKET_ZC_NPC_SHOWEFST_UPDATE {
|
||||
int16 packetType;
|
||||
uint32 gid;
|
||||
|
Loading…
x
Reference in New Issue
Block a user