看板 mud_sanc 關於我們 聯絡資訊
下午針對 instance_room.c 做了一些修改,可讓玩家進入副本 房間時執行特定的動作,例如: > look [副本]黑熊洞窟第一層 一座陰暗的洞窟,在這裡不時會聽到黑熊的低吼聲。 明顯出口有: north 和 south. 三鍋Lv150.[副本怪] 邪 惡 黑 熊(Bear) > drinking drinking: 你要喝什麼? > drinking test drinking: 你想喝 test. > da here instance_action :"drinking" > more 004.c int instance_action(string str,object ppl,object room) { string files=room->query("instance_files"); files=substr(files,instance_paths,""); // 這兩行固定的 switch(files) { case "002": if(!str || str=="") return notify_fail("drinking: 你要喝什麼?\n"); return notify_fail("drinking: 你想喝 "+str+".\n"); break; } return notify_fail(""); } 如上所示,它會將 str、ppl 及 room 傳過去,基本上 ppl 不傳也可(因為 ppl = this_player()),簡單的說就是,如 果房間有 instance_action,就可以在副件腳本裡面定義在 該房間執行動作時要產生什麼樣的結果。 這種寫法遵循的原則同樣是「希望副本裡的一切,在 wiz去 more 副本腳本時就能一目瞭然」。從 004.c 亦可看出當初 副本不採「腳本化」而是採「腳本物件」形式的決定是正確 的,因為腳本很難做到這麼細,最終只能像 quest 那樣部份 腳本化→那還不如一開始就把腳本物件化。 那麼理論上,要執行兩種動作以上是可行的,但我個人希望 副本不要寫那麼複雜。 LAechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.157.53 ※ 文章網址: http://www.ptt.cc/bbs/mud_sanc/M.1398147166.A.606.html