MOB殲滅匹数をカウントするための改造内容。

まず、お手元にあります pc.c を開いてください。

695行目辺りだと思いますが、目印はこの行。


//スパノビ用死にカウンターのスクリプト変数からの読み出しとsdへのセット
sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER");

sd->kill_counter = pc_readglobalreg(sd,"KILL_MOB_COUNTER");


赤いのを挿入してください。

次に、同じく pc.c の中で5200行目辺り。


//PC_DIE_COUNTERがスクリプトなどで変更された時の処理
if(strcmp(reg,"PC_DIE_COUNTER") == 0 && sd->die_counter != val){
sd->die_counter = val;
pc_calcstatus(sd,0);
}
if(strcmp(reg,"KILL_MOB_COUNTER") == 0 && sd->kill_counter != val){
sd->kill_counter = val;
pc_calcstatus(sd,0);
}


同じく、赤いとこを挿入してください。

次に、 map.h の中ごろ。 map_session_dataの中。
int kill_counter;
って、適当に足して置いてください。
int die_counter;のちょっと下辺りが無難かな。

そして、最後に mob.c を開いて、大体2220行目辺り。mob_damage()の最後の辺です。


if(sd)
pc_setglobalreg(sd,"KILL_MOB_COUNTER",++sd->kill_counter); //殲滅カウンター書き込み

clif_clearchar_area(&md->bl,1);
map_delblock(&md->bl);
if(mob_get_viewclass(md->class) <= 1000)
clif_clearchar_delay(tick+3000,&md->bl,0);
mob_deleteslave(md);
mob_setdelayspawn(md->bl.id);
map_freeblock_unlock();

return 0;
}


赤いとこを挿入してください。

あとは、コンパイルし直せば、MOBに止めを指すたびに、KILL_MOB_COUNTERという名前でathena.txtの方に保存されます。

最初はserver_data.cgi用ではなく、NPCで物知りじいさん風のを作ろうと思ったのがきっかけなので、こんな形になりました。