|
@@ -600,21 +600,22 @@ int clif_charselectok(int id)
|
|
}
|
|
}
|
|
|
|
|
|
/*==========================================
|
|
/*==========================================
|
|
- *
|
|
|
|
|
|
+ * Makes an item appear on the ground
|
|
|
|
+ * 009e <ID>.l <name ID>.w <identify flag>.B <X>.w <Y>.w <subX>.B <subY>.B <amount>.w
|
|
*------------------------------------------*/
|
|
*------------------------------------------*/
|
|
-static int clif_set009e(struct flooritem_data *fitem,unsigned char *buf)
|
|
|
|
|
|
+int clif_dropflooritem(struct flooritem_data* fitem)
|
|
{
|
|
{
|
|
|
|
+ uint8 buf[17];
|
|
int view;
|
|
int view;
|
|
|
|
|
|
nullpo_retr(0, fitem);
|
|
nullpo_retr(0, fitem);
|
|
|
|
|
|
- //009e <ID>.l <name ID>.w <identify flag>.B <X>.w <Y>.w <subX>.B <subY>.B <amount>.w
|
|
|
|
|
|
+ if (fitem->item_data.nameid <= 0)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
WBUFW(buf, 0) = 0x9e;
|
|
WBUFW(buf, 0) = 0x9e;
|
|
WBUFL(buf, 2) = fitem->bl.id;
|
|
WBUFL(buf, 2) = fitem->bl.id;
|
|
- if ((view = itemdb_viewid(fitem->item_data.nameid)) > 0)
|
|
|
|
- WBUFW(buf, 6) = view;
|
|
|
|
- else
|
|
|
|
- WBUFW(buf, 6) = fitem->item_data.nameid;
|
|
|
|
|
|
+ WBUFW(buf, 6) = ((view = itemdb_viewid(fitem->item_data.nameid)) > 0) ? view : fitem->item_data.nameid;
|
|
WBUFB(buf, 8) = fitem->item_data.identify;
|
|
WBUFB(buf, 8) = fitem->item_data.identify;
|
|
WBUFW(buf, 9) = fitem->bl.x;
|
|
WBUFW(buf, 9) = fitem->bl.x;
|
|
WBUFW(buf,11) = fitem->bl.y;
|
|
WBUFW(buf,11) = fitem->bl.y;
|
|
@@ -622,21 +623,6 @@ static int clif_set009e(struct flooritem_data *fitem,unsigned char *buf)
|
|
WBUFB(buf,14) = fitem->suby;
|
|
WBUFB(buf,14) = fitem->suby;
|
|
WBUFW(buf,15) = fitem->item_data.amount;
|
|
WBUFW(buf,15) = fitem->item_data.amount;
|
|
|
|
|
|
- return packet_len(0x9e);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/*==========================================
|
|
|
|
- *
|
|
|
|
- *------------------------------------------*/
|
|
|
|
-int clif_dropflooritem(struct flooritem_data *fitem)
|
|
|
|
-{
|
|
|
|
- unsigned char buf[64];
|
|
|
|
-
|
|
|
|
- nullpo_retr(0, fitem);
|
|
|
|
-
|
|
|
|
- if (fitem->item_data.nameid <= 0)
|
|
|
|
- return 0;
|
|
|
|
- clif_set009e(fitem, buf);
|
|
|
|
clif_send(buf, packet_len(0x9e), &fitem->bl, AREA);
|
|
clif_send(buf, packet_len(0x9e), &fitem->bl, AREA);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -770,53 +756,29 @@ void clif_get_weapon_view(TBL_PC* sd, unsigned short *rhand, unsigned short *lha
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-static void clif_get_guild_data(struct block_list *bl, long *guild_id, short *emblem_id)
|
|
|
|
-{
|
|
|
|
- //TODO: There has to be a way to clean this up.
|
|
|
|
- switch (bl->type) {
|
|
|
|
- case BL_PC:
|
|
|
|
- *guild_id = ((TBL_PC*)bl)->status.guild_id;
|
|
|
|
- *emblem_id = ((TBL_PC*)bl)->guild_emblem_id;
|
|
|
|
- break;
|
|
|
|
- case BL_MOB:
|
|
|
|
- if (((TBL_MOB*)bl)->guardian_data) {
|
|
|
|
- *guild_id =((TBL_MOB*)bl)->guardian_data->guild_id;
|
|
|
|
- *emblem_id =((TBL_MOB*)bl)->guardian_data->emblem_id;
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case BL_NPC:
|
|
|
|
- if (bl->subtype == SCRIPT && ((TBL_NPC*)bl)->u.scr.guild_id > 0) {
|
|
|
|
- struct guild *g = guild_search(((TBL_NPC*)bl)->u.scr.guild_id);
|
|
|
|
- if (g) {
|
|
|
|
- *guild_id =g->guild_id;
|
|
|
|
- *emblem_id =g->emblem_id;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- *guild_id = status_get_guild_id(bl);
|
|
|
|
- }
|
|
|
|
- return;
|
|
|
|
-}
|
|
|
|
/*==========================================
|
|
/*==========================================
|
|
*
|
|
*
|
|
*------------------------------------------*/
|
|
*------------------------------------------*/
|
|
-static int clif_set0078(struct block_list *bl, struct view_data *vd, unsigned char *buf)
|
|
|
|
|
|
+static int clif_set0078(struct block_list* bl, unsigned char* buf)
|
|
{
|
|
{
|
|
- struct status_change *sc;
|
|
|
|
- struct map_session_data *sd;
|
|
|
|
- long guild_id=0;
|
|
|
|
- unsigned short emblem_id=0, lv;
|
|
|
|
- unsigned short dir;
|
|
|
|
|
|
+ struct status_change* sc;
|
|
|
|
+ struct view_data* vd;
|
|
|
|
+ int guild_id, emblem_id, dir, lv;
|
|
|
|
|
|
nullpo_retr(0, bl);
|
|
nullpo_retr(0, bl);
|
|
- BL_CAST(BL_PC, bl, sd);
|
|
|
|
sc = status_get_sc(bl);
|
|
sc = status_get_sc(bl);
|
|
|
|
+ vd = status_get_viewdata(bl);
|
|
|
|
|
|
- clif_get_guild_data(bl, &guild_id, &emblem_id);
|
|
|
|
|
|
+ guild_id = status_get_guild_id(bl);
|
|
|
|
+ emblem_id = status_get_emblem_id(bl);
|
|
dir = unit_getdir(bl);
|
|
dir = unit_getdir(bl);
|
|
lv = status_get_lv(bl);
|
|
lv = status_get_lv(bl);
|
|
- if(pcdb_checkid(vd->class_)) {
|
|
|
|
|
|
+
|
|
|
|
+ if(pcdb_checkid(vd->class_))
|
|
|
|
+ {
|
|
|
|
+ struct map_session_data* sd;
|
|
|
|
+ BL_CAST(BL_PC, bl, sd);
|
|
|
|
+
|
|
#if PACKETVER > 6
|
|
#if PACKETVER > 6
|
|
memset(buf,0,packet_len(0x22a));
|
|
memset(buf,0,packet_len(0x22a));
|
|
|
|
|
|
@@ -955,9 +917,9 @@ static int clif_set0078(struct block_list *bl, struct view_data *vd, unsigned ch
|
|
//44B: Karma
|
|
//44B: Karma
|
|
//45B: Sex
|
|
//45B: Sex
|
|
WBUFPOS(buf,46,bl->x,bl->y,dir);
|
|
WBUFPOS(buf,46,bl->x,bl->y,dir);
|
|
- WBUFB(buf,49)=5;
|
|
|
|
- WBUFB(buf,50)=5;
|
|
|
|
- //51BL Sit/Stand
|
|
|
|
|
|
+ //WBUFB(buf,49)=5;
|
|
|
|
+ //WBUFB(buf,50)=5;
|
|
|
|
+ //51B: Sit/Stand
|
|
WBUFW(buf,52)=clif_setlevel(lv);
|
|
WBUFW(buf,52)=clif_setlevel(lv);
|
|
return packet_len(0x78);
|
|
return packet_len(0x78);
|
|
}
|
|
}
|
|
@@ -968,18 +930,20 @@ static int clif_set0078(struct block_list *bl, struct view_data *vd, unsigned ch
|
|
static int clif_set007b(struct block_list *bl, struct view_data *vd, struct unit_data *ud, unsigned char *buf)
|
|
static int clif_set007b(struct block_list *bl, struct view_data *vd, struct unit_data *ud, unsigned char *buf)
|
|
{
|
|
{
|
|
struct status_change *sc;
|
|
struct status_change *sc;
|
|
- struct map_session_data *sd;
|
|
|
|
- long guild_id=0;
|
|
|
|
- unsigned short emblem_id=0, lv;
|
|
|
|
|
|
+ int guild_id, emblem_id, lv;
|
|
|
|
|
|
nullpo_retr(0, bl);
|
|
nullpo_retr(0, bl);
|
|
- BL_CAST(BL_PC, bl, sd);
|
|
|
|
sc = status_get_sc(bl);
|
|
sc = status_get_sc(bl);
|
|
|
|
|
|
- clif_get_guild_data(bl, &guild_id, &emblem_id);
|
|
|
|
|
|
+ guild_id = status_get_guild_id(bl);
|
|
|
|
+ emblem_id = status_get_emblem_id(bl);
|
|
lv = status_get_lv(bl);
|
|
lv = status_get_lv(bl);
|
|
|
|
|
|
- if(pcdb_checkid(vd->class_)) {
|
|
|
|
|
|
+ if(pcdb_checkid(vd->class_))
|
|
|
|
+ {
|
|
|
|
+ struct map_session_data* sd;
|
|
|
|
+ BL_CAST(BL_PC, bl, sd);
|
|
|
|
+
|
|
#if PACKETVER > 6
|
|
#if PACKETVER > 6
|
|
memset(buf,0,packet_len(0x22c));
|
|
memset(buf,0,packet_len(0x22c));
|
|
|
|
|
|
@@ -1291,6 +1255,7 @@ int clif_spawn(struct block_list *bl)
|
|
{
|
|
{
|
|
unsigned char buf[128];
|
|
unsigned char buf[128];
|
|
struct view_data *vd;
|
|
struct view_data *vd;
|
|
|
|
+
|
|
nullpo_retr(0, bl);
|
|
nullpo_retr(0, bl);
|
|
vd = status_get_viewdata(bl);
|
|
vd = status_get_viewdata(bl);
|
|
if (!vd || vd->class_ == INVISIBLE_CLASS)
|
|
if (!vd || vd->class_ == INVISIBLE_CLASS)
|
|
@@ -1298,8 +1263,9 @@ int clif_spawn(struct block_list *bl)
|
|
|
|
|
|
if (pcdb_checkid(vd->class_))
|
|
if (pcdb_checkid(vd->class_))
|
|
{ //Player spawn packet.
|
|
{ //Player spawn packet.
|
|
- clif_set0078(bl, vd, buf);
|
|
|
|
- switch(WBUFW(buf,0)) {
|
|
|
|
|
|
+ clif_set0078(bl, buf);
|
|
|
|
+ switch(WBUFW(buf,0))
|
|
|
|
+ {
|
|
case 0x78: //Convert to 0x79
|
|
case 0x78: //Convert to 0x79
|
|
WBUFW(buf, 0) = 0x79;
|
|
WBUFW(buf, 0) = 0x79;
|
|
WBUFW(buf,51) = WBUFW(buf,52); //Lv is placed on offset 52
|
|
WBUFW(buf,51) = WBUFW(buf,52); //Lv is placed on offset 52
|
|
@@ -1337,9 +1303,7 @@ int clif_spawn(struct block_list *bl)
|
|
WBUFW(buf,10)=sc->opt2;
|
|
WBUFW(buf,10)=sc->opt2;
|
|
WBUFW(buf,12)=sc->option;
|
|
WBUFW(buf,12)=sc->option;
|
|
}
|
|
}
|
|
- WBUFW(buf,14)=vd->hair_style; //Required for pets.
|
|
|
|
WBUFW(buf,20)=vd->class_;
|
|
WBUFW(buf,20)=vd->class_;
|
|
- WBUFW(buf,24)=vd->head_bottom; //Pet armor
|
|
|
|
|
|
|
|
WBUFPOS(buf,36,bl->x,bl->y,unit_getdir(bl));
|
|
WBUFPOS(buf,36,bl->x,bl->y,unit_getdir(bl));
|
|
clif_send(buf,packet_len(0x7c),bl,AREA_WOS);
|
|
clif_send(buf,packet_len(0x7c),bl,AREA_WOS);
|
|
@@ -1374,6 +1338,13 @@ int clif_spawn(struct block_list *bl)
|
|
clif_specialeffect(&md->bl,421,AREA);
|
|
clif_specialeffect(&md->bl,421,AREA);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case BL_PET:
|
|
|
|
+ {
|
|
|
|
+ unsigned char buf[64];
|
|
|
|
+ int len = clif_set0078(bl, buf);
|
|
|
|
+ clif_send(buf, len, bl, AREA_WOS);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -2644,6 +2615,7 @@ int clif_updatestatus(struct map_session_data *sd,int type)
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
+
|
|
int clif_changestatus(struct block_list *bl,int type,int val)
|
|
int clif_changestatus(struct block_list *bl,int type,int val)
|
|
{
|
|
{
|
|
unsigned char buf[12];
|
|
unsigned char buf[12];
|
|
@@ -2654,7 +2626,6 @@ int clif_changestatus(struct block_list *bl,int type,int val)
|
|
if(bl->type == BL_PC)
|
|
if(bl->type == BL_PC)
|
|
sd = (struct map_session_data *)bl;
|
|
sd = (struct map_session_data *)bl;
|
|
|
|
|
|
-//printf("clif_changestatus id:%d type:%d val:%d\n",bl->id,type,val);
|
|
|
|
if(sd){
|
|
if(sd){
|
|
WBUFW(buf,0)=0x1ab;
|
|
WBUFW(buf,0)=0x1ab;
|
|
WBUFL(buf,2)=bl->id;
|
|
WBUFL(buf,2)=bl->id;
|
|
@@ -3693,7 +3664,7 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds
|
|
*/
|
|
*/
|
|
|
|
|
|
}
|
|
}
|
|
-void clif_getareachar_char(struct map_session_data* sd,struct block_list *bl)
|
|
|
|
|
|
+void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
|
|
{
|
|
{
|
|
struct unit_data *ud;
|
|
struct unit_data *ud;
|
|
struct view_data *vd;
|
|
struct view_data *vd;
|
|
@@ -3724,7 +3695,7 @@ void clif_getareachar_char(struct map_session_data* sd,struct block_list *bl)
|
|
#else
|
|
#else
|
|
WFIFOHEAD(fd,packet_len(0x78));
|
|
WFIFOHEAD(fd,packet_len(0x78));
|
|
#endif
|
|
#endif
|
|
- len = clif_set0078(bl,vd,WFIFOP(fd,0));
|
|
|
|
|
|
+ len = clif_set0078(bl,WFIFOP(fd,0));
|
|
WFIFOSET(fd,len);
|
|
WFIFOSET(fd,len);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3732,7 +3703,7 @@ void clif_getareachar_char(struct map_session_data* sd,struct block_list *bl)
|
|
clif_refreshlook(&sd->bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,SELF);
|
|
clif_refreshlook(&sd->bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,SELF);
|
|
|
|
|
|
switch (bl->type)
|
|
switch (bl->type)
|
|
- {
|
|
|
|
|
|
+ { // FIXME: 'AREA' causes unneccessary spam since this should be 1:1 communication
|
|
case BL_PC:
|
|
case BL_PC:
|
|
{
|
|
{
|
|
TBL_PC* tsd = (TBL_PC*)bl;
|
|
TBL_PC* tsd = (TBL_PC*)bl;
|
|
@@ -3758,39 +3729,16 @@ void clif_getareachar_char(struct map_session_data* sd,struct block_list *bl)
|
|
clif_specialeffect(bl,421,AREA);
|
|
clif_specialeffect(bl,421,AREA);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case BL_PET:
|
|
|
|
+ {
|
|
|
|
+ unsigned char buf[64];
|
|
|
|
+ int len = clif_set0078(bl, buf);
|
|
|
|
+ clif_send(buf, len, &sd->bl, SELF);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-/*==========================================
|
|
|
|
- * Older fix pos packet.
|
|
|
|
- *------------------------------------------*/
|
|
|
|
-int clif_fixpos2(struct block_list* bl)
|
|
|
|
-{
|
|
|
|
- struct unit_data *ud;
|
|
|
|
- struct view_data *vd;
|
|
|
|
- unsigned char buf[256];
|
|
|
|
- int len;
|
|
|
|
-
|
|
|
|
- nullpo_retr(0, bl);
|
|
|
|
- ud = unit_bl2ud(bl);
|
|
|
|
- vd = status_get_viewdata(bl);
|
|
|
|
- if (!vd || vd->class_ == INVISIBLE_CLASS)
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- if(ud && ud->walktimer != -1)
|
|
|
|
- len = clif_set007b(bl,vd,ud,buf);
|
|
|
|
- else
|
|
|
|
- len = clif_set0078(bl,vd,buf);
|
|
|
|
-
|
|
|
|
- if (disguised(bl)) {
|
|
|
|
- clif_send(buf,len,bl,AREA_WOS);
|
|
|
|
- clif_setdisguise((TBL_PC*)bl, buf, len, 0);
|
|
|
|
- clif_setdisguise((TBL_PC*)bl, buf, len, 1);
|
|
|
|
- } else
|
|
|
|
- clif_send(buf,len,bl,AREA);
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
//Modifies the type of damage according to status changes [Skotlex]
|
|
//Modifies the type of damage according to status changes [Skotlex]
|
|
#define clif_calc_delay(type,delay) (type==1||type==4||type==0x0a)?type:(delay==0?9:type)
|
|
#define clif_calc_delay(type,delay) (type==1||type==4||type==0x0a)?type:(delay==0?9:type)
|
|
|
|
|
|
@@ -4056,7 +4004,7 @@ int clif_01ac(struct block_list *bl)
|
|
default:
|
|
default:
|
|
if(&sd->bl == bl)
|
|
if(&sd->bl == bl)
|
|
break;
|
|
break;
|
|
- clif_getareachar_char(sd,bl);
|
|
|
|
|
|
+ clif_getareachar_unit(sd,bl);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
@@ -4134,13 +4082,13 @@ int clif_insight(struct block_list *bl,va_list ap)
|
|
clif_getareachar_skillunit(tsd,(TBL_SKILL*)bl);
|
|
clif_getareachar_skillunit(tsd,(TBL_SKILL*)bl);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
- clif_getareachar_char(tsd,bl);
|
|
|
|
|
|
+ clif_getareachar_unit(tsd,bl);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (sd && sd->fd)
|
|
if (sd && sd->fd)
|
|
{ //Tell sd that tbl walked into his view
|
|
{ //Tell sd that tbl walked into his view
|
|
- clif_getareachar_char(sd,tbl);
|
|
|
|
|
|
+ clif_getareachar_unit(sd,tbl);
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -4187,7 +4135,7 @@ int clif_skillinfo(struct map_session_data *sd,int skillid,int type,int range)
|
|
int clif_skillinfoblock(struct map_session_data *sd)
|
|
int clif_skillinfoblock(struct map_session_data *sd)
|
|
{
|
|
{
|
|
int fd;
|
|
int fd;
|
|
- int i,c,len=4,id;
|
|
|
|
|
|
+ int i,c,len,id;
|
|
|
|
|
|
nullpo_retr(0, sd);
|
|
nullpo_retr(0, sd);
|
|
|
|
|
|
@@ -4195,21 +4143,23 @@ int clif_skillinfoblock(struct map_session_data *sd)
|
|
if (!fd) return 0;
|
|
if (!fd) return 0;
|
|
|
|
|
|
WFIFOHEAD(fd, MAX_SKILL * 37 + 4);
|
|
WFIFOHEAD(fd, MAX_SKILL * 37 + 4);
|
|
- WFIFOW(fd,0)=0x10f;
|
|
|
|
- for ( i = c = 0; i < MAX_SKILL; i++){
|
|
|
|
- if( (id=sd->status.skill[i].id)!=0 ){
|
|
|
|
- WFIFOW(fd,len ) = id;
|
|
|
|
|
|
+ WFIFOW(fd,0) = 0x10f;
|
|
|
|
+ for ( i = 0, c = 0, len = 4; i < MAX_SKILL; i++)
|
|
|
|
+ {
|
|
|
|
+ if( (id = sd->status.skill[i].id) != 0 )
|
|
|
|
+ {
|
|
|
|
+ WFIFOW(fd,len) = id;
|
|
WFIFOW(fd,len+2) = skill_get_inf(id);
|
|
WFIFOW(fd,len+2) = skill_get_inf(id);
|
|
WFIFOW(fd,len+4) = 0;
|
|
WFIFOW(fd,len+4) = 0;
|
|
WFIFOW(fd,len+6) = sd->status.skill[i].lv;
|
|
WFIFOW(fd,len+6) = sd->status.skill[i].lv;
|
|
WFIFOW(fd,len+8) = skill_get_sp(id,sd->status.skill[i].lv);
|
|
WFIFOW(fd,len+8) = skill_get_sp(id,sd->status.skill[i].lv);
|
|
WFIFOW(fd,len+10)= skill_get_range2(&sd->bl, id,sd->status.skill[i].lv);
|
|
WFIFOW(fd,len+10)= skill_get_range2(&sd->bl, id,sd->status.skill[i].lv);
|
|
strncpy((char*)WFIFOP(fd,len+12), skill_get_name(id), NAME_LENGTH);
|
|
strncpy((char*)WFIFOP(fd,len+12), skill_get_name(id), NAME_LENGTH);
|
|
- if(sd->status.skill[i].flag ==0)
|
|
|
|
- WFIFOB(fd,len+36)= (sd->status.skill[i].lv < skill_tree_get_max(id, sd->status.class_))? 1:0;
|
|
|
|
|
|
+ if(sd->status.skill[i].flag == 0)
|
|
|
|
+ WFIFOB(fd,len+36) = (sd->status.skill[i].lv < skill_tree_get_max(id, sd->status.class_))? 1:0;
|
|
else
|
|
else
|
|
WFIFOB(fd,len+36) = 0;
|
|
WFIFOB(fd,len+36) = 0;
|
|
- len+=37;
|
|
|
|
|
|
+ len += 37;
|
|
c++;
|
|
c++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -6051,7 +6001,7 @@ int clif_catch_process(struct map_session_data *sd)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int clif_pet_rulet(struct map_session_data *sd,int data)
|
|
|
|
|
|
+int clif_pet_roulette(struct map_session_data *sd,int data)
|
|
{
|
|
{
|
|
int fd;
|
|
int fd;
|
|
|
|
|
|
@@ -6102,24 +6052,48 @@ int clif_sendegg(struct map_session_data *sd)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int clif_send_petdata(struct map_session_data *sd,int type,int param)
|
|
|
|
|
|
+/*==========================================
|
|
|
|
+ * Sends a specific pet data update.
|
|
|
|
+ * type = 0 -> param = 0 (initial data)
|
|
|
|
+ * type = 1 -> param = intimacy value
|
|
|
|
+ * type = 2 -> param = hungry value
|
|
|
|
+ * type = 3 -> param = accessory id
|
|
|
|
+ * type = 4 -> param = performance number (1-3:normal, 4:special)
|
|
|
|
+ * type = 5 -> param = hairstyle number
|
|
|
|
+ *------------------------------------------*/
|
|
|
|
+int clif_send_petdata(struct map_session_data* sd, int type, int param)
|
|
{
|
|
{
|
|
int fd;
|
|
int fd;
|
|
|
|
|
|
nullpo_retr(0, sd);
|
|
nullpo_retr(0, sd);
|
|
nullpo_retr(0, sd->pd);
|
|
nullpo_retr(0, sd->pd);
|
|
|
|
|
|
- fd=sd->fd;
|
|
|
|
|
|
+ fd = sd->fd;
|
|
WFIFOHEAD(fd,packet_len(0x1a4));
|
|
WFIFOHEAD(fd,packet_len(0x1a4));
|
|
- WFIFOW(fd,0)=0x1a4;
|
|
|
|
- WFIFOB(fd,2)=type;
|
|
|
|
- WFIFOL(fd,3)=sd->pd->bl.id;
|
|
|
|
- WFIFOL(fd,7)=param;
|
|
|
|
|
|
+ WFIFOW(fd,0) = 0x1a4;
|
|
|
|
+ WFIFOB(fd,2) = type;
|
|
|
|
+ WFIFOL(fd,3) = sd->pd->bl.id;
|
|
|
|
+ WFIFOL(fd,7) = param;
|
|
WFIFOSET(fd,packet_len(0x1a4));
|
|
WFIFOSET(fd,packet_len(0x1a4));
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+int clif_send_petdata_area(struct pet_data* pd, int type, int param)
|
|
|
|
+{
|
|
|
|
+ uint8 buf[16];
|
|
|
|
+
|
|
|
|
+ nullpo_retr(0, pd);
|
|
|
|
+
|
|
|
|
+ WBUFW(buf,0) = 0x1a4;
|
|
|
|
+ WBUFB(buf,2) = type;
|
|
|
|
+ WBUFL(buf,3) = pd->bl.id;
|
|
|
|
+ WBUFL(buf,7) = param;
|
|
|
|
+ clif_send(buf, packet_len(0x1a4), &pd->bl, AREA);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
int clif_send_petstatus(struct map_session_data *sd)
|
|
int clif_send_petstatus(struct map_session_data *sd)
|
|
{
|
|
{
|
|
int fd;
|
|
int fd;
|
|
@@ -6171,41 +6145,6 @@ int clif_pet_emotion(struct pet_data *pd,int param)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int clif_pet_performance(struct block_list *bl,int param)
|
|
|
|
-{
|
|
|
|
- unsigned char buf[16];
|
|
|
|
-
|
|
|
|
- nullpo_retr(0, bl);
|
|
|
|
-
|
|
|
|
- memset(buf,0,packet_len(0x1a4));
|
|
|
|
-
|
|
|
|
- WBUFW(buf,0)=0x1a4;
|
|
|
|
- WBUFB(buf,2)=4;
|
|
|
|
- WBUFL(buf,3)=bl->id;
|
|
|
|
- WBUFL(buf,7)=param;
|
|
|
|
-
|
|
|
|
- clif_send(buf,packet_len(0x1a4),bl,AREA);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int clif_pet_equip(struct pet_data *pd)
|
|
|
|
-{
|
|
|
|
- unsigned char buf[16];
|
|
|
|
-
|
|
|
|
- nullpo_retr(0, pd);
|
|
|
|
-
|
|
|
|
- memset(buf,0,packet_len(0x1a4));
|
|
|
|
-
|
|
|
|
- WBUFW(buf,0)=0x1a4;
|
|
|
|
- WBUFB(buf,2)=3;
|
|
|
|
- WBUFL(buf,3)=pd->bl.id;
|
|
|
|
- WBUFL(buf,7)=pd->vd.shield;
|
|
|
|
- clif_send(buf,packet_len(0x1a4),&pd->bl,AREA);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
int clif_pet_food(struct map_session_data *sd,int foodid,int fail)
|
|
int clif_pet_food(struct map_session_data *sd,int foodid,int fail)
|
|
{
|
|
{
|
|
int fd;
|
|
int fd;
|
|
@@ -6554,16 +6493,14 @@ int clif_guild_send_onlineinfo(struct map_session_data *sd)
|
|
*------------------------------------------*/
|
|
*------------------------------------------*/
|
|
int clif_guild_masterormember(struct map_session_data *sd)
|
|
int clif_guild_masterormember(struct map_session_data *sd)
|
|
{
|
|
{
|
|
- int type=0x57,fd;
|
|
|
|
|
|
+ int fd;
|
|
|
|
|
|
nullpo_retr(0, sd);
|
|
nullpo_retr(0, sd);
|
|
|
|
|
|
fd=sd->fd;
|
|
fd=sd->fd;
|
|
- if(sd->state.gmaster_flag)
|
|
|
|
- type=0xd7;
|
|
|
|
WFIFOHEAD(fd,packet_len(0x14e));
|
|
WFIFOHEAD(fd,packet_len(0x14e));
|
|
- WFIFOW(fd,0)=0x14e;
|
|
|
|
- WFIFOL(fd,2)=type;
|
|
|
|
|
|
+ WFIFOW(fd,0) = 0x14e;
|
|
|
|
+ WFIFOL(fd,2) = (sd->state.gmaster_flag) ? 0xd7 : 0x57;
|
|
WFIFOSET(fd,packet_len(0x14e));
|
|
WFIFOSET(fd,packet_len(0x14e));
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -6572,7 +6509,7 @@ int clif_guild_masterormember(struct map_session_data *sd)
|
|
*------------------------------------------*/
|
|
*------------------------------------------*/
|
|
int clif_guild_basicinfo(struct map_session_data *sd)
|
|
int clif_guild_basicinfo(struct map_session_data *sd)
|
|
{
|
|
{
|
|
- int fd,i,t=0;
|
|
|
|
|
|
+ int fd,i,t;
|
|
struct guild *g;
|
|
struct guild *g;
|
|
struct guild_castle *gc=NULL;
|
|
struct guild_castle *gc=NULL;
|
|
|
|
|
|
@@ -6599,15 +6536,13 @@ int clif_guild_basicinfo(struct map_session_data *sd)
|
|
memcpy(WFIFOP(fd,46),g->name, NAME_LENGTH);
|
|
memcpy(WFIFOP(fd,46),g->name, NAME_LENGTH);
|
|
memcpy(WFIFOP(fd,70),g->master, NAME_LENGTH);
|
|
memcpy(WFIFOP(fd,70),g->master, NAME_LENGTH);
|
|
|
|
|
|
- for(i=0;i<MAX_GUILDCASTLE;i++){
|
|
|
|
- gc=guild_castle_search(i);
|
|
|
|
- if(!gc) continue;
|
|
|
|
- if(g->guild_id == gc->guild_id) t++;
|
|
|
|
|
|
+ for(i = 0, t = 0; i < MAX_GUILDCASTLE; i++)
|
|
|
|
+ {
|
|
|
|
+ gc = guild_castle_search(i);
|
|
|
|
+ if(gc && g->guild_id == gc->guild_id)
|
|
|
|
+ t++;
|
|
}
|
|
}
|
|
- if (t>=0 && t<=MAX_GUILDCASTLE) //(0=None, 1..24 = N of Casles) [Lupus]
|
|
|
|
- strncpy((char*)WFIFOP(fd,94),msg_txt(300+t),20);
|
|
|
|
- else
|
|
|
|
- strncpy((char*)WFIFOP(fd,94),msg_txt(299),20);
|
|
|
|
|
|
+ strncpy((char*)WFIFOP(fd,94),msg_txt(300+t),20); // "'N' castles"
|
|
|
|
|
|
WFIFOSET(fd,packet_len(WFIFOW(fd,0)));
|
|
WFIFOSET(fd,packet_len(WFIFOW(fd,0)));
|
|
return 0;
|
|
return 0;
|
|
@@ -6838,8 +6773,10 @@ int clif_guild_skillinfo(struct map_session_data *sd)
|
|
WFIFOSET(fd,WFIFOW(fd,2));
|
|
WFIFOSET(fd,WFIFOW(fd,2));
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
+
|
|
/*==========================================
|
|
/*==========================================
|
|
- * ƒMƒ‹ƒh��’m‘—�M
|
|
|
|
|
|
+ * Sends guild notice to client
|
|
|
|
+ * R 016f <str1z>.60B <str2z>.120B
|
|
*------------------------------------------*/
|
|
*------------------------------------------*/
|
|
int clif_guild_notice(struct map_session_data *sd,struct guild *g)
|
|
int clif_guild_notice(struct map_session_data *sd,struct guild *g)
|
|
{
|
|
{
|
|
@@ -7455,7 +7392,7 @@ int clif_soundeffectall(struct block_list *bl, const char *name, int type, int c
|
|
}
|
|
}
|
|
|
|
|
|
// displaying special effects (npcs, weather, etc) [Valaris]
|
|
// displaying special effects (npcs, weather, etc) [Valaris]
|
|
-int clif_specialeffect(struct block_list *bl, int type, int flag)
|
|
|
|
|
|
+int clif_specialeffect(struct block_list* bl, int type, enum send_target target)
|
|
{
|
|
{
|
|
unsigned char buf[24];
|
|
unsigned char buf[24];
|
|
|
|
|
|
@@ -7467,7 +7404,7 @@ int clif_specialeffect(struct block_list *bl, int type, int flag)
|
|
WBUFL(buf,2) = bl->id;
|
|
WBUFL(buf,2) = bl->id;
|
|
WBUFL(buf,6) = type;
|
|
WBUFL(buf,6) = type;
|
|
|
|
|
|
- clif_send(buf, packet_len(0x1f3), bl, flag);
|
|
|
|
|
|
+ clif_send(buf, packet_len(0x1f3), bl, target);
|
|
|
|
|
|
if (disguised(bl)) {
|
|
if (disguised(bl)) {
|
|
WBUFL(buf,2) = -bl->id;
|
|
WBUFL(buf,2) = -bl->id;
|