[wizs] 虛擬物品掉落率公式設定的三種型式
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間15年前 (2010/12/24 14:42)推噓0(0推 0噓 0→)留言0則, 0人參與討論串1/2 (看更多)
先說結論, 聖殿將採取跟 RO 類似的設定.
type 1:
if 物品a掉落率 > 某值
掉落物品a;
else if 物品b掉落率 > 某值
掉落物品b;
.
.
type 2:
switch(n)
{
case 0..a: 掉落物品a ; break;
case a..b: 掉落物品b ; break;
case b..c: 掉落物品c ; break;
.
.
}
type3(RO 模式):
if 物品a掉落率 > 某值
掉落物品a;
if 物品b掉落率 > 某值
掉落物品b;
if 物品c掉落率 > 某值
掉落物品c;
.
.
.
RO 怪物的物品掉落特性是..
1.可掉落的物品總數設定, 每隻怪物都不一樣
2.打死一隻怪可能會掉複數物品
3.有時會有掉寶率倍增的活動
根據上述設定, 以巧克猴為例, 假設 0.02% 用數字 2 替代..
set("mob_drops",(["猴子指甲" :5500, //55%
"猴子尾巴" :7000, //70%
"鋁" :53, //0.53%
"香蕉" :5000, //以此類推
"魔物香蕉" :20,
"香蕉汁" :1000,
"天地樹果實":25,
"巧克猴卡片":2,
]));
那麼掉落物品的程式段就可以統一寫為底下...
#define COMMON_NUM 10000
mapping mob_drops=(mapping)mob->query("mob_drops");
mixed tmps=keys(mob_drops);
string ob_names;
foreach(ob_names in tmps)
if((int)mob_drops[ob_names] > random(COMMON_NUM))
執行該 ob_names 的物品掉落;
這樣一來,每個物品的掉落機率都可以獨立設定,而且允許
掉落複數物品。而若要設定掉寶率倍增,也只需修改上面的
COMMON_NUM 即可(例如改為 5000)
平常時: 2>random(10000) 的機率是 2/10000 = 0.02%
倍增時: 2>random(5000) 的機率是 2/5000 = 0.04%
再由 RO 的例子就可以發現它的掉落機率設定原則分兩個..
1.必定有固定掉落機率的東西
如卡片肯定是 0.02%, 所有怪物的卡片都一樣
2.其它東西的機率就隨意
聖殿要做這東西的關鍵處有三個..
1.資料結構
2.foreach內的東西
3.如何做出與RO的基本區別
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 115.83.43.91 (12/24 14:47)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
21
49