[摳頂] 副本系統

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間12年前 (2014/02/21 08:35), 編輯推噓0(007)
留言7則, 1人參與, 最新討論串1/1
#define INSTANCE_ROOM static mixed files=({}); static mapping instance_area=([]); int product_instance(object ppl) { string f,names; object room,ob; names=ppl->query("name"); instance_room[names]=([]); foreach(f in files) { if(!file_exists(f+".c")) { write("副本產生失敗!\n"); return 1; } else if(catch(room=find_object_or_load(f))) { write("副本產生失敗!\n"); return 1; } ob=clone_object(INSTANCE_ROOM); ob->set("short",room->query("short")); ob->set("long",room->query("long")); ob->set("exits",room->query("exits")); ob->set("objects",room->query("objects")); ob->reset(); instance_room[names][f]=ob; } write("副本產生中......\n"); call_out("enter_instance",2,ppl,names); return 1; } int enter_instance(object ppl) { object ob; if(!ppl) { clean_instance(ppl,names); return 1; } ob=instance_room[names][files[0]]; ppl->move_player(ob,"SNEAK"); ob->start_count_time(ppl); return 1; } ======================================================== 這個副本系統是比之前更單純的東西,如上所見,它的核心只有 幾行,加上一些擴充的東西應該 200 行以內也可以搞定,精華 主要寫在 INSTANCE_ROOM 裡頭。結合 quest 的話就類似底下的 表現.. > quest ooo about xxx 某人: 好的, 現在就送你到OO之地, 請跟那裡的神官對話! 副本產生中.... + 羅德斯大教堂 + 你現在位於本地最負盛名的教堂裡,這個教堂已經有相當久的歷 史了,看起來大概有一、二百年的時間,牆上的繪畫已經開始剝 落了,已經快看不出來在畫些什麼了,但依稀可見到的是,天神 創造這個世界的情況。目前這個教堂由幾個牧師來管理,幫忙人 們辦理結婚大事。你可以打(help marriage)來獲得訊息。 明顯出口有: north. Lv200.教堂神官-尤尼(Yuuni) > 這東西不會很難寫,而且它也支援組隊過副本、多人副本、腳本 架構等,甚至玩家也有能力寫,因為它的腳本架構還蠻簡單的。 不過這東西我現在沒啥動力寫(給我一些動力吧!!),可以確定的 是這東西一定會出現在聖殿。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: laechan 來自: 210.61.157.53 (02/21 10:47)

02/21 13:48, , 1F
我想說先決定一下要怎麼測這東西
02/21 13:48, 1F
難決定的原因是比方我拿現用的區域,則到時要憑空創出區域時 得改很多東西。 但假若一開始拿憑空創出的區域測試,則怕寫出來的東西反而會 不相容於現有區域(而且比較花時間)。 然後理論上應該從後者開始,但實務上一般多會拿現用的.. so,到下班前我得多考慮考慮。 ※ 編輯: laechan 來自: 210.61.157.53 (02/21 14:56)

02/21 14:57, , 2F
另一個問題就是除了quest,這東西有無其它用途
02/21 14:57, 2F

02/21 14:58, , 3F
比方幻想有所謂的50關副本,「理論上」聖殿是可以做
02/21 14:58, 3F

02/21 14:58, , 4F
的,只是比起單純闖區域,副本除非有吸引力不然玩家
02/21 14:58, 4F

02/21 14:58, , 5F
一般是不會想去打副本的 <- 所以我才會沒啥興趣寫
02/21 14:58, 5F
順便備份 副本一定包括底下幾個要素 1.跑副本的封閉區域 2.每一房間的觸發設定(init) a.觸發生怪(生出物件) b.觸發劇情(生出 npc、對話等) c.觸發劇情提示 d.可下指令(add_action) e.block 玩家(block_command) 3.怪物死亡設定(物件的 die 函數) a.死亡後生出可對話 npc b.死亡後生出出口 c.死亡後觸發劇情 4.times_check 輔助管理該副本 ※ 編輯: laechan 來自: 210.61.157.53 (02/21 15:25)

02/21 17:37, , 6F
我覺得還是用腳本化的做法,但捨棄之前的一些構想方式
02/21 17:37, 6F

02/21 17:37, , 7F
(之前是想連地圖都腳本化)
02/21 17:37, 7F
文章代碼(AID): #1J1fzccj (mud_sanc)
文章代碼(AID): #1J1fzccj (mud_sanc)