[wizs] [置底] questing 的函數用法整理

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2011/10/19 11:01), 10年前編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
這篇會隨時新增。questing 函數寫在 /open/cmds/quest/quest_d.c ,並支援全域呼叫的模式。 (以後則會把它挪到 /adm/daemons 下存放) 全域的意思是說,例如某房間 set("pre_exit_func/north","hihi"); int hihi() { if( questing("check",玩家id,任務編號,({"times"})) > 0 ) return 0; write("你要先解過 XXXX 任務才可以往北邊走喔.\n"); return 1; } 所以我才會跟 norr 說這個東西以後會很常被用到。 ============================================================ kind names quest_num vars if( questing("check","玩家id","任務編號",({"times",3})) >0 ) write("玩家有解過這個任務 3 次.\n"); n = questing("check","玩家id","任務編號",({"times"})); write("玩家解過這個任務 "+n+" 次.\n"); if( questing("check","玩家id","任務編號",({"steps",3})) > 0 ) write("玩家在這個任務上已經解到第 3 步驟.\n"); n = questing("check","玩家id","任務編號",({"steps"})); write("玩家解這個任務解到第 "+n+" 步驟了.\n"); ※假設你要進行的判斷是「玩家已經解這個任務解過 2 次,  正在解第 3 次,而且也已經解到第 4 步驟了」,它的判  斷方式就是.. if( questing("check","玩家id","任務編號",({"times",2})) > 0 && questing("check","玩家id","任務編號",({"steps",4})) > 0 ) 10/20更新: questing 新增支援 kind="skyroom" 的語法, 並以 vars 做 為「判斷值是否符合」或是「傳回值」的依據. 傳回值 // 傳回天空城作物資料 mapping crosp=questing("skyroom","laechan","crops",({})); // 傳回天空城 m1 這個作物的數量 int n=questing("skyroom","laechan","crops",({"m1"})); ┌← 一定要有 // 傳回 laechan 的 myskill 的名字 ↓ string sname=questing("skyroom","laechan","myskill_name",({""})); 確認值 // 確認天空城 m1 這個作物的數量是不是等於 100 if( questing("skyroom","laechan","crops",({"m1",100})) > 0) write("laechan 家的 m1 作物數量確實等於 100.\n"); // 確認 laechan 的 myskill 的名字是不是 怒火燒盡九重天 if( questing("skyroom","laechan","myskill_name",({"","怒火燒盡九重天"}) > 0) write("laechan 的自創武功名字確實是怒火燒盡九重天.\n"); mob_record: if(questing("mob_record","check","xxx",({玩家}))>0) write("我已經接了 xxx 這個打怪任務.\n"); else write("我還沒接 xxx 這個打怪任務.\n"); 玩家接了 xxx 這個打怪任務時的設定語法 questing("mob_record","set","xxx",({玩家, "/u/l/laechan/area/felid/mob/lovers1",10, "/u/l/laechan/area/whitetile/mob/customer1",10})); 也就是從玩家物件之後所接的東西,就是 "怪物檔",隻數,"怪物檔",隻數,.. 當玩家殺死一隻 lovers1 時,在 die 函數裡就會做如下呼叫 questing("mob_record","add", "/u/l/laechan/area/felid/mob/lovers1", ({玩家})); 要讀取玩家目前殺怪的完成率時,就做如下讀取 write("殺完後資料如下:\n"+ identify(questing("mob_record","query","xxx",({玩家})))+"\n"); 執行結果範例如下 ({ 已殺隻數 應殺隻數 ({ "/u/l/laechan/area/whitetile/mob/customer1", 0, 10 }), ({ "/u/l/laechan/area/felid/mob/lovers1", 1, 10 }), }) 可以看到它是一個雙層的陣列架構,宣告一個 mixed 就能讀取它。 -- ※ 發信站: 批踢踢實業坊(ptt.cc)

10/19 13:19, , 1F
soga...
10/19 13:19, 1F
※ 編輯: laechan (61.224.78.65), 10/12/2015 22:01:46
文章代碼(AID): #1EdZri94 (mud_sanc)
文章代碼(AID): #1EdZri94 (mud_sanc)