item.c
来自「CS反恐精英1.6的部分C源代码。」· C语言 代码 · 共 429 行 · 第 1/2 页
C
429 行
0000:speed 0003:evildoing value 0004:manner points 0005:HP 0006:MaxHP
0007:SP 0008:MaxSP 0009:status point 000b:base level
000c:skill point 0018:weight(10x input)
0019:maximum weight(10x input)
0029:ATK(before) 002a:ATK(after) 002b:MATK(before) 002c:MATK(after)
002d:DEF(before) 002e:DEF(after) 002f:MDEF(before) 0030:MDEF(after)
0031:HIT 0032:FLEE(before) 0033:FLEE(after) 0034:critical
0035:ASPD(2ms?) 0037:job level
0082:unsure...ATK(same as after)?
*/
WFIFOW(fd,0) = 0xb0;
WFIFOW(fd,2) = 0005;
WFIFOL(fd,4) = p->hp;
WFIFOSET(fd,8);
WFIFOW(fd,0) = 0xb0;
WFIFOW(fd,2) = 0007;
WFIFOL(fd,4) = p->sp;
WFIFOSET(fd,8);
}else if(item_num==2){//if item has special effect
WFIFOW(fd,0) = 0xa8;
WFIFOW(fd,2) = RFIFOW(fd,2);
WFIFOW(fd,4) = --p->inventory[RFIFOW(fd,2)-2].amount;
WFIFOB(fd,6) = 01;
WFIFOSET(fd,7);
if(p->inventory[RFIFOW(fd,2)-2].amount <= 0){
p->inventory[RFIFOW(fd,2)-2].nameid=0;
}
if(nameid==602){//wing of butterfly
mmo_map_changemap(fd,sd,p->save_point.map,p->save_point.x,p->save_point.y,2);
}else if(nameid==601){//僿ing of fly
do {
sd->x=rand()%(map_data[sd->mapno].xs-2)+1;
sd->y=rand()%(map_data[sd->mapno].ys-2)+1;
} while(map_data[sd->mapno].gat[sd->x+sd->y*map_data[sd->mapno].xs]==1 || map_data[sd->mapno].gat[sd->x+sd->y*map_data[sd->mapno].xs]==5);
mmo_map_changemap(fd,sd,sd->mapname,sd->x,sd->y,2);
}else if(nameid==611){//magnifying glass
int i,c;
WFIFOW(fd,0) = 0x177;
for(i=c=0;i<100;i++)
//if item hasn乫t been appraised
if(sd->status.inventory[i].identify != 1)
{
WFIFOW(fd,4+c*2) = i+2;//sd->status.inventory[i].nameid;
c++;
}
WFIFOW(fd,2) = 4+c*2;
WFIFOSET(fd,4+c*2);
}else if(nameid==604){//dead branch(summons random enemy)
/*
int mapno,npc;
unsigned char buf[256];
mapno = sd->mapno;
npc = (double)(((double)rand()/(double)RAND_MAX) * 250) + 1001;
map_data[sd->mapno].npc[npc]->x = sd->x;
map_data[sd->mapno].npc[npc]->y = sd->y;
map_data[mapno].npc[map_data[mapno].npc_num]=malloc(sizeof(struct npc_data));
map_data[mapno].npc[map_data[mapno].npc_num]->u.mons.speed=200;
map_data[mapno].npc[map_data[mapno].npc_num]->class=npc;
map_data[mapno].npc[map_data[mapno].npc_num]->id=npc;
map_data[mapno].npc[map_data[mapno].npc_num]->block.subtype=MONS;
map_data[mapno].npc[map_data[mapno].npc_num]->u.mons.hp=10;
map_data[mapno].npc[map_data[mapno].npc_num]->u.mons.script = 1;
memcpy(map_data[mapno].npc[map_data[mapno].npc_num]->name,npc,24);
respawn_mons2(mapno,map_data[mapno].npc_num);
map_data[mapno].npc_num++;
*/
}else if(nameid==605){//anodyne
WFIFOW(fd,0) = 0x147;
WFIFOW(fd,2) = 8;
WFIFOW(fd,4) = skill_db[8].type_inf;
WFIFOW(fd,6) = 0;
WFIFOW(fd,8) = 1;
WFIFOW(fd,10) = skill_db[8].sp;
WFIFOW(fd,12) = skill_db[8].range;
memcpy(WFIFOP(fd,14),"Anodyne",24);
WFIFOB(fd,38) = 0;
mmo_map_sendarea(fd,WFIFOP(fd,0),39,0);
}else if(nameid==606){//aloebera(full SP recovery)
p->sp = p->max_sp;
WFIFOW(fd,0) = 0xb0;
WFIFOW(fd,2) = 0007;
WFIFOL(fd,4) = p->sp;
WFIFOSET(fd,8);
}else if(nameid==607){//yggdrasilberry(full HP/SP recovery)
p->hp = p->max_hp;
p->sp = p->max_sp;
WFIFOW(fd,0) = 0xb0;
WFIFOW(fd,2) = 0005;
WFIFOL(fd,4) = p->hp;
WFIFOSET(fd,8);
WFIFOW(fd,0) = 0xb0;
WFIFOW(fd,2) = 0007;
WFIFOL(fd,4) = p->sp;
WFIFOSET(fd,8);
}else if(nameid==608){//seed of yggdrasil(semi HP/SP recovery)
p->hp += p->max_hp/2;
p->sp += p->max_sp/2;
if(p->hp > p->max_hp)p->hp = p->max_hp;
if(p->sp > p->max_sp)p->sp = p->max_sp;
WFIFOW(fd,0) = 0xb0;
WFIFOW(fd,2) = 0005;
WFIFOL(fd,4) = p->hp;
WFIFOSET(fd,8);
WFIFOW(fd,0) = 0xb0;
WFIFOW(fd,2) = 0007;
WFIFOL(fd,4) = p->sp;
WFIFOSET(fd,8);
}else if(nameid==609){//amulet
}else if(nameid==610){//leaf of yggdrasil(resurrect w/1hp)
WFIFOW(fd,0) = 0x147;
WFIFOW(fd,2) = 54;
WFIFOW(fd,4) = skill_db[54].type_inf;
WFIFOW(fd,6) = 0;
WFIFOW(fd,8) = 1;
WFIFOW(fd,10) = skill_db[54].sp;
WFIFOW(fd,12) = skill_db[54].range;
memcpy(WFIFOP(fd,14),"Leaf of Yggdrasil",24);
WFIFOB(fd,38) = 0;
mmo_map_sendarea(fd,WFIFOP(fd,0),39,0);
}else if(nameid==603){//old blue box(random item generation)
int i1=502,i2=1,len=0;
struct item tmp_item;
i1 = search_item(1);
if(i1>7000 || (619 <= i1 && i1 <= 643) ||
(1256 <= i1 && i1<=1261)){i1=644;}//becomes unstable after 7000
memset(&tmp_item,0,sizeof(tmp_item));
tmp_item.nameid=i1;
tmp_item.amount=i2;
tmp_item.identify=1;
len=mmo_map_item_get(fd,WFIFOP(fd,0),&tmp_item);
if(len>0) WFIFOSET(fd,len);
}else if(nameid==616){//old card (random card generation)
int i1=502,i2=1,len=0;
struct item tmp_item;
i1 = search_item(3);
if(i1>7000 || (619 <= i1 && i1 <= 643) ||
(1256 <= i1 && i1<=1261)){i1=644;}//becomes unstable after 7000
memset(&tmp_item,0,sizeof(tmp_item));
tmp_item.nameid=i1;
tmp_item.amount=i2;
tmp_item.identify=1;
len=mmo_map_item_get(fd,WFIFOP(fd,0),&tmp_item);
if(len>0) WFIFOSET(fd,len);
}else if(nameid==617){//old purple box(random equipment generation)
int i1=502,i2=1,len=0;
struct item tmp_item;
i1 = search_item(2);
if(i1>7000 || (619 <= i1 && i1 <= 643) ||
(1256 <= i1 && i1<=1261)){i1=644;}//becomes unstable after 7000
memset(&tmp_item,0,sizeof(tmp_item));
tmp_item.nameid=i1;
tmp_item.amount=i2;
tmp_item.identify=1;
len=mmo_map_item_get(fd,WFIFOP(fd,0),&tmp_item);
if(len>0) WFIFOSET(fd,len);
}else if(nameid==618){//屆偄姫暔
int i1=502,i2=1,len=0;
struct item tmp_item;
i1 = search_item(3);
if(i1>7000 || (619 <= i1 && i1 <= 643) ||
(1256 <= i1 && i1<=1261)){i1=644;}//becomes unstable after 7000
memset(&tmp_item,0,sizeof(tmp_item));
tmp_item.nameid=i1;
tmp_item.amount=i2;
tmp_item.identify=1;
len=mmo_map_item_get(fd,WFIFOP(fd,0),&tmp_item);
if(len>0) WFIFOSET(fd,len);
}else if(nameid==644){//present box(random card丄equipment丄consumable generation)
int i1=502,i2=1,len=0;
struct item tmp_item;
i1 = search_item(4);
if(i1>7000 || (619 <= i1 && i1 <= 643) ||
(1256 <= i1 && i1<=1261)){i1=644;}//becomes unstable after 7000
memset(&tmp_item,0,sizeof(tmp_item));
tmp_item.nameid=i1;
tmp_item.amount=i2;
tmp_item.identify=1;
len=mmo_map_item_get(fd,WFIFOP(fd,0),&tmp_item);
if(len>0) WFIFOSET(fd,len);
}else if(nameid == 643){// ADDED on 04/09/2003 --------------
int i,c;
WFIFOW(fd,0) = 0x1a6;
for(i=c=0;i<100;i++)
//if egg
if((sd->status.inventory[i].nameid >= 9001)&&(sd->status.inventory[i].nameid <=9024))
{
WFIFOW(fd,4+c*2) = i+2;//sd->status.inventory[i].nameid;
c++;
}
WFIFOW(fd,2) = 4+c*2;
WFIFOSET(fd,4+c*2);
//WFIFOW(fd,0) = 0x1a6;
//WFIFOW(fd,2) = 6;
//WFIFOW(fd,4) = RFIFOW(fd,2);
//WFIFOSET(fd,6);
//printf("index=%d\n",RFIFOW(fd,2));
// --------------------------------------------------
}
}else{
if(nameid==714){//emperium (to start a guild)
}
}
}
/********************************************************************************************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?