📄 clif.c
字号:
#else
WBUFW(buf,0)=0x1ee;
for(i=0,n=0;i<MAX_INVENTORY;i++){
if(sd->status.inventory[i].nameid <=0 || sd->inventory_data[i] == NULL || itemdb_isequip2(sd->inventory_data[i]))
continue;
WBUFW(buf,n*18+4)=i+2;
if(sd->inventory_data[i]->view_id > 0)
WBUFW(buf,n*18+6)=sd->inventory_data[i]->view_id;
else
WBUFW(buf,n*18+6)=sd->status.inventory[i].nameid;
WBUFB(buf,n*18+8)=sd->inventory_data[i]->type;
WBUFB(buf,n*18+9)=sd->status.inventory[i].identify;
WBUFW(buf,n*18+10)=sd->status.inventory[i].amount;
if(sd->inventory_data[i]->equip == 0x8000){
WBUFW(buf,n*18+12)=0x8000;
if(sd->status.inventory[i].equip) arrow=i; // 偮偄偱偵栴憰旛僠僃僢僋
}
else
WBUFW(buf,n*18+12)=0;
WBUFW(buf,n*18+14)=sd->status.inventory[i].card[0];
WBUFW(buf,n*18+16)=sd->status.inventory[i].card[1];
WBUFW(buf,n*18+18)=sd->status.inventory[i].card[2];
WBUFW(buf,n*18+20)=sd->status.inventory[i].card[3];
n++;
}
if(n){
WBUFW(buf,2)=4+n*18;
WFIFOSET(fd,WFIFOW(fd,2));
}
#endif
if(arrow >= 0)
clif_arrowequip(sd,arrow);
return 0;
}
/*==========================================
*
*------------------------------------------
*/
int clif_equiplist(struct map_session_data *sd)
{
int i,j,n,fd=sd->fd;
unsigned char *buf = WFIFOP(fd,0);
WBUFW(buf,0)=0xa4;
for(i=0,n=0;i<MAX_INVENTORY;i++){
if(sd->status.inventory[i].nameid<=0 || sd->inventory_data[i] == NULL || !itemdb_isequip2(sd->inventory_data[i]))
continue;
WBUFW(buf,n*20+4)=i+2;
if(sd->inventory_data[i]->view_id > 0)
WBUFW(buf,n*20+6)=sd->inventory_data[i]->view_id;
else
WBUFW(buf,n*20+6)=sd->status.inventory[i].nameid;
WBUFB(buf,n*20+8)=(sd->inventory_data[i]->type == 7)? 4:sd->inventory_data[i]->type;
WBUFB(buf,n*20+9)=sd->status.inventory[i].identify;
WBUFW(buf,n*20+10)=pc_equippoint(sd,i);
WBUFW(buf,n*20+12)=sd->status.inventory[i].equip;
WBUFB(buf,n*20+14)=sd->status.inventory[i].attribute;
WBUFB(buf,n*20+15)=sd->status.inventory[i].refine;
if(sd->status.inventory[i].card[0]==0x00ff || sd->status.inventory[i].card[0]==0x00fe || sd->status.inventory[i].card[0]==(short)0xff00) {
WBUFW(buf,n*20+16)=sd->status.inventory[i].card[0];
WBUFW(buf,n*20+18)=sd->status.inventory[i].card[1];
WBUFW(buf,n*20+20)=sd->status.inventory[i].card[2];
WBUFW(buf,n*20+22)=sd->status.inventory[i].card[3];
}
else {
if(sd->status.inventory[i].card[0] > 0 && (j=itemdb_viewid(sd->status.inventory[i].card[0])) > 0)
WBUFW(buf,n*20+16)=j;
else
WBUFW(buf,n*20+16)=sd->status.inventory[i].card[0];
if(sd->status.inventory[i].card[1] > 0 && (j=itemdb_viewid(sd->status.inventory[i].card[1])) > 0)
WBUFW(buf,n*20+18)=j;
else
WBUFW(buf,n*20+18)=sd->status.inventory[i].card[1];
if(sd->status.inventory[i].card[2] > 0 && (j=itemdb_viewid(sd->status.inventory[i].card[2])) > 0)
WBUFW(buf,n*20+20)=j;
else
WBUFW(buf,n*20+20)=sd->status.inventory[i].card[2];
if(sd->status.inventory[i].card[3] > 0 && (j=itemdb_viewid(sd->status.inventory[i].card[3])) > 0)
WBUFW(buf,n*20+22)=j;
else
WBUFW(buf,n*20+22)=sd->status.inventory[i].card[3];
}
n++;
}
if(n){
WBUFW(buf,2)=4+n*20;
WFIFOSET(fd,WFIFOW(fd,2));
}
return 0;
}
/*==========================================
* 僇僾儔偝傫偵梐偗偰偁傞徚栒昳&廂廤昳儕僗僩
*------------------------------------------
*/
int clif_storageitemlist(struct map_session_data *sd,struct storage *stor)
{
struct item_data *id;
int i,n,fd=sd->fd;
unsigned char *buf = WFIFOP(fd,0);
#if PACKETVER < 5
WBUFW(buf,0)=0xa5;
for(i=0,n=0;i<MAX_STORAGE;i++){
if(stor->storage[i].nameid<=0)
continue;
id = itemdb_search(stor->storage[i].nameid);
if(itemdb_isequip2(id))
continue;
WBUFW(buf,n*10+4)=i+1;
if(id->view_id > 0)
WBUFW(buf,n*10+6)=id->view_id;
else
WBUFW(buf,n*10+6)=stor->storage[i].nameid;
WBUFB(buf,n*10+8)=id->type;;
WBUFB(buf,n*10+9)=stor->storage[i].identify;
WBUFW(buf,n*10+10)=stor->storage[i].amount;
WBUFW(buf,n*10+12)=0;
n++;
}
if(n){
WBUFW(buf,2)=4+n*10;
WFIFOSET(fd,WFIFOW(fd,2));
}
#else
WBUFW(buf,0)=0x1f0;
for(i=0,n=0;i<MAX_STORAGE;i++){
if(stor->storage[i].nameid<=0)
continue;
id = itemdb_search(stor->storage[i].nameid);
if(itemdb_isequip2(id))
continue;
WBUFW(buf,n*18+4)=i+1;
if(id->view_id > 0)
WBUFW(buf,n*18+6)=id->view_id;
else
WBUFW(buf,n*18+6)=stor->storage[i].nameid;
WBUFB(buf,n*18+8)=id->type;;
WBUFB(buf,n*18+9)=stor->storage[i].identify;
WBUFW(buf,n*18+10)=stor->storage[i].amount;
WBUFW(buf,n*18+12)=0;
WBUFW(buf,n*18+14)=stor->storage[i].card[0];
WBUFW(buf,n*18+16)=stor->storage[i].card[1];
WBUFW(buf,n*18+18)=stor->storage[i].card[2];
WBUFW(buf,n*18+20)=stor->storage[i].card[3];
n++;
}
if(n){
WBUFW(buf,2)=4+n*18;
WFIFOSET(fd,WFIFOW(fd,2));
}
#endif
return 0;
}
/*==========================================
* 僇僾儔偝傫偵梐偗偰偁傞憰旛儕僗僩
*------------------------------------------
*/
int clif_storageequiplist(struct map_session_data *sd,struct storage *stor)
{
struct item_data *id;
int i,j,n,fd=sd->fd;
unsigned char *buf = WFIFOP(fd,0);
WBUFW(buf,0)=0xa6;
for(i=0,n=0;i<MAX_STORAGE;i++){
if(stor->storage[i].nameid<=0)
continue;
id = itemdb_search(stor->storage[i].nameid);
if(!itemdb_isequip2(id))
continue;
WBUFW(buf,n*20+4)=i+1;
if(id->view_id > 0)
WBUFW(buf,n*20+6)=id->view_id;
else
WBUFW(buf,n*20+6)=stor->storage[i].nameid;
WBUFB(buf,n*20+8)=id->type;
WBUFB(buf,n*20+9)=stor->storage[i].identify;
WBUFW(buf,n*20+10)=id->equip;
WBUFW(buf,n*20+12)=stor->storage[i].equip;
WBUFB(buf,n*20+14)=stor->storage[i].attribute;
WBUFB(buf,n*20+15)=stor->storage[i].refine;
if(stor->storage[i].card[0]==0x00ff || stor->storage[i].card[0]==0x00fe || stor->storage[i].card[0]==(short)0xff00) {
WBUFW(buf,n*20+16)=stor->storage[i].card[0];
WBUFW(buf,n*20+18)=stor->storage[i].card[1];
WBUFW(buf,n*20+20)=stor->storage[i].card[2];
WBUFW(buf,n*20+22)=stor->storage[i].card[3];
}
else {
if(stor->storage[i].card[0] > 0 && (j=itemdb_viewid(stor->storage[i].card[0])) > 0)
WBUFW(buf,n*20+16)=j;
else
WBUFW(buf,n*20+16)=stor->storage[i].card[0];
if(stor->storage[i].card[1] > 0 && (j=itemdb_viewid(stor->storage[i].card[1])) > 0)
WBUFW(buf,n*20+18)=j;
else
WBUFW(buf,n*20+18)=stor->storage[i].card[1];
if(stor->storage[i].card[2] > 0 && (j=itemdb_viewid(stor->storage[i].card[2])) > 0)
WBUFW(buf,n*20+20)=j;
else
WBUFW(buf,n*20+20)=stor->storage[i].card[2];
if(stor->storage[i].card[3] > 0 && (j=itemdb_viewid(stor->storage[i].card[3])) > 0)
WBUFW(buf,n*20+22)=j;
else
WBUFW(buf,n*20+22)=stor->storage[i].card[3];
}
n++;
}
if(n){
WBUFW(buf,2)=4+n*20;
WFIFOSET(fd,WFIFOW(fd,2));
}
return 0;
}
/*==========================================
*
*------------------------------------------
*/
int clif_guildstorageitemlist(struct map_session_data *sd,struct guild_storage *stor)
{
struct item_data *id;
int i,n,fd=sd->fd;
unsigned char *buf = WFIFOP(fd,0);
#if PACKETVER < 5
WBUFW(buf,0)=0xa5;
for(i=0,n=0;i<MAX_GUILD_STORAGE;i++){
if(stor->storage[i].nameid<=0)
continue;
id = itemdb_search(stor->storage[i].nameid);
if(itemdb_isequip2(id))
continue;
WBUFW(buf,n*10+4)=i+1;
if(id->view_id > 0)
WBUFW(buf,n*10+6)=id->view_id;
else
WBUFW(buf,n*10+6)=stor->storage[i].nameid;
WBUFB(buf,n*10+8)=id->type;;
WBUFB(buf,n*10+9)=stor->storage[i].identify;
WBUFW(buf,n*10+10)=stor->storage[i].amount;
WBUFW(buf,n*10+12)=0;
n++;
}
if(n){
WBUFW(buf,2)=4+n*10;
WFIFOSET(fd,WFIFOW(fd,2));
}
#else
WBUFW(buf,0)=0x1f0;
for(i=0,n=0;i<MAX_GUILD_STORAGE;i++){
if(stor->storage[i].nameid<=0)
continue;
id = itemdb_search(stor->storage[i].nameid);
if(itemdb_isequip2(id))
continue;
WBUFW(buf,n*18+4)=i+1;
if(id->view_id > 0)
WBUFW(buf,n*18+6)=id->view_id;
else
WBUFW(buf,n*18+6)=stor->storage[i].nameid;
WBUFB(buf,n*18+8)=id->type;;
WBUFB(buf,n*18+9)=stor->storage[i].identify;
WBUFW(buf,n*18+10)=stor->storage[i].amount;
WBUFW(buf,n*18+12)=0;
WBUFW(buf,n*18+14)=stor->storage[i].card[0];
WBUFW(buf,n*18+16)=stor->storage[i].card[1];
WBUFW(buf,n*18+18)=stor->storage[i].card[2];
WBUFW(buf,n*18+20)=stor->storage[i].card[3];
n++;
}
if(n){
WBUFW(buf,2)=4+n*18;
WFIFOSET(fd,WFIFOW(fd,2));
}
#endif
return 0;
}
/*==========================================
*
*------------------------------------------
*/
int clif_guildstorageequiplist(struct map_session_data *sd,struct guild_storage *stor)
{
struct item_data *id;
int i,j,n,fd=sd->fd;
unsigned char *buf = WFIFOP(fd,0);
WBUFW(buf,0)=0xa6;
for(i=0,n=0;i<MAX_GUILD_STORAGE;i++){
if(stor->storage[i].nameid<=0)
continue;
id = itemdb_search(stor->storage[i].nameid);
if(!itemdb_isequip2(id))
continue;
WBUFW(buf,n*20+4)=i+1;
if(id->view_id > 0)
WBUFW(buf,n*20+6)=id->view_id;
else
WBUFW(buf,n*20+6)=stor->storage[i].nameid;
WBUFB(buf,n*20+8)=id->type;
WBUFB(buf,n*20+9)=stor->storage[i].identify;
WBUFW(buf,n*20+10)=id->equip;
WBUFW(buf,n*20+12)=stor->storage[i].equip;
WBUFB(buf,n*20+14)=stor->storage[i].attribute;
WBUFB(buf,n*20+15)=stor->storage[i].refine;
if(stor->storage[i].card[0]==0x00ff || stor->storage[i].card[0]==0x00fe || stor->storage[i].card[0]==(short)0xff00) {
WBUFW(buf,n*20+16)=stor->storage[i].card[0];
WBUFW(buf,n*20+18)=stor->storage[i].card[1];
WBUFW(buf,n*20+20)=stor->storage[i].card[2];
WBUFW(buf,n*20+22)=stor->storage[i].card[3];
}
else {
if(stor->storage[i].card[0] > 0 && (j=itemdb_viewid(stor->storage[i].card[0])) > 0)
WBUFW(buf,n*20+16)=j;
else
WBUFW(buf,n*20+16)=stor->storage[i].card[0];
if(stor->storage[i].card[1] > 0 && (j=itemdb_viewid(stor->storage[i].card[1])) > 0)
WBUFW(buf,n*20+18)=j;
else
WBUFW(buf,n*20+18)=stor->storage[i].card[1];
if(stor->storage[i].card[2] > 0 && (j=itemdb_viewid(stor->storage[i].card[2])) > 0)
WBUFW(buf,n*20+20)=j;
else
WBUFW(buf,n*20+20)=stor->storage[i].card[2];
if(stor->storage[i].card[3] > 0 && (j=itemdb_viewid(stor->storage[i].card[3])) > 0)
WBUFW(buf,n*20+22)=j;
else
WBUFW(buf,n*20+22)=stor->storage[i].card[3];
}
n++;
}
if(n){
WBUFW(buf,2)=4+n*20;
WFIFOSET(fd,WFIFOW(fd,2));
}
return 0;
}
/*==========================================
* 僗僥乕僞僗傪憲傝偮偗傞
* 昞帵愱梡悢帤偼偙偺拞偱寁嶼偟偰憲傞
*------------------------------------------
*/
int clif_updatestatus(struct map_session_data *sd,int type)
{
int fd=sd->fd,len=8;
WFIFOW(fd,0)=0xb0;
WFIFOW(fd,2)=type;
switch(type){
// 00b0
case SP_WEIGHT:
pc_checkweighticon(sd);
WFIFOW(fd,0)=0xb0;
WFIFOW(fd,2)=type;
WFIFOL(fd,4)=sd->weight;
break;
case SP_MAXWEIGHT:
WFIFOL(fd,4)=sd->max_weight;
break;
case SP_SPEED:
WFIFOL(fd,4)=sd->speed;
break;
case SP_BASELEVEL:
WFIFOL(fd,4)=sd->status.base_level;
break;
case SP_JOBLEVEL:
WFIFOL(fd,4)=sd->status.job_level;
break;
case SP_STATUSPOINT:
WFIFOL(fd,4)=sd->status.status_point;
break;
case SP_SKILLPOINT:
WFIFOL(fd,4)=sd->status.skill_point;
break;
case SP_HIT:
WFIFOL(fd,4)=sd->hit;
break;
case SP_FLEE1:
WFIFOL(fd,4)=sd->flee;
break;
case SP_FLEE2:
WFIFOL(fd,4)=sd->flee2/10;
break;
case SP_MAXHP:
WFIFOL(fd,4)=sd->status.max_hp;
break;
case SP_MAXSP:
WFIFOL(fd,4)=sd->status.max_sp;
break;
case SP_HP:
WFIFOL(fd,4)=sd->status.hp;
break;
case SP_SP:
WFIFOL(fd,4)=sd->status.sp;
break;
case SP_ASPD:
WFIFOL(fd,4)=sd->aspd;
break;
case SP_ATK1:
WFIFOL(fd,4)=sd->base_atk+sd->watk;
break;
case SP_DEF1:
WFIFOL(fd,4)=sd->def;
break;
case SP_MDEF1:
WFIFOL(fd,4)=sd->mdef;
break;
case SP_ATK2:
WFIFOL(fd,4)=sd->watk2;
break;
case SP_DEF2:
WFIFOL(fd,4)=sd->def2;
break;
case SP_MDEF2:
WFIFOL(fd,4)=sd->mdef2;
break;
case SP_CRITICAL:
WFIFOL(fd,4)=sd->critical/10;
break;
case SP_MATK1:
WFIFOL(fd,4)=sd->matk1;
break;
case SP_MATK2:
WFIFOL(fd,4)=sd->matk2;
break;
// 00b1 廔椆
case SP_ZENY:
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=sd->status.zeny;
break;
case SP_BASEEXP:
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=sd->status.base_exp;
break;
case SP_JOBEXP:
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=sd->status.job_exp;
break;
case SP_NEXTBASEEXP:
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=pc_nextbaseexp(sd);
break;
case SP_NEXTJOBEXP:
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=pc_nextjobexp(sd);
break;
// 00be 廔椆
case SP_USTR:
case SP_UAGI:
case SP_UVIT:
case SP_UINT:
case SP_UDEX:
case SP_ULUK:
WFIFOW(fd,0)=0xbe;
WFIFOB(fd,4)=pc_need_status_point(sd,type-SP_USTR+SP_STR);
len=5;
break;
// 013a 廔椆
case SP_ATTACKRANGE:
WFIFOW(fd,0)=0x13a;
WFIFOW(fd,2)=sd->attackrange;
len=4;
break;
// 0141 廔椆
case SP_STR:
WFIFOW(fd,0)=0x141;
WFIFOL(fd,2)=type;
WFIFOL(fd,6)=sd->status.str;
WFIFOL(fd,10)=sd->paramb[0] + sd->parame[0];
len=14;
break;
case SP_AGI:
WFIFOW(fd,0)=0x141;
WFIFOL(fd,2)=type;
WFIFOL(fd,6)=sd->status.agi;
WFIFOL(fd,10)=sd->paramb[1] + sd->parame[1];
len=14;
break;
case SP_VIT:
WFIFOW(fd,0)=0x141;
WFIFOL(fd,2)=type;
WFIFOL(fd,6)=sd->status.vit;
WFIFOL(fd,10)=sd->paramb[2] + sd->parame[2];
len=14;
break;
case SP_INT:
WFIFOW(fd,0)=0x141;
WFIFOL(fd,2)=type;
WFIFOL(fd,6)=sd->status.int_;
WFIFOL(fd,10)=sd->paramb[3] + sd->parame[3];
len=14;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -