看板 mud_sanc 關於我們 聯絡資訊
※ 引述《justinj (黑旋風)》之銘言: : 因為突然想到將任務改成用quest寫 : 所以寫了一下發現幾個問題 : 1.是那些函數可以用 : 之前有找到幾個 : remove_obj(ppl,file) 如果我想要移除n個呢? : give_obj(ppl,file,數量) : add_v(ppl,變數,量) 加的是data區的資料,如果是想要加在temp區的呢 : 還有一個是打怪數量,那有沒有可以設定打怪所掉的虛擬物品的設定 : (當有接任務時,打某隻怪會掉某虛擬物(機率)) 因為現在連不上所以也不確定。 google 只找到一篇。 http://www.ptt.cc/bbs/mud_sanc/M.1335412984.A.9EC.html 等系統重開,你可以視情況提出你的「需求」,如之前 norr 那樣,我就會將其編入。使用這些自訂函數的理由是方便中 文化,所以我們鼓勵 wizs 多多使用自訂函數。 (我也會在其它地方讓這些函數是可 view 到的) 至於打怪掉虛擬物品的部份,你可以參考 mob_drop 相關說明 ,google 「mob_drop laechan site:ptt.cc/bbs/mud_sanc」 打怪數量的設計則參考這篇 http://www.ptt.cc/bbs/mud_sanc/M.1336715895.A.C22.html 相關的任務設計可以問 norr。(我自己還沒寫過) 而理論上,「任務的虛擬物品」跟「怪物會掉的物品」應該要 分開,我們之前的設計是以「殺死多少怪」為主,因為這其實 是類似的意義.. 假設掉落機率100% 則 得到多少物品=殺死多少怪  假設掉落機率 50%  則 得到多少物品=殺死兩倍的怪 . . 所以那時是「暫時」以殺死多少怪來決定。至於若是不想用殺 死而只是想用打敗or趕跑,則是請 wizs 自訂怪的 die 函數。 : 2.不知道是zmud的問題還是buf的問題 : 就是quest 人名 about KEY後 : 要再去下一個任務前,我在原地再按一次,是會出現提醒要去找誰, : 但是,它不止出現這個,;還出現之前對話的最後一個對話句..(按了好幾次都一樣) 預設會出現最後一個對話句。 這是因為很多 rpg 也是這樣做,你跟某 npc 接了某任務時它 會跟你講一堆落落長的,可是當你接了任務後,在尚未完成時 又找它對話,它就會只跟你講一句or一兩句,我的設計就是讓 它 repeat 最後一句。因此我會建議 wizs 也把任務的關鍵句 擺在最後一句,比方說某任務最後一句就是..   「你可以去找羅德斯聖騎士─潘恩大人聊聊。」 : 3.$M代表是目標物,$N代表是自己,那有第3個人嗎例如$T 問題就在於如何判斷「第三人」? 因 quest ooo about xxx 代表著你「只」與 ooo 交流,自然 不會有第三人存在。 但你可以建議你認為有必要的 $XX,我也會用力地將它們全部 設進去。 : 4.如果我想要寫在第X步失敗 : 例如: : step6_check= : !present("Ichthyosaur",ppl) : 你好像忘了一件事了,再不去辦就來不及了! : !ppl->query_temp("dark_total_time/yuri_return") < time() : 時間早就超過了。 : ## : 那要怎麼將步驟清空,重來? 用 quest 的 other http://www.ptt.cc/bbs/mud_sanc/M.1336496134.A.029.html 這裡有提到一個自訂 step6_check 的範例 other= int step6_check(object ppl,object npc,string key) { // 代表玩家 quit 過, 這時就重設 mob_record if(questing("mob_record","check","自訂標記",({ppl}))<1) questing("mob_record","set","自訂標記",({ppl, "怪物1",幾隻,"怪物2",幾隻,... })); if(questing("mob_record","finish","自訂標記",({ppl}))<1) { 任務尚未達成; return 1; } 任務已經達成; return 0; }## 自訂的 step6_check 就可以不受原先的 stepX_check 影響, 只要記得 return 0 代表成功,return 1 代表失敗(程式到這 裡中止)即可。這樣設的原因是因為失敗時必須有訊息,nobu 不建議在使用 write 的時候使用 return 0。 因此你可以在玩家失敗時在程式裡面清除玩家的任務標記,一 樣是呼叫 questing 來處理(語法忘了)。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.157.53
laechan :若你可以說明一下你任務的大概,我可以先在我的區域寫 09/07 14:30
laechan :一個範本讓你參考 09/07 14:30
laechan :看起來像是殺怪拿虛擬物品,湊滿幾個後該步驟完成 09/07 14:30
justinj :會問第三人是因為我寫了一個玩家中毒(都不能動)..需 09/07 16:14
justinj :要另一個人去找解藥..因為stepX_msg我是不知道怎麼加 09/07 16:15
justinj :自訂的str...所以才問第三人... 09/07 16:16
justinj :會問虛擬物品是因為quest原先的設定就是不要去動到原 09/07 16:17
justinj :怪物檔..而讓它掉物品...我是看看有沒有這種設定,沒 09/07 16:18
justinj :有的話,我也只能在任務內設定打死自己所寫的怪物而已 09/07 16:19
那個「找解藥的第三人」並不需要寫進任務裡,你只要設定 任務的滿足條件是「找到實體解藥」即可,並不需要在意是 誰找到的。 反過來說,若你需要「是誰找到的」,那就在解藥這個實體 物件裡面 set("who_find",...),這樣就能讓 quest 能夠有 東西可以讀取。 那我的意思就是,你可以提供一個 $XX,當系統看到這個字 串時,它自動去讀取指定 ob 的 who_find 這樣。 (不過我不建議這樣做,最好是由你自己自定 other) 打死怪拿虛擬物品的部份,有需要我就會加上去,我記得以 前 norr 也有建議過,那時好像有討論出一個 obj_record 的設定,但我還是比較傾向以 mob_drop 的方式來輔助。 這確實是當初設計時沒有想過的盲點。so, obj_record 或 許是會做的,因為這跟節慶任務也有關係,RO 有這類任務 ,我想這是值得做的。 ※ 編輯: laechan 來自: 210.61.157.53 (09/07 16:26)
justinj :時間限制是因為我寫了一個npc幫忙加持能力,時間到了 09/07 16:21
justinj :當然身上沒有加持狀態..所以只能判定任務失敗.. 09/07 16:22
laechan :這個用 other 就可以做 09/07 16:27