精華區beta mud_sanc 關於我們 聯絡資訊
※ 引述《amosdeus (幽素)》之銘言: : 問題:請問要怎樣讓它隨者問的變數不同而回答問題? 你底下那樣寫是有問題的。想一下就知道了, add_action("要呼叫的函數","玩家下的指令"); 你三行 add_action 要讓玩家下的指令都是 ask,它只會抓 最後那一個 add_action 所定義的。 (也就是下 ask 它會呼叫 ask_s3 函數) 你在 mob 內設定比較方便. set("inquiry",(["xxxx":"怪物回答你: 你問了我 xxxx 這件事.\n", "yyyy":"怪物回答你: 你問了我 yyyy 這件事.\n", "zzzz":"怪物回答你: 你問了我 zzzz 這件事.\n", ])); // 若要額外讓怪物再做其它的動作 set("inquiry_func",(["xxxx":"ask_s1", "yyyy":"ask_s2", "zzzz":"ask_s3", ])); 然後宣告函數 int ask_s1() { write("怪物回答你: 喔, xxxx 啊, 就是#!$@$#@%#\n"); return 1; } int ask_s2() { write("怪物回答你: 喔, yyyy 啊, 就是%%#$@%#$\n"); return 1; } int ask_s3() { write("怪物回答你: 喔, zzzz 啊, 就是%$#%#@@#@!\n"); return 1; } 另外怪物若加設 set("no_show",1); 就不會出現暗藍色的 "你問了怪物有關 oooo 的事"這一行. 還有, 要實驗一些寫法, 最好另外寫新怪物, 而不要用舊怪 物一直累加設定跟函數, 不然到時你會看得霧煞煞. (別人要看你的怪物也會累, 因為行數太多) : 問題:怎樣讓他隨機空白不執行認主程序? : 當他隨機選到case 1..9空白時底下認主就會執行 : 這時就會出現錯誤! : 省略 : switch (r) { : case 1..9 : break; : case 10..11 : xxxx break; : case 12..19 : break; : default : xxxx break; : } : ob->set("names",tar->query("name")); : ob->move_to(tar); : 省略 : } : 勞煩請幫我解答 謝謝 : Plain@Sanc switch 的結構是... switch(判斷用的值) { case 符合區間設定之一: 要它做什麼事; break; // 符合上述區間一的就到這裡為止 case 符合區間設定之二: 要它做什麼事; break; // 符合上述區間二的就到這裡為止 default: // 不在區間一也不在區間二的其它值通通在這裡 要它做什麼事; break; } 例如要判斷某人的分數, 假設該人分數為 r switch(r) { case 100: write("恭喜你,拿到滿分 100 分,加你戰功一萬!!\n"); me->add_warexp(10000); break; // 100 分的判斷只到這裡就結束 case 60..99: // 拿到 60~99 分 write("恭喜你拿到及格分數 "+r+" 分, 給你 50000 影特幣!!\n"); me->add("balance",50000); break; // 60~99 分的判斷只到這裡就結束 case 1..59: // 拿到 1~59 分 write("唔, 這次考不及格喔, 只拿到 "+r+" 分, 要再加油嘿!!\n"); break; // 1..59 的判斷就到這裡 default: // 不是100,也不是60-99,也不是1-59, 自然就是0分 // 所以上面也可以用 case 0: 替代 // 換言之,switch 裡頭不一定要有 default // default 是為了收納所有的例外狀況 write("你竟敢給我考零分!!把你的等級降為 2 做為處罰!!\n"); me->set("level",2); break; } 就降子而已。你可以自己實作試試。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.140.113.219 ※ 編輯: laechan 來自: 220.140.113.219 (03/12 23:07)