当前位置: 首页 > 按键精灵 > 正文

紫猫插件手机版帮助文档

命令名称:zm.About 介绍与下载功能说明:输出最新版插件更新内容,当传入命令字符串参数时,输出该命令的在线文档地址。语法格式:结果 = zm.About([命令])命令参数:命令: 字符串, 可选参数,紫猫插件里的命令名,例如`RndStr`、

信义之树
//下面代码实现在5000毫秒内不断循环比较两组多点比色数据, 任何一组对比成功了, 就立即返回该组数据的第一个坐标
//超过5000毫秒没对比成功, 就返回null
ret = zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", 5000)
If ret Then
    TracePrint "对比颜色成功, 序号=" & ret(0), "x=" & ret(1), "y=" & ret(2), "name=" & ret(3)
Else
    TracePrint "对比颜色失败"
End If

//--------------------例子3--------------------//
Dim 返回数组()
//参数返回值必须是任意数组的变量名, 注意括号写法
//除对象参数外, 大部分参数都可以打乱顺序填写, 只要数据类型与格式正确即可
//下面代码实现以(0.8)的颜色相似度比较两组多点比色数据, 并把返回结果保存在数组变量(返回数组)中
If zm.CmpColorEx(0.8, "205|177|0CBB00,228|169|FFFFFF", 返回数组, "61|340|3DC3EE") Then
    TracePrint "对比颜色成功, 序号=" & 返回数组["id"], "x=" & 返回数组["x"], "y=" & 返回数组["y"], "name=" & 返回数组["name"]
Else
    TracePrint "对比颜色失败"
End If

//--------------------例子4--------------------//
//有时候颜色的相似度不好取值, 那么可以借助智能相似度实现判断
//下面这段代码中就表示从高相似度1.0到低相似度0.7, 以每次减少0.1的值进行循环对比
//只要对比成功了, 就立即返回结果, 需注意, 相似度步长必须写在两个颜色相似度后面
ret = zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", 0.7, 1.0, 0.1)
If ret Then
    TracePrint "对比颜色成功, 序号=" & ret(0), "x=" & ret(1), "y=" & ret(2), "name=" & ret(3)
Else
    TracePrint "对比颜色失败"
End If

//--------------------例子5--------------------//
//请注意这个例子中的参数("0.7"), 这是指数量相似度, 必须是字符串数据类型
//数量相似度是指多点比色数据中符合条件点的比例, "0.7"即70%以上个点符合条件
//例如下面这组多点比色数据一共有4个点, 那么对比时, 只要有4*0.7=2.8个点以上符合条件, 就可以返回对比成功
ret = zm.CmpColorEx("5|7|0CBB00,2|1|FFFFFF,4|3|3DC3EE,1|3|354311", "0.7")
If ret Then
    TracePrint "对比颜色成功, 序号=" & ret(0), "x=" & ret(1), "y=" & ret(2), "name=" & ret(3)
Else
    TracePrint "对比颜色失败"
End If

//--------------------例子6--------------------//
//写代码过程中的调试输出信息是非常重要的, 但是每次都要专门写一次TracePrint也挺麻烦
//所以可以直接把输出信息写在参数里, 让它自动输出详细内容
//加入参数("显示")或("show")就表示要输出结果, 没有这个参数就不会输出内容
//加入参数("@内容")就表示输出的备注信息, 因为这个输出是不带行号的, 所以备注信息很有必要输出显示
//加入参数("_行数")表示在带上输出行号, 不过代码改动, 行号变化后, 这里也要重新修改, 比较麻烦, 不如备注来的方便
ret = zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", "显示", "@怪物", "_72")
If ret Then
    TracePrint "对比颜色成功"
Else
    TracePrint "对比颜色失败"
End If

//--------------------例子7--------------------//
//对比成功后可能会需要点击操作, 那么加入参数(true)就可以实现点击返回的坐标
//但是由于对比和点击是由两个动作组成, 所以更加推荐使用zm.CmpColorExTap()命令来实现这个功能
//省略点击坐标参数情况下, 默认点击的坐标是对比成功的颜色组第一个点
//比如第一组颜色对比成功, 那么点击就是(205,177), 如果是第二组, 那么就是点击(61,340)
//如果加入点击坐标参数("100,-20,3000"), 那么点击坐标将发生改变, 以返回坐标(205,177)为例
//实际点击坐标是(100,177-20=157), 并且点击后延时3000毫秒
//更多关于点击坐标参数格式请查看参数信息里的内容
ret = zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", True, "100,-20,3000")
If ret Then
    TracePrint "对比颜色成功"
Else
    TracePrint "对比颜色失败"
End If


//--------------------例子8--------------------//
//有时候需要判断对比成功后, 过一段时间画面消失, 也就是对比失败这个过程
//那么可以通过等待消失和消失超时参数来实现
//下面代码中, 参数(-2)表示开启等待消失功能, 参数(-5000)表示在5000毫秒内不断判断对比是否失败
//如果对比失败, 就表示画面消失了, 立即返回结果
//其中返回的坐标依旧是对比成功点的坐标, 而是否消失的结果保存在键名("miss")中
//要注意的是只有先对比成功后, 才会进入等待消失, 如果一开始就对比失败, 那就不会去等待消失了
ret = zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", -2, -5000)
If ret Then
    TracePrint "对比颜色成功, 序号=" & ret(0), "x=" & ret(1), "y=" & ret(2), "name=" & ret(3)
    TracePrint "画面是否消失 = ", ret["miss"]
Else
    TracePrint "对比颜色失败"
End If

//--------------------例子9--------------------//
//可选参数都可以组合起来实现, 大部分参数可以乱序填写, 下面代码意思如下:
//以颜色相似度为(0.8), 数量相似度("0.7")的设置
//比较两组多点比色数据, 分别是"205|177|0CBB00,228|169|FFFFFF"和"61|340|3DC3EE"
//限时在2000毫秒内循环比较, 找到任何一个后退出循环查找
//并将对比成功颜色组的序号和第一个点坐标保存在数组变量(ret)与(返回数组)中
//比如"205|177|0CBB00,228|169|FFFFFF"对比成功则返回序号0, 坐标(205,177)
//而如果是"61|340|3DC3EE"对比成功, 则返回序号1, 坐标(61,340)
//同时开启日志的输出("显示")功能, 输出备注("@紫猫Boss"), 对比结果与其他参数信息
ret = zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", 0.8, "0.7", 2000, "显示", "@紫猫Boss", 返回数组)
If ret Then
    TracePrint "对比颜色成功"
Else
    TracePrint "对比颜色失败"
End If

//--------------------例子10--------------------//
//脚本变量的管理是一个难题, 每组图色数据都是独立的, 为了方便代码结构的管理
//可以把所有参数放到一个表中, 表中的数据一样可以打乱顺序任意填写或省略
//这个表就是对象参数, 它必须填写在第一个参数位置
//如果参数对象后面还有参数, 比如("_133"), 则表示重写对象里的("_36"), 使日志输出显示在46行
//注意, 多点比色数据不会被覆盖重写, 只会被追加, 相当于所有的多点比色数据都会被用来查找
//如果你有多组不同的对象参数需要遍历, 那么推荐使用zm.CmpColorExTable()
Dim 史莱姆 = {"205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", 0.8, 2000, "显示", "@怪物1", 返回数组, "_39"}
zm.CmpColorEx 史莱姆, "_134", "11|140|1542EE"

//--------------------例子11--------------------//
Dim IXYs()
//设置默认参数返回值IXYs, 若命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有超级多点比色相关命令都默认输出调试信息
//更多修改默认设置详见 zm.SetCmpColorEx() 命令帮助
zm.SetCmpColorEx {"ret":IXYs, "showlog":"显示"}
If zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF") Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "对比颜色成功, 序号" & IXYs(0), "x=" & IXYs(1), "y=" & IXYs(2)
    TracePrint "对比颜色成功, 序号" & IXYs[1], "x=" & IXYs[2], "y=" & IXYs[3]
    TracePrint "对比颜色成功, 序号" & IXYs["id"], "x=" & IXYs["x"], "y=" & IXYs["y"]
Else
    TracePrint "对比颜色失败"
End If

备注:该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
多点比色颜色组数据请通过抓抓进行获取
偏色是微调,指对RBG三色分别确定取色范围。颜色相似度是粗调,指对颜色整体做百分比判断。
数量相似度是指颜色组对比成功点的比例, 例如 `”1|1|3DC3EE,2|2|346AFF,3|3|1592FF,4|4|1592FF,5|5|231209,6|6|241306,7|7|201004,8|8|241306,9|9|241306″` 这组多点比色数据有9个点, 如果数量相似度填写`”0.8″`就意味着对比成功条件是`0.8*9=7.2`个点以上符合要求, 而点的个数肯定是整数, 所以就是必须要8个点或9个点才能算对比成功
V3.1830: 加入命令
命令名称:zm.CmpColorExTable 超级多点比色遍历
功能说明:zm.cmpcolorex 类似, 参数只有一个对象数组, 可实现多个对象的遍历对比
语法格式:结果 = zm.CmpColorExTable(对象table)
命令参数:对象table: table, 把 zm.cmpcolorex 的对象参数放入table数组中, 实现多个对象的遍历对比
返回值:table: 找到返回结果保存到表中, 格式为`{“success”:找到数量, “fail”:没找到数量, “键名”:{id, x, y, name, “id”:id, “x”:x, “y”:y, “name”:name}, …}`, 全部没找到或失败返回`null`
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

//将多个对象放入打怪table中, 每个对象都有各自的键名与各自的参数键值
Dim 打怪(), Boss坐标()
打怪["史莱姆"] = {"61|340|3DC3EE,91|344|346AFF,472|154|1592FF", true}
打怪["黑龙"] = {"421|237|241306,438|261|241306", 0.8, true}
打怪["紫猫BOSS"] = {"295|290|241306", Boss坐标} //这个不点击

//遍历打怪table, 返回每个对象成员的结果
Dim t = zm.CmpColorExTable(打怪)
If t Then
    TracePrint zm.VarInfo(t)
    TracePrint "找到了", t["success"], "个对象"
    TracePrint "没找到", t["fail"], "个对象"
    //在确认有找到的情况下, 可以单独判断某个对象是否有找到, 包括获取该对象的坐标结果等
    If t["史莱姆"] Then
        TracePrint "找到史莱姆, 坐标为", t["史莱姆"]["x"], t["史莱姆"]["y"]
    End If
Else
    TracePrint "所有对象都没有找到"
End If

//对象参数中的返回数组参数依旧可以拿出来单独判断使用
If Boss坐标(0) > -1 Then
    TracePrint "找到紫猫BOSS"
Else
    TracePrint "没有找到紫猫BOSS"
End If
备注:该命令与 zm.cmpcolorex 类似, 唯一区别在于参数只有一个对象table
V3.1830: 加入命令
命令名称:zm.CmpColorExTap 超级多点比色点击
功能说明:zm.cmpcolorex 类似, 区别在于本命令内置对比成功后点击, 无需`是否点击`参数, 由于对比与点击是两个动作组成, 为方便代码阅读理解, 故新增本命令
语法格式:结果 = zm.CmpColorExTap([对象][颜色组, …][, 颜色相似度[, 智能颜色相似度[, 颜色相似度步长]]][, 数量相似度][, 对比超时][, 点击坐标][, 显示日志][, 输出行号][, 备注][, 等待消失][, 消失超时][, 参数返回值])
命令参数:对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
颜色组: 字符串, 可选, 需要对比的点xy坐标和16进制颜色, 格式为(X坐标|Y坐标|16进制颜色), 多个颜色用“|”号分隔, 需要偏色用“`-`”号分隔, 多个点信息用“`,`”号分隔, 比如”100|200|FFFFFF|123456-000000,300|500|FFFFFF”, 支持填写多组不同的颜色组
颜色相似度: 数值型, 可选, 对比查找的颜色相似度小数, 省略默认为`0.9`, 取值范围`[0, 1.0]`, 越高越相似
智能颜色相似度: 数值型, 可选, 与颜色相似度组成组成智能相似计算范围, 适合图色变化大的情况, 省略默认取值与`颜色相似度`相同, 取值范围`[0, 1.0]`, 越高越相似
颜色相似度步长: 数值型, 可选, 智能颜色相似度调节变化间隔, 必须写在`颜色相似度`和`智能颜色相似度`后面, 省略默认为`0.05`, 取值范围`[0, 1.0]`
数量相似度: 字符串, 可选, 一组颜色组中符合条件的颜色数量比值, 注意是字符串数据类型, 省略默认为`”1.0″`, 取值范围`[“0”, “1.0”]`, 越高越相似
对比超时: 数值型, 可选, 限时对比时间, 单位毫秒, 如果一次找不到, 可以限时循环查找, 省略默认为`1`
点击坐标: 字符串, 可选, 点击修改后的坐标, 格式`”±x,±y,t”`, 省略为对比成功组的第一点坐标, `t`是可选的, 表示点击后延时毫秒, 例如`”100,100″`表示固定点击坐标100,100, `”+10,-10″`表示偏移点击对比成功组的第一点坐标的x+10,y-10位置, `”10,10,2000″`表示点击10,10坐标后延时2000毫秒, 该参数会受 zm.settap 影响
显示日志: 字符串, 可选, 输出调试日志信息, 省略默认为”隐藏”, 支持`[“显示”,”隐藏”,”show”,”hide”]`这几个值
输出行号: 字符串, 可选, 格式为`”_”`开头后跟行号, 比如`”_10″`表示第10行代码, 输出调试信息窗口显示第几行代码, 需开启显示日志才有效
备注: 字符串, 可选, 格式为`”@”`开头后跟内容, 在调试日志信息中加入该内容, 比如`”@拾取屠龙刀”`, 若连续两个`”@@”`则表示在浮窗中显示信息, 需要开启显示日志才有效
等待消失: 数值型, 可选, 填写`-1`禁用或`-2`启用, `-2`表示找到后或点击后继续查找, 直到找不到或消失超时, 省略默认为`-1`, 启用后返回值将有`miss`键名, 值为`true`时表示成功消失, 值为`false`表示未消失
消失超时: 数值型, 可选, 填写`负数`, 表示等待消失的超时时间, 单位毫秒, 注意必须填写负数, 不可填-1和-2, 省略默认为`-2000`
参数返回值: 表, 可选, 只能传入数组变量名, 用于保存查找结果, 格式与命令返回值相同
返回值:table: 返回符合要求的第一个点坐标并保存到表中, 格式为{id, x, y, name, “id”:id, “x”:x, “y”:y, “name”:name, “miss”:miss}, 对比失败或出错返回`null`
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim ret
//省略点击坐标参数情况下, 默认点击的坐标是对比成功的颜色组第一个点
//比如"205|177|0CBB00,228|169|FFFFFF"对比成功, 那么点击的坐标就是(205,117)
ret = zm.CmpColorExTap("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE")
If ret Then
    TracePrint "对比颜色成功, 执行点击操作"
Else
    TracePrint "对比颜色失败"
End If

//如果加入点击坐标参数("100,-20,3000"), 那么点击坐标将发生改变, 以返回坐标(205,177)为例
//实际点击坐标是(100,177-20=157), 并且点击后延时3000毫秒
//更多关于点击坐标参数格式请查看参数信息里的内容
ret = zm.CmpColorExTap("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE", "100,-20,3000")
If ret Then
    TracePrint "对比颜色成功"
Else
    TracePrint "对比颜色失败"
End If

//其他更多例子见zm.CmpColorEx*()命令, 本命令除了强制点击外, 无其他区别
备注:内置找到后点击坐标, 无法取消, 建议需要点击操作的超级图色使用本命令, 方便代码阅读理解
该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
多点比色颜色组数据请通过抓抓进行获取
偏色是微调,指对RBG三色分别确定取色范围。颜色相似度是粗调,指对颜色整体做百分比判断。
数量相似度是指颜色组对比成功点的比例, 例如 `”1|1|3DC3EE,2|2|346AFF,3|3|1592FF,4|4|1592FF,5|5|231209,6|6|241306,7|7|201004,8|8|241306,9|9|241306″` 这组多点比色数据有9个点, 如果数量相似度填写`”0.8″`就意味着对比成功条件是`0.8*9=7.2`个点以上符合要求, 而点的个数肯定是整数, 所以就是必须要8个点或9个点才能算对比成功
V3.1830: 加入命令
命令名称:zm.FindColor 超级找色
功能说明:比  findcolor  更加强大的命令, 具体特色如下


– 参数太多, 写的累? 所有参数都是可选的, 使你的代码更加简洁清晰
– 参数太多, 顺序记不住? 除了对象与范围是固定顺序外, 其他参数全部可以打乱顺序随便写
– 省略参数的默认值不理想? 可使用  zm.setfindcolor  来自定义修改
– 担心一次找不到颜色? 自由设置限时循环查找时间, 提高成功率
– 画面变化太大, 相似度不好设置? 智能相似度帮你全自动查找
– 查找方向的数值总是记不住? 直接用中文 `”左上”,”中心”,”右上”,”左下”,”右下”,…` 来代替
– 脚本出错找不到问题? 开启日志输出显示参数, 所有问题一目了然
– 找到后想等画面消失再继续下一步操作吗? 等待消失参数帮你解决这个烦恼
– 支持命令返回值与参数返回值, 你想怎么写, 就怎么写
– 返回值中有序号, 坐标, 还有对应的颜色值
– 支持对象参数写法, 将所有参数保存到一张表里, 直接传入该表
– 支持重写, 即传入对象参数后, 再写其他参数将会覆盖对应的对象数据
– 需要防检测点击功能? 推荐使用 zm.findcolortap
– 需要遍历多个对象数组? 推荐使用 zm.findcolortable
– 需要返回所有找到的坐标? 推荐使用 zm.findcolorex

语法格式:序号坐标颜色 = zm.FindColor([对象,][x1,y1,x2,y2,][颜色][,方向][,相似度[,智能相似度[,相似度步长]]][,查找次数][,是否点击][,点击坐标][,显示日志][,输出行号][,备注][,等待消失][,消失超时][,参数返回值])
命令参数:对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1: 数值型, 可选, 查找范围的左上角x坐标, 省略默认为0
y1: 数值型, 可选, 查找范围的左上角y坐标, 省略默认为0
x2: 数值型, 可选, 查找范围的右下角x坐标, 省略默认为0
y2: 数值型, 可选, 查找范围的右下角y坐标, 省略默认为0
颜色: 字符串, 可选, 要查找的16进制颜色,格式为“BBGGRR”,多个颜色用“|”隔开,偏色使用“-”隔开,比如”FFFFFF-101010|123456″
方向: 字符串, 可选, 从指定方向开始查找, 省略默认为`”左上”`, 支持`[“左上”,”中心”,”右上”,”左下”,”右下”,”上左”,”上右”,”下左”,”下右”]`这几个值
相似度: 数值型, 可选, 对比查找的相似度小数, 省略默认为`1.0`, 取值范围`[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”,”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 ret
//0.9表示相似度, 内置省略默认为1.0, 可自由设置
ret = zm.FindColor("00AAFF", 0.9)
If ret Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到颜色序号" & ret(0), "x=" & ret(1), "y=" & ret(2), "颜色=" & ret(3)
    TracePrint "找到颜色序号" & ret[1], "x=" & ret[2], "y=" & ret[3], "颜色=" & ret[4]
    TracePrint "找到颜色序号" & ret["id"], "x=" & ret["x"], "y=" & ret["y"], "颜色=" & ret["name"]
Else
    TracePrint "没有找到"
End If

//--------------------中级用法--------------------//
Dim 返回数组()
//参数返回值必须是任意数组的变量名, 注意括号写法
//范围省略默认为全屏, 若填写, 则4个数字必须全写
If zm.FindColor(100, 200, 300, 400, "00AAFF", 返回数组) Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到颜色序号" & 返回数组(0), "x=" & 返回数组(1), "y=" & 返回数组(2), "颜色=" & 返回数组(3)
    TracePrint "找到颜色序号" & 返回数组[1], "x=" & 返回数组[2], "y=" & 返回数组[3], "颜色=" & 返回数组[4]
    TracePrint "找到颜色序号" & 返回数组["id"], "x=" & 返回数组["x"], "y=" & 返回数组["y"], "颜色=" & 返回数组["name"]
Else
    TracePrint "没有找到"
End If

//--------------------高级用法--------------------//
//"00AAFF"颜色后面的可选参数全部可以打乱顺序任意填写或省略, 只要数据类型与格式正确即可, 详见上面参数介绍
//这句代码意思如下:
//在范围(100,200,300,400)里, 以相似度为(0.8)的设置, 从("中心")向四周循环限时2秒钟内查找颜色为("00AAFF")的点
//找到后退出循环查找, 并将找到的序号与坐标结果保存到数组变量(ret)与(返回数组)中
//同时开启日志的输出("显示")功能, 在当前脚本第("_36")行输出备注("@怪物1"), 查找结果与其他参数信息
ret = zm.FindColor(100, 200, 300, 400, "00AAFF", 0.8, 2000, "中心", "显示", "@怪物1", 返回数组, "_36")
If ret Then
    TracePrint "找到了"
Else
    TracePrint "没有找到"
End If

//--------------------对象用法--------------------//
//可以把所有参数放到一个表中, 颜色后面的可选参数一样可以打乱顺序任意填写或省略
//对象参数必须填写在第一个参数位置
//如果参数对象后面还有参数, 比如("_46"), 则表示重写对象里的("_36"), 使日志输出显示在46行
Dim 史莱姆 = {"00AAFF", 0.8, 2000, "显示", "@攻击史莱姆", 返回数组, "_46"}
zm.FindColor 史莱姆, 100, 200, 300, 400, "_46"

//--------------------修改默认值--------------------//
Dim IXYs()
//设置默认参数返回值IXYs, 若命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 zm.FindColor() 都默认输出调试信息
//更多修改默认设置详见 zm.SetFindColor() 命令帮助
zm.SetFindColor {"ret":IXYs, "showlog":"显示"}
If zm.FindColor("00AAFF") 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
备注:该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
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.findcolortap
命令名称:zm.FindColorEx 超级找色返回所有坐标
功能说明:zm.findcolor 类似, 区别在于本命令会找到所有符合条件的坐标并返回二维数组
语法格式:结果 = zm.FindColorEx([对象][x1, y1, x2, y2, ]颜色[, 相似度[, 智能相似度[, 相似度步长]]][, 查找超时][, 是否点击][, 点击坐标][, 显示日志][, 输出行号][, 备注][, 等待消失][, 消失超时][, 参数返回值])
命令参数:对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1: 数值型, 可选, 查找范围的左上角x坐标, 省略默认为0
y1: 数值型, 可选, 查找范围的左上角y坐标, 省略默认为0
x2: 数值型, 可选, 查找范围的右下角x坐标, 省略默认为0
y2: 数值型, 可选, 查找范围的右下角y坐标, 省略默认为0
颜色: 字符串, 可选, 要查找的16进制颜色,格式为“BBGGRR”,多个颜色用“|”隔开,偏色使用“-”隔开,比如”FFFFFF-101010|123456″
方向: 字符串, 可选, 从指定方向开始查找, 省略默认为`”左上”`, 支持`[“左上”,”中心”,”右上”,”左下”,”右下”,”上左”,”上右”,”下左”,”下右”]`这几个值
相似度: 数值型, 可选, 对比查找的相似度小数, 省略默认为`1.0`, 取值范围`[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”,”hide”]`这几个值
输出行号: 字符串, 可选, 格式为`”_”`开头后跟行号, 比如`”_10″`表示第10行代码, 输出调试信息窗口显示第几行代码, 需开启显示日志才有效
备注: 字符串, 可选, 格式为`”@”`开头后跟内容, 在调试日志信息中加入该内容, 比如`”@拾取屠龙刀”`, 若连续两个`”@@”`则表示在浮窗中显示信息, 需要开启显示日志才有效
等待消失: 数值型, 可选, 填写`-1`禁用或`-2`启用, `-2`表示找到后或点击后继续查找, 直到找不到或消失超时, 省略默认为`-1`, 启用后返回值将有`miss`键名, 值为`true`时表示成功消失, 值为`false`表示未消失
消失超时: 数值型, 可选, 填写`负数`, 表示等待消失的超时时间, 单位毫秒, 注意必须填写负数, 不可填-1和-2, 省略默认为`-2000`
参数返回值: 表, 可选, 只能传入数组变量名, 用于保存查找结果, 格式与命令返回值相同
返回值:table: 找到返回结果保存到表中, 格式为 `{ {id, x, y}, …, “xy”:{id:{ {x,y}, …}, …}, “id”:{id, …}, “counts”:数量, “miss”:miss}` , 没找到或出错返回`null`
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim ret
ret = zm.FindColorEx("BDBDBD|614B6B|FFFFFF")
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.findcolor 类似, 唯一区别在于返回内容是找到的所有坐标二维数组
V3.1830: 加入命令
V3.1831: 修复返回值被前次结果覆盖的问题
命令名称:zm.FindColorTable 超级找色遍历
功能说明:zm.findcolor 类似, 参数只有一个对象数组, 可实现遍历参数的键值对象进行查找
语法格式:结果 = zm.FindColorTable(对象table)
命令参数:对象table: table, 把 zm.findcolor 的对象参数放入table数组中, 实现遍历找色
返回值:查找结果, table: 找到返回结果保存到表中, 格式为 `{“success”:找到数量, “fail”:没找到数量, “键名”:{id, x, y, name, “id”:id, “x”:x, “y”:y, “name”:name, “miss”:miss}, …}` , 全部没找到或失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim 打怪(), Boss坐标()
打怪["史莱姆"] = {"00AAFF", true}
打怪["黑龙"] = {100,200,300,400, "1155BB", true}
打怪["紫猫BOSS"] = {"FFFFFF", Boss坐标} //这个不点击

//遍历打怪数组, 返回每个对象成员的结果
Dim t = zm.FindColorTable(打怪)
If t Then
    TracePrint "找到了", t["success"], "个对象"
    TracePrint "没找到", t["fail"], "个对象"
    If t["史莱姆"] Then
        TracePrint "找到史莱姆, 坐标为", t["史莱姆"]["x"], t["史莱姆"]["y"]
    End If
Else
    TracePrint "所有对象都没有找到"
End If

If Boss坐标(0) > -1 Then
    TracePrint "紫猫BOSS对象里的返回参数依旧有效"
End If
备注:该命令与 zm.findcolor 类似, 唯一区别在于参数只有一个对象table, 可以遍历所有对象
V2.1829: 加入命令
命令名称:zm.FindColorTap 超级找色点击
功能说明:zm.findcolor 类似, 区别在于本命令内置找到后点击. 由于查找与点击是两个动作组成, 为方便代码阅读理解, 故新增本命令
语法格式:序号坐标颜色 = zm.FindColorTap([对象,][x1,y1,x2,y2,][颜色][,方向][,相似度[,智能相似度[,相似度步长]]][,查找次数][,点击坐标][,显示日志][,输出行号][,备注][,等待消失][,消失超时][,参数返回值])
命令参数:对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1: 数值型, 可选, 查找范围的左上角x坐标, 省略默认为0
y1: 数值型, 可选, 查找范围的左上角y坐标, 省略默认为0
x2: 数值型, 可选, 查找范围的右下角x坐标, 省略默认为0
y2: 数值型, 可选, 查找范围的右下角y坐标, 省略默认为0
颜色: 字符串, 可选, 要查找的16进制颜色,格式为“BBGGRR”,多个颜色用“|”隔开,偏色使用“-”隔开,比如”FFFFFF-101010|123456″
方向: 字符串, 可选, 从指定方向开始查找, 省略默认为`”左上”`, 支持`[“左上”,”中心”,”右上”,”左下”,”右下”,”上左”,”上右”,”下左”,”下右”]`这几个值
相似度: 数值型, 可选, 对比查找的相似度小数, 省略默认为`1.0`, 取值范围`[0, 1.0]`, 越高越相似
智能相似度: 数值型, 可选, 与相似度组成组成智能相似计算范围, 适合图色变化大的情况, 省略默认取值与`相似度`相同, 取值范围`[0, 1.0]`, 越高越相似
相似度步长: 数值型, 可选, 智能相似度调节变化间隔, 必须写在`相似度`后面, 省略默认为`0.05`, 取值范围`[0, 1.0]`
超时时间: 数值型, 可选, 限时查找时间, 单位毫秒, 如果一次找不到, 可以限时循环查找, 省略默认为`1`
点击坐标: 字符串, 可选, 点击修改后的坐标, 格式`”±x,±y,t”`, 省略为点击找到坐标, `t`是可选的, 表示点击后延时毫秒, 例如`”100,100″`表示固定点击坐标100,100, `”+10,-10″`表示偏移点击找到的x+10,y-10位置, `”10,10,2000″`表示点击10,10坐标后延时2000毫秒, 该参数会受 zm.settap 影响
显示日志: 字符串, 可选, 输出调试日志信息, 省略默认为”隐藏”, 支持`[“显示”,”隐藏”,”show”,”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  //初始化插件,只需执行一次

//本命令内置找到后点击, 其他用法例子与zm.FindColor()相同
Dim ret
//找到颜色后执行点击
ret = zm.FindColorTap("00AAFF", 0.9)
If ret Then
    TracePrint "颜色找到并执行了点击"
Else
    TracePrint "没有找到颜色, 不执行点击"
End If
备注:内置找到后点击坐标, 无法取消, 建议需要点击操作的超级图色使用本命令, 方便代码阅读理解
该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
V1.1820: 加入命令
V2.1826
   为智能相似度增加另一种方便的写法, 旧语法依旧有效
命令名称:zm.FindMultiColor 超级多点找色
功能说明:比  findmulticolor  更加强大的命令, 具体特色如下


– 支持多个多点找色数据, 并且返回找到的序号, 详见示例
– 想找会变化的动态图? 请看下面示例
– 参数太多, 写的累? 所有参数都是可选的, 使你的代码更加简洁清晰
– 参数太多, 顺序记不住? 除了对象与范围是固定顺序外, 其他参数全部可以打乱顺序随便写
– 省略参数的默认值不理想? 可使用  zm.setfindmulticolor  来自定义修改
– 担心一次找不到颜色? 自由设置限时循环查找时间, 提高成功率
– 画面变化太大, 相似度不好设置? 智能相似度帮你全自动查找
– 查找方向的数值总是记不住? 直接用中文 `”左上”,”中心”,”右上”,”左下”,”右下”,…` 来代替
– 脚本出错找不到问题? 开启日志输出显示参数, 所有问题一目了然
– 找到后想等画面消失再继续下一步操作吗? 等待消失参数帮你解决这个烦恼
– 支持命令返回值与参数返回值, 你想怎么写, 就怎么写
– 返回值中有序号, 坐标, 还有对应的颜色值
– 支持对象参数写法, 将所有参数保存到一张表里, 直接传入该表
– 支持重写, 即传入对象参数后, 再写其他参数将会覆盖对应的对象数据, 多点数据比较特殊, 详见示例
– 需要防检测点击功能? 推荐使用 zm.findmulticolortap
– 需要遍历多个对象数组? 推荐使用 zm.findmulticolortable
– 需要返回所有找到的坐标? 推荐使用 zm.findmulticolorex

语法格式:序号坐标颜色 = 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”,”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 ret
//表示查找两个多点找色数据, 分别是"BDBDBD","56|33|614B6B"和"242424","-10|2|ABC54A,9|4|12DC67"
//支持无限添加多点找色数据, 只要按照格式"第一点颜色","偏移颜色组"依次添加即可
ret = zm.FindMultiColor("BDBDBD", "56|33|614B6B", "242424", "-10|2|ABC54A,9|4|12DC67")
If ret 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"), 查找结果与其他参数信息
ret = zm.FindMultiColor(100, 200, 300, 400, "00AAFF", "42|42|565656", 0.8, 2000, "中心", "DD58FF", "3|4|A25C6D", True, "显示", "@怪物1", 返回数组, "_39")
If ret 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
备注:该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
多点找色数据请通过抓抓进行获取
偏色是微调,指对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`中
命令名称:zm.FindMultiColorEx 超级多点找色返回所有坐标
功能说明:zm.findmulticolor 类似, 区别在于本命令会找到所有符合条件的坐标并返回二维数组
语法格式:序号坐标颜色 = 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”,”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`中
命令名称:zm.FindMultiColorTable 超级多点找色遍历
功能说明:zm.findmulticolor 类似, 参数只有一个对象数组, 可实现遍历参数的键值对象进行查找
语法格式:结果 = zm.FindMultiColorTable(对象table)
命令参数:对象table: table, 把 zm.findmulticolor 的对象参数放入table数组中, 实现遍历多点找色
返回值:table: 找到返回结果保存到表中, 格式为`{“success”:找到数量, “fail”:没找到数量, “键名”:{id, x, y, name, “id”:id, “x”:x, “y”:y, “name”:name, “miss”:miss}, …}`, 全部没找到或失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim 打怪(), Boss坐标()
打怪["史莱姆"] = {"00AAFF", "44|12|F01BA0-101010", true}
打怪["黑龙"] = {100,200,300,400, "1155BB", "11|-2|F01123", true}
打怪["紫猫BOSS"] = {"FFFFFF", "-55|102|000000", Boss坐标} //这个不点击, 并返回值保存在Boss坐标中

//遍历打怪数组, 返回每个对象成员的结果
Dim t = zm.FindMultiColorTable(打怪)
If t Then
    TracePrint "找到了", t["success"], "个对象"
    TracePrint "没找到", t["fail"], "个对象"
    If t["史莱姆"] Then
        TracePrint "找到史莱姆, 坐标为", t["史莱姆"]["x"], t["史莱姆"]["y"]
    End If
Else
    TracePrint "所有对象都没有找到"
End If

If Boss坐标(0) > -1 Then
    TracePrint "紫猫BOSS对象里的返回参数依旧有效"
End If
备注:该命令与 zm.findmulticolor 类似, 唯一区别在于参数只有一个对象table, 可以遍历所有对象
V2.1829: 加入命令
V3.1852:
   偏移颜色组参数支持带小数点坐标
   启用检测是否消失功能后, 返回最后一次出现的坐标与序号, 保存在键名`missx`, `missy`, `missid`中
命令名称:zm.FindMultiColorTap 超级多点找色点击
功能说明:zm.findmulticolor 类似, 区别在于本命令内置找到后点击. 由于查找与点击是两个动作组成, 为方便代码阅读理解, 故新增本命令
语法格式:序号坐标颜色 = zm.FindMultiColorTap([对象,][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`
点击坐标: 字符串, 可选, 点击修改后的坐标, 格式`”±x,±y,t”`, 省略为点击找到坐标, `t`是可选的, 表示点击后延时毫秒, 例如`”100,100″`表示固定点击坐标100,100, `”+10,-10″`表示偏移点击找到的x+10,y-10位置, `”10,10,2000″`表示点击10,10坐标后延时2000毫秒, 该参数会受 zm.settap 影响
显示日志: 字符串, 可选, 输出调试日志信息, 省略默认为”隐藏”, 支持`[“显示”,”隐藏”,”show”,”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  //初始化插件,只需执行一次

//本命令内置找到后点击, 其他用法例子与zm.FindMultiColor()相同
Dim ret
ret = zm.FindMultiColorTap("BDBDBD", "56|33|614B6B", "242424", "-10|2|ABC54A,9|4|12DC67")
If ret Then
    TracePrint "颜色找到并执行了点击"
Else
    TracePrint "没有找到颜色, 不执行点击"
End If
备注:内置找到后点击坐标, 无法取消, 建议需要点击操作的超级图色使用本命令, 方便代码阅读理解
该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
多点找色数据请通过抓抓进行获取
偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
偏移颜色组是指相对于第一个点的偏移坐标与颜色,比如第一个点颜色123456在100,120坐标,第二个点颜色abcdef在150,180坐标,那么点2相对于点1的偏移坐标就是150-100,180-120,偏移颜色组为“50|60|abcdef”。
V1.1820: 加入命令
V2.1826
   为智能相似度增加另一种方便的写法, 旧语法依旧有效
V3.1852:
   偏移颜色组参数支持带小数点坐标
   启用检测是否消失功能后, 返回最后一次出现的坐标与序号, 保存在键名`missx`, `missy`, `missid`中
命令名称:zm.FindPic 超级找图
功能说明:比  findpic  更加强大的命令, 具体特色如下


– 想找会变化的动态图? 请看下面示例
– 附件Attachment单词太长? 那就直接省略掉, 只写图片文件名
– 想要兼容多套分辨率? 那就指定pic路径默认值为当前分辨率与dpi
– 参数太多, 写的累? 所有参数都是可选的, 使你的代码更加简洁清晰
– 参数太多, 顺序记不住? 除了对象与范围是固定顺序外, 其他参数全部可以打乱顺序随便写
– 省略参数的默认值不理想? 可使用  zm.setfindpic  来自定义修改
– 担心一次找不到图片? 自由设置限时循环查找时间, 提高成功率
– 画面变化太大, 相似度不好设置? 智能相似度帮你全自动查找
– 查找方向的数值总是记不住? 直接用中文 `”左上”,”中心”,”右上”,”左下”,”右下”,…` 来代替
– 脚本出错找不到问题? 开启日志输出显示参数, 所有问题一目了然
– 找到后想等画面消失再继续下一步操作吗? 等待消失参数帮你解决这个烦恼
– 支持命令返回值与参数返回值, 你想怎么写, 就怎么写
– 返回值中有序号, 坐标, 还有对应的图片名
– 支持对象参数写法, 将所有参数保存到一张表里, 直接传入该表
– 支持重写, 即传入对象参数后, 再写其他参数将会覆盖对应的对象数据
– 需要防检测点击功能? 推荐使用 zm.findpictap
– 需要遍历多个对象数组? 推荐使用 zm.findpictable

语法格式:序号坐标图片名 = zm.FindPic([对象,][x1,y1,x2,y2,][图片][,偏色][,方向][,相似度[,智能相似度[,相似度步长]]][,超时时间][,是否点击][,点击坐标][,显示日志][,输出行号][,备注][,等待消失][,消失超时][,参数返回值])
命令参数:对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1: 数值型, 可选, 查找范围的左上角x坐标, 省略默认为0
y1: 数值型, 可选, 查找范围的左上角y坐标, 省略默认为0
x2: 数值型, 可选, 查找范围的右下角x坐标, 省略默认为0
y2: 数值型, 可选, 查找范围的右下角y坐标, 省略默认为0
图片: 字符串, 可选, 查找的图片路径, 多个图片路径用“|”隔开, 支持透明图, 支持PNG BMP JPG等格式
偏色: 字符串, 可选, 图片的偏色, 格式为“BBGGRR”, 省略默认为”000000″
方向: 字符串, 可选, 从指定方向开始查找, 省略默认为`”左上”`, 支持`[“左上”,”中心”,”右上”,”左下”,”右下”,”上左”,”上右”,”下左”,”下右”]`这几个值
相似度: 数值型, 可选, 对比查找的相似度小数, 省略默认为`0.8`, 取值范围`[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”,”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 ret
//一张图片名实现附件找图功能, 省略了Attachment:
ret = zm.FindPic("图片.png")
If ret Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到序号" & ret(0), "x=" & ret(1), "y=" & ret(2), "图片名=" & ret(3)
    TracePrint "找到序号" & ret[1], "x=" & ret[2], "y=" & ret[3], "图片名=" & ret[4]
    TracePrint "找到序号" & ret["id"], "x=" & ret["x"], "y=" & ret["y"], "图片名=" & ret["name"]
Else
    TracePrint "没有找到"
End If

//--------------------查找变化动态图--------------------//
Dim ret
//原理: 用抓抓截图后, 图片是静止不变的, 多次截图可以获取到不同的画面
//      说明所谓的动态图其实就是由一些静止不动的画面来回切换实现的
//      那么对每一次截图并保存下来, 只要任何一张图找到了, 都可以认为是找到这个动态图了
//      所以可以使用本命令设置超时时间来实现
//      想提高查找速度的话, 建议缩小范围, 提高相似度
ret = zm.FindPic("图片1.png|图片2.png|图片3.png",5000)
If ret Then
    TracePrint "找到序号" & ret(0), "x=" & ret(1), "y=" & ret(2), "图片名=" & ret(3)
Else
    TracePrint "没有找到"
End If

//--------------------中级用法--------------------//
Dim 返回数组()
//参数返回值必须是任意数组的变量名, 注意括号写法
//范围省略默认为全屏, 若填写, 则4个数字必须全写, 除对象参数外, 其他参数都要写在范围后面
If zm.FindPic(100, 200, 300, 400, "图片1.bmp|Attachment:图片2.png|/sdcard/图片3.jpg", 0.8, 返回数组) Then
    TracePrint "找到序号" & 返回数组["id"], "x=" & 返回数组["x"], "y=" & 返回数组["y"], "图片名=" & 返回数组["name"]
Else
    TracePrint "没有找到"
End If

//--------------------高级用法--------------------//
//范围后面的可选参数全部可以打乱顺序任意填写或省略, 只要数据类型与格式正确即可
//注意, "第一点颜色","偏移颜色组"这两个参数必须连在一起, 详见上面参数介绍
//这句代码意思如下:
//在范围(100,200,300,400)里, 以相似度为(0.8)的设置, 从("中心")向四周循环查找("图片.png")最多2秒钟
//找到任何一张后退出循环查找, 然后点击找到的坐标(True), 并将找到的序号与坐标结果保存到数组变量(ret)与(返回数组)中
//同时开启日志的输出("显示")功能, 在当前脚本第("_54")行输出备注("@怪物1"), 查找结果与其他参数信息
ret = zm.FindPic(100, 200, 300, 400, "图片.png", 0.8, 2000, "中心", True, "显示", "@怪物1", 返回数组, "_54")
If ret Then
    TracePrint "找到了"
Else
    TracePrint "没有找到"
End If

//--------------------对象用法--------------------//
//可以把所有参数放到一个表中, 可选参数一样可以打乱顺序任意填写或省略
//对象参数必须填写在第一个参数位置
//如果参数对象后面还有参数, 比如("_46"), 则表示重写对象里的("_36"), 使日志输出显示在65行
Dim 史莱姆 = {"图片.png", 0.8, 2000, True, "显示", "@攻击史莱姆", 返回数组, "_36"}
zm.FindPic 史莱姆, "_65", "史莱姆.bmp"

//--------------------修改默认值--------------------//
Dim IXYs()
//设置默认参数返回值IXYs, 若命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 zm.FindPic() 都默认输出调试信息
//更多修改默认设置详见 zm.SetFindPic() 命令帮助
zm.SetFindPic {"ret":IXYs, "showlog":"显示"}
If zm.FindPic("图片.png") 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
备注:该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
透明图是指当你图片4个角的颜色均相同时,则这张图片中所有这个颜色将被视为透明色,在找图匹配点过程中忽略这些点的颜色。另外,透明图也支持PNG格式图片中的透明点。
更多详细说明与例子见
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.findpictap
命令名称:zm.FindPicEx 超级找图返回所有坐标
功能说明:zm.findpic 类似, 区别在于本命令会找到所有符合条件的坐标并返回二维数组
语法格式:结果 = zm.FindPicEx([对象,][x1,y1,x2,y2,][图片][,偏色][,相似度[,智能相似度[,相似度步长]]][,超时时间][,是否点击][,点击坐标][,显示日志][,输出行号][,备注][,等待消失][,消失超时][,参数返回值])
命令参数:对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1: 数值型, 可选, 查找范围的左上角x坐标, 省略默认为0
y1: 数值型, 可选, 查找范围的左上角y坐标, 省略默认为0
x2: 数值型, 可选, 查找范围的右下角x坐标, 省略默认为0
y2: 数值型, 可选, 查找范围的右下角y坐标, 省略默认为0
图片: 字符串, 可选, 查找的图片路径, 多个图片路径用“|”隔开, 支持透明图, 支持PNG BMP JPG等格式
偏色: 字符串, 可选, 图片的偏色, 格式为“BBGGRR”, 省略默认为”000000″
相似度: 数值型, 可选, 对比查找的相似度小数, 省略默认为`0.8`, 取值范围`[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”,”hide”]`这几个值
输出行号: 字符串, 可选, 格式为`”_”`开头后跟行号, 比如`”_10″`表示第10行代码, 输出调试信息窗口显示第几行代码, 需开启显示日志才有效
备注: 字符串, 可选, 格式为`”@”`开头后跟内容, 比如`”@拾取屠龙刀”`, 输出调试信息窗口就会增加这条内容, 若连续两个`”@@”`则表示在浮窗中显示信息, 需要开启显示日志才有效
等待消失: 数值型, 可选, 填写`-1`禁用或`-2`启用, `-2`表示找到后或点击后继续查找, 直到找不到或消失超时, 省略默认为`-1`, 启用后返回值将有`miss`键名, 值为`true`时表示成功消失, 值为`false`表示未消失
消失超时: 数值型, 可选, 填写`负数`, 表示等待消失的超时时间, 单位毫秒, 注意必须填写负数, 不可填-1和-2, 省略默认为`-2000`
参数返回值: 表, 可选, 只能传入数组变量名, 用于保存查找结果, 格式与命令返回值相同
返回值:table: 找到返回结果保存到表中, 格式为`{ {id, x, y}, …, “xy”:{id:{ {x,y}, …}, …}, “id”:{id, …}, “counts”:数量, “miss”:miss}`, 没找到或出错返回`null`
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim ret
ret = zm.FindPicEx("紫猫.png|学院.bmp|/sdcard/test.png")
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.findpic 类似, 区别在于返回内容是找到的所有坐标二维数组
V3.1831: 加入命令
命令名称:zm.FindPicTable 超级找图遍历
功能说明:zm.findpic 类似, 参数只有一个对象数组, 可实现遍历参数的键值对象进行查找
语法格式:结果 = zm.FindPicTable(对象table)
命令参数:对象table: table, 把 zm.findpic 的对象参数放入table数组中, 实现遍历找图
返回值:查找结果, table: 找到返回结果保存到表中, 格式为`{“success”:找到数量, “fail”:没找到数量, “键名”:{id, x, y, name, “id”:id, “x”:x, “y”:y, “name”:name, “miss”:miss}, …}`, 全部没找到或失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim 打怪(), Boss坐标()
打怪["史莱姆"] = {"史莱姆1.bmp|史莱姆2.png", true}
打怪["黑龙"] = {100,200,300,400, "龙.png", true}
打怪["紫猫BOSS"] = {"帅气的紫猫老师.png", Boss坐标} //这个不点击, 并返回值保存在Boss坐标中

//遍历打怪数组, 返回每个对象成员的结果
Dim t = zm.FindPicTable(打怪)
If t Then
    TracePrint "找到了", t["success"], "个对象"
    TracePrint "没找到", t["fail"], "个对象"
    If t["史莱姆"] Then
        TracePrint "找到史莱姆, 坐标为", t["史莱姆"]["x"], t["史莱姆"]["y"]
    End If
Else
    TracePrint "所有对象都没有找到"
End If

If Boss坐标(0) > -1 Then
    TracePrint "紫猫BOSS对象里的返回参数依旧有效"
End If
备注:该命令与 zm.findpic 类似, 唯一区别在于参数只有一个对象table, 可以遍历所有对象
V2.1829: 加入命令
命令名称:zm.FindPicTap 超级找图点击
功能说明:zm.findpic 类似, 区别在于本命令内置找到后点击. 由于查找与点击是两个动作组成, 为方便代码阅读理解, 故新增本命令
语法格式:序号坐标图片名 = zm.FindPicTap([对象,][x1,y1,x2,y2,][图片][,偏色][,方向][,相似度[,智能相似度[,相似度步长]]][,超时时间][,点击坐标][,显示日志][,输出行号][,备注][,等待消失][,消失超时][,参数返回值])
命令参数:对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1: 数值型, 可选, 查找范围的左上角x坐标, 省略默认为0
y1: 数值型, 可选, 查找范围的左上角y坐标, 省略默认为0
x2: 数值型, 可选, 查找范围的右下角x坐标, 省略默认为0
y2: 数值型, 可选, 查找范围的右下角y坐标, 省略默认为0
图片: 字符串, 可选, 查找的图片路径, 多个图片路径用“|”隔开, 支持透明图, 支持PNG BMP JPG等格式
偏色: 字符串, 可选, 图片的偏色, 格式为“BBGGRR”, 省略默认为”000000″
方向: 字符串, 可选, 从指定方向开始查找, 省略默认为`”左上”`, 支持`[“左上”,”中心”,”右上”,”左下”,”右下”,”上左”,”上右”,”下左”,”下右”]`这几个值
相似度: 数值型, 可选, 对比查找的相似度小数, 省略默认为`0.8`, 取值范围`[0, 1.0]`, 越高越相似
智能相似度: 数值型, 可选, 与相似度组成组成智能相似计算范围, 适合图色变化大的情况, 省略默认取值与`相似度`相同, 取值范围`[0, 1.0]`, 越高越相似
相似度步长: 数值型, 可选, 智能相似度调节变化间隔, 必须写在`相似度`后面, 省略默认为`0.05`, 取值范围`[0, 1.0]`
超时时间: 数值型, 可选, 最大查找耗时, 单位毫秒, 如果一次找不到, 可以限时循环查找, 省略默认为`1`
点击坐标: 字符串, 可选, 点击修改后的坐标, 格式`”±x,±y,t”`, 省略为点击找到坐标, `t`是可选的, 表示点击后延时毫秒, 例如`”100,100″`表示固定点击坐标100,100, `”+10,-10″`表示偏移点击找到的x+10,y-10位置, `”10,10,2000″`表示点击10,10坐标后延时2000毫秒, 该参数会受 zm.settap 影响
显示日志: 字符串, 可选, 输出调试日志信息, 省略默认为”隐藏”, 支持`[“显示”,”隐藏”,”show”,”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  //初始化插件,只需执行一次

//本命令内置找到后点击, 其他用法例子与zm.FindPic()相同
Dim ret
ret = zm.FindPicTap("图片.png")
If ret Then
    TracePrint "图片找到并执行了点击"
Else
    TracePrint "没有找到图片, 不执行点击"
End If
备注:内置找到后点击坐标, 无法取消, 建议需要点击操作的超级图色使用本命令, 方便代码阅读理解
该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
透明图是指当你图片4个角的颜色均相同时,则这张图片中所有这个颜色将被视为透明色,在找图匹配点过程中忽略这些点的颜色。另外,透明图也支持PNG格式图片中的透明点。
更多详细说明与例子见
V1.1820: 加入命令
V2.1826
   为智能相似度增加另一种方便的写法, 旧语法依旧有效
命令名称:zm.FindStr 超级找字
功能说明:比  findstr  更加强大的命令, 具体特色如下


– 不想记设置字库与切换字库命令? 本命令已集成这两个功能, 只要填写参数即可
– 参数太多, 写的累? 所有参数都是可选的, 使你的代码更加简洁清晰
– 参数太多, 顺序记不住? 除了对象与范围是固定顺序外, 其他参数全部可以打乱顺序随便写
– 省略参数的默认值不理想? 可使用  zm.setfindstr  来自定义修改
– 担心一次找不到文字? 自由设置限时循环查找时间, 提高成功率
– 画面变化太大, 相似度不好设置? 智能相似度帮你全自动查找
– 脚本出错找不到问题? 开启日志输出显示参数, 所有问题一目了然
– 找到后想等画面消失再继续下一步操作吗? 等待消失参数帮你解决这个烦恼
– 支持命令返回值与参数返回值, 你想怎么写, 就怎么写
– 返回值中有序号, 坐标, 还有对应的文字内容
– 支持对象参数写法, 将所有参数保存到一张表里, 直接传入该表
– 支持重写, 即传入对象参数后, 再写其他参数将会覆盖对应的对象数据
– 需要防检测点击功能? 推荐使用 zm.findstrtap
– 需要遍历多个对象数组? 推荐使用 zm.findstrtable

语法格式:序号与坐标 = zm.FindStr([对象,][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`
字库文件名: 字符串, 可选, 填写字库的文件名即可, 附件路径`”Attachment:”`可以省略不写
字库序号: 字符串, 可选, 切换字库序号, 0号字库填写`”#0″`, 以此类推, 当填写字库文件名, 不填字库序号时, 默认设置并使用9号字库
是否点击: 布尔型, 可选, 是否需要找到后自动点击该坐标, 支持`[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”,”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 ret
SetDictEx 0, "Attachment:mq_soft.txt"
UseDict 0
//默认全屏查找颜色为"FFFFFF-101010"的"紫猫学院"这4个字
ret = zm.FindStr("紫猫学院", "FFFFFF-101010")
If ret Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到序号" & ret(0), "x=" & ret(1), "y=" & ret(2), "文字=" & ret(3)
    TracePrint "找到序号" & ret[1], "x=" & ret[2], "y=" & ret[3], "文字=" & ret[4]
    TracePrint "找到序号" & ret["id"], "x=" & ret["x"], "y=" & ret["y"], "文字=" & ret["name"]
Else
    TracePrint "没有找到"
End If

//--------------------中级用法--------------------//
Dim 返回数组()
//参数返回值必须是任意数组的变量名, 注意括号写法
//设置附件的"mq_soft.txt"为9号字库, 注意, 所有找字命令都会默认使用此字库
//范围省略默认为全屏, 若填写, 则4个数字必须全写, 除对象参数外, 其他参数都要写在范围后面
If zm.FindStr(100, 200, 300, 400, "紫猫学院", "FFFFFF-101010", "mq_soft.txt", 返回数组) Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到序号=" & 返回数组(0), "x=" & 返回数组(1), "y=" & 返回数组(2), "文字=" & 返回数组(3)
    TracePrint "找到序号=" & 返回数组[1], "x=" & 返回数组[2], "y=" & 返回数组[3], "文字=" & 返回数组[4]
    TracePrint "找到序号=" & 返回数组["id"], "x=" & 返回数组["x"], "y=" & 返回数组["y"], "文字=" & 返回数组["name"]
Else
    TracePrint "没有找到"
End If

//--------------------高级用法--------------------//
//文字后面的可选参数全部可以打乱顺序任意填写或省略, 只要数据类型与格式正确即可
//这句代码意思如下:
//在范围(100,200,300,400)里, 相似度为(0.8), 设置附件字库("mq_soft.txt")为("1")号字库
//限时2000毫秒内循环查找颜色为("FFFFFF-101010")的("紫猫|学院")
//找到任何一个后退出循环查找, 然后点击找到的坐标(True), 并将找到的序号与坐标结果保存到数组变量(ret)与(返回数组)中
//同时开启日志的输出("显示")功能, 在当前脚本第("_40")行输出备注("@怪物1"), 查找结果与其他参数信息
ret = zm.FindStr(100, 200, 300, 400, "紫猫|学院", "FFFFFF-101010", 0.8, 2000, True, "mq_soft.txt", "#1", "显示", "@怪物1", 返回数组, "_40")
If ret Then
    TracePrint "找到了"
Else
    TracePrint "没有找到"
End If

//--------------------对象用法--------------------//
//可以把所有参数放到一个表中, 可选参数一样可以打乱顺序任意填写或省略
//对象参数必须填写在第一个参数位置
Dim 史莱姆 = {"紫猫|学院", 0.8, 3000, True, "显示", "@攻击史莱姆", 返回数组, "_36"}
zm.FindStr 史莱姆

//--------------------重写用法--------------------//
//如果参数对象后面还有参数, 比如("_56"), 则表示重写对象里的("_36"), 使日志输出显示在65行
//注意, 如果重写, 则必须给参数文字带前缀"$", 比如"$紫猫|学院"
Dim 史莱姆 = {"$紫猫|学院", 0.8, 1000, True, "显示", "@攻击史莱姆", 返回数组, "_36"}
zm.FindStr 史莱姆, "$喵星人", "FFFFFF-101010", 1.0, "_56"

//--------------------修改默认值--------------------//
Dim IXYs()
//设置默认参数返回值IXYs, 若命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 zm.FindStr() 都默认输出调试信息
//更多修改默认设置详见 zm.SetFindStr() 命令帮助
zm.SetFindStr {"ret":IXYs, "showlog":"显示"}
If zm.FindStr("喵星人", "00AAFF") 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
备注:该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
当区域范围均为0时,表示全屏查找文字,强烈建议缩小范围查找,这样可以提高效率。
偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
颜色格式为“BGR”,目前不支持HSV颜色、不支持背景色识别。
目前只支持附件中的字库,不支持绝对路径,故更新字库后,一定要记得更新附件。
参数字库文件名仅支持新版抓抓制作的字库, 若使用大漠字库, 请用官方命令设置
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.findstrtap
命令名称:zm.FindStrTable 超级找字遍历
功能说明:zm.findstr 类似, 参数只有一个对象数组, 可实现遍历参数的键值对象进行查找
语法格式:结果 = zm.FindStrTable(对象table)
命令参数:对象table: table, 把 zm.findstr 的对象参数放入table数组中, 实现遍历找字
返回值:table: 找到返回结果保存到表中, 格式为`{“success”:找到数量, “fail”:没找到数量, “键名”:{id, x, y, name, “id”:id, “x”:x, “y”:y, “name”:name, “miss”:miss}, …}`, 没找到或失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

//此处省略了设置字库的代码, 请自行补充完善

Dim 打怪(), Boss坐标()
打怪["史莱姆"] = {"史莱姆", "000000", true}
打怪["黑龙"] = {100,200,300,400, "黑龙", "123ABC-303030", true}
打怪["紫猫BOSS"] = {"帅气的紫猫老师","FFFFFF", Boss坐标} //这个不点击, 并返回值保存在Boss坐标中

//遍历打怪数组, 返回每个对象成员的结果
Dim t = zm.FindStrTable(打怪)
If t Then
    TracePrint "找到了", t["success"], "个对象"
    TracePrint "没找到", t["fail"], "个对象"
    If t["史莱姆"] Then
        TracePrint "找到史莱姆, 坐标为", t["史莱姆"]["x"], t["史莱姆"]["y"]
    End If
Else
    TracePrint "所有对象都没有找到"
End If

If Boss坐标(0) > -1 Then
    TracePrint "紫猫BOSS对象里的返回参数依旧有效"
End If
备注:该命令与 zm.findstr 类似, 唯一区别在于参数只有一个对象table, 可以遍历所有对象
V2.1829: 加入命令
命令名称:zm.FindStrTap 超级找字点击
功能说明:zm.findstr 类似, 区别在于本命令内置找到后点击. 由于查找与点击是两个动作组成, 为方便代码阅读理解, 故新增本命令
语法格式:序号与坐标 = zm.FindStrTap([对象,][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`
字库文件名: 字符串, 可选, 填写字库的文件名即可, 附件路径`”Attachment:”`可以省略不写
字库序号: 字符串, 可选, 切换字库序号, 0号字库填写`”#0″`, 以此类推, 当填写字库文件名, 不填字库序号时, 默认设置并使用9号字库
点击坐标: 字符串, 可选, 点击修改后的坐标, 格式`”±x,±y,t”`, 省略为点击找到坐标, `t`是可选的, 表示点击后延时毫秒, 例如`”100,100″`表示固定点击坐标100,100, `”+10,-10″`表示偏移点击找到的x+10,y-10位置, `”10,10,2000″`表示点击10,10坐标后延时2000毫秒, 该参数会受 zm.settap 影响
显示日志: 字符串, 可选, 输出调试日志信息, 省略默认为”隐藏”, 支持`[“显示”,”隐藏”,”show”,”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  //初始化插件,只需执行一次

//本命令内置找到后点击, 其他用法例子与zm.FindStr()相同
Dim ret
SetDictEx 0, "Attachment:mq_soft.txt"
UseDict 0
ret = zm.FindStrTap("紫猫学院", "FFFFFF-101010")
If ret Then
    TracePrint "文字找到并执行了点击"
Else
    TracePrint "没有找到文字, 不执行点击"
End If
备注:内置找到后点击坐标, 无法取消, 建议需要点击操作的超级图色使用本命令, 方便代码阅读理解
该命令用法灵活多变, 更多用法请大家自行摸索, 灵活使用输出日志可以事半功倍
当区域范围均为0时,表示全屏查找文字,强烈建议缩小范围查找,这样可以提高效率。
偏色是微调,指对RBG三色分别确定取色范围。相似度是粗调,指对颜色整体做百分比判断。
颜色格式为“BGR”,目前不支持HSV颜色、不支持背景色识别。
目前只支持附件中的字库,不支持绝对路径,故更新字库后,一定要记得更新附件。
参数字库文件名仅支持新版抓抓制作的字库, 若使用大漠字库, 请用官方命令设置
V1.1820: 加入命令
V2.1826
   为智能相似度增加另一种方便的写法, 旧语法依旧有效
命令名称:zm.SetCmpColorEx 设置CmpColorEx默认参数
功能说明:修改  zm.cmpcolorex  的默认参数值。
语法格式:默认值 = zm.SetCmpColorEx(属性表)
命令参数:属性表: 表, 按照指定格式对表中的键值对进行赋值, 例如{“sim”:0.8, “showlog”:”显示”}表示修改相似度默认为0.8, 日志输出默认为显示, 更多属性见下面表格


属性 | 默认值 | 数据类型 | 解释
—|—–|——|—
sim | 0.9 | 数值型 | 默认颜色相似度, 取值范围[0, 1.0], 越高越相似
autosim | “” | 字符串 | 默认智能相似度, 格式为”最低相似度-最高相似度-相似度步长”
numsim | “1.0” | 字符串 | 默认数量相似度, 取值范围[0, 1.0], 越高越相似
timeout | 1 | 数值型 | 默认超时时间, 默认1毫秒
delaytime | 10 | 数值型 | 循环对比间隔时间, 开启超时时间参数后, 如果发现设备出现卡顿, 可加大delaytime
delaytap | 0 | 数值型 | 对比成功后如果要点击, 则延时一段时间再点击
tap | false | 布尔型 | 找到后是否点击, 默认不点击
showlog | “隐藏” | 字符串 | 日志输出显示, 可选[“显示”,”隐藏”,”show”,”hide”]这几个值
ret | null | 数组型 | 参数返回值, 只能写数组变量名, 设置后, 若命令不带参数返回值, 则默认返回到此变量中

返回值:表: 返回所有默认属性值, 可使用 `For Each` 遍历查看
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim IXYs() //预定义默认参数返回数组
//设置默认参数返回值IXYs, 若找色命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 超级多点比色 都默认输出调试信息
zm.SetCmpColorEx {"ret":IXYs, "showlog":"显示"}
If zm.CmpColorEx("51|66|00AAFF") Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到颜色序号" & IXYs(0), "x=" & IXYs(1), "y=" & IXYs(2)
    TracePrint "找到颜色序号" & IXYs[1], "x=" & IXYs[2], "y=" & IXYs[3]
    TracePrint "找到颜色序号" & IXYs["id"], "x=" & IXYs["x"], "y=" & IXYs["y"]
End If

//默认值改动后, 效果会一直存在, 并且可以随时增加新的变化
//此处改动颜色相似度默认为0.8, 超时时间为5000毫秒, 并将日志改为隐藏, 找到后自动点击一次
Dim t = {"sim":0.8, "timeout":5000, "tap":true, "showlog":"hide"}
Dim ret = zm.SetCmpColorEx(t)
//可以通过For Each查看目前所有默认属性值, 参数列表中未出现的属性不建议修改
TracePrint "属性名:属性值"
For Each k , v In ret
    TracePrint k, ":", v
Next
备注:请严格按照参数列表的属性名与数据类型进行赋值改动
V3.1830: 加入命令
V3.1835: 加入循环对比间隔时间
V3.1849:
 加入延时点击属性`delaytap`
 修改循环间隔时间默认为10毫秒
命令名称:zm.SetFindColor 设置FindColor默认参数
功能说明:修改  zm.findcolor  的默认参数值。
语法格式:默认值 = zm.SetFindColor(属性表)
命令参数:属性表: 表, 按照指定格式对表中的键值对进行赋值, 例如{“sim”:0.8, “showlog”:”显示”}表示修改相似度默认为0.8, 日志输出默认为显示, 更多属性见下面表格


属性 | 默认值 | 数据类型 | 解释
—|—–|——|—
x1 | 0 | 数值型 | 查找范围左上角x坐标
y1 | 0 | 数值型 | 查找范围左上角y坐标
x2 | 0 | 数值型 | 查找范围右下角x坐标
y2 | 0 | 数值型 | 查找范围右下角y坐标
color | “” | 字符串 | 默认查找的十六进制颜色值
dir | “左上” | 字符串 | 默认从左上开始查找, 可选[“左上”,”中心”,”右上”,”左下”,”右下”]这几个值
sim | 1.0 | 数值型 | 默认相似度, 取值范围[0, 1.0], 越高越相似
autosim | “” | 字符串 | 默认智能相似度, 格式为”最低相似度-最高相似度-相似度步长”
timeout | 1 | 数值型 | 默认超时时间, 默认1毫秒
delaytime | 10 | 数值型 | 循环查找间隔时间, 开启超时时间参数后, 如果发现设备出现卡顿, 可加大delaytime
delaytap | 0 | 数值型 | 找到后如果要点击, 则延时一段时间再点击
tap | false | 布尔型 | 找到后是否点击, 默认不点击
showlog | “隐藏” | 字符串 | 日志输出显示, 可选[“显示”,”隐藏”,”show”,”hide”]这几个值
ret | null | 数组型 | 参数返回值, 只能写数组变量名, 设置后, 若命令不带参数返回值, 则默认返回到此变量中

返回值:表: 返回所有默认属性值, 可使用 `For Each` 遍历查看
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim IXYs() //预定义默认参数返回数组
//设置默认参数返回值IXYs, 若找色命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 超级找色 都默认输出调试信息
zm.SetFindColor {"ret":IXYs, "showlog":"显示"}
If zm.FindColor("00AAFF") Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到颜色序号" & IXYs(0), "x=" & IXYs(1), "y=" & IXYs(2)
    TracePrint "找到颜色序号" & IXYs[1], "x=" & IXYs[2], "y=" & IXYs[3]
    TracePrint "找到颜色序号" & IXYs["id"], "x=" & IXYs["x"], "y=" & IXYs["y"]
End If

//默认值改动后, 效果会一直存在, 并且可以随时增加新的变化
//此处改动相似度默认为0.8, 超时时间为5000毫秒, 并将日志改为隐藏, 找到后自动点击一次
Dim t = {"sim":0.8, "timeout":5000, "tap":true, "showlog":"hide"}
Dim ret = zm.SetFindColor(t)
//可以通过For Each查看目前所有默认属性值, 参数列表中未出现的属性不建议修改
TracePrint "属性名:属性值"
For Each k , v In ret
    TracePrint k, ":", v
Next
备注:请严格按照参数列表的属性名与数据类型进行赋值改动
V1.1741: 加入命令
V1.1745: 查找次数参数修改为超时参数, 加入自定义日志备注与行号, 其中设置相关的属性也有所变动
V3.1835: 加入循环查找间隔时间
V3.1849:
 加入延时点击属性`delaytap`
 修改循环间隔时间默认为10毫秒
命令名称:zm.SetFindMultiColor 设置FindMultiColor默认参数
功能说明:修改  zm.findmulticolor  的默认参数值。
语法格式:默认值 = zm.SetFindMultiColor(属性表)
命令参数:属性表: 表, 按照指定格式对表中的键值对进行赋值, 例如{“sim”:0.8, “showlog”:”显示”}表示修改相似度默认为0.8, 日志输出默认为显示, 更多属性见下面表格


属性 | 默认值 | 数据类型 | 解释
—|—–|——|—
x1 | 0 | 数值型 | 查找范围左上角x坐标
y1 | 0 | 数值型 | 查找范围左上角y坐标
x2 | 0 | 数值型 | 查找范围右下角x坐标
y2 | 0 | 数值型 | 查找范围右下角y坐标
dir | “左上” | 字符串 | 默认从左上开始查找, 可选[“左上”,”中心”,”右上”,”左下”,”右下”]这几个值
sim | 0.9 | 数值型 | 默认相似度, 取值范围[0, 1.0], 越高越相似
autosim | “” | 字符串 | 默认智能相似度, 格式为”最低相似度-最高相似度-相似度步长”
timeout | 1 | 数值型 | 默认超时时间, 默认1毫秒
delaytime | 10 | 数值型 | 循环查找间隔时间, 开启超时时间参数后, 如果发现设备出现卡顿, 可加大delaytime
delaytap | 0 | 数值型 | 找到后如果要点击, 则延时一段时间再点击
tap | false | 布尔型 | 找到后是否点击, 默认不点击
showlog | “隐藏” | 字符串 | 日志输出显示, 可选[“显示”,”隐藏”,”show”,”hide”]这几个值
ret | null | 数组型 | 参数返回值, 只能写数组变量名, 设置后, 若命令不带参数返回值, 则默认返回到此变量中

返回值:表: 返回所有默认属性值, 可使用 `For Each` 遍历查看
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim IXYs() //预定义默认参数返回数组
//设置默认参数返回值IXYs, 若多点找色命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 超级多点找色 都默认输出调试信息
zm.SetFindMultiColor {"ret":IXYs, "showlog":"显示"}
If zm.FindMultiColor("00AAFF", "1|4|1432AB") Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到颜色序号" & IXYs(0), "x=" & IXYs(1), "y=" & IXYs(2)
    TracePrint "找到颜色序号" & IXYs[1], "x=" & IXYs[2], "y=" & IXYs[3]
    TracePrint "找到颜色序号" & IXYs["id"], "x=" & IXYs["x"], "y=" & IXYs["y"]
End If

//默认值改动后, 效果会一直存在, 并且可以随时增加新的变化
//此处改动相似度默认为0.8, 超时时间为5000毫秒, 并将日志改为隐藏, 找到后自动点击一次
Dim t = {"sim":0.8, "timeout":5000, "tap":true, "showlog":"hide"}
Dim ret = zm.SetFindMultiColor(t)
//可以通过For Each查看目前所有默认属性值, 参数列表中未出现的属性不建议修改
TracePrint "属性名:属性值"
For Each k , v In ret
    TracePrint k, ":", v
Next
备注:请严格按照参数列表的属性名与数据类型进行赋值改动
V1.1741: 加入命令
V1.1745: 查找次数参数修改为超时参数, 加入自定义日志备注与行号, 其中设置相关的属性也有所变动
V3.1835: 加入循环查找间隔时间
V3.1849:
 加入延时点击属性`delaytap`
 修改循环间隔时间默认为10毫秒
v3.1852
 偏移颜色组参数可以通过  zm.setfindmulticolor  设置 `”offsetxy”:1` 属性或其他数字, 实现偏移坐标再次变动功能, 该属性不支持  zm.findmulticolorex
命令名称:zm.SetFindPic 设置FindPic默认参数
功能说明:修改  zm.findpic  的默认参数值。
语法格式:默认值 = zm.SetFindPic(属性表)
命令参数:属性表: 表, 按照指定格式对表中的键值对进行赋值, 例如{“sim”:0.9, “showlog”:”显示”}表示修改相似度默认为0.9, 日志输出默认为显示, 更多属性见下面表格


属性 | 默认值 | 数据类型 | 解释
—|—–|——|—
x1 | 0 | 数值型 | 查找范围左上角x坐标
y1 | 0 | 数值型 | 查找范围左上角y坐标
x2 | 0 | 数值型 | 查找范围右下角x坐标
y2 | 0 | 数值型 | 查找范围右下角y坐标
pic | “Attachment:” | 字符串 | 默认图片路径, 当参数图片只写文件名时, 自动附加此路径
color | “000000” | 字符串 | 默认图片偏色
dir | “左上” | 字符串 | 默认从左上开始查找, 可选[“左上”,”中心”,”右上”,”左下”,”右下”]这几个值
sim | 0.8 | 数值型 | 默认相似度, 取值范围[0, 1.0], 越高越相似
autosim | “” | 字符串 | 默认智能相似度, 格式为”最低相似度-最高相似度-相似度步长”
timeout | 1 | 数值型 | 默认超时时间, 默认1毫秒
delaytime | 10 | 数值型 | 循环查找间隔时间, 开启超时时间参数后, 如果发现设备出现卡顿, 可加大delaytime
delaytap | 0 | 数值型 | 找到后如果要点击, 则延时一段时间再点击
tap | false | 布尔型 | 找到后是否点击, 默认不点击
showlog | “隐藏” | 字符串 | 日志输出显示, 可选[“显示”,”隐藏”,”show”,”hide”]这几个值
ret | null | 数组型 | 参数返回值, 只能写数组变量名, 设置后, 若命令不带参数返回值, 则默认返回到此变量中

返回值:表: 返回所有默认属性值, 可使用 `For Each` 遍历查看
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim IXYs() //预定义默认参数返回数组
//设置默认参数返回值IXYs, 若找图命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 超级找图 都默认输出调试信息
zm.SetFindPic {"ret":IXYs, "showlog":"显示"}
If zm.FindPic("紫猫.bmp") Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到颜色序号" & IXYs(0), "x=" & IXYs(1), "y=" & IXYs(2)
    TracePrint "找到颜色序号" & IXYs[1], "x=" & IXYs[2], "y=" & IXYs[3]
    TracePrint "找到颜色序号" & IXYs["id"], "x=" & IXYs["x"], "y=" & IXYs["y"]
End If

//默认值改动后, 效果会一直存在, 并且可以随时增加新的变化
//此处改动相似度默认为0.8, 超时时间为5000毫秒, 并将日志改为隐藏, 找到后自动点击一次
Dim t = {"sim":0.8, "timeout":5000, "tap":true, "showlog":"hide"}
Dim ret = zm.SetFindPic(t)
//可以通过For Each查看目前所有默认属性值, 参数列表中未出现的属性不建议修改
TracePrint "属性名:属性值"
For Each k , v In ret
    TracePrint k, ":", v
Next
备注:请严格按照参数列表的属性名与数据类型进行赋值改动
V1.1741: 加入命令
V1.1745: 查找次数参数修改为超时参数, 加入自定义日志备注与行号, 其中设置相关的属性也有所变动
V3.1835: 加入循环查找间隔时间
V3.1849:
 加入延时点击属性`delaytap`
 修改循环间隔时间默认为10毫秒
命令名称:zm.SetFindStr 设置FindStr默认参数
功能说明:修改  zm.findstr  的默认参数值。
语法格式:默认值 = zm.SetFindStr(属性表)
命令参数:属性表: 表, 按照指定格式对表中的键值对进行赋值, 例如{“sim”:0.8, “showlog”:”显示”}表示修改相似度默认为0.8, 日志输出默认为显示, 更多属性见下面表格


属性 | 默认值 | 数据类型 | 解释
—|—–|——|—
x1 | 0 | 数值型 | 查找范围左上角x坐标
y1 | 0 | 数值型 | 查找范围左上角y坐标
x2 | 0 | 数值型 | 查找范围右下角x坐标
y2 | 0 | 数值型 | 查找范围右下角y坐标
color | “000000” | 字符串 | 默认文字颜色
sim | 0.9 | 数值型 | 默认相似度, 取值范围[0, 1.0], 越高越相似
autosim | “” | 字符串 | 默认智能相似度, 格式为”最低相似度-最高相似度-相似度步长”
timeout | 1 | 数值型 | 默认超时时间, 默认1毫秒
delaytime | 10 | 数值型 | 循环查找间隔时间, 开启超时时间参数后, 如果发现设备出现卡顿, 可加大delaytime
delaytap | 0 | 数值型 | 找到后如果要点击, 则延时一段时间再点击
tap | false | 布尔型 | 找到后是否点击, 默认不点击
showlog | “隐藏” | 字符串 | 日志输出显示, 可选[“显示”,”隐藏”,”show”,”hide”]这几个值
ret | null | 数组型 | 参数返回值, 只能写数组变量名, 设置后, 若命令不带参数返回值, 则默认返回到此变量中

返回值:表: 返回所有默认属性值, 可使用 `For Each` 遍历查看
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim IXYs() //预定义默认参数返回数组
//设置默认参数返回值IXYs, 若找字命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 超级找字 都默认输出调试信息
zm.SetFindStr {"ret":IXYs, "showlog":"显示"}
If zm.FindStr("紫猫|学院", "FBFBFB-202020", "0", "mq_soft.txt") Then
    TracePrint "可以用以下3种格式获取返回值"
    TracePrint "找到序号" & IXYs(0), "x=" & IXYs(1), "y=" & IXYs(2)
    TracePrint "找到序号" & IXYs[1], "x=" & IXYs[2], "y=" & IXYs[3]
    TracePrint "找到序号" & IXYs["id"], "x=" & IXYs["x"], "y=" & IXYs["y"]
End If

//默认值改动后, 效果会一直存在, 并且可以随时增加新的变化
//此处改动相似度默认为0.8, 超时时间为5000毫秒, 并将日志改为隐藏, 找到后自动点击一次
Dim t = {"sim":0.8, "timeout":5000, "tap":true, "showlog":"hide"}
Dim ret = zm.SetFindStr(t)
//可以通过For Each查看目前所有默认属性值, 参数列表中未出现的属性不建议修改
TracePrint "属性名:属性值"
For Each k , v In ret
    TracePrint k, ":", v
Next
备注:请严格按照参数列表的属性名与数据类型进行赋值改动
V1.1741: 加入命令
V1.1745: 查找次数参数修改为超时参数, 加入自定义日志备注与行号, 其中设置相关的属性也有所变动
V3.1835: 加入循环查找间隔时间
V3.1849:
 加入延时点击属性`delaytap`
 修改循环间隔时间默认为10毫秒
命令名称:zm.KeyPress 超级按键
功能说明:按下并弹起一个按键, 可加入随机延时防检测
语法格式:结果 = zm.KeyPress([对象][按键[, 间隔毫秒[, 随机毫秒]]][, 显示日志][, 输出行号][, 备注])
命令参数:对象: table, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据, 省略默认为null
按键: 字符串_或_数值型, 可选, 字符串时表示某个键的名字, 数值时表示某个键的编码, 填写对象参数后可省略
间隔毫秒: 数值型, 可选, 按下与弹起之间的间隔时间, -1表示与自带KeyPress相同, 单位毫秒, 省略默认为-1
随机毫秒: 数值型, 可选, 与间隔毫秒组成随机数范围, -1表示不随机, 单位毫秒, 省略默认为-1
显示日志: 字符串, 可选, 输出调试日志信息, 支持[“显示”,”隐藏”,”show”,”hide”]这几个值, 省略默认为”隐藏”
输出行号: 字符串, 可选, 格式为”_”开头后跟行号, 比如”_10″表示第10行代码, 输出调试信息窗口显示第几行代码, 需开启显示日志才有效
备注: 字符串, 可选, 格式为”@”开头后跟内容, 比如”@拾取屠龙刀”, 输出调试信息窗口就会增加这条内容, 若连续两个”@@”则表示在浮窗中显示信息, 需要开启显示日志才有效
返回值:table: 返回实际按键与间隔时间表, 格式为{key,t,”key”:key,”t”:t}, 失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

//按住电源键3秒后松开
zm.KeyPress "power", 3000

//按住音量+随机3到5秒
zm.KeyPress "VolUp", 3000, 5000
备注:V3.1835: 初次加入
命令名称:zm.KeyPressCopy 按下复制键
功能说明:模拟按下快捷键复制文本, 类似于`Ctrl+C`, 注意, 部分设备或App可能存在不兼容导致失效情况!
语法格式:结果 = zm.KeyPressCopy(是否关闭菜单)
命令参数:是否关闭菜单: 布尔型, 可选, 部分设备或app按下组合键后会出现菜单, 省略默认false
返回值:
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

zm.KeyPressCopy()
备注:注意, 部分设备或App可能存在不兼容导致失效情况!
V3.1852: 初次加入命令
命令名称:zm.KeyPressCut 按下剪贴键
功能说明:模拟按下快捷键剪贴文本, 类似于`Ctrl+X`, 注意, 部分设备或App可能存在不兼容导致失效情况!
语法格式:结果 = zm.KeyPressCut(是否关闭菜单)
命令参数:是否关闭菜单: 布尔型, 可选, 部分设备或app按下组合键后会出现菜单, 省略默认false
返回值:
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

zm.KeyPressCut()
备注:注意, 部分设备或App可能存在不兼容导致失效情况!
V3.1852: 初次加入命令
命令名称:zm.KeyPressDel 按下删除键
功能说明:删除文本内容, 可以向左或向右删除, 也可以删除当前一行内容, 注意, 部分设备或App可能存在不兼容导致失效情况!
语法格式:结果 = zm.KeyPressDel([方向])
命令参数:方向: 数值型, 可选, 0表示删除光标左边的字符, 1表示删除光标右边的字符, 2表示删除当前一行内容, 省略默认为0
返回值:
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

zm.KeyPressDel()   //删除左边的
zm.KeyPressDel(1)  //删除右边的
zm.KeyPressDel(2)  //删除一整行
备注:注意, 部分设备或App可能存在不兼容导致失效情况!
V3.1852: 初次加入命令
命令名称:zm.KeyPressPaste 按下粘贴键
功能说明:模拟按下快捷键粘贴文本, 类似于`Ctrl+V`, 注意, 部分设备或App可能存在不兼容导致失效情况!
语法格式:结果 = zm.KeyPressPaste(是否关闭菜单)
命令参数:是否关闭菜单: 布尔型, 可选, 部分设备或app按下组合键后会出现菜单, 省略默认false
返回值:
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

zm.KeyPressPaste()
备注:注意, 部分设备或App可能存在不兼容导致失效情况!
V3.1852: 初次加入命令
命令名称:zm.KeyPressScreenShot 按下截图键
功能说明:按下截图键自动保存, 注意, 部分设备的截图文件夹位置可能不一致, 需要手动设置
语法格式:结果 = zm.KeyPressScreenShot([截图文件夹][, 保存路径])
命令参数:截图文件夹: 字符串, 可选, 指定设备默认截图文件夹路径, 大部分设备默认路径为”/sdcard/Pictures/Screenshots/”, 截图路径不对时, 请手动截图一次查看截图文件夹路径, 本参数必须以”/”结尾
保存路径: 字符串, 可选, 复制截取的图片到指定文件路径, 省略默认不复制
返回值:字符串: 返回默认保存到截图文件夹的图片路径, 不受参数2影响
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim path
path = zm.KeyPressScreenShot() //按下截图键保存
TracePrint path
备注:注意, 部分设备的截图文件夹位置可能不一致, 请手动截图一次查看截图文件夹路径, 再传入到截图文件夹参数中
V3.1852: 初次加入命令
命令名称:zm.KeyPressSelectAll 按下全选键
功能说明:模拟按下快捷键粘贴文本, 类似于`Ctrl+A`, 注意, 部分设备或App可能存在不兼容导致失效情况!
语法格式:结果 = zm.KeyPressSelectAll([是否关闭菜单])
命令参数:是否关闭菜单: 布尔型, 可选, 部分设备或app按下组合键后会出现菜单, 省略默认false
返回值:
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

zm.KeyPressSelectAll()
备注:注意, 部分设备或App可能存在不兼容导致失效情况!
V3.1852: 初次加入命令
命令名称:zm.KeyPressStr 模拟按键输入
功能说明:模拟KeyPress输入字符串内容, 在InputText无效情况下尝试使用, 仅支持小写字母, 数字, 英文标点符号, 不支持大写字母, 中文!
语法格式:结果 = zm.KeyPressStr(按键字符串[, 间隔毫秒])
命令参数:按键字符串: 字符串, 待输入的字符串内容, 仅支持小写字母, 数字, 英文标点符号, 不支持大写字母, 中文
间隔毫秒: 数值型, 可选, 两个字符串之间按键间隔时间, 单位毫秒, 省略默认为200
返回值:布尔型: 成功返回true, 失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

//输入abc,def
zm.KeyPressStr "abc,def"
备注:命令原型是使用KeyPress命令模拟按下字符串参数的每一个字符键, 所以不支持中文, 大写字母之类的字符!
V3.1835: 初次加入
命令名称:zm.KeyPressSwitch 打开运行程序列表
功能说明:打开当前后台程序列表, 类似于切换应用的键, 注意, 部分设备或App可能存在不兼容导致失效情况!
语法格式:结果 = zm.KeyPressSwitch()
命令参数:
返回值:
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

zm.KeyPressSwitch()
备注:注意, 部分设备或App可能存在不兼容导致失效情况!
V3.1852: 初次加入命令
命令名称:zm.SetKeyPress 设置超级按键
功能说明:修改 ` zm.keypress ` 的默认参数值
语法格式:结果 = zm.SetKeyPress(属性表)
命令参数:属性表: table, 按照指定格式对表中的键值对进行赋值, 例如{“t”:100, “rndt”:200, “showlog”:”显示”}表示修改按下与弹起之间随机延时100到200毫秒, 日志输出默认为显示, 更多属性见下面表格


属性 | 默认值 | 数据类型 | 解释
—|—–|——|—
t | -1 | 数值型 | 按下与弹起的间隔毫秒, -1表示KeyPress的默认值
rndt | -1 | 数值型 | 与间隔毫秒组成随机数范围, -1表示不随机
showlog | “隐藏” | 字符串 | 日志输出显示, 可选[“显示”,”隐藏”,”show”,”hide”]这几个值

返回值:table: 返回设置后的参数列表, 失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

//设置按键按下与弹起之间的间隔时间为随机1000毫秒到2000毫秒
zm.SetKeyPress {"t":1000, "rndt":2000}
备注:V3.1835: 初次加入
命令名称:zm.RndArrElement 随机数组元素
功能说明:从一维数组的指定下标范围随机取元素。
语法格式:结果 = zm.RndArrElement(一维数组[, 起始下标[, 终止下标]])
命令参数:一维数组: 数组型, 待随机取值的一维数组。
起始下标: 数值型, 可选参数,表示下标随机范围,当终止下标省略时,随机0到起始下标。
终止下标: 数值型, 可选参数,表示下标随机范围,当起始下标省略时,随机0到最大下标。
返回值:任意类型:返回随机到的数组元素。
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim a = {"紫", "猫", "编", "程", "学", "院", 345911220}
Dim s = zm.RndArrElement(a)
TracePrint s
备注:调用随机函数前,可用  zm.rndinitseed  运行一次,防止出现有规律的随机。
V1.1720: 加入命令
命令名称:zm.RndInitSeed 初始化随机种子
功能说明:使用socket库初始化随机种子, 防止规律随机, 建议省略参数, zm.Init()内部已经执行此函数, 无需重复调用
语法格式:结果 = zm.RndInitSeed([种子])
命令参数:种子: 数值型, 可选, 要初始化的种子, 省略默认将对当前时间计算获取种子值
返回值:数值型:返回随机数种子
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

zm.RndInitSeed //如果你开头执行过zm.Init()命令, 则无需再调用本命令
备注:V1.1720: 加入命令
V1.1730: 修复报错问题
V1.1738: 优化提示
命令名称:zm.RndName 随机取姓名
功能说明:随机取姓名,可以指定性别。
语法格式:结果 = zm.RndName([性别])
命令参数:性别: 数值型, 可选参数,表示取姓名的性别,0为女性,1为男性,默认省略为null,表示全随机。
返回值:字符串:返回随机姓名结果
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim name = zm.RndName()
TracePrint name
备注:调用随机函数前,可用  zm.rndinitseed  运行一次。
V1.1720: 加入命令
命令名称:zm.RndNum 随机整数
功能说明:获取指定范围的随机数,两个参数不区分大小顺序。
语法格式:结果 = zm.RndNum(m, n)
命令参数:m: 数值型, 可选参数,最大值或最小值,省略默认为0。
n: 数值型, 可选参数,最大值或最小值,省略默认为0。
返回值:数值型:返回参数范围的随机整数。
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

TracePrint zm.RndNum(100, 10) //随机10到100
TracePrint zm.RndNum(10, 100) //随机10到100
TracePrint zm.RndNum(100)     //随机0到100
备注:调用随机函数前,可用  zm.rndinitseed  运行一次。
V1.1720: 加入命令
命令名称:zm.RndPos 随机坐标
功能说明:从多个坐标中随机获取一个坐标与序号
语法格式:结果 = zm.RndPos([x,y,…][坐标数组,…])
命令参数:x: 数值型, 横坐标数值, 与坐标数组参数二选一, 详见例子
y: 数值型, 纵坐标数值, 与坐标数组参数二选一, 详见例子
坐标数组: 表, 由坐标组成的数组, 格式为{x,y}, 与坐标数值参数二选一, 详见例子
返回值:表: 返回序号与坐标, 序号从0开始, 格式为{id, x, y}
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

//------------数值坐标参数例子------------//
//支持任意数量的坐标, 只要按照x,y格式顺序填写即可
//不可以与坐标数组参数同时填写!
//下面例子是从(100,200),(300,400),(500,600)这3个坐标中随机获取一个坐标
Dim xy = zm.RndPos(100,200,300,400,500,600)
TracePrint "序号:" & xy(0), ", x坐标=" & xy(1), ", y坐标=" & xy(2)

//------------坐标数组参数例子------------//
//支持任意数量的坐标数组, 不可以与数值坐标参数同时填写!
//下面例子是从(100,200),(300,400),(500,600)这3个坐标中随机获取一个坐标
Dim xxyy = zm.RndPos({100,200},{300,400},{500,600})
TracePrint "序号:" & xxyy(0), ", x坐标=" & xxyy(1), ", y坐标=" & xxyy(2)
备注:V1.1804: 加入命令
命令名称:zm.RndStr 随机字符串
功能说明:随机指定范围的字符串内容。
语法格式:结果 = zm.RndStr(个数[, 模式[, 是否不重复]])
命令参数:个数: 数值型, 随机字符个数
模式: 数值型, 可选参数,表示随机内容,详见下表格,多个类型可相加,省略默认为1+2+4
是否不重复: 布尔型, 可选参数,是否取不重复随机内容,省略默认为false


模式参数 | 表示范围
—–|—–
1 | 随机0到9的数字
2 | 随机a到z的小写字母
4 | 随机A到Z的大写字母
8 | 随机标点符号!#$%&()*+,-./:;<=>?@[\]^_`{|}~’

返回值:字符型:随机到的字符串内容。
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

TracePrint zm.RndStr(5)
TracePrint zm.RndStr(6, 2)
TracePrint zm.RndStr(10, 1 + 4, true)
备注:调用随机函数前,可用  zm.rndinitseed  运行一次。
V1.1720: 加入命令
V1.1724: 增加随机标点符号。
V1.1802: 修复可选参数无效问题
命令名称:zm.RndUniqueArr 不重复随机数
功能说明:从一维数组中随机取指定个数的不重复元素值。
语法格式:结果 = zm.RndUniqueArr([数组,][ 最小值, 最大值,] 个数)
命令参数:数组: 数组型, 可选,一维数组,待随机的数组,与最小值最大值参数二选一。
最小值: 数值型, 可选,随机最小值,与数组参数二选一。
最大值: 数值型, 可选,随机最大值,与数组参数二选一。
个数: 数值型, 可选,获取随机数的数量,省略为最大个数,即打乱顺序,洗牌功能。
返回值:数组型:获取到的不重复随机元素。
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

Dim a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Dim b = zm.RndUniqueArr(a, 5)
TracePrint zm.VarInfo(b)

//从1到10中随机取5个不重复随机数
Dim c = zm.RndUniqueArr(1,10,5)
TracePrint zm.VarInfo(c)
备注:调用随机函数前,可用  zm.rndinitseed  运行一次。
提供的一维数组里元素不能出现重复,否则结果可能会出现重复。
V1.1720 加入命令
V1.1750 加入数字范围参数
V3.1830 从`zm.RndNoRepeatArr()`函数名改为`zm.RndUniqueArr()`
命令名称:zm.UUID 生成UUID
功能说明:生成唯一不重复的UUID, 失败返回null, 建议在脚本开头执行一次 zm.init 后使用本命令
语法格式:结果 = zm.UUID([格式])
命令参数:格式: 数值型, 可选, 表示返回大小写格式, 0为小写, 1为大写, 省略默认为0
返回值:字符串: 返回36位长度的UUID字符串, 失败返回null
脚本例子:
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init  //初始化插件,只需执行一次

For 10
	TracePrint zm.UUID()
Next
备注:V1.1820: 加入命令
V3.1902: 加入返回大小写参数



上一篇: JsDroid 安卓自动化插件帮助文档 下一篇:按键精灵手机助手的基本命令——触摸命令
返回顶部