* Merged changes up to eAthena 15065.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15479 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
eathenabot 2012-01-17 07:05:43 +00:00
parent d6c35b853a
commit b65fd5e77d

View File

@ -1060,7 +1060,7 @@ static int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool
WBUFW(buf,53) = sd?sd->user_font:0;
#endif
#if PACKETVER >= 20091103
strcpy((char*)WBUFP(buf,55), name);
memcpy((char*)WBUFP(buf,55), name, NAME_LENGTH);
return WBUFW(buffer,2);
#else
return packet_len(WBUFW(buffer,0));
@ -1167,7 +1167,7 @@ static int clif_set_unit_walking(struct block_list* bl, struct unit_data* ud, un
WBUFW(buf,60) = sd?sd->user_font:0;
#endif
#if PACKETVER >= 20091103
strcpy((char*)WBUFP(buf,62), name);
memcpy((char*)WBUFP(buf,62), name, NAME_LENGTH);
return WBUFW(buffer,2);
#else
return packet_len(WBUFW(buffer,0));
@ -1766,7 +1766,7 @@ void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
WFIFOW(fd,0)=0xb4;
WFIFOW(fd,2)=slen;
WFIFOL(fd,4)=npcid;
strcpy((char*)WFIFOP(fd,8),mes);
memcpy((char*)WFIFOP(fd,8), mes, slen-8);
WFIFOSET(fd,WFIFOW(fd,2));
}
@ -1863,7 +1863,7 @@ void clif_sendfakenpc(struct map_session_data *sd, int npcid)
void clif_scriptmenu(struct map_session_data* sd, int npcid, const char* mes)
{
int fd = sd->fd;
int slen = strlen(mes) + 8;
int slen = strlen(mes) + 9;
struct block_list *bl = NULL;
if (!sd->state.using_fake_npc && (npcid == fake_nd->bl.id || ((bl = map_id2bl(npcid)) && (bl->m!=sd->bl.m ||
@ -1875,7 +1875,7 @@ void clif_scriptmenu(struct map_session_data* sd, int npcid, const char* mes)
WFIFOW(fd,0)=0xb7;
WFIFOW(fd,2)=slen;
WFIFOL(fd,4)=npcid;
strcpy((char*)WFIFOP(fd,8),mes);
memcpy((char*)WFIFOP(fd,8), mes, slen-8);
WFIFOSET(fd,WFIFOW(fd,2));
}
@ -6687,19 +6687,29 @@ void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag)
{
unsigned char buf[64];
struct map_session_data* sd;
nullpo_retv(g);
WBUFW(buf, 0)=0x16d;
WBUFW(buf, 0)=0x1f2;
WBUFL(buf, 2)=g->member[idx].account_id;
WBUFL(buf, 6)=g->member[idx].char_id;
WBUFL(buf,10)=flag;
if(g->member[idx].sd==NULL){
struct map_session_data *sd=guild_getavailablesd(g);
if(sd!=NULL)
clif_send(buf,packet_len(0x16d),&sd->bl,GUILD);
}else
clif_send(buf,packet_len(0x16d),&g->member[idx].sd->bl,GUILD_WOS);
if( ( sd = g->member[idx].sd ) != NULL )
{
WBUFW(buf,14) = sd->status.sex;
WBUFW(buf,16) = sd->status.hair;
WBUFW(buf,18) = sd->status.hair_color;
clif_send(buf,packet_len(0x1f2),&sd->bl,GUILD_WOS);
}
else if( ( sd = guild_getavailablesd(g) ) != NULL )
{
WBUFW(buf,14) = 0;
WBUFW(buf,16) = 0;
WBUFW(buf,18) = 0;
clif_send(buf,packet_len(0x1f2),&sd->bl,GUILD);
}
}
// Function `clif_guild_memberlogin_notice` sends info about
@ -7486,7 +7496,7 @@ void clif_GM_kickack(struct map_session_data *sd, int id)
fd = sd->fd;
WFIFOHEAD(fd,packet_len(0xcd));
WFIFOW(fd,0) = 0xcd;
WFIFOL(fd,2) = id;
WFIFOB(fd,2) = id; // FIXME: this is not account id
WFIFOSET(fd, packet_len(0xcd));
}
@ -12834,8 +12844,8 @@ void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title)
WFIFOHEAD(fd,packet_len(0x24a));
WFIFOW(fd,0) = 0x24a;
WFIFOL(fd,2) = mail_id;
safestrncpy((char*)WFIFOP(fd,6), sender, NAME_LENGTH);
safestrncpy((char*)WFIFOP(fd,30), title, MAIL_TITLE_LENGTH);
safestrncpy((char*)WFIFOP(fd,6), title, MAIL_TITLE_LENGTH);
safestrncpy((char*)WFIFOP(fd,46), sender, NAME_LENGTH);
WFIFOSET(fd,packet_len(0x24a));
}