看板 mud_sanc 關於我們 聯絡資訊
※ 引述《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
justinj :了解...不過1的區域如果很大還可以用cycle那個嗎? 04/01 10:13
laechan :可,類似寫法,不過cycle_ob比較不怕房間reborn 04/01 12:12
laechan :心跳物件除非放在玩家身上不然都可能被reborn 04/01 12:12