魔獸世界WA插件+按鍵精靈一鍵控制
因?yàn)楸┭╇x開(kāi)中國(guó),暫時(shí)沒(méi)有魔獸世界的替代品,所以就選擇了不可描述服。此類服務(wù)器目前大多多腳本檢測(cè)能力比較弱,甚至某些服自己售賣自動(dòng)腳本,加上手殘操作能力較弱,就萌生了自己解放雙手的想法。
一、資料準(zhǔn)備
首先魔獸世界自己提供了諸多API方便插件開(kāi)發(fā)等,都能用的到,參考鏈接:
除了魔獸API還需要WeakAuras的一些API,另外需要部分lua知識(shí)。
二、實(shí)現(xiàn)原理
通過(guò)魔獸插件WeakAuras把需要獲取的游戲信息,以色塊的形式顯示在屏幕固定位置,再使用按鍵精靈等工具對(duì)色塊進(jìn)行顏色判斷,把需要的信息讀取出來(lái),再通過(guò)按鍵精靈模擬按鍵的方式對(duì)游戲進(jìn)行控制。
其中幾個(gè)需要注意的點(diǎn):
1、魔獸世界UI是有縮放功能,在WA插件中設(shè)定的尺寸不一定第最終的顯示尺寸,所以在識(shí)別色塊之前要對(duì)色塊尺寸進(jìn)行校正。解決辦法是游戲屏幕是原點(diǎn)是固定的,校正色塊就固定在原點(diǎn)位置,以校正色塊的尺寸為判定色塊的距離位置。
按鍵精靈校對(duì)顏色部分代碼:
2、使用WA插件的aura_env.region.Color(0,0,1,0)對(duì)色塊顏色處理,此函數(shù)不能覆蓋WA自帶條件的顏色操作。另外設(shè)置顏色函數(shù)、獲取顏色函數(shù)和按鍵精靈的顏色處理參數(shù)位置存在差異:
3、對(duì)于dps職業(yè),一般目標(biāo)的切換都是玩家手動(dòng)選擇,而且基本是固定不變的,dps職業(yè)往往更加關(guān)注技能釋放的優(yōu)先級(jí),而優(yōu)先級(jí)又跟玩家自身戰(zhàn)斗資源等相關(guān)。
動(dòng)作選擇的處理有兩種方法:(1)是將戰(zhàn)斗資源通過(guò)色塊傳遞給外部程序(按鍵精靈等),再由外部程序作出動(dòng)作選擇;(2)直接在WA中進(jìn)行動(dòng)作選擇,只給外部程序傳遞動(dòng)作信息。顯然只傳遞動(dòng)作信息可以使外部程序端更加簡(jiǎn)單,而且邏輯修改只需要在wa中進(jìn)行,調(diào)試更加方便。
按鍵精靈技能判斷:
4、對(duì)于治療職業(yè),治療一般是打地鼠操作,哪個(gè)掉血加哪個(gè),需要不停的的尋找血少目標(biāo)或者高優(yōu)先級(jí)目標(biāo),對(duì)注意力消耗極大,更加需要自動(dòng)腳本。而魔獸世界的目標(biāo)選擇功能同樣是不對(duì)外開(kāi)放的,所以需要綁定宏命令來(lái)實(shí)現(xiàn)目標(biāo)切換。
魔獸友方角色分別是:
總共需要45個(gè)按鍵,而目前服務(wù)器大多是處于WLK版本,最多是25人團(tuán),所以減少一下按鍵總共需要30個(gè)按鍵,因?yàn)槟ЙF世界允許使用組合鍵,所以就利用小鍵盤的0-9和組合鍵,就可以實(shí)現(xiàn)友方目標(biāo)的選擇功能。小鍵盤0的ASCII碼為96。
這里的綁定方法是:
在wa中創(chuàng)建按鈕并對(duì)按鈕設(shè)置宏命令,再對(duì)按鈕就行按鍵綁定。
外部讀取為:
三、外部程序及UI部分
自動(dòng)腳本的外部程序部分比較簡(jiǎn)單,主要是做外部使用UI,根據(jù)預(yù)設(shè)的色塊的信息傳遞規(guī)則,執(zhí)行相應(yīng)的行為動(dòng)作。圖方便使用按鍵精靈自帶的庫(kù)API較為詳細(xì),能夠滿足需要(如果深入一下的話,使用python會(huì)更好一些)。
四、WA部分
WA負(fù)責(zé)信息的獲取、執(zhí)行策略的選擇和通過(guò)色塊進(jìn)行信息傳遞。這邊使用了5個(gè)色塊,底色使用紅色以便于忽略游戲內(nèi)的圖像干擾。

色塊的含義分別是:
1號(hào)白色校對(duì)色塊
紅色部分為底色,用于區(qū)分第一個(gè)校對(duì)色塊
2號(hào)綠/白按鈕游戲內(nèi)控制是否開(kāi)啟自動(dòng)腳本
3號(hào)目標(biāo)色塊需要選擇的目標(biāo)信息
4號(hào)技能色塊釋放技能信息
5號(hào)為是否開(kāi)啟自動(dòng)驅(qū)散
在游戲中需要不斷獲取信息進(jìn)行決策,所以WA自帶的觸發(fā)器并不太好用,使用WA的自定義初始化動(dòng)作,直接執(zhí)行l(wèi)ua代碼,對(duì)色塊進(jìn)行操作。

通過(guò)創(chuàng)建一個(gè)UI幀,并對(duì)每一幀的update進(jìn)行操作。
剩下的就是獲取信息->邏輯判斷->色塊操作。
1、信息獲取部分
主要使用魔獸世界提供的API進(jìn)行操作。例如
(1)遍歷所有隊(duì)伍角色,如果與玩家距離小于40碼且未死亡則XXX
(2)判斷目標(biāo)的buff/debuff
(3)判斷目標(biāo)debuff類型,用于選擇驅(qū)散技能
(4)獲取目標(biāo)生命值
(5)技能cd
2、邏輯判斷部分大家都懂,包括對(duì)各職業(yè)的理解,邏輯上肯定各不相同。
3、色塊操作部分
wa的代碼非常靈活,可以通過(guò)id獲取其他region的操作權(quán)。
(1)獲取其他色塊的句柄
(2)目標(biāo)色塊處理
之前已經(jīng)對(duì)目標(biāo)按鈕進(jìn)行了綁定,邏輯中可對(duì)選擇目標(biāo)的色塊進(jìn)行處理
(3)技能色塊處理,直接Color就行。