Re: [wizs] 副本 (多層式副本)

看板mud_sanc (Sanctuary - 聖殿)作者 (揮淚斬馬雲)時間7年前 (2018/05/14 11:00), 7年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
剛實驗,可以了,以下為全檔。 // 簡單副本 // /std/new_ob/instance/laechan/006.c // 該副本設定於 /u/l/laechan/workroom, instance -list 後可選 // "測試串接副本" 的單人 or 多人模式, 進入後往南走兩格, 殺掉 // 所有 corps, 理論上就會出現 next 的出口,連往第二副本 #include "../instance.h" inherit INSTANCE_OB; void create() { string tmp; int i; ::create(); seteuid(getuid(this_object())); set("pre_clean",1); instance_cd_times=INSTANCE_CD_TIMES; // 設定區開始 // 理論上多張地圖可畫在同一 map2data 中, 重點在新增出口串接 // 同一副本下模擬其為多個副本的適當做法應該就是這樣, 結案 // 兩個副本寫在同一張 map2data 內 // 分隔方式不一定要照下面, 只要確定副本與副本間原本並無出口連接即可 // 微複雜的多層式副本原則上可以照此做法去設定 instance_map2data=@LONG 501 | 502 | 503 504-505-506 LONG ; instance_names="測試串接副本"; instance_comm=(["xxxxx":1]); instance_data=([ "503":([ "instance_check":1, ]), ]); instance_paths="/u/l/laechan/area/felid/room/"; // 副本實際區域目錄 instance_ob=base_name(this_object()); // 固定 // 副本區域房間範圍, 第一個 room (如083) 固定為起點 instance_files=({ "501","502","503","504","505","506" }); // 底下固定 foreach(tmp in instance_files) instance_files[i++]=instance_paths+tmp; // 怪物資料 files 必備, 其它就是 short, long, ... 等可自訂 instance_mob_datas=([ "corps1":(["files":"/u/l/laechan/area/felid/mob/corps1", "level":150, ]), ]); // 副本各房間生怪資料, 所生的怪在 instance_mob_datas 都要有定義 instance_mobs=([ "5":([ "501":({"corps1","corps1"}), "502":({"corps1","corps1"}), "503":({"corps1","corps1"}), "504":({"corps1","corps1"}), "505":({"corps1","corps1"}), "506":({"corps1","corps1"}), ]), ]); // 設定區結束 } int instance_check(string files,object room) { mixed ppl_rooms; int flags,t; string ppl_names; object ob; switch(files) { case "503": flags=(int)room->query("instance_flags"); t=time(); switch(flags) { case 0: // 工兵都被消滅時 if(!present("felid corps",room)) room->set("instance_flags",1); break; case 1: // 先改 flag room->set("instance_flags",2); // 讀取副本創建者 ppl_names=room->query("instance_player"); // 載入 /std/new_ob/instance_rooms.c 物件 ob=find_object_or_load(INSTANCE_ROOMS); // 讀取該副本下的所有房間, 未來可增加讀取特定房間的函數語法 ppl_rooms=ob->ppl_instance("query",ppl_names); // 設定連往虛擬第二副本的出口 room->set("exits/next",ppl_rooms["/u/l/laechan/area/felid/room/504"]); break; } break; } return 1; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.106.224 ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1526266810.A.03E.html ※ 編輯: laechan (122.117.106.224), 05/14/2018 11:02:55
文章代碼(AID): #1Q-Fkw0- (mud_sanc)
文章代碼(AID): #1Q-Fkw0- (mud_sanc)