游戏脚本技术:按键精灵判断人物行走状态
方法一:颜色点对比
在人物行走过程中,我们可以通过判断游戏画面有没有变化来确定人物是否还在行走。具体操作步骤如下:
1. 观察游戏里人物行走时会变化的区域和停止时不变化的区域。
2. 获取这些区域内的任意几个颜色点。
3. 对比第一次获取到的点和第二次获取到的点的颜色值是否一样。
如果要判断更多的点,可以定义更多的变量来记录不同点的颜色值。当两次获取到的值进行对比后,如果结果一致,则说明人物未移动,反之则表示人物正在行走中。
代码示例:
```
Do
TracePrint "判断人物行进状态"
LoopFunction 判断人物行进状态
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
判断人物行进状态 0 ' 停止行走
Exit Function
End If
Next
判断人物行进状态 1 ' 行走中
End Function
```
方法二:使用大漠插件
另一种判断游戏画面变化的方法是使用大漠插件的IsDisplayDead函数。这个函数可以判断指定区域内的图像数据是否在指定时间内一直不变。具体操作步骤如下:
1. 调用注册大漠插件的命令。
2. 使用IsDisplayDead函数判断区域内的图像是否在变化。
代码示例:
```
Call 注册大漠()
Set dm createobject("")
DO
If (37, 89, 663, 556, 3) 1 Then
TracePrint "不走了"
Else
TracePrint "行走中"
End If
Loop
Function 注册大漠()
Dim i
' 释放附件内容
PutAttachment "C: est_game", "*.*"
Set ws createobject("")
For i 0 To 20
' 注册atl跟dm插件
("regsvr32 atl.dll -s")
("regsvr32 C: est_gamedm.dll -s")
Delay 200
Set ws nothing
Set dm createobject("")
ver ()
' 输出版本号
If ver <> "" Then
Exit For
End If
Next
If i > 20 Then
TracePrint "大漠插件注册失败!"
End If
Set dm nothing
Delay 10
End Function
```
需要注意的是,IsDisplayDead函数的等待时间最小只能设置为0.6秒。如果希望等待时间少于0.6秒,建议使用方法一来判断人物行走状态。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。