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