跳到主要内容

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: 初次加入