Re: [wizs] 怪物掉落物系統

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間17年前 (2009/01/17 15:57), 編輯推噓0(000)
留言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
文章代碼(AID): #19SOzRZq (mud_sanc)
文章代碼(AID): #19SOzRZq (mud_sanc)