作者laechan (小太保)
看板mud_sanc
标题[wizs] 虚拟物品掉落率公式设定的三种型式
时间Fri Dec 24 14:15:37 2010
先说结论, 圣殿将采取跟 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)