HOME

ROのエミュについて解説するサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。
別窓 | スポンサー広告 | ∧top | under∨

SRC改造 mob.c


SRC改造 mob.c


Athenaのソースを変更することにより、本鯖とは一味違ったRagnarokを体験できる。
今回は、mob.cを変更して、以下を実装する。
mob.cの格納場所は、[athena\src\map\mob.c]

 ・ドロップ複数個化



ソースを変更したら、コンパイルし直すこと。
Cygwinでの再コンパイルの仕方は、以下を参照。

 ・Athenaの構築




[ドロップ複数個化]
 今回は、battle_athena.confに記述されている「item_rate」を使用し、
 アイテムが複数個ドロップするように変更する。
 最新版Athenaでは、「item_multi_drop」の項目があるが、
 ドロップ個数は必ず最大1個になるため、今回は使用しないことにする。


ドロップ判定の回数は、item_rateで決定される。
100で1回判定、200で2回判定・・・を行うことになる。
src_mobc01

[mob.c mob_damage関数 1912行目から]の
item_dropに関する箇所をすべてコメントアウトする。

※使用しているAthenaのバージョンによって
 行数が違うので注意。
src_mobc02

[mob.c mob_damage関数 1936行目から]に
下記のプログラムを追加する。

今回はドロップ個数が100以上にならないようにしているが、
自分の好みに合わせて数値を変更すればよい。
src_mob03

[mob.c mob_damage関数 1936行目から]
int num=0,j;

drop_rate = mob_db[md->class].dropitem[i].p;
if(drop_rate <= 0 && battle_config.drop_rate0item)
  drop_rate = 1;
for(j=battle_config.item_rate/100; j>0; j--) {
  if(drop_rate > atn_rand()%10000)
    num++;
}
if(num == 0)
  continue;
if(num > 100)
  num=100;

if(itemdb_type(mob_db[md->class].dropitem[i].nameid) == 4 ||
  itemdb_type(mob_db[md->class].dropitem[i].nameid) == 5 ||
  itemdb_type(mob_db[md->class].dropitem[i].nameid) == 8
     num=1;
//numは
//dropした個数
//drop率0%も
//dropする設定
//なら1で固定
//
//item_rate/100
//回判定する
//
//
//
//dropした個数
//100で固定
//
//装備アイテム
//ならば個数を
//1にする
//




もし、jAthenaや古いバージョンのAthenaを使用している場合は、下記の変更も必要。

[mob.c mob_damage関数 1910行目]を
下記に変更する。

src_mobc04
[mob.c mob_damage関数 1910行目]
ditem->amount = num;


[mob.c mob_delay_item_drop関数 1478行目]を
下記に変更する。

src_mobc05
[mob.c mob_delay_item_drop関数 1478行目]
map_addflooritem(&temp_item,ditem->amount,
  ditem->m,ditem->x,ditem->y,
  ditem->first_bl,ditem->second_bl,ditem->third_bl,0);

別窓 | エミュレータの設定 | コメント:0 | ∧top | under∨
<<Aurigaの構築 | ROミュの日々 | SRC改造 mmo.h>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

| HOME |