精華區beta mud_sanc 關於我們 聯絡資訊
假設在怪物的 die 函數中加上一行 if(SPECIAL_EVENT->query("have_event")) SPECIAL_EVENT->check_event(); 不過這會造成 SPECIAL_EVENT 的頻繁讀取. 所以我想到另一個 方法... #ifdef SPECIAL_EVENT "/adm/daemons/special_event"->check_event( this_player(),this_object()->query("short"),SPECIAL_EVENT); #endif 不過問題在於 SPECIAL_EVENT 的定義位置, 一般來說, 都是放 在 /include 下, 但也可以讓 SPECIAL_EVENT 放在一個新定義 的 xxx.h 中, 而這個 xxx.h 可以讓它放在其它地方. 這樣理論上, wiz.3 就可以自辦活動, 我的想法是.. int check_event(object ppl,string mob_name,string str) { object ob; if(!ppl) return 1; switch(str) { case "mid-fall": if(random(10)==5) { tell_object(ppl,"[ 從"+mob_name+"身上掉出了幸運果子! ]\n"NOR); ob=clone_object("xxx"); ob->move(ppl); } break; . . . } return 1; } 這個東西的用意是, 依照 SPECIAL_EVENT 的不同, 打死怪物會掉不同 的東西 or 觸發不同的事件 or 產生不一樣的效果. 它的缺點是只限於「打死怪物時」,但這是因為它被定義在 die 函數 中, 換言之, 只要將它寫在其它的程式段落, 它的功用就不會被侷限. 最近我會把上面實裝看看. 原則上, 各 event 亦可由 wiz 來自訂,我 是希望將來同一個節慶, 能舉辦的活動種類也是可以有所不同的。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.114.47.24