首先申明,大家不要把制作的腳本拿到游戲中去玩,倒不是因為自瞄影響了公平性,而是這個腳本效果很差,確實有自瞄功能,卻相當難用,到時候坑了隊友就不好了。這個腳本是用按鍵精靈做的,只是實現了基本的功能,并不成熟。
自瞄的基本原理是捕捉準心周圍敵軍的顏色,如果找到了,就將鼠標移動到找到的顏色上,然后開槍。而按鍵精靈就提供了區域模糊找色以及移動鼠標的命令,所以很容易就能夠實現這功能。fps游戲的準心永遠在屏幕正中央,也就是在玩fps游戲時,鼠標永遠在屏幕中央那一塊。在游戲中準心移動的距離并不是實際的鼠標移動的距離,大約是1比3的關系,也就是準心移動一個像素,鼠標實際移動3個像素,細心的朋友可以自己實驗一下。這在后面會用到。
現在開始制作腳本,打開按鍵精靈,新建空白腳本,在編輯區選擇源文件。輸入setSimMode 2,意思是模擬方式選擇超級模擬,如果不是超級模擬的話腳本就運行不了。代碼不用一個一個字母的敲,打出前幾個字母,后面會智能提醒。然后打開游戲,注意是以窗口模式打開。接下來的要做的是獲取游戲窗口句柄,代碼是hwnd=Plugin.Windows.MousePoint 。將鼠標放在游戲窗口上就能獲取了。取得窗口句柄就能對窗口進行各種操作了。rect = Plugin.Windows.GetClientRect(hwnd),意思是獲得窗口的大小。rect是一個字符串,用arr = split(rect,"|")將字符串分割成數組,數組的前面兩個元素就是窗口的左上角的坐標。
可以用TracePrint arr(0)和 TracePrint arr(1) 來在控制臺輸出窗口左上角的坐標,看看是否正確獲取到了左上角的坐標。
然后進入守望先鋒訓練模式,截一張圖,將圖片粘貼到畫板中,找到槍的準心的坐標,記下這個坐標。回到編輯區,輸入下面的代碼,圓心X = arr(0) + 坐標的第一個值 ,圓心Y =arr(1)+坐標的第二個值。代碼的意思是游戲中準心的坐標為窗口左上角的坐標加上剛剛測得的準心坐標。
然后回到畫圖,在準心左上面一點的位置找一個點,記下坐標,右下面一點的位置找一個點,記下坐標,而自瞄的范圍就是這兩個點之間的區域,也就是準心周圍的區域,一旦這個區域內出敵方目標,準心就移動到敵方單位上。代碼是左上角X = arr(0)+左上坐標的第一個值,左上角Y = arr(1)+左上坐標的第二個值,右下角X = arr(0) +右下坐標的第一個值,右下角Y = arr(1) +右下坐標的第二個值,原理同上。
大家不要模仿圖片的代碼,因為每個電腦的點的坐標不一樣。
接下來就很簡單了。插入顏色圖形命令中的區域模糊找色命令,區域屏幕的四個參數就是左上角X,左上角Y,右下角X,右下角Y,相似度為0.5就行,查找方式為0,從左上往右下。然后進入訓練模式,截一種訓練機器人的圖。放進畫圖。打開按鍵精靈的抓抓工具,鼠標移到圖片中機器人的邊緣紅色區域,在抓抓工具的放大鏡中可以看到。按ctrl+alt+1,可以記下這個點的顏色值,放進區域模糊找色的命令的顏色參數中。
再介紹一個命令,moveR,這個命令控制鼠標相對移動的距離。上個命令取得的指定顏色塊的坐標保存在intX,itnY中,用準心坐標減去這個坐標,得到坐標差,鼠標移動這個坐標差就到了指定顏色塊的位置,然后單擊左鍵。只需要重復執行找色代碼就行,加上 do loop和延遲,完整代碼如下
mover的y坐標可以加上20個像素,因為準心容易瞄準到機器人的血條而瞄準不到人,y坐標加上20像素可以解決。
現在可以打開游戲測試,看到自己制作的腳本是不是很有成就感。但是這個腳本只能在游戲窗口模式下運行,因為守望先鋒禁止了按鍵精靈后臺取色的插件,所以不能全屏模式下取到顏色。
可能沒有用過按鍵精靈的朋友看教程有點吃力,但是篇幅有限,沒辦法講的很詳細,如果有不懂的可以在評論區留言談論或者自己查看按鍵精靈的文檔。