| 命令参数: |
对象: 表, 可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据 颜色组: 字符串, 可选, 需要对比的点xy坐标和16进制颜色, **支持填写多组不同的颜色组**, 格式与 cmpcolorex 参数相同, 都是(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` 是否点击: 布尔型, 可选, 是否需要对比成功后自动点击该组的第一个点坐标, 支持`[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` 参数返回值: 表, 可选, 只能传入数组变量名, 用于保存查找结果, 格式与命令返回值相同 |
| 脚本例子: |
复制代码
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次
Dim ret
//--------------------例子1--------------------//
//表示对比两组多点比色数据, 分别是"205|177|0CBB00,228|169|FFFFFF"和"61|340|3DC3EE"
//支持无限添加多点比色数据, 按顺序比较, 只要有一组对比成功, 就返回结果
//不填写相似度情况下, 省略默认相似度为0.9
ret = zm.CmpColorEx("205|177|0CBB00,228|169|FFFFFF", "61|340|3DC3EE")
If ret Then
TracePrint "对比颜色成功"
Else
TracePrint "对比颜色失败"
End If
//--------------------例子2--------------------//
//如何对比动态变化的画面?
//原理:用抓抓截图后, 图片是静止不变的, 多次截图可以获取到不同的画面
// 说明所谓的动态图其实就是由一些静止不动的画面来回切换实现的
// 那么对每一次截图采集一些多点比色数据, 然后让脚本循环多次比较这些数据
// 只要任何一组数据对比成功, 都可以认为是找到这个动态图了
// 所以可以使用本命令的无限添加多点比色数据与设置超时时间来实现
// 想提高查找速度的话, 建议提高相似度, 增加多点比色数据
//下面代码实现在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
|