2010 081234567891011121314151617181920212223242526272829302010 10

TOP > Auriga/eAthena > title − 【Auriga】mvpmob_item_drop_rate【Athenaからの移植】
 【Auriga】mvpmob_item_drop_rate【Athenaからの移植】
Aurigaには確かないと思うんだけど、(もしかしたら同じようなのがあるかも?)



Athenaには、↓のような設定がありました(ノ)・ω・(ヾ)ムニムニ



MVPモンスターの通常アイテム,カードのドロップ率(他の倍率に足される)

100,及び-100で1倍、0でドロップ無し -100以下の値を指定するとその分ドロップ率を減らす



Aurigaに移植した際のめもです(・艸・`*)




battle_auriga.conf または, battle_conf.txtに以下を追加

// MVPモンスターの通常アイテム,カードのドロップ率(他の倍率に足される)
// 100,及び-100で1倍、0でドロップ無し -100以下の値を指定するとその分ドロップ率を減らす
mvpmob_item_drop_rate: 100
mvpmob_card_drop_rate: 100

rateは各自で設定してください.

*★*―――――*★*―――――*★*―――――*★*―――――*★*

atcommand.c
L 5700行周辺 atcommand_mobinfo関数

        int rate;
        if (m->dropitem[i].nameid <= 0 || (item_data = itemdb_exists(m->dropitem[i].nameid)) == NULL)
            continue;
        rate = mob_droprate_fix(&sd->bl, m->dropitem[i].nameid, m->dropitem[i].p);
//------------------追加---------------------------
        if(m->mexp)
            rate = mob_droprate_fix(&sd->bl, m->dropitem[i].nameid, m->dropitem[i].p, 1);
        else
            rate = mob_droprate_fix(&sd->bl, m->dropitem[i].nameid, m->dropitem[i].p, 0);
//---------------------ここまで--------------------

        if (rate > 0) {
            len += sprintf(output + len, " - %s  %02.02lf%%", item_data->jname, (double)rate / 100.);

赤い部分を消し、青い部分を追加.

*★*―――――*★*―――――*★*―――――*★*―――――*★*

battle.c
 L5750行周辺

        { "refinery_research_lv",               &battle_config.refinery_research_lv,               0        },
        { "maprespawnguildid_all_players",      &battle_config.maprespawnguildid_all_players,      0        },
//------------------追加--------------------
        { "mvpmob_item_drop_rate",                &battle_config.mvpmob_item_drop_rate,               100        },
        { "mvpmob_card_drop_rate",                &battle_config.mvpmob_card_drop_rate,               100        },
//---------------------ここまで--------------------
        { NULL,                                 NULL,                                              0        },
    };

青い部分を追加

*★*―――――*★*―――――*★*―――――*★*―――――*★*

battle.h
L570周辺
    int trap_splash_on;
    int firepillar_splash_on;
    int mob_nohitstop_rate;
    int refinery_research_lv;
    int maprespawnguildid_all_players;
//------------------追加-------------by mame-------
    int mvpmob_item_drop_rate;
    int mvpmob_card_drop_rate;
//---------------------ここまで--------------------

} battle_config;

青い部分を追加

*★*―――――*★*―――――*★*―――――*★*―――――*★*

mob.c
L1900行周辺

                if(mob_db[md->class_].dropitem[i].nameid <= 0)
                    continue;
                drop_rate = mob_droprate_fix( src, mob_db[md->class_].dropitem[i].nameid, mob_db[md->class_].dropitem[i].p );
//------------------追加-------------by mame-------
                if(mob_db[md->class_].mexp > 0)
                    drop_rate = mob_droprate_fix( src, mob_db[md->class_].dropitem[i].nameid, mob_db[md->class_].dropitem[i].p,1 );
                else
                    drop_rate = mob_droprate_fix( src, mob_db[md->class_].dropitem[i].nameid, mob_db[md->class_].dropitem[i].p,0 );
//---------------------ここまで--------------------

                if(drop_rate <= 0 && battle_config.drop_rate0item)
                    drop_rate = 1;
                if(drop_rate <= atn_rand()%10000)
                    continue;

赤い部分を消し、青い部分を追加

mob_droprate_fix関数
L2281行周辺

/*==========================================
 * ドロップ率に倍率を適用
 *------------------------------------------
 */
int mob_droprate_fix(struct block_list *bl,int item,int drop, int mvp)
{

青い部分を追加

同じ関数のバブルガムの上あたり

                break;
            default:
                drop_fix = drop * battle_config.other_drop_rate / 100;
                break;
        }
    }

//------------------追加-------------------
    if(mvp) {
        if(battle_config.mvpmob_card_drop_rate<0) {
            if(itemdb_type(item)==6) {
                drop_fix = (drop_fix*100)/-battle_config.mvpmob_card_drop_rate;
            } else {
                drop_fix = (drop_fix*100)/-battle_config.mvpmob_item_drop_rate;
            }
        } else {
            if(itemdb_type(item)==6) {
                drop_fix = (drop_fix*battle_config.mvpmob_card_drop_rate)/100;
            } else {
                drop_fix = (drop_fix*battle_config.mvpmob_item_drop_rate)/100;
            }
        }
    }
//---------------------ここまで--------------------

    // バブルガム
    if(sc && sc->data[SC_ITEMDROPRATE].timer != -1)
        drop_fix = drop_fix * sc->data[SC_ITEMDROPRATE].val1 / 100;

青い部分を追加

*★*―――――*★*―――――*★*―――――*★*―――――*★*

mob.h
L 220行目周辺

int mob_droprate_fix(struct block_list *bl,int item,int drop , int mvp);

青い部分を追加

*★*―――――*★*―――――*★*―――――*★*―――――*★*

pc.c
L2900周辺
int pc_bonus3関数

    switch(type) {
    case SP_ADD_MONSTER_DROP_ITEM:
        if(sd->state.lr_flag != 2) {
            if(battle_config.dropitem_itemrate_fix == 1)
                val = mob_droprate_fix(&sd->bl,type2,val);
//------------------追加-------------by mame-------
                val = mob_droprate_fix(&sd->bl,type2,val,0);
//---------------------ここまで--------------------

            else if(battle_config.dropitem_itemrate_fix > 1)
                val = val * battle_config.dropitem_itemrate_fix / 100;
            for(i=0; i<sd->monster_drop_item_count; i++) {

赤い部分を消して青い部分を追加

カテゴリ【Auriga/eAthenaトラックバック(0) | コメント(0) | top↑

+ Comment List +

<<【Ragexe】Lua_filesスキル日本語化 | ホーム | 【Auriga】エンペバグ修正>>















管理者にだけ表示を許可する

トラックバックURL
http://xachux.blog109.fc2.com/tb.php/68-bae44e6e 
この記事にトラックバックする(FC2ブログユーザー)

| ホーム |