<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    常言笑的家

    Spring, Hibernate, Struts, Ajax, RoR

    Zmud新手機器人指南

    機器人的主體構架是觸發器,類似電腦的操作系統。
    觸發器的原理,就是根據你給出的條件,自動偵測mud里出現的語句,符合條件后自動執行指令。說簡單點,就是條件反射。


    一、基本觸發

    最基本的觸發,就是沒有任何編程內容,純粹的條件反射,非常適合新人編寫。這種觸發是工作量最大的,但是編寫容易,不容易斷,是機器人觸發器部分的主體。
    如果需要使用多個指令指令,每個指令間用英文分號;隔開

    例如,新人利用發呆室讀書,就可以只用一個基本觸發搞定。

    觸發思想:
    1、發呆室可以瞬間補滿精氣,那么發呆室外消耗精氣的過程就應該盡量縮短,節省時間,所以如果是讀書,應該用du book for 50
    2、發呆室發呆完有大概2秒的busy,無法移動。那么,為了避免busy,不用編程指令的時候,就必須針對這種情況增加觸發
    3、避免干擾,set brief 1,減少不必要的地點描述;tune all,關閉所有聊天頻道以避免干擾

    示例: 復制內容到剪貼板 代碼:
    你發呆了一會兒
    out

    ------------------------------------------------------------------------------- 復制內容到剪貼板 代碼:
    你的動作沒有完成,不能移動
    out
    ------------------------------------------------------------------------------- 復制內容到剪貼板 代碼:
    發呆室
    du book for 50;out;fadai
    三個觸發做成讀書機器人

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    二、#wa指令

    #wa是觸發中最常用的指令,作用是等待指定的時間(依照#wa后面的數字來定,以毫秒為單位),然后執行后面的命令。

    作用一:當一次發送出的命令過多時,會有溢出,最后的部分命令可能無法執行,導致機器人中斷,所以大量指令之間,需要一定的等待
    作用二:許多事件都有一定的busy time,在這段時間內,會無法移動,或者無法使用pfm和exert或其他,那么,就需要針對busy time,設定等待

    再看上面的讀書機器人,做出3個觸發,完全只是為了處理busy問題,而讀書和發呆,其實很簡單,所以如果解決了busy,一個觸發足夠
    觸發思想:利用#wa解決發呆busy,然后以發呆為觸發條件進行指令,由于發呆大概有2秒的busy,為保守,#wa設定在三秒以上

    示例: 復制內容到剪貼板 代碼:
    你發呆了一會兒
    #wa 3000;enter;du book for 50;out;fadai
    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    三、觸發器分類

    好的機器人應該具備幾個條件,從游戲本身來考慮,非要做個排名的話,我認為應該是安全,穩定,效率,適用面廣,當然如果你還能做到界面豐富生動,簡潔易修改等等那更好了。所以,良好的觸發器分類和運用是很重要的

    觸發器可以設定種類,一來能夠方便使用和整理;二來可以整類觸發器統一開關,能夠實現更多的用法
    開關一類觸發器的指令是#t+(打開)#t-(關閉),格式為#t+ 觸發器種類

    使用示例:比如,一般情況下,內功支持的最大內力和最大精力基本相同,那么打坐吐納的時候,就可以輪流進行,共同提升。那么,就可以把打坐的一類觸發器設定為dz類別,吐納的一類觸發器設定為tuna類別,用#t+和#t-在適當的時候進行切換

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    四、通配符與變量提取

    有了基本觸發和#wa,其實已經可以寫出幾乎所有機器人,但是有的難免繁瑣,而且不一定能夠達到最高效率,比如打坐,為避免浪費氣血,打坐的數值應該跟隨最大內力的變化而變化,這個要求,上面兩個方法就無法做到。
    所以,接下來才是機器人的重頭戲,我覺得堪比人的記憶功能——通配符與變量提取

    -------------------------------------------------------------------------------

    通配符

    名詞解釋
    通配符:可能玩家在系統、瀏覽器等的搜索功能里面使用過。通配符,就是用一些指定的符號,來代表其他內容,這是計算機的一種創舉,把帶入了模糊思想精密的計算機程序中,能夠彌補計算機的很多不足。
    變量:變量,說白了就是一個量,你用一個名字來指代這個量,而這個量的內容,可以是文字、符號、數字等東西。而變量的神奇之處就在于一個“變”字,變量值可以根據要求自動變化,就能進行為真正的動態運行。

    通配符介紹:
    *    星號是最簡單的通配符,指代一切字符

    ? 問號指代一個或者零個字符
    %s 這個通配符,指代任意長度的連續空格
    %d   這個通配符,指代任意長度的連續數字

    %x 這個通配符,指代任意長度的不包含空格的字符
    %w   通配任何字母(a-z)
    %a   通配任何數字和字母(等于%d+%w)
    %n   通配任何以+或-開頭的數字
    %x   通配任何非空格
    [range] 通配任何在range范圍內的字符
    ^ 表示一行的開頭,想要你的trigger在一行的開頭才有效,就在最前面加上這個
    $ 表示一行的結尾。
    (通配符)將括號里面的內容依次提取存放到參數%1~%99里

    我對mud學習的也不多,了解的通配符就這三個,但是這三個已經足夠了

    -------------------------------------------------------------------------------

    變量

    變量提取:
    變量的提取,就是根據你的指令,從語句中提取出需要的部分,保存為一個變量(變量名最好不要使用中文,并且要含義清楚,以免自己都弄忘記)。那么,提取的部分既然是變量,就是會變的,這就需要通配符來指代
    通配符直接使用的時候,只有取代作用,不會提取數值
    要提取通配符指代的部分,需要在通配符兩邊加上英文括號,括號內的通配符指代的部分就作為變量。
    變量初始數值按照提取語句的順序,用%1、%2等指代。
    然后,需要一個賦值過程來保存變量,人為制定一個變量,將%1、%2等值賦值到其中。以后,就可以使用該變量(變量不可在直接手動在指令欄中輸入的指令中使用),變量使用時,直接輸入@變量名,比如變量名為exp,那么使用時就是@exp
    那么,既然括號在觸發器里面被理解為提取變量的一個標志,英文括號不可能成為觸發語句,所以,帶有類似(dodge)的語句,是無法進行觸發的


    例如,我們可以用通配符和變量的提取,自動提取內力的數據

    首先,需要分析語句格式 復制內容到剪貼板 代碼:
    > hp
    ≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
    【 精神 】 126 / 270 [100%]   【 精力 】 1054   / 766 (+ 0)
    【 氣血 】 359 / 359 [100%]   【 內力 】 715 / 715 (+   38)
    【 食物 】 0     / 300 [饑餓]   【 潛能 】 8053               
    【 飲水 】 0     / 300 [饑渴]   【 經驗 】 105840            
    ≡━━━━━━━━━━━━━━━━━━━━━━━◎北大俠客行◎━━≡

    我們可以看見,內力一欄里,有許多空格,而為了避免數值位數不同造成空格數量的不同,通常用%s指代空格,而不是在觸發語句里面直接使用空格
    內力后面有一個加力數值(+ 38),就像上面所說,括號不能作為觸發語句,那么這段就不能要
    內力有兩個數值,一個是當前內力,一個是最大內力,我們應該把他們分別提取。提取數字,應該用(%d),兩個變量分別是%1、%2,我們可以把他們保存到neili和maxneili兩個變量中

    那么,示例如下 復制內容到剪貼板 代碼:
    原語句:【 內力 】 715 / 715 (+   38)
    觸發語句:【%s內力%s】%s(%d)%s/%s(%d)
    觸發指令:neili=%1;maxneili=%2
    這樣,每次hp后,觸發器都能自動提取當前內力和最大內力的數值,分別保存到neili和maxneili兩個變量中

    ----------------------------------------
    附:括號問題的解決
    介紹一個符號~,作用是讓其之后的第一個符號(比如括號)不進入變量提取格式的判斷
    比如,如果我們想做個戰斗觸發器,每當黃血時自動吸氣,那么,我們就可以這樣寫這個觸發: 復制內容到剪貼板 代碼:
    原語句:( 你氣喘噓噓,看起來狀況并不太好 )
    觸發語句:~( 你氣喘噓噓,看起來狀況并不太好 ~)
    觸發指令:exert recover


    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    五、變量計算

    有時,提取出來的數字形式的變量,我們不打算直接使用,而是計算后再使用。

    比如,利用發呆室打坐吐納時,為避免浪費,如果每次打坐的數值是最大內力的1/4,那么能夠做到對氣血的比較有效的利用(怎么才能最大利用呢?請見誰能解釋一下, 心跳在mud 中是起什么作用的?,具體給個數值,dazuo的數目是有效內功/10的整數倍時最有效率,一倍最不容易浪費)
    這時,就需要進行變量計算,把maxneili變量數值除以4,然后保存為一個新的變量

    變量計算的指令是#math指令,此指令可以進行簡單的四則運算,格式為#math 新變量 變量計算式

    例如我們把maxneili變量值除以四,然后為了避免四舍五入的影響,最后再+1(一切都是按照四則運算規則進行),那么運算指令就是
    #math dazuo @maxneili/4+1


    另:如果只進行加減運算,可以使用#add指令,格式為#add 數字變量   改變數量,如#add num 1就是@num變量加一。


    這樣,就可以把maxneili變量的數值除以4再加上1,保存為新的變量——dazuo

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------


    六、條件指令

    下面,我們就要開始了解機器人中極其強大的條件指令。條件指令,是機器人的大腦,給予了機器人思考判斷的能力。
    條件指令是根據你的條件進行判斷,如果滿足條件則執行一組指令,不滿足則執行另外一組指令

    條件指令使用的命令是#if,格式有兩種
    格式一:#if (條件) {指令}
    格式二:#if (條件) {條件成立的指令} {條件不成立的指令}

    格式一中,如果條件成立,便自動執行大括號內的指令,如果條件不成立,便自動跳過
    格式二中,如果條件成立,便自動執行第一個大括號中的指令,如果條件不成立,便自動執行第二個大括號中的指令

    示例:
    還是用內力數值的變量提取。新人利用發呆室打坐吐納,就必須保證最大內力和最大精力都在1000以下。那么,內力和精力的數值提取觸發中,就可以加入#if指令進行判斷。
    設計思想:用@maxneili的數值和999作比較,相等時就停止打坐,不相等就繼續 復制內容到剪貼板 代碼:
    #if (@maxneili=999) {#t- dz;#t- tuna;halt;quit}-------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    七、句首嚴格觸發

    句首嚴格觸發,是指通過一些通配符的使用,盡量保證觸發語句出現在句首時才能觸發,這樣能讓機器人更加嚴密,不易中斷

    ^:這個符號的輸入方式是,在英文輸入狀態下,按著shift按鈕不放,按下鍵盤左邊的6
    ^符號用在觸發語句開頭,作用是進行嚴格觸發,當觸發語句開頭有^的時候,該語句必須位于行首才能被觸發
    行首嚴格觸發作用:避免機器人錯誤觸發,比如我就有被空手道chat 你受傷過重xxxxx弄得quit的慘痛經歷…………

    示例:
    1、行首觸發 復制內容到剪貼板 代碼:
    原語句:> 你深深吸了幾口氣,臉色看起來好多了。
    觸發語句:^??你深深吸了幾口氣,臉色看起來好多了
    2、傷害觸發(注意傷害描述是英文括號加一個空格,那么如果要進行行首嚴格觸發,就要特別小心別漏了那個空格) 復制內容到剪貼板 代碼:
    原語句:( 你受傷不輕,看起來狀況并不太好 )
    錯誤觸發:^??( 你受傷不輕,看起來狀況并不太好 )
    正確觸發:^????你受傷不輕,看起來狀況并不太好
    或者:^??~(%s你受傷不輕,看起來狀況并不太好

    ---------------------------------------------------------
    具體討論請看行首嚴格觸發的問題

    八、定時器

    定時器,就是根據你指定的時間為周期,定期執行指定命令
    定時器的設置很簡單,就不贅述了

    定時器的作用:定期執行指令,比如長周期定時存盤、hp查看屬性并且配合觸發提取數值,比如短周期定時繁復打坐等

    定時器可以用指令開關,開啟定時的指令為#timer on或者#time on,關閉定時的指令為#timer off或者#time off,設定定時器時間為#ts 時間

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    九、別名

    別名,是為了方便操作而設計的。別名可以用一個指令來指代一串指令,其中,別名的名字不能用中文
    別名是很常用的,北俠mud打包下載中,就把各區域往來的路徑制作成為別名。

    而且,別名有一定的alias的作用。比如,我設定別名g,指令是get,那么我就可以使用g all來代替get all

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    十、宏鍵

    宏鍵,就是以鍵盤按鍵作為條件執行命令,能夠極大程度的方便操作

    我個人建議把小鍵盤設定為行走宏鍵
    1:sw
    2:s
    3:se
    4:w
    5:l
    6:e
    7:nw
    8:n
    9:ne

    同樣,常用的一些exert、perform、吃喝等指令可以做成宏鍵,建議把exert和perform制作到F1、F2一系列按鍵中,例如
    F1:exert recover
    F2:exert regenerate

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    十一、實用小指令

    觸發器指令中,有一些指令作用很簡單,但是很使用,比如#mess#cap、#show、#gag、#case、#help

    #mess:自動用對話框發送制定內容提醒玩家
    作用不用說了吧,任務、掛機等都非常實用
    比如,我可以在剛才所說的自動停止打坐的條件指令里面加入#mess 內力已經到達999,自動停止打坐,那么,當內力到達999時,機器人除了自動停止打坐,還會彈出一個在所有windows窗口之前的對話框提醒玩:內力已經到達999,自動停止打坐。
    -------------------------------------------------------------------------------
    #cap:自動把該觸發語句用一個新的mud窗口顯示
    這也是極其實用的,最常見的是把閑聊內容單獨用一個窗口顯示,避免遺漏重要信息
    示例: 復制內容到剪貼板 代碼:
    【閑聊】
    #cap chat

    注:Zmud自動換行造成的多行,還是按照一行計算

    另:#cap也可以一次性提取多行,比如#cap 3 chat,就是提取三行

    那么,當有人通過閑聊頻道說話的時候,內容除了在主窗口內顯示,還會出現在一個以chat命名的窗口內
    -------------------------------------------------------------------------------
    #show:顯示指定的內容
    這個指令格式是 #show 指定內容
    效果是在mud窗口里面顯示指定內容,字體顏色為Zmud默認顏色
    這個指令可以用來進行提示

    實例:
    慕容任務里,用變量提取慕容復說的叛徒地址,儲存在@zone變量中,然后計時器里面以五秒為循環,執行指令#show 叛徒在@zone附近
    如提示是歸云莊練功房,那么任務時,每隔五秒就會自動顯示
    玉璽在『歸云莊練功房』附近


    另:
    #say也有同樣效果,而且顏色更鮮明(Zmud訊息顏色),推薦用#say
    -------------------------------------------------------------------------------
    #gag:自動刪除一行內容,不予顯示
    這是避免一些刷屏而使用的,比如可以屏蔽惡意刷屏,比如可以讓閑聊不顯示

    示例: 復制內容到剪貼板 代碼:
    【閑聊】
    #gag
    那么,當有人通過閑聊頻道說話的時候,就可以自動刪除,避免影響

    但是,#gag刪除的語句,只是不顯示,實際仍然存在,依舊會引發觸發。所以,用這個屏蔽閑聊不如tune chat,因為這個是用閑聊觸發,那么就算刪除不顯示,閑聊內容其實也已經進入了觸發,如果閑聊中有人說“你運功完畢”之類的話,仍然會觸動你的觸發
    -------------------------------------------------------------------------------

    #case:根據變量數目執行目標指令
    格式:#case @數字變量 {指令一} {指令二} {指令三} …… {指令N} ……(注意要用@)
    原理:根據自動執行對應變量值的指令,如變量為2,則執行指令二
    示例:詳見wiki護鏢,貧道也是從那里學來的
    -------------------------------------------------------------------------------
    #help:Zmud幫助指令
    格式:#help或者#help xxx
    這是最全面的Zmud指南,并且可以詳細查詢,比如如果我想查詢if語句的功能和用法,就輸入#help if,回車

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    十二、按鈕

    按鈕,比較實用,是制作一個按鈕,點下按鈕就可以執行命令。在zmud的按鈕欄中是找不到這個設置的,要點擊查看——按鈕,打開按鈕設置
    按鈕設置,可以設定按鈕名稱和點下按鈕時執行的指令,并且還可以設定成開關式,按鈕在zmud窗口中的位置,同樣可以設置

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    十三、觸發測試

    一套機器人制作好之后,不要忙著馬上使用,最好先進行測試,以發現一些問題

    觸發測試有兩種方法

    方法一:點擊常規按鈕,打開常規設置,選中左上角的顯示觸發信息
    這樣,當觸發器執行時,會自動在mud窗口里顯示觸發信息,方便檢驗執行狀況
    -------------------------------------------------------------------------------
    方法二:打開觸發器窗口,選擇一個觸發,點擊右邊的測試選項卡
    這個是觸發器的測試功能,可以檢驗你的觸發是否能夠進行。上方的句型欄是觸發器中設定的觸發語句,下方一欄是實際出現的指令,由你輸入

    例如,上面所說的內力提取指令,如果我不知道英文括號不能作為觸發語句,把觸發語句設定為 復制內容到剪貼板 代碼:
    ^??【%s氣血%s】*【%s內力%s】%s(%d)%s/%s(%d)%s(+   0)

    (思考:為什么要內力觸發前面的氣血部分?)
    那么,為保險進行測試,就可以把實際的hp內容拷貝進下面一欄,比如 復制內容到剪貼板 代碼:
    【 氣血 】 920 / 1316 [100%]   【 內力 】 1523   / 1784   (+ 0)然后點擊觸發測試,結果程序會告訴我,觸發無法匹配,那么我就知道,我這個語句有問題了,不能被觸發,然后就可以再檢查并修改

    -------------------------------------------------------------------------------
    -------------------------------------------------------------------------------

    十四、狀態欄

    狀態欄位于指令輸入欄上方灰色那條,默認為空白,右鍵點開可以進行顯示內容設置
    狀態欄可以隨時顯示你想知道的內容,配合變量偵測和提取的觸發,可以極大程度的方便游戲。例如,我們可以把經驗、潛能、精力、內力、常用任務寫在狀態欄上。
    如: 復制內容到剪貼板 代碼:
    經驗:@exp | 潛能:@pot | 內力:@neili/@maxneili | 精力:@jingli/@maxjingli-------------------------------------------------------------------------------
    -------------------------------------------------------------------------------
    簡易機器人的一些知識,就到此為止

    posted on 2011-08-15 20:51 常言笑 閱讀(7923) 評論(2)  編輯  收藏

    Feedback

    # re: Zmud新手機器人指南 2014-10-09 11:51 劉一笑

    歷久常新,一直有幫助啊  回復  更多評論   

    # re: Zmud新手機器人指南 2015-08-24 12:44 shader

    幫了新手大忙啊  回復  更多評論   



    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品免费tv久久久久久久 | 国产亚洲精品自在久久| 精品一区二区三区无码免费直播| 国产91在线免费| 亚洲国产激情在线一区| 成人黄色免费网址| 中文文字幕文字幕亚洲色| 青青草免费在线视频| 欧洲 亚洲 国产图片综合| 天堂在线免费观看中文版| 亚洲乱码国产乱码精华| 免费A级毛片无码A| 国产成人无码免费看片软件| 最新亚洲成av人免费看| 无码日韩精品一区二区三区免费 | 免费在线视频一区| www成人免费视频| 国产成人无码综合亚洲日韩| 免费国产黄网站在线观看| 亚洲自偷精品视频自拍| 最近最新的免费中文字幕| 色五月五月丁香亚洲综合网| 亚洲欧洲中文日韩av乱码| 成全在线观看免费观看大全| 亚洲精彩视频在线观看| 色www永久免费视频| 男人和女人高潮免费网站| 亚洲AV无码一区二区三区DV| 日本三级2019在线观看免费| 国产偷国产偷亚洲高清在线| 亚洲国产精彩中文乱码AV| 免费无码黄十八禁网站在线观看 | 日韩在线视精品在亚洲| 亚洲乱码无码永久不卡在线| 亚洲一级毛片免费在线观看| 理论亚洲区美一区二区三区| 亚洲大尺度无码专区尤物| 成**人免费一级毛片| 中文毛片无遮挡高清免费| 亚洲av日韩av综合| 亚洲一级特黄大片无码毛片 |