zm.FindMultiColorEx 超级多点找色返回所有坐标

文章目录
  1. 1. 功能
  2. 2. 语法
  3. 3. 参数
  4. 4. 返回值
  5. 5. 示例
  6. 6. 备注

功能

zm.FindMultiColor 超级多点找色类似, 区别在于本命令会找到所有符合条件的坐标并返回二维数组

语法

序号坐标颜色 = zm.FindMultiColorEx([对象,][x1,y1,x2,y2,][第一点颜色,偏移颜色组][,方向][,相似度[,智能相似度[,相似度步长]]][,超时时间][,是否点击坐标][,点击坐标][,显示日志][,输出行号][,备注][,等待消失][,消失超时][,参数返回值])

参数

参数 数据类型 解释
对象 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1 数值型 可选, 查找范围的左上角x坐标, 省略默认为0
y1 数值型 可选, 查找范围的左上角y坐标, 省略默认为0
x2 数值型 可选, 查找范围的右下角x坐标, 省略默认为0
y2 数值型 可选, 查找范围的右下角y坐标, 省略默认为0
第一点颜色 字符串 可选, 要查找的16进制颜色,格式为“BBGGRR”,多个颜色用“|”隔开,偏色使用“-”隔开,比如”FFFFFF-101010|123456”, 后面必须跟偏移颜色组, 支持多参数, 详见示例
偏移颜色组 字符串 可选, 相对与第一个颜色坐标点的偏移颜色组,推荐用抓抓工具快速生成, 前面必须是第一点颜色,支持多参数, 详见示例
方向 字符串 可选, 从指定方向开始查找, 省略默认为"左上", 支持["左上","中心","右上","左下","右下","上左","上右","下左","下右"]这几个值
相似度 数值型 可选, 对比查找的相似度小数, 省略默认为0.9, 取值范围[0, 1.0], 越高越相似
智能相似度 数值型 可选, 与相似度组成组成智能相似计算范围, 适合图色变化大的情况, 省略默认取值与相似度相同, 取值范围[0, 1.0], 越高越相似
相似度步长 数值型 可选, 智能相似度调节变化间隔, 必须写在相似度后面, 省略默认为0.05, 取值范围[0, 1.0]
超时时间 数值型 可选, 最大查找耗时, 单位毫秒, 如果一次找不到, 可以限时循环查找, 省略默认为1
是否点击 布尔型 可选, 是否需要找到后自动点击该坐标, 支持[true, false]这两个值, 省略默认为false
点击坐标 字符串 可选, 点击修改后的坐标, 格式"±x,±y,t", 省略为点击找到坐标, t是可选的, 表示点击后延时毫秒, 例如"100,100"表示固定点击坐标100,100, "+10,-10"表示偏移点击找到的x+10,y-10位置, "10,10,2000"表示点击10,10坐标后延时2000毫秒, 该参数会受zm.SetTap 设置超级点击影响
显示日志 字符串 可选, 输出调试日志信息, 省略默认为”隐藏”, 支持 ["显示","显示找到", "显示没找到","隐藏","show", "showfind", "shownofind","hide"] 这几个值
输出行号 字符串 可选, 格式为"_"开头后跟行号, 比如"_10"表示第10行代码, 输出调试信息窗口显示第几行代码, 需开启显示日志才有效
备注 字符串 可选, 格式为"@"开头后跟内容, 比如"@拾取屠龙刀", 输出调试信息窗口就会增加这条内容, 若连续两个"@@"则表示在浮窗中显示信息, 需要开启显示日志才有效
等待消失 数值型 可选, 填写-1禁用或-2启用, -2表示找到后或点击后继续查找, 直到找不到或消失超时, 省略默认为-1, 启用后返回值将有miss键名, 值为true时表示成功消失, 值为false表示未消失
消失超时 数值型 可选, 填写负数, 表示等待消失的超时时间, 单位毫秒, 注意必须填写负数, 不可填-1和-2, 省略默认为-2000
参数返回值 table 可选, 只能传入数组变量名, 用于保存查找结果, 格式与命令返回值相同

返回值

table , 找到返回结果保存到表中, 格式为{ {id, x, y}, ..., "xy":{id:{ {x,y}, ...}, ...}, "id":{id, ...}, "counts":数量, "miss":miss}, 没找到或出错返回null

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次

Dim ret
ret = zm.FindMultiColorEx("BDBDBD", "56|33|614B6B", "000000", "56|33|614B6B")
If ret Then
TracePrint "颜色找到了, 有以下几种方式遍历找到的坐标"
TracePrint "第1种:遍历数组方法"
For i = 0 to Ubound(ret)
TracePrint "颜色序号:", ret(i, 0), " 坐标:", ret(i, 1), ret(i, 2)
Next

TracePrint "第2种:遍历键名"
For Each k , v In ret["xy"]
For Each xy In v
TracePrint "颜色序号:", k, " 坐标:", xy[1], xy[2]
Next
Next

TracePrint "第3种:获取指定颜色序号的坐标"
If ret["xy"][2] Then
For Each xy In ret["xy"][2]
TracePrint "颜色序号2的找到坐标:", xy[1], xy[2]
Next
Else
TracePrint "颜色序号2没有找到"
End If
Else
TracePrint "没有找到颜色"
End If

备注

  • 该命令与zm.FindMultiColor 超级多点找色类似, 唯一区别在于返回内容是找到的所有坐标二维数组
  • V2.1829: 加入命令
  • V3.1830:
    • 函数名从zm.FindMultiColorAll()改为zm.FindMultiColorEx()
    • 返回值格式改动, 具体看帮助
  • V3.1831: 修复返回值被前次结果覆盖的问题
  • V3.1852:
    • 偏移颜色组参数支持带小数点坐标
    • 启用检测是否消失功能后, 返回最后一次出现的坐标与序号, 保存在键名missx, missy, missid
  • V4.2039: 加入颜色描述数组数据支持
  • V4.2042:
    • 修复颜色描述数组兼容问题
    • 日志参数 showlog 加入 ["显示找到","显示没找到","showfind","shownofind"] 选项