今天要做幾項修改及測試。其中一項測試是多層式副本。
原本多層式副本的製作較複雜,但虛擬基底區域可 work 後就變得
簡單,比方說以幻想的四大屬性副本(50層)為例,它的副本區域房
間結構可簡化如下
出口(通往下一層出口、或結束出口)
│
戰鬥區
│
入口
換言之,每層三個房間的話,50 層就是 150 個房間,房間編號就
是 001~150,我以 /std/new_ob/instance/laechan/004.c 為例
一、在 004.c 裡面撰寫 instance_map2data 函數
用來自動產生底下的字串
003 006 009 ... 150
| | | |
002 005 008 ... 149
| | | |
001 004 007 ... 148
二、為 003、006、...、150 設定心跳
for(i=3;i<=FLOORS*3;i=i+3)
{
if(i<10)
tmp="00"+i;
else if(i<100)
tmp="0"+i;
else
tmp=""+i;
instance_data[tmp]=([]);
instance_data[tmp]["instance_check"]=1;
}
三、為 003、006、...、147 設定往 004、007、...、148 的單
向出口並設定路障
for(i=3;i<=FLOORS*3;i=i+3)
{
if(i<10)
tmp="00"+i;
else if(i<100)
tmp="0"+i;
else
tmp=""+i;
if(i+1<10)
tmp2="00"+(i+1);
else if(i+1<100)
tmp2="0"+(i+1);
else
tmp2=""+(i+1);
instance_data[tmp]["exits"]=([]);
instance_data[tmp]["exits"]["northdown"]=instance_paths+tmp2;
instance_data[tmp]["cant_go"]=([]);
instance_data[tmp]["cant_go"]["northdown"]=1;
}
四、產生 instance_files
for(i=1;i<=FLOORS*3;i++)
{
if(i<10)
instance_files+=({"00"+i});
else if(i<100)
instance_files+=({"0"+i});
else
instance_files+=({i});
}
五、設定 query_short 函數
string query_short(string tmp)
{
int t=atoi(tmp);
t=1+(t-1)/3;
return "黑熊洞窟第"+chinese_number(t)+"層";
}
六、為 instance_check 函數進行流程配置
flags=(int)room->query("instance_flags");
f=atoi(files);
if(f<150)
{
south_room=room->query("exits/south");
if(flags<1)
{
// 南邊的怪物已經殺光
if(!present("INSTANCE_MOB",south_room))
{
room->set("instance_flags",1);
room->delete("cant_go/northdown");
usr=room->query("instance_members");
tell_object(usr,HIC"往 northdown 的出口打開了!"NOR"\n");
}
}
}
七、設定怪物及其它細節
經初步測試是可以的,底下是測試結果
> call 004;create_instance;"laechan";({laechan})
[副本]黑熊洞窟第一層-入口
一座陰暗的洞窟,在這裡不時會聽到黑熊的低吼聲。
明顯出口有: north.
> n
[副本]黑熊洞窟第一層
一座陰暗的洞窟,在這裡不時會聽到黑熊的低吼聲。
明顯出口有: north 和 south.
三鍋Lv150.[副本怪] 邪 惡 黑 熊(Bear)
☆☆☆ 戰 鬥 開 始 ☆☆☆
.
.
邪 惡 黑 熊發出一聲慘叫!!
邪 惡 黑 熊慢慢的倒在地上死了...你得到 12600點的經驗值。
你取得了一個獸掌。
你拿起[副本怪] 邪 惡 黑 熊(Bear)身上所有的東西。
○○○ 這場戰鬥結束了! ○○○
> n
[副本]黑熊洞窟第一層-盡頭
一座陰暗的洞窟,在這裡不時會聽到黑熊的低吼聲。
明顯出口有: south 和 northdown.
往 northdown 的出口打開了!
> nd
[副本]黑熊洞窟第二層-入口
一座陰暗的洞窟,在這裡不時會聽到黑熊的低吼聲。
明顯出口有: north.
嘛,大概就是這樣吧,測試結束。
Laechan