zm.FindMultiColor 超级多点找色
🎯功能
比 FindMultiColor 多点找色 更加强大的命令, 具体特色如下
- 支持多个多点找色数据, 并且返回找到的序号, 详见示例
- 想找会变化的动态图? 请看下面示例
- 参数太多, 写的累? 所有参数都是可选的, 使你的代码更加简洁清晰
- 参数太多, 顺序记不住? 除了对象与范围是固定顺序外, 其他参数全部可以打乱顺序随便写
- 省略参数的默认值不理想? 可使用 zm.SetFindMultiColor 设置FindMultiColor默认参数 来自定义修改
- 担心一次找不到颜色? 自由设置限时循环查找时间, 提高成功率
- 画面变化太大, 相似度不好设置? 智能相似度帮你全自动查找
- 查找方向的数值总是记不住? 直接用中文
"左上","中心","右上","左下","右下",...
来代替 - 脚本出错找不到问题? 开启日志输出显示参数, 所有问题一目了然
- 找到后想等画面消失再继续下一步操作吗? 等待消失参数帮你解决这个烦恼
- 支持命令返回值与参数返回值, 你想怎么写, 就怎么写
- 返回值中有序号, 坐标, 还有对应的颜色值
- 支持对象参数写法, 将所有参数保存到一张表里, 直接传入该表
- 支持重写, 即传入对象参数后, 再写其他参数将会覆盖对应的对象数据, 多点数据比较特殊, 详见示例
- 需要防检测点击功能? 推荐使用zm.FindMultiColorTap 超级多点找色点击
- 需要遍历多个对象数组? 推荐使用zm.FindMultiColorTable 超级多点找色遍历
- 需要返回所有找到的坐标? 推荐使用zm.FindMultiColorEx 超级多点找色返回所有坐标
危险
本命令的方向参数是字符串型, 例如"左上"
之类, 而按键自带命令的方向是数值型, 例如0
之类, 如果直接复制按键命令的参数, 一定要记得修改方向参数!
📜语法
序号坐标颜色 = zm.FindMultiColor([对象,][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 |
参数返回值 | 表 | 可选, 只能传入数组变量名, 用于保存查找结果, 格式与命令返回值相同 |
📤返回
表
, 找到返回结果保存到表中, 格式为{id, x, y, name, "id":id, "x":x, "y":y, "name":name, "miss":miss}
, 没找到或出错返回null
, 使用方法请看示例
💡示例
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次
//--------------------初级用法--------------------//
Dim retA
//表示查找两个多点找色数据, 分别是"BDBDBD","56|33|614B6B"和"242424","-10|2|ABC54A,9|4|12DC67"
//支持无限添加多点找色数据, 只要按照格式"第一点颜色","偏移颜色组"依次添加即可
retA = zm.FindMultiColor("BDBDBD", "56|33|614B6B", "242424", "-10|2|ABC54A,9|4|12DC67")
If retA Then
TracePrint "颜色找到了"
Else
TracePrint "没有找到颜色"
End If
//--------------------查找变化动态图--------------------//
Dim ret
//原理: 用抓抓截图后, 图片是静止不变的, 多次截图可以获取到不同的画面
// 说明所谓的动态图其实就是由一些静止不动的画面来回切换实现的
// 那么对每一次截图采集一些多点找色数据, 然后让脚本循环多次查找这些数据
// 只要任何一个数据找到了, 都可以认为是找到这个动态图了
// 所以可以使用本命令的无限添加多点数据与设置超时时间来实现
// 想提高查找速度的话, 建议缩小范围, 提高相似度
ret = zm.FindMultiColor("BDBDBD", "56|33|614B6B", "242424", "-10|2|ABC54A,9|4|12DC67",5000)
If ret Then
TracePrint "找到序号" & ret(0), "x=" & ret(1), "y=" & ret(2), "颜色=" & ret(3)
Else
TracePrint "没有找到"
End If
//--------------------中级用法--------------------//
Dim 返回数组()
//参数返回值必须是任意数组的变量名, 注意括号写法
//范围省略默认为全屏, 若填写, 则4个数字必须全写, 除对象参数外, 其他参数都要写在范围后面
If zm.FindMultiColor(100, 200, 300, 400, "000000", "44|42|565656", 0.8, 返回数组) Then
TracePrint "找到序号" & 返回数组["id"], "x=" & 返回数组["x"], "y=" & 返回数组["y"], "颜色=" & 返回数组["name"]
Else
TracePrint "没有找到"
End If
//--------------------高级用法--------------------//
//范围后面的可选参数全部可以打乱顺序任意填写或省略, 只要数据类型与格式正确即可
//注意, "第一点颜色","偏移颜色组"这两个参数必须连在一起, 详见上面参数介绍
//这句代码意思如下:
//在范围(100,200,300,400)里, 以相似度为(0.8)的设 置, 从("中心")向四周循环多点找色查找最多2秒钟
//第一点为("00AAFF")偏移颜色组为("42|42|565656")和第一点为("DD58FF")偏移颜色组为("3|4|A25C6D")
//找到任何一个后退出循环查找, 然后点击找到的坐标(True), 并将找到的序号与坐标结果保存到数组变量(ret)与(返回数组)中
//同时开启日志的输出("显示")功能, 在当前脚本第("_39")行输出备注("@怪物1"), 查找结果与其他参数信息
Dim retB = zm.FindMultiColor(100, 200, 300, 400, "00AAFF", "42|42|565656", 0.8, 2000, "中心", "DD58FF", "3|4|A25C6D", True, "显示", "@怪物1", 返回数组, "_39")
If retB Then
TracePrint "找到了"
Else
TracePrint "没有找到"
End If
//--------------------对象用法--------------------//
//可以把所有参数放到一个表中, 可选参数一样可以打乱顺序任意填写或省略
//对象参数必须填写在第一个参数位置
//如果参数对象后面还有参数, 比如("_46"), 则表示重写对象里的("_36"), 使日志输出显示在46行
//注意, 多点找色数据不会被覆盖重写, 只会被追加, 相当于所有的多点找色数据都会被用来查找
Dim 史莱姆 = {"00AAFF", "42|42|565656", 0.8, 2000, True, "显示", "@攻击史莱姆", 返回数组, "_36"}
zm.FindMultiColor 史莱姆, 100, 200, 300, 400, "_46", "DD58FF", "3|4|A25C6D"
//--------------------修改默认值--------------------//
Dim IXYs()
//设置默认参数返回值IXYs, 若命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 zm.FindMultiColor() 都默认输出调试信息
//更多修改默认设置详见 zm.SetFindMultiColor() 命令帮助
zm.SetFindMultiColor {"ret":IXYs, "showlog":"显示"}
If zm.FindMultiColor("00AAFF", "42|42|565656") Then
TracePrint "可以用以下3种格式获取返回值"
TracePrint "找到序号" & IXYs(0), "x=" & IXYs(1), "y=" & IXYs(2), "颜色=" & IXYs(3)
TracePrint "找到序号" & IXYs[1], "x=" & IXYs[2], "y=" & IXYs[3], "颜色=" & IXYs[4]
TracePrint "找到序号" & IXYs["id"], "x=" & IXYs["x"], "y=" & IXYs["y"], "颜色=" & IXYs["name"]
Else
TracePrint "没有找到"
End If
//----------------V4.2039版以上支持颜色描述数组数据----------------//
Dim 黑龙, 白龙 //一维数组例子
黑龙 = {"BDBDBD", "56|33|614B6B"}
白龙 = {"242424", "-10|2|ABC54A,9|4|12DC67"}
Dim retD = zm.FindMultiColor(黑龙, 白龙, 0.8)
If retD Then
TracePrint "颜色找到了"
Else
TracePrint "没有找到颜色"
End If
Dim 颜色数组() //二维数组例子
颜色数组(0) = {"BDBDBD", "56|33|614B6B"}
颜色数组(1) = {"242424", "-10|2|ABC54A,9|4|12DC67"}
Dim retC = zm.FindMultiColor(颜色数组, 0.8)
If retC Then
TracePrint "颜色找到了"
Else
TracePrint "没有找到颜色"
End If
📘备注
- 该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
- 多点找色数据请通过抓抓进行获取
- 偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
- 偏移颜色组是指相对于第一个点的偏移坐标与颜色,比如第一个点颜色123456在100,120坐标,第二个点颜色abcdef在150,180坐标,那么点2相对于点1的偏移坐标就是150-100,180-120,偏移颜色组为“50|60|abcdef”。
- V1.1741: 加入命令
- V1.1745: 查找次数参数修改为超时参数, 加入自定义日志备注与行号, 其中设置相关的属性也有所变动
- V1.1746: 加入点击坐标参数
- V1.1750: 删除随机范围点击功能, 加入智能相似度参数
- V1.1802:
- 支持zm.SetTap 设置超级点击的随机点击
- 通过KeepCapture 截图至内存加快超级图色查找速度
- 优化部分参数判定, 兼容更多乱序参数
- 返回值加入找到颜色值
- V1.1803: 支持超级缩放命令, 点击功能只受是否点击参数影响
- V1.1804: 加入找到后等待消失可选参数
- V1.1813: 修复点击参数不继承
zm.SetTap()
设置延时和等待消失无效的问题, 感谢 likanglong 反馈 - V1.1818:
- 修复由超级缩放命 令引起的自动点击坐标0,0问题, 感谢 ersheep 反馈此BUG
- 修复超级图色输出是否点击异常, 感谢 2578学员 反馈此BUG
- V2.1826: 为智能相似度增加另一种方便的写法, 旧语法依旧有效
- V2.1828: 若要点击找到坐标, 推荐使用zm.FindMultiColorTap 超级多点找色点击
- V3.1852:
- 偏移颜色组参数支持带小数点坐标
- 启用检测是否消失功能后, 返回最后一次出现的坐标与序号, 保存在键名
missx
,missy
,missid
中
- V4.2039: 加入颜色描述数组数据支持
- V4.2042: 日志参数
showlog
加入["显示找到","显示没找到","showfind","shownofind"]
选项