跳到主要内容

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

🎯功能

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

危险

本命令的方向参数是字符串型, 例如"左上"之类, 而按键自带命令的方向是数值型, 例如0之类, 如果直接复制按键命令的参数, 一定要记得修改方向参数!

📜语法

序号坐标颜色 = 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

💡示例

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"] 选项