作者laechan (小太保)
看板mud_sanc
标题[系统] 变更模拟
时间Tue Sep 25 10:49:54 2007
假设在怪物的 die 函数中加上一行
if(SPECIAL_EVENT->query("have_event"))
SPECIAL_EVENT->check_event();
不过这会造成 SPECIAL_EVENT 的频繁读取. 所以我想到另一个
方法...
#ifdef SPECIAL_EVENT
"/adm/daemons/special_event"->check_event(
this_player(),this_object()->query("short"),SPECIAL_EVENT);
#endif
不过问题在於 SPECIAL_EVENT 的定义位置, 一般来说, 都是放
在 /include 下, 但也可以让 SPECIAL_EVENT 放在一个新定义
的 xxx.h 中, 而这个 xxx.h 可以让它放在其它地方.
这样理论上, wiz.3 就可以自办活动, 我的想法是..
int check_event(object ppl,string mob_name,string str)
{
object ob;
if(!ppl) return 1;
switch(str)
{
case "mid-fall":
if(random(10)==5)
{
tell_object(ppl,"[ 从"+mob_name+"身上掉出了幸运果子! ]\n"NOR);
ob=clone_object("xxx");
ob->move(ppl);
}
break;
.
.
.
}
return 1;
}
这个东西的用意是, 依照 SPECIAL_EVENT 的不同, 打死怪物会掉不同
的东西 or 触发不同的事件 or 产生不一样的效果.
它的缺点是只限於「打死怪物时」,但这是因为它被定义在 die 函数
中, 换言之, 只要将它写在其它的程式段落, 它的功用就不会被局限.
最近我会把上面实装看看. 原则上, 各 event 亦可由 wiz 来自订,我
是希望将来同一个节庆, 能举办的活动种类也是可以有所不同的。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.114.47.24