作者laechan (小太保)
看板mud_sanc
标题Re: [问题] 问题[捌]
时间Sat Mar 31 21:31:50 2012
※ 引述《justinj (黑旋风)》之铭言:
: (一)
: 如果我要设定一任务在某个区域,如果玩家离开
: 此区域的话,那任务就会失败。这个要怎麽设?
: 目前玩家离开的方法有几个:
: 1.recall(主动)
: 2.死亡(被动)
: 3.return(被动+主动)
: 主动的2个还算好处理..问题在於被动的2个..
: 我是有想到一个..但总觉得这样写不太好
: 就是设一个obj..然後它会一直heart_beat
: heart_beat里会判断当玩家不在区域内时失败..
这样应该是可行的,你可参考 /d/spell/magic-cycle_ob.c
的 heart_beat 部份的写法,它可一次处理多人。
不建议一个玩家就给一个 obj 做 heart_beat check。
: (二)
: 同样的,如果我要设定玩家只有在过关时才能离开?
: 如果用非区域允许的方法离开就会回到某格。
不建议这样做,不过以日後的 GI 来说我可能会这样做
也说不定(虽然有别的方法而且也已经实行了),GI就是
不允许玩家用非法的方式脱离,若是我,我的做法比较
简单,就是改小卤蛋那一格,让玩家一进到 recall 点
就自动判断玩家是否为非法脱离。
不过其实要防堵也很简单,只要把玩家所有可能脱离的
方法都列入考量即可。
至於 GI 岛内则是所有房间均会判断玩家是否为非法入
侵(因为继承同一个根样本物件)。
: (三)
: 然後最後一问题,一样在某区域内,如果只有死亡
: 才算任务失败,而recall,return 都不算失败的要怎麽写?
改玩家的 die 函数,我以前有说过,只要有需要都可
提出申请,能写就会写入,不能写入就会跟你说原因.
以上面为例,通常我的做法如下..
env=environment(me);
if(env)
if(function_exists(env,"die_check"))
env->die_check(me);
上面的意思是若使玩家阵亡的房间有 die_check 函数
,则玩家 die (或爆水晶) 时就会去呼叫它。
另外,也可以做成截断式写法..
if(env)
if(function_exists(env,"die_check"))
if(env->die_check(me)>0)
return 1;
这意思就是说若回传值 >0 「阵亡或爆水晶就被中止」
纯粹看有没有需要。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.246.36.192
1F:推 justinj :了解...不过1的区域如果很大还可以用cycle那个吗? 04/01 10:13
2F:→ laechan :可,类似写法,不过cycle_ob比较不怕房间reborn 04/01 12:12
3F:→ laechan :心跳物件除非放在玩家身上不然都可能被reborn 04/01 12:12