[wizs] 虛擬物品掉落率公式設定的三種型式

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間15年前 (2010/12/24 14:42), 編輯推噓0(000)
留言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)
文章代碼(AID): #1D5432HU (mud_sanc)
文章代碼(AID): #1D5432HU (mud_sanc)