Re: [wizs] 怪物掉落物系統
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間17年前 (2009/01/17 15:57)推噓0(0推 0噓 0→)留言0則, 0人參與討論串3/5 (看更多)
現在來看 /d/obj/mob_drop 下的檔案,先看 /d/obj/mob_drop/mob_drop.h
:::::::::::::: /d/obj/mob_drop/mob_drop.h ::::::::::::::
// Laechan@Sanc add in 2007/11/25
// 掉寶機率設定
// 600 代表 60%, 以此類推
#define MOB_DROP_D "/d/obj/mob_drop/mob_drop_d.c"
#define DROP_CHANCE ([\
"60":600,\
"55":550,\
"50":500,\
"45":450,\
.
.
.
(靠北這個 2007 年就寫了,我這一年多都在幹嘛...Orz)
這東西的用意就是,好比說我們定義了一串 drop_chance(請看掉落
機率設定那篇),設法就是
mixed drop_chance=({});
drop_chance = ({"物品a", "60", // 掉落機率 60%
"物品b", "2.5", // 掉落機率 2.5%
"物品c", "0.1", // 掉落機率 0.1%
})
則在做 for 迴圈時它的主要寫法就是..
j=sizeof(drop_chance);
total=1000;
for(i=0;i<j;i=i+2)
{
k = DROP_CHANCE[ drop_chance[i+1] ];
if(random(total)<k)
{
執行掉落物品;
break;
}
total=total-k;
}
它的用意就是,因為 "0.1%" 這種東西實際上是 1/1000,所以
才會定義一個對照用的東西,這樣在給定機率時就可以給字串的
"0.1",在做判斷時它就會自動對回 1 這個數字。
它有兩種好處...
一、因為機率的設定幾乎是固定的。就固定那幾種而已,50% 啦
、30% 啦、20% 啦、15% 啦(不會很機車的設 23%, 17% ..)
,而越低的機率就會越用到小數點,如 3.5%、2.5%、..
既然就固定這幾個而已,那只要全把它們定義起來就行了。
二、有時候我們會想要調整機率。例如「扣除 5% 以下的東西不
算,取得機率 5% 以上的東西,在某個節慶期間的機率全部
乘以 2」,在這情況下一樣只需更動上面的設定檔即可。
(而不用再去改各位 wiz 們所自訂的 mob_drop_ob)
所以各 wiz 們在設定機率時請務必先去看看 mob_drop.h 有沒有
定義你想設的機率,若沒有的話請跟 highelf 反映,好讓他補上
去。
在一般情況下 "60" 就是對到 600,"0.2" 就是對到 2,其它以此
類推。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.225.67
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19