mud_sanc 板


LINE

不好意思...這篇小弟看了很久 因資質駑鈍....仍然寫不出來對某個視窗下指令的方法 文章也是很久以前的文,看能否有緣遇大神指導... 是這樣的,小弟開了三個角色 想在A角色的視窗直接對B or C角色下達命令,recall之類... 我該怎麼做到,從zmud跳mushclient 真的是比登山難... 求大神能現身指教.... ※ 引述《hmml (hmml)》之銘言: : 這是一個對我而言蠻有用的功能,所以很早就在找怎麼 : 寫這個功能了,它相當於zMUD的"ID:指令"或#all,#all是向 : 全部視窗發佈命令。'ID:指令'其實是切換視窗,送命令只是 : 順便而已。 : 在MushClient裡,它需要這個函數: : GetWorld (視窗名稱):用來取得指定視窗的位址。 : 當然,也可以用這個: : GetWorldById(視窗ID):用法同上,只是你要取得 : 視窗的ID值有點麻煩,當視窗名稱撞名的時候,才 : 可能採用它,誰那麼無聊,不同角色的視窗都用同 : 一個名字呢? : 寫法如下: : 1. 決定別名的寫法,記得點選正規表示法項目: : ^to(\S+) (.*)$ : 以to為起頭,藍色部份為%1,代表角色的ID(假設 : 視窗名設得跟遊戲中的角色ID相同),黃色部份為%2 : ,用來輸入指令。藍色部份和黃色部份中間空一格。 : 注意大小寫,不管是正規表示法還是Lua,都很明確細 : 份大小寫,A 不等同 a,And and aNd 雖然只差大小 : 寫,但三者都不一樣。 : 2. 將GetWorld的內容指定到一個變數裡: : toName = GetWorld(%1) : 3. 再用toName去接發送的指令行: : toName:Send('%2') : 基本上,這樣就完成了,如果你正在玩弄kimokimo : 走不開,想對aiggkimd下個recall的指令,就這麼輸入 : : : toaiggkimd recall : 這樣,aiggkimd就會recall了。 : 4. Send()是用來對MUD送命令的,如果只是想顯示個訊 : 息,就要用: : toName:Note('%2') : 5. 另外還有: : toName:Execute('%2') : 如果你送的命令是MushClient的alias,只有這個才 : 能展開它。 : 6. 瑞士小刀: : toName:DoAfterSpecial(0.1,'%2',12) : 其實它相當於zMUD的#alarm +Sec {commands}, : 不過它是我目前找到唯一能把指令送給腳本分析器 : 再分析內容的函數,所以它能吃內含函數的指令, : 改動第三個參數的值,可以決定把內容送去哪裡: : 0:遊戲 : 1:命令 : 2:輸出窗口 : 3:狀態欄 : 4:記事本(新建) : 5:記事本(追加) : 6:記錄文件 : 7:記事本(替換) : 8:命令隊列 : 9:變數 : 10:執行(等同於在命令窗口輸入命令) : 11:快速行走(把發送內容解析為快速行走路徑) : 12:腳本(發送給腳本解析器來執行腳本命令) : 13:立即發送(在命令隊列執行之前就發送給遊戲) : 用途廣泛,0相當於Send,2相當於Note,10相當於Execute, : 12可以執行程式碼,先記這幾個就行了。第一個參數可以設 : 定幾秒後執行,從0.1秒到23時59分59秒之間都可以。所以, : 用它必然要接受至少0.1秒的延時輸出,應該還能接受吧! : 當使用它以腳本分析來對其它視窗輸出指令時,如: : toName:DoAfterSpecial(0.1,'Send('save')',12) : 就格式而言沒什麼問題,不過,它會出錯,要改成: : toName:DoAfterSpecial(0.1,'Send([[save]])',12) : 才會正常,其它函數也一樣!這個就是重點,因為我常常忘 : 記,所以寫這篇的啦!找出這個解法花一個小時,然後下次 : 再用,又花一個小時想發生什麼事...Orz : 7. GetWorldById() 贏過 GetWorld() 的地方,就是它不用將 : 內容存到變數就能直接引用,雖然我沒用過,不過, : http://mc.chinaido.com/help.php?function=GetWorldById : 它範例是直接引用。 : 8. #all 的功能就是這個指令再加強,使用for迴圈去完成它: : for key, value in pairs (GetWorldList()) do : toName = GetWorld (value) : toName: DoAfterSpecial(0.1,'%2',12) : end --for : 這裡,多了一個新同伴:GetWorldList(),這函數應該是一 : 個表,內容是全部正打開的視窗的名字和位址。key就是名字 : ,value就是位址。透過for迴圈把全部內容呼叫一次。 : 紅色部份是固定格式不能改動;黃色部份是你要它做什麼事; : 藍色部份是資料表的名稱,可能是內建的函數,也可能是你提 : 供的able。綠色部份,你可以自行決定它的名字,判斷它功能 : 的依據是位置不是名字,不要用什麼: : for、if、break、end...這樣的名字就好了。 : 重點是不要讓自己用起來很麻煩。 : ※ 這裡只是寫機的碎碎唸,算是除錯的小小提示: : a. Lua 只要會用: : if...then...else...end : for...do...end : tablename = {a,b,c,d,e...} : 就能寫很多東西了。剩下的時間就是抓蟲,這個比寫的時間還多。 : 第6點講的那個只是其中之一。模式大概就是: : tablename = {a,b,c,d,e....}     --資料表 : if '%1' == 'string' then     --if判斷 : for key,value in pairs(tablename) do --進入迴圈去翻資料 : Note(key,' = ',value) --要幹什麼事自已寫,這只是例子 : end --封閉for迴圈 : else --否則要怎樣,這不一定要有 : Note('string') --要幹什麼事自已寫,這只是例子 : end --封閉if判斷 : 或著: : tablename = {a,b,c,d,e....} --資料表 : for key,value in pairs(tablename) do --進入迴圈去翻資料 : if value == 'string' then --if判斷,翻到時要幹什麼 : Note ('Answer:',key) --要幹什麼事自已寫,這只是例子 : break --跳出這個for迴圈,如果要找到底就免了 : end --封閉if判斷 : end --封閉for迴圈 : 這兩種套路,可以寫好大部份的觸發。 : b. 還有一例: : if a < b then : Note('it is true!') : else : Note('it is false!') : end : 這個寫在MushClient內建的寫機功能是正常的;不過,寫在Plugin : 裡會出錯,因為這個:<script>,它把a < b 當作你要宣告一個標 : 籤...這個太----難抓了吧!不是很玩弄人嗎? : if a == 1 then : Note('it is one!') : else if a == 2 then : Note('it is two!') : else : Note('it is three up!') : end : end : 這個if的擴充寫法,網路上有教學文說:無論else if 有幾個,後面 : 只要一個end,聽起來太美妙了!嗯~請相信自己實作的結果,他一 : 定跟我用不同版的Lua... : c. Table是Lua的編表格式,格式可以參考: : #6911 Hamano □ [心得] MUSHclient - Plugins:自動補 Heart : 這個資料的順序依行位決定。所以要叫出想要的資料,可以靠 : 自己的記憶,不然就用for迴圈去比對。 : #7789 hmml R: [心得] MUSHclient - Plugins:自動重設en技能 : 這個就是編輯者自行編排索引,也就是 key值=value值 的對應模 : 式,有人說這叫字典索引,可以用key直接叫出value,相對於前 : 一種要好記很多,如果用for迴圈去翻,用key值能取value值, : value值也能回抓key值,相當方便。要注意的,是用變數去代入 : key值: : 變數有兩種,一種是已經給名的,如:a、b、kimokimo... : 另一種是還分配到正式名字的,如:%1、%2、%3.... : 當你將第一種的變數用在呼叫表中的對應內容時,這麼寫: : TableName[a]、TableName[b]、TableName[kimokimo]、... : 而第二種狀態的變數,這樣寫: : TableName['%1']、TableName['%2']、TableName['%3']、... : 這樣才能得到你想要的。 : 因為太整齊了,所以比zMUD好維護到不能同意更多。你願意的話, : 還能寫得像亞馬遜河一樣,樹枝狀,一層疊一層,包山包海(據說 : Lua本身就是那樣)。一開始發現Lua沒case可以用,想說用if是 : 要疊end到101那麼高,結果原來因為有Table,case就沒那麼重要了 : 。 : 當寫成Plugin時,你可以選擇把Table寫在: : <send> : 這裡 : </send> : 也可以外放到: : <script> : <![CDATA[ : 這裡 : ]]> : </script> : 基本上都能好好幹活;不過,Table裡有引用變數的話,就不同了, : 第一種可以成功引用,順利完成工作;第二種,%1只是%1,a就是a : ,變數什麼的完全不知道,啊~~~苦惱啊! : d. 變數的類型有八種,由Lua自己判斷是哪一種,不是使用者去決定的 : ,這裡有一個比較麻煩的問題,就是數值>>字串,非常簡單;而 : 字串想變成數值,有點難。這也是除錯的重點。 : str = loadstring("return " .. str)() : 這裡有一個去找來的片段,它的功能相當於zMUD的#eval。我還沒 : 掌握這個函數(loadstring()())的格式,不過是直接拿來用而已... : e. 雖然抓BUG抓得很苦惱,不過學習是累積經驗的過程,確實,一週比 : 一週更順利了。 ----- Sent from JPTT on my iPhone --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.215.210.173
※ 文章網址: https://webptt.com/m.aspx?n=bbs/mud_sanc/M.1522254305.A.A07.html
1F:→ laechan : 你用zmud也可以做到,用tell去模擬就好了 03/29 07:49
2F:→ LZN : www.mushclient.com/plugins/multiple_send.xml 03/30 10:15







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP