zm.FindCmpPC 超级查找对比图色

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

功能

集成 zm.FindMultiColor 超级多点找色 , FindPic 找图 , CmpColorEx 对比多个点颜色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, 使用方法请看示例

示例

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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: 初次加入