2016 - 2024

感恩一路有你

游戏脚本技术:按键精灵判断人物行走状态

浏览量:4595 时间:2024-07-01 19:51:42 作者:采采

方法一:颜色点对比

在人物行走过程中,我们可以通过判断游戏画面有没有变化来确定人物是否还在行走。具体操作步骤如下:

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秒,建议使用方法一来判断人物行走状态。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。