Converted ZC_CHANGE_CHATROOM to struct (#8589)
--------- Co-authored-by: Lemongrass3110 <lemongrass@kstp.at> Co-authored-by: Aleos <aleos89@users.noreply.github.com>
This commit is contained in:
parent
ae0bb4929c
commit
c4b77f1942
@ -326,7 +326,7 @@ int chat_changechatstatus(map_session_data* sd, const char* title, const char* p
|
||||
cd->limit = min(limit, ARRAYLENGTH(cd->usersd));
|
||||
cd->pub = pub;
|
||||
|
||||
clif_changechatstatus(cd);
|
||||
clif_changechatstatus(*cd);
|
||||
clif_dispchat(cd,0);
|
||||
|
||||
return 0;
|
||||
|
||||
@ -4472,28 +4472,45 @@ void clif_dispchat(struct chat_data* cd, int fd)
|
||||
/// 1 = public
|
||||
/// 2 = arena (npc waiting room)
|
||||
/// 3 = PK zone (non-clickable)
|
||||
void clif_changechatstatus(struct chat_data* cd)
|
||||
{
|
||||
unsigned char buf[128];
|
||||
uint8 type;
|
||||
void clif_changechatstatus(chat_data& cd) {
|
||||
|
||||
if( cd == nullptr || cd->usersd[0] == nullptr )
|
||||
if(cd.usersd[0] == nullptr )
|
||||
return;
|
||||
|
||||
type = (cd->owner->type == BL_PC ) ? (cd->pub) ? 1 : 0
|
||||
: (cd->owner->type == BL_NPC) ? (cd->limit) ? 2 : 3
|
||||
: 1;
|
||||
enum e_chat_flags:uint8 {
|
||||
CHAT_PRIVATE = 0,
|
||||
CHAT_PUBLIC,
|
||||
CHAT_ARENA,
|
||||
CHAT_PK
|
||||
};
|
||||
|
||||
WBUFW(buf, 0) = 0xdf;
|
||||
WBUFW(buf, 2) = (uint16)(17 + strlen(cd->title));
|
||||
WBUFL(buf, 4) = cd->owner->id;
|
||||
WBUFL(buf, 8) = cd->bl.id;
|
||||
WBUFW(buf,12) = cd->limit;
|
||||
WBUFW(buf,14) = (cd->owner->type == BL_NPC) ? cd->users+1 : cd->users;
|
||||
WBUFB(buf,16) = type;
|
||||
memcpy(WBUFCP(buf,17), cd->title, strlen(cd->title)); // not zero-terminated
|
||||
PACKET_ZC_CHANGE_CHATROOM* p = reinterpret_cast<PACKET_ZC_CHANGE_CHATROOM*>( packet_buffer );
|
||||
|
||||
clif_send(buf,WBUFW(buf,2),cd->owner,CHAT);
|
||||
p->packetType = HEADER_ZC_CHANGE_CHATROOM;
|
||||
p->packetSize = static_cast<decltype(p->packetSize)>(sizeof(*p) + strlen(cd.title));
|
||||
p->ownerId = cd.owner->id;
|
||||
p->chatId = cd.bl.id;
|
||||
p->limit = cd.limit;
|
||||
p->users = cd.users;
|
||||
|
||||
// not zero-terminated
|
||||
strncpy(p->title, cd.title, strlen(cd.title));
|
||||
|
||||
if(cd.owner->type == BL_NPC){
|
||||
// NPC itself counts as additional chat user
|
||||
p->users++;
|
||||
|
||||
if(cd.limit)
|
||||
p->flag = CHAT_ARENA;
|
||||
else
|
||||
p->flag = CHAT_PK;
|
||||
}else if(cd.owner->type == BL_PC && cd.pub == false){
|
||||
p->flag = CHAT_PRIVATE;
|
||||
}else{
|
||||
p->flag = CHAT_PUBLIC;
|
||||
}
|
||||
|
||||
clif_send(p,p->packetSize,cd.owner,CHAT);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -890,7 +890,7 @@ 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
|
||||
void clif_leavechat(struct chat_data* cd, map_session_data* sd, bool flag); // chat
|
||||
void clif_changechatstatus(struct chat_data* cd); // chat
|
||||
void clif_changechatstatus(chat_data& cd);
|
||||
void clif_refresh_storagewindow(map_session_data *sd);
|
||||
void clif_refresh(map_session_data *sd); // self
|
||||
|
||||
|
||||
@ -91,7 +91,6 @@
|
||||
packet(0x00dc,28);
|
||||
packet(0x00dd,29);
|
||||
parseable_packet(0x00de,-1,clif_parse_ChatRoomStatusChange,2,4,6,7,15);
|
||||
packet(0x00df,-1);
|
||||
parseable_packet(0x00e0,30,clif_parse_ChangeChatOwner,2,6);
|
||||
packet(0x00e1,30);
|
||||
parseable_packet(0x00e2,26,clif_parse_KickFromChat,2);
|
||||
|
||||
@ -878,6 +878,18 @@ struct PACKET_ZC_PAR_CHANGE_USER {
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_PAR_CHANGE_USER, 0x1ab)
|
||||
|
||||
struct PACKET_ZC_CHANGE_CHATROOM{
|
||||
uint16 packetType;
|
||||
uint16 packetSize;
|
||||
uint32 ownerId;
|
||||
uint32 chatId;
|
||||
uint16 limit;
|
||||
uint16 users;
|
||||
uint8 flag;
|
||||
char title[];
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_CHANGE_CHATROOM, 0xdf);
|
||||
|
||||
struct PACKET_ZC_EQUIP_ARROW {
|
||||
int16 packetType;
|
||||
uint16 index;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user