zm.FindCmpPC 超级查找对比图色
🎯功能
集成 zm.FindMultiColor 超级多点找色 , zm.FindPic 超级找图 , zm.CmpColorEx 超级多点比色 和 zm.FindColor 超级找色 四大命令功能, 根据传入的图色数据参数格式智能分配命令使用. 一些特色功能或注意事项如下:
- 注意:
图色数据
参数中请不要填写找图偏色参数 - 注意:
方向
参数是字符串内容, 不是按键自带的数值型 - 注意: 依次按
多点找色, 找图, 多点比色, 找色
的顺序进行查找比较, 一旦查找比较成功, 立即返回结果 - 注意:
图色数据
参数支持多个参数, 若出现不同类型的图色数据, 请使用一维数组{}
分类传入, 内部会自动合并到同一个分类下 - 注意:
查找超时
参数遇到多个不同类型的图色数据时, 每种数据都将独立计算一次超时时间 - 注意: 默认参数是通过 zm.SetFindMultiColor 设置FindMultiColor默认参数 , zm.SetFindPic 设置FindPic默认参数 , zm.SetCmpColorEx 设置CmpColorEx默认参数 , zm.SetFindColor 设置FindColor默认参数 分别修改的
- 注意: 返回值table中的
fun
键值对里存放对应找到函数名,id
键值对存放该函数下的第几个数据 - 注意: 填写
对象
参数后, 最好别再写别的参数 - 参数太多, 写的累? 除了对象与图色数据二选一必选外, 其他参数都是可选的, 使你的代码更加简洁清晰
- 参数太多, 顺序记不住? 除了对象与范围是固定顺序外, 其他参数全部可以打乱顺序随便写
- 省略参数的默认值不理想? 可以自定义修改
- 担心一次找不到图色数据? 自由设置限时循环查找时间, 提高成功率
- 画面变化太大, 相似度不好设置? 智能相似度帮你全自动查找
- 查找方向的数值总是记不住? 直接用中文
"左上","中心","右上","左下","右下",...
来代替 - 脚本出错找不到问题? 开启日志输出显示参数, 所有问题一目了然
- 找到后想等画面消失再继续下一步操作吗? 等待消失参数帮你解决这个烦恼
- 支持命令返回值与参数返回值, 你想怎么写, 就怎么写
- 返回值中有序号, 坐标等内容
- 支持对象参数写法, 将所有参数保存到一张表里, 直接传入该表
- 需要防检测点击功能? 推荐使用zm.FindCmpPCTap 超级查找对比图色点击
- 需要遍历多个对象数组? 推荐使用zm.FindCmpPCTable 遍历超级查找对比图色
📜语法
结果 = zm.FindCmpPC([对象][x1, y1, x2, y2, ][图色数据][, 方向][, 相似度[, 智能相似度[, 相似度步长]]][, 查找超时][, 是否点击][, 点击坐标][, 显示日志][, 输出行号][, 备注][, 等待消失][, 消失超时][, 参数返回值])
📥参数
参数 | 数据类型 | 解释 |
---|---|---|
对象 | 表 | 可选, 把所有参数放入一个table中传入, 若填写本参数后, 建议不要再跟其他参数 |
x1 | 数值型 | 可选, 查找范围的左上角x坐标, 省略默认为0 |
y1 | 数值型 | 可选, 查找范围的左上角y坐标, 省略默认为0 |
x2 | 数值型 | 可选, 查找范围的右下角x坐标, 省略默认为0 |
y2 | 数值型 | 可选, 查找范围的右下角y坐标, 省略默认为0 |
图色数据 | 字符串 或 表 | 可选, 可填写找图的图片路径, 找色的颜色值, 多点找色或多点比色的颜色数据, 若填写多个不同类型数据, 请用 {} 一维数组分开传入, 详见下面例子 |
方向 | 字符串 | 可选, 从指定方向开始查找, 省略默认为"左上" , 支持["左上","中心","右上","左下","右下","上左","上右","下左","下右"] 这几个值 |
相似度 | 数值型 | 可选, 对比查找的相似度小数, 省略默认为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 |
参数返回值 | 表 | 可选, 只能传入数组变量名, 用于保存查找结果, 格式与命令返回值相同 |
📤返回
表
, 找到返回结果保存到表中, 格式为{id, x, y, name, "id":id, "x":x, "y":y, "name":name, "miss":miss, "fun":fun}
, 没找到或出错返回null
, 使用方法请看示例
💡示例
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次
//--------------------初级用法--------------------//
//支持传入多点找色, 找图, 多点比色, 找色四大命令的图色数据
Dim 结果_绿龙 = zm.FindCmpPC(100, 200, 300, 400, "1FC5F4|0DD200|FFFFFF|504135|D97700")
If 结果_绿龙 Then
TracePrint "找到坐标为:", 结果_绿龙["x"], 结果_绿龙["y"]
Else
TracePrint "没有找到绿龙"
End If
//多点找色数据可以放到一维数组中传入, 也可以直接分两个参数传入
Dim 多点找色_白龙 = {"242424", "-10|2|ABC54A,9|4|12DC67"}
Dim 结果_白龙 = zm.FindCmpPC(100, 200, 300, 400, 多点找色_白龙)
//上面等同于 Dim 结果_白龙 = zm.FindCmpPC(100, 200, 300, 400, 多点找色_白龙[1], 多点找色_白龙[2])
If 结果_白龙 Then
TracePrint "找到坐标为:", 结果_白龙["x"], 结果_白龙["y"]
Else
TracePrint "没有找到白龙"
End If
//--------------------中级用法--------------------//
//可以在参数中传入数组代表返回值
Dim 结果_黑龙()
If zm.FindCmpPC("黑龙1.png|黑龙2.png", 结果_黑龙) Then
TracePrint "找到坐标为:", 结果_黑龙["x"], 结果_黑龙["y"]
Else
TracePrint "没有找到黑龙"
End If
//可以把多个参数直接封装进一维数组中作为对象参数传入
Dim 多点比色_红龙 = {"205|177|0CBB00,228|169|FFFFFF", 0.8}
Dim 结果_红龙 = zm.FindCmpPC(多点比色_红龙)
If 结果_红龙 Then
TracePrint "找到坐标为:", 结果_红龙["x"], 结果_红龙["y"]
Else
TracePrint "没有找到红龙"
End If
//--------------------高级用法--------------------//
//多个不同类型的图色数据建议用一维数组分开传入
Dim 图片_黄龙 = {"黄龙1.png", "黄龙2.png"}
Dim 颜色_黄龙 = {"1FC5F4|0DD200|FFFFFF", "504135|D97700"}
Dim 多点找色_黄龙 = {{"242424", "-10|2|ABC54A,9|4|12DC67"}, {"1FC5F4","137|-7|0DD200,151|173|FFFFFF"}}
Dim 多点比色_黄龙 = {"205|177|0CBB00,228|169|FFFFFF", "195|242|1FC5F4,332|235|0DD200"}
Dim 结果_黄龙()
Dim 图色_黄龙 = {100, 200, 300, 400, 图片_黄龙, 颜色_黄龙, 多点找色_黄龙, 多点比色_黄龙, 5000, 结果_黄龙}
//依次按多点找色, 找图, 多点比色, 找色顺序查找, 每个类型限时5000毫秒, 找到任何一个立即返回到结果_黄龙数组中
If zm.FindCmpPC(图色_黄龙) Then
TracePrint "找到坐标为:", 结果_黄龙["x"], 结果_黄龙["y"], ", 序号为:", 结果_黄龙["id"], ", 命令为:", 结果_黄龙["fun"]
Else
TracePrint "没有找到黄龙"
End If
//--------------------修改默认值--------------------//
//本函数没有自己的默认值, 而是由四大图色命令的分别对应各自默认值
//使用zm.SetFindMultiColor()修改本命令使用多点找色数据时候的默认值
//使用zm.SetFindColor()修改本命令使用找色数据时候的默认值
//使用zm.SetFindPic()修改本命令使用找图数据时候的默认值
//使用zm.SetCmpColorEx()修改本命令使用多点比色数据时候的默认值
//这里修改多点找色默认值为例, 更多修改默认设置详见各个命令帮助
//设置多点找色的默认日志输出为显示找到状态, 返回值为xy数组
Dim xy()
zm.SetFindMultiColor {"ret":xy, "showlog":"显示找到"}
If zm.FindCmpPC("00AAFF", "42|42|565656") Then
TracePrint "可以用以下3种格式获取返回值"
TracePrint "找到序号" & xy["id"], "x=" & xy["x"], "y=" & xy["y"], "颜色=" & xy["name"]
Else
TracePrint "没有找到"
End If
📘备注
- 该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
- 虽然本命令集成了四大图色命令, 但我依旧推荐单独使用对应图色命令, 因为各自对应命令更加 便于阅读代码
- V4.2042: 初次加入