作者laechan (小太保)
看板mud_sanc
标题Re: [wizs]死亡...
时间Mon Apr 19 20:56:22 2010
※ 引述《justinj (闇冥)》之铭言:
: → laechan :把 die 函数独立出来,增加所在房间支援就行了 04/19 18:28
: → justinj :....有点不懂意思.. 04/19 19:25
玩家阵亡时会由怪物为呼叫主体(previous_object),
驱使玩家呼叫 die 函数
怪物 叫 玩家->die();
die 函数的主体写在 /adm/daemons/user_d.c,我的
意思就是弄一个 die_d.c,独立出来。
这样玩家 die 时就不用 USER_D->die(me) 而会变成
DIE_D->die(me);
以前独立出来的做法(如 shut_d.c)是要做为玩家与怪
物共通呼叫之用,但是如果 die 要复杂化的话,独立
出来也会比较妥当一点。
至於「增加房间支援」的意思就是在 die 函数里新增
一行..
if(env=environment(me) &&
function_exists(env,"die"))
env->die(me,previous_object());
也就是说,把被杀的玩家(me)及杀他的人(previous_object)
都传进 env 的 die 函数里头,由 env 的 die 判断。
它的唯一缺点就是如果 environment 是生物,就会产
生问题,它的优点是 die 函数符合直觉化设定。
所以折衷的方法是定两种 env 的 die 函数..
一、env_die()
二、die_func() (取 wear_func 的方式)
我是觉得 env_die 不错,蛮好记的。
它的效果之一,就是若房间有 env_die 函数,它就可
以产生 justinj 所要的「截断效果」,比方 die 函数
最早的判断就是「爆不爆水晶」,env_die 比它更早而
且会截断,这时 justinj 就可以设定房间自订玩家的
阵亡。
它的设置有前提,因为玩家会 die 通常就是 hp<1 了
,因此你若截断原先的 die,却没有做适当处理的话,
就会一直做 env->env_die() 的呼叫,「移往别处」是
适当的处理方式「之一」,其它方式适不适当就以上面
的考量为主。
env_die 我明天会先实装,实装完会公告,wiz 可以在
4002 测试。若情况允许,3001 也会同时实装。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.253.173.252