作者laechan (小太保)
看板mud_sanc
標題Re: [wizs] 問題
時間Fri Sep 7 14:29:47 2012
※ 引述《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