游戲腳本技術(shù):按鍵精靈判斷人物行走狀態(tài)
方法一:顏色點(diǎn)對(duì)比在人物行走過(guò)程中,我們可以通過(guò)判斷游戲畫(huà)面有沒(méi)有變化來(lái)確定人物是否還在行走。具體操作步驟如下:1. 觀察游戲里人物行走時(shí)會(huì)變化的區(qū)域和停止時(shí)不變化的區(qū)域。2. 獲取這些區(qū)域內(nèi)的任意幾
方法一:顏色點(diǎn)對(duì)比
在人物行走過(guò)程中,我們可以通過(guò)判斷游戲畫(huà)面有沒(méi)有變化來(lái)確定人物是否還在行走。具體操作步驟如下:
1. 觀察游戲里人物行走時(shí)會(huì)變化的區(qū)域和停止時(shí)不變化的區(qū)域。
2. 獲取這些區(qū)域內(nèi)的任意幾個(gè)顏色點(diǎn)。
3. 對(duì)比第一次獲取到的點(diǎn)和第二次獲取到的點(diǎn)的顏色值是否一樣。
如果要判斷更多的點(diǎn),可以定義更多的變量來(lái)記錄不同點(diǎn)的顏色值。當(dāng)兩次獲取到的值進(jìn)行對(duì)比后,如果結(jié)果一致,則說(shuō)明人物未移動(dòng),反之則表示人物正在行走中。
代碼示例:
```
Do
TracePrint "判斷人物行進(jìn)狀態(tài)"
LoopFunction 判斷人物行進(jìn)狀態(tài)
Dim i, j, ColorA1, ColorB1, ColorC1, ColorD1, ColorA2, ColorB2, ColorC2, ColorD2
For i 0 To 1
j 0
ColorA1 ColorA2
ColorB1 ColorB2
ColorC1 ColorC2
ColorD1 ColorD2
ColorA2 (198, 63, 0)
ColorB2 (375, 155, 0)
ColorC2 (204, 360, 0)
ColorD2 (508, 525, 0)
If ColorA1 ColorA2 Then
j j 1
End If
If ColorB1 ColorB2 Then
j j 1
End If
If ColorC1 ColorC2 Then
j j 1
End If
If ColorD1 ColorD2 Then
j j 1
End If
If j > 2 Then
判斷人物行進(jìn)狀態(tài) 0 ' 停止行走
Exit Function
End If
Next
判斷人物行進(jìn)狀態(tài) 1 ' 行走中
End Function
```
方法二:使用大漠插件
另一種判斷游戲畫(huà)面變化的方法是使用大漠插件的IsDisplayDead函數(shù)。這個(gè)函數(shù)可以判斷指定區(qū)域內(nèi)的圖像數(shù)據(jù)是否在指定時(shí)間內(nèi)一直不變。具體操作步驟如下:
1. 調(diào)用注冊(cè)大漠插件的命令。
2. 使用IsDisplayDead函數(shù)判斷區(qū)域內(nèi)的圖像是否在變化。
代碼示例:
```
Call 注冊(cè)大漠()
Set dm createobject("")
DO
If (37, 89, 663, 556, 3) 1 Then
TracePrint "不走了"
Else
TracePrint "行走中"
End If
Loop
Function 注冊(cè)大漠()
Dim i
' 釋放附件內(nèi)容
PutAttachment "C: est_game", "*.*"
Set ws createobject("")
For i 0 To 20
' 注冊(cè)atl跟dm插件
("regsvr32 atl.dll -s")
("regsvr32 C: est_gamedm.dll -s")
Delay 200
Set ws nothing
Set dm createobject("")
ver ()
' 輸出版本號(hào)
If ver <> "" Then
Exit For
End If
Next
If i > 20 Then
TracePrint "大漠插件注冊(cè)失??!"
End If
Set dm nothing
Delay 10
End Function
```
需要注意的是,IsDisplayDead函數(shù)的等待時(shí)間最小只能設(shè)置為0.6秒。如果希望等待時(shí)間少于0.6秒,建議使用方法一來(lái)判斷人物行走狀態(tài)。