Re: [建議] 副本相關

作者: laechan (揮淚斬馬雲)   2014-04-22 14:12:43
下午針對 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

Links booklink

Contact Us: admin [ a t ] ucptt.com