• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[紫猫] [手机版]支持多组颜色限时查找等功能的超级多点找色——紫猫插件 [复制链接]

1#
前言

众所周知,紫猫插件是一款综合型插件,拥有诸多强大的功能命令,本文介绍的是超级图色系列中的超级多点找色命令。
超级多点找色文档:https://zimaoxy.com/m/post/zm.findmulticolor/
本命令具有以下特色

  • 支持多组多点找色数据并返回对应找到序号
  • 最简洁的参数
  • 最灵活的返回值
  • 限时循环实现查找动态图
  • 找到后直接点击与延时
  • 找到后等待画面消失
  • 全自动智能调整相似度
  • 自动化日志记录
  • 强大的对象参数
  • 高度自定义默认参数



支持多组多点找色数据并返回对应找到序号

按键自带的找图支持多图,找色支持多色,找字支持多字,唯独多点找色不支持多组数据!
但是现在我们可以通过超级多点找色实现了这个功能了!
实现方法非常简单,直接把所有多点数据都丢到命令参数里即可。
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. '通过按键抓抓采集多点找色里的颜色描述数据, 例如:
  4. '第1组:"0000FF","157|-190|1592FF"
  5. '第2组:"FFFFFF","-142|-4|0CBE00,-376|8|1592FF"
  6. '第3组:"1592FF","-39|144|070203,199|60|0CB900,-128|42|393535"
  7. '以相似度0.9的方式, 全屏查找以上3组多点找色数据
  8. Dim ret
  9. ret = zm.FindMultiColor("0000FF","157|-190|1592FF","FFFFFF","-142|-4|0CBE00,-376|8|1592FF","1592FF","-39|144|070203,199|60|0CB900,-128|42|393535")
  10. If ret Then
  11. TracePrint "找到了, 序号=", ret(0), ", x=", ret(1), ", y=", ret(2)
  12. Else
  13. TracePrint "没找到任何数据"
  14. End If

  15. '也可以将多组多点数据保存到数组中, 采用超级图色的对象参数实现查找
  16. Dim 多点数据数组 = {"0000FF","157|-190|1592FF","FFFFFF","-142|-4|0CBE00,-376|8|1592FF","1592FF","-39|144|070203,199|60|0CB900,-128|42|393535"}
  17. ret = zm.FindMultiColor(多点数据数组)
  18. If ret Then
  19. TracePrint "对象找到了, 序号=", ret(0), ", x=", ret(1), ", y=", ret(2)
  20. Else
  21. TracePrint "没找到任何数据"
  22. End If

  23. '还支持多点颜色描述数组形式, 但请注意并非table表
  24. Dim 黑龙, 白龙 //一维数组例子
  25. 黑龙 = {"BDBDBD", "56|33|614B6B"}
  26. 白龙 = {"242424", "-10|2|ABC54A,9|4|12DC67"}
  27. Dim retD = zm.FindMultiColor(黑龙, 白龙, 0.8)
  28. If retD Then
  29. TracePrint "颜色找到了"
  30. Else
  31. TracePrint "没有找到颜色"
  32. End If

  33. Dim 颜色数组() //二维数组例子
  34. 颜色数组(0) = {"BDBDBD", "56|33|614B6B"}
  35. 颜色数组(1) = {"242424", "-10|2|ABC54A,9|4|12DC67"}
  36. Dim retC = zm.FindMultiColor(颜色数组, 0.8)
  37. If retC Then
  38. TracePrint "颜色找到了"
  39. Else
  40. TracePrint "没有找到颜色"
  41. End If
复制代码


最简洁的参数

新手刚看到超级图色系列命令的时候,肯定会觉得,我的天啊,这么多参数,好复杂之类的。

其实非常非常非常简单,因为它的绝大多数参数都是可选的,并且只要记住下面几点,就可以随意打乱参数顺序:
1. 若填写对象参数,则必须放在第一个参数位置。
2. 若填写返回值参数,则不能放在第一个参数位置。
3. 若填写范围参数, 则范围参数必须是连续的x1,y1,x2,y2顺序

另外,如果觉得参数的省略默认值不满意,还可以通过zm.SetFindMultiColor()命令修改默认值!这个功能后面详细讲解

就拿上面的查找多组多点颜色数据来讲,范围和相似度这些参数全部都被省略了,所以只填写了多点颜色数据就实现了多点找色功能,下面举几个简单例子。
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. Dim ret //定义返回值

  4. //==============例子1==============//
  5. '只填写多点数据参数, 其他参数全部用省略默认值
  6. '范围默认是全屏
  7. '相似度默认0.9
  8. '方向默认从左到右,从上到下
  9. ret = zm.FindMultiColor("1592FF", "-39|144|070203,199|60|0CB900,-128|42|393535")
  10. If ret Then
  11. TracePrint "找到了, 序号=", ret(0), ", x=", ret(1), ", y=", ret(2)
  12. Else
  13. TracePrint "没找到"
  14. End If

  15. //==============例子2==============//
  16. '如果全屏查找不满意, 那么就加上范围参数
  17. '实现在左上角100,200,右下角400,600范围内查找数据
  18. ret = zm.FindMultiColor(100, 200, 400, 600, "1592FF", "-39|144|070203,199|60|0CB900")
  19. If ret Then
  20. TracePrint "找到了, 序号=", ret(0), ", x=", ret(1), ", y=", ret(2)
  21. Else
  22. TracePrint "没找到"
  23. End If

  24. //==============例子3==============//
  25. '觉得相似度太低, 那么就加上相似度参数
  26. '实现相似度1.0方式查找数据
  27. ret = zm.FindMultiColor("1592FF", "-39|144|070203,199|60|0CB900", 1.0)
  28. If ret Then
  29. TracePrint "找到了, 序号=", ret(0), ", x=", ret(1), ", y=", ret(2)
  30. Else
  31. TracePrint "没找到"
  32. End If

  33. //==============例子4==============//
  34. '觉得范围与相似度都要改动, 那么就都写上
  35. '实现在左上角100,200,右下角400,600范围内以相似度1.0方式查找数据
  36. ret = zm.FindMultiColor(100, 200, 400, 600, "1592FF", "-39|144|070203,199|60|0CB900", 1.0)
  37. If ret Then
  38. TracePrint "找到了, 序号=", ret(0), ", x=", ret(1), ", y=", ret(2)
  39. Else
  40. TracePrint "没找到"
  41. End If

  42. //==============例子5==============//
  43. '参数多了,顺序记不住?那么就随意填写吧, 只需注意以下几点即可:
  44. '1. 若填写对象参数, 则必须放在第一个参数位置
  45. '2. 若填写返回值参数, 则不能放在第一个参数位置
  46. '3. 若填写范围参数, 则范围参数必须是连续的x1,y1,x2,y2顺序
  47. '以下功能还是实现在左上角100,200,右下角400,600范围内以相似度1.0方式查找数据
  48. ret = zm.FindMultiColor("1592FF", "-39|144|070203,199|60|0CB900", 100, 200, 400, 600, 1.0)
  49. If ret Then
  50. TracePrint "找到了, 序号=", ret(0), ", x=", ret(1), ", y=", ret(2)
  51. Else
  52. TracePrint "没找到"
  53. End If
复制代码


最灵活的返回值

我们不仅把参数玩出了新花样,而且还对返回值做了进一步优化。
你可以用等于号对返回值进行赋值,也可以将返回值写到参数中。
无论你喜欢用哪一种写法,都可以体验到最灵活的代码。
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. //=================例子1=================//
  4. '采用最普通的等于号赋值返回值方法
  5. '找到返回坐标数组, 找不到返回NULL, 所以可以直接写返回变量名, 不需要写对比符号
  6. Dim ret //定义返回值
  7. ret = zm.FindMultiColor("1592FF", "-39|144|070203,199|60|0CB900,-128|42|393535")
  8. If ret Then
  9. TracePrint "多点数据找到了, 返回值有以下3种使用方法, 任选一种使用"
  10. TracePrint "数组方式: 序号=" & ret(0), ", 坐标x=" & ret(1), ", 坐标y=" & ret(2), ", 首点颜色=" & ret(3)
  11. TracePrint "表下标方式: 序号=" & ret[1], ", 坐标x=" & ret[2], ", 坐标y=" & ret[3], ", 首点颜色=" & ret[4]
  12. TracePrint "表键名方式: 序号=" & ret["id"], ", 坐标x=" & ret["x"], ", 坐标y=" & ret["y"], ", 首点颜色=" & ret["name"]

  13. TracePrint "另外还有几个不常用的数据: 找到相似度=" & ret["sim"], ", 查找耗时=" & ret["time"], ", 查找次数=" & ret["counts"]
  14. Else
  15. TracePrint "没找到"
  16. End If

  17. //=================例子2=================//
  18. '把返回值保存在数组参数中, 称为返回参数
  19. '这种写法可以少写一行赋值代码, 美化脚本结构
  20. '可以直接判断命令返回值, 也可以单独调用后判断返回参数
  21. '注意: 在没找到的情况下, 返回值与返回参数结果不一样, 返回参数的值为{-1,-1,-1}
  22. '下面与例子1相似, 区别在于返回结果保存在了数组t中
  23. Dim t() //定义返回参数数组, 注意: 必须定义成数组
  24. '下面将数组作为参数传入时, 不要带括号, 只有定义时候才需要括号
  25. If zm.FindMultiColor("1592FF", "-39|144|070203,199|60|0CB900,-128|42|393535", t) Then
  26. TracePrint "多点数据找到了, 返回数组有以下3种使用方法, 任选一种使用"
  27. TracePrint "数组方式: 序号=" & t(0), ", 坐标x=" & t(1), ", 坐标y=" & t(2), ", 首点颜色=" & t(3)
  28. TracePrint "表下标方式: 序号=" & t[1], ", 坐标x=" & t[2], ", 坐标y=" & t[3], ", 首点颜色=" & t[4]
  29. TracePrint "表键名方式: 序号=" & t["id"], ", 坐标x=" & t["x"], ", 坐标y=" & t["y"], ", 首点颜色=" & t["name"]

  30. TracePrint "为了提高效率, 返回参数里不包含相似度, 次数与耗时"
  31. Else
  32. TracePrint "没找到"
  33. End If

  34. //================例子3================//
  35. '由于大部分返回结果只使用一次后, 就不会再使用了
  36. '所以我们可以设置统一默认返回值, 让它保存最近一次查找结果
  37. '通过使用zm.SetFindMultiColor()设置默认返回参数数组tMul
  38. '如果zm.FindMultiColor()命令没有指定返回参数数组, 则默认保存在tMul中
  39. Dim tMul() //定义默认返回参数数组, 注意: 必须定义成数组
  40. zm.SetFindMultiColor {"ret":tMul} //设置默认返回参数数组为tMul
  41. '下面代码中没有写任何返回值, 但是由于设置了默认返回参数数组tMul, 所以默认保存结果在该数组中
  42. If zm.FindMultiColor("1592FF", "-39|144|070203,199|60|0CB900,-128|42|393535") Then
  43. TracePrint "多点数据找到了, 默认返回数组有以下3种使用方法, 任选一种使用"
  44. TracePrint "数组方式: 序号=" & tMul(0), ", 坐标x=" & tMul(1), ", 坐标y=" & tMul(2), ", 首点颜色=" & tMul(3)
  45. TracePrint "表下标方式: 序号=" & tMul[1], ", 坐标x=" & tMul[2], ", 坐标y=" & tMul[3], ", 首点颜色=" & tMul[4]
  46. TracePrint "表键名方式: 序号=" & tMul["id"], ", 坐标x=" & tMul["x"], ", 坐标y=" & tMul["y"], ", 首点颜色=" & tMul["name"]

  47. TracePrint "为了提高效率, 返回参数里不包含相似度, 次数与耗时"
  48. Else
  49. TracePrint "没找到"
  50. End If

  51. '在以后的代码中, 除非指定返回数组参数, 否则一律覆盖保存到默认返回数组参数中
  52. Dim tt() //定义返回参数数组
  53. If zm.FindMultiColor("0000FF", "157|-190|1592FF", tt) Then
  54. '由于指定返回参数为tt, 所以默认返回参数tMul保持上一次的值
  55. TracePrint "本次结果tt:", zm.VarInfo(tt)
  56. TracePrint "默认数组tMul:", zm.VarInfo(tMul)
  57. Else
  58. TracePrint "没有找到", zm.VarInfo(tt)
  59. TracePrint "默认数组tMul:", zm.VarInfo(tMul)
  60. End If
复制代码


限时循环实现查找动态图

脚本中查找的时机很重要,有时候屏幕上还没出现这画面,你就开始查找的话,肯定找不到。
但是如果加延时后再查找的话,效率就太慢了。
这时候就需要限时循环查找登场了,他可以在指定时间内不断的查找,如果找到就立即停止查找,否则等超时后自动停止并返回没有找到。
另外,当你想查找一些动态变化的界面时,也可以使用本功能,因为在查找的瞬间,画面是固定的,只要循环查找过程中,找到任何一个数据,都表示找到动态画面了。
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. Dim tMul() '定义默认返回数组
  4. zm.SetFindPic {"ret":tMul, "showlog":"显示"} '设置默认返回值与显示日志

  5. '在5000毫秒内不断查找多点颜色
  6. '只要找到了, 就立即返回结果
  7. If zm.FindMultiColor("0000FF", "157|-190|1592FF", 5000, tMul) Then
  8. TracePrint "找到了, 序号=", tMul(0), ", x=", tMul(1), ", y=", tMul(2)
  9. Else
  10. TracePrint "没找到任何数据"
  11. End If
复制代码


找到后直接点击与延时

一般我们查找后常见的操作都是点击,所以本插件集成了自动点击功能。
更加强大的地方是,除了可以点击找到的坐标外,还可以点击偏移坐标、固定坐标、混合坐标、防检测随机坐标。
虽然使用zm.FindMultiColor()也有点击功能, 但是我更加推荐使用zm.FindMultiColorTap(), 因为查找与点击是两个动作, 使用这个命令能更加方便知道查找并点击了.
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. zm.SetFindMultiColor {"showlog":"显示"} '设置默认显示日志

  4. //================例子1================//
  5. '参数True表示开启点击找到坐标的功能, 默认为直接点击找到的坐标
  6. '例如:找到坐标为(188,288), 则点击(188,288)
  7. If zm.FindMultiColorTap("0000FF", "157|-190|1592FF") Then
  8. TracePrint "找到并自动点击"
  9. Else
  10. TracePrint "没有找到, 不执行点击"
  11. End If

  12. //================例子2================//
  13. '参数"+10,-20"表示找到后, 点击找到坐标x+10,坐标y-20的位置, 也就是偏移点击
  14. '例如:找到坐标为(188,288), 则点击(188+10,288-20)
  15. If zm.FindMultiColorTap("0000FF", "157|-190|1592FF", "+10,-20") Then
  16. TracePrint "找到并自动点击"
  17. Else
  18. TracePrint "没有找到, 不执行点击"
  19. End If

  20. //================例子3================//
  21. '参数"100,200"表示找到后, 点击固定坐标100,200的位置
  22. '例如:找到坐标为(188,288), 则固定点击(100,200)
  23. If zm.FindMultiColorTap("0000FF", "157|-190|1592FF", "100,200") Then
  24. TracePrint "找到并自动点击"
  25. Else
  26. TracePrint "没有找到, 不执行点击"
  27. End If

  28. //================例子4================//
  29. '参数"+0,-20,3000"表示找到后, 点击找到坐标x+0,坐标y-20的位置(也就是x不变, y移动-20)
  30. '例如:找到坐标为(188,288), 则点击(188+0,288-20)
  31. '点击后再延时3000毫秒
  32. If zm.FindMultiColorTap("0000FF", "157|-190|1592FF", "+0,-20,3000") Then
  33. TracePrint "找到并自动点击"
  34. Else
  35. TracePrint "没有找到, 不执行点击"
  36. End If

  37. //================例子5================//
  38. '参数"100,+200,1500"表示找到后, 点击固定坐标x100,找到坐标y+200的位置(也就是x固定100,y移动200)
  39. '例如:找到坐标为(188,288), 则点击(100,288+200)
  40. '点击后再延时1500毫秒
  41. If zm.FindMultiColorTap("0000FF", "157|-190|1592FF", "100,+200,1500") Then
  42. TracePrint "找到并自动点击"
  43. Else
  44. TracePrint "没有找到, 不执行点击"
  45. End If

  46. //================例子6================//
  47. '为了防止被行为检测发现用脚本挂机, 可以通过zm.SetTap()设置随机范围点击坐标
  48. '设置点击坐标的随机浮动值, x浮动在[-10,15], y浮动在[5,20]
  49. '举个例子, 点击坐标100,200时, x随机范围是[100-10, 100+15], y随机范围是[200+5, 200+20]
  50. '该浮动设置对所有超级图色命令有效, 对点击参数True和点击坐标参数也都有效
  51. zm.SetTap {"minx":-10, "maxx":15, "miny":5, "maxy":20}
  52. If zm.FindMultiColorTap("0000FF", "157|-190|1592FF") Then
  53. TracePrint "找到并随机点击[x-10,x+15],[y+5,y+20]"
  54. Else
  55. TracePrint "没有找到, 不执行点击"
  56. End If
复制代码


找到后等待画面消失

一般当我们找到坐标,执行完点击,画面应该会发生变化,如果这时候再去查找变化前的画面,那么肯定是找不到的。
所以等待画面消失可以用于验证点击是否成功。
另外,有时候我们可能需要统计在变化的画面中,某个画面出现多少次,那么也可以利用这个等待画面消失功能来计算。
它的返回结果保存在clear键名中,返回值与返回参数都有该键。
当没找到时,返回键值为null,如果找到了并且也消失了,那么返回键值为true,否则为false。
可能比较拗口,下面以代码来演示
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. Dim tMul() '定义默认返回数组
  4. zm.SetFindMultiColor {"ret":tMul, "showlog":"显示"} '设置默认返回值与显示日志

  5. //================例子1================//
  6. '参数-2表示开启等待消失功能, 填写-1为禁用该功能
  7. '默认等待消失超时时间为-2000, 即2000毫秒
  8. If zm.FindMultiColorTap("0000FF", "157|-190|1592FF", tMul, -2) Then
  9. If tMul["clear"] Then
  10. TracePrint "找到后点击, 并且画面已发生变化"
  11. Else
  12. TracePrint "找到后点击, 但是画面未发生变化"
  13. End If
  14. Else
  15. TracePrint "没有找到, 不执行点击, 不等待消失"
  16. End If

  17. //================例子2================//
  18. '参数2000表示限时2秒内查找, 参数-2表示开启等待消失, 参数-5000表示消失超时5秒
  19. '以下功能为统计某画面出现后消失次数
  20. Dim counts = 0 '定义出现次数
  21. Do
  22. If zm.FindMultiColor("0000FF", "157|-190|1592FF", 2000, tMul, -2, -5000) Then
  23. If tMul["clear"] Then
  24. counts = counts + 1
  25. TracePrint "找到了, 并且5秒消失了, 当前出现后消失次数", counts
  26. Else
  27. TracePrint "找到了, 但是持续时间超过5秒未消失, 当前出现后消失次数", counts
  28. End If
  29. Else
  30. TracePrint "2秒内没有找到, 不执行点击, 不等待消失, 当前出现后消失次数", counts
  31. End If
  32. Loop
复制代码


全自动智能调整相似度

在脚本参数中,相似度参数永远是模糊的,无法计算准确合适的相似度值,只能凭借经验去填写。
如果相似度过高了,会导致查找不到坐标,但是如果太低了,又会找到不符合要求的坐标,非常烦恼。
我们的超级图色命令针对这一现象,加入了智能相似度的功能,帮你在指定范围的相似度内找到最佳相似度并返回坐标!
注意:该命令对查找效率有一定的影响,合理相似度范围与步长,可以提高效率。
  1. Import "zm.luae" //导入插件,只需执行一次zm.Init //初始化插件,只需执行一次

  2. Dim tMul() '定义默认返回数组
  3. zm.SetFindMultiColor {"ret":tMul, "showlog":"显示"} '设置默认返回值与显示日志

  4. //================例子1================//
  5. '在相似度0.8到0.9中查找合适的相似度, 默认变化步长为0.05
  6. If zm.FindMultiColor("0000FF", "157|-190|1592FF", 5000, tMul, 0.8, 0.9) Then
  7. TracePrint "找到了, 序号=", tMul(0), ", x=", tMul(1), ", y=", tMul(2)
  8. Else
  9. TracePrint "没找到任何数据"
  10. End If

  11. //================例子2================//
  12. '在相似度0.7到1.0中查找合适的相似度, 变化步长为0.1
  13. If zm.FindMultiColor("0000FF", "157|-190|1592FF", 5000, tMul, 0.7, 1.0, 0.1) Then
  14. TracePrint "找到了, 序号=", tMul(0), ", x=", tMul(1), ", y=", tMul(2)
  15. Else
  16. TracePrint "没找到任何数据"
  17. End If
复制代码


自动化日志记录

开发脚本过程中,TracePrint的调试输出必不可少,但是每次找图命令后面都加一个输出就太麻烦了,不加又不好分析代码。
超级图色提供详细的内置日志输出显示功能,可以让我们很直观的看到脚本每次查找的结果,方便查找出错的原因。
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. //================例子1================//
  4. '可以直接用TracePrint()调用超级图色命令输出返回结果
  5. '但是这种输出不够详细直观, 并且不便用于赋值或者判断
  6. '因为返回值是table表, 所以找到后输出看到的是unknown, 没找到看到的是null
  7. TracePrint zm.FindMultiColor("0000FF", "157|-190|1592FF")

  8. //================例子2================//
  9. '参数"显示"表示开启内置日志输出, 也可以使用"show"来代替
  10. '如果想只在没找到的情况下输出日志的话, 那么可填写"显示没找到"
  11. '支持 "显示","显示找到", "显示没找到","隐藏","show", "showfind", "shownofind","hide" 这几个值
  12. '可以通过输出内容查看详细返回结果与参数数据
  13. zm.FindMultiColor "0000FF", "157|-190|1592FF", "显示"

  14. //================例子3================//
  15. '每次都填写"显示"会很麻烦, 可以通过zm.SetFindMultiColor()设置为默认显示日志
  16. '也可以使用zm.SetShowLog()开启所有超级图色的日志显示
  17. zm.SetFindMultiColor {"showlog":"显示没找到"}
  18. zm.FindMultiColor "0000FF", "157|-190|1592FF"
  19. '如果开启后, 某些查找不想显示输出, 那就选择"隐藏", 也可以填写"hide"
  20. zm.FindMultiColor "0000FF", "157|-190|1592FF", "隐藏"

  21. //================例子4================//
  22. '默认输出格式会比较混乱, 不方便识别对应代码, 所以我们可以加入备注参数
  23. '备注参数格式为@开头的字符串, 如果填写@@的话, 还会浮窗显示日志
  24. '注意, 只有开启日志输出显示后, 备注才有效
  25. zm.FindMultiColor "0000FF", "157|-190|1592FF", "@寻找史莱姆"
  26. zm.FindMultiColor "0000FF", "157|-190|1592FF", "@@在浮窗显示"

  27. //================例子5================//
  28. '除了备注可以美化输出外, 也可以指定输出行号来对应代码
  29. '行号参数格式以_开头, 后面跟数字行号
  30. '该参数使用局限性较大, 因为如果前面代码变动导致行号变化, 那么就要手动修改行号参数
  31. zm.FindMultiColor "0000FF", "157|-190|1592FF", "_34"
复制代码


强大的对象参数
特殊之处:超级多点找色的多点颜色数据参数是属于追加,并非覆盖!
在小脚本开发过程中,命令都是信手拈来,参数也是随手填写的。
但是开发大型脚本的时候,必须要管理好每一个变量数据,如果所有代码都分散在各行中,想要查找并修改某一处代码,是很困难的。
这里我们可以使用对象参数,把每一条的图色参数都收集起来,存放在table数组中,然后命令直接使用这个table数组作为参数使用,我们称之为对象参数。
将对象作为第一个参数传入后,如果后面还跟其他参数,那么除了多点数据参数是追加外,其他参数都是覆盖形式处理的。
注意:对象参数必须放在第一个参数位置!
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. Dim tMul() '定义默认返回数组
  4. zm.SetFindMultiColor {"ret":tMul, "showlog":"显示"} '设置默认返回值与显示日志

  5. //================例子21================//
  6. '定义史莱姆对象数组, 将超级图色要用到的所有参数都丢进来, 顺序规则与命令参数相同
  7. Dim 史莱姆 = {"@找史莱姆","0000FF", "157|-190|1592FF", 100,200,500,600,true,"0.9-1.0",5000}
  8. If zm.FindMultiColor(史莱姆) Then
  9. TracePrint "找到了, 序号=" & tMul(0), ", x=" & tMul(1), ", y=" & tMul(2), ", 首点颜色=" & tMul(3)
  10. Else
  11. TracePrint "没找到"
  12. End If

  13. //================例子22================//
  14. '定义对象使用后, 如果个别代码需要改动部分参数, 可以直接在命令中加入对应参数
  15. '但是多点颜色参数属于追加的
  16. '下面代码实现了关闭点击, 修改范围, 查找"0000FF"和"1592FF"两组多点颜色
  17. Dim 黑龙 = {"@找黑龙", "0000FF", "157|-190|1592FF", true, "0.9-1.0", 5000}
  18. If zm.FindMultiColor(黑龙, 100, 300, 500, 700, false, "1592FF", "-39|144|070203,199|60|0CB900") Then
  19. TracePrint "找到了, 序号=" & tMul(0), ", x=" & tMul(1), ", y=" & tMul(2), ", 首点颜色=" & tMul(3)
  20. Else
  21. TracePrint "没找到"
  22. End If
复制代码


定制属于自己的默认值

超级多点找色命令的参数默认值可以通过zm.SetFindMultiColor()命令自由调整。
比如本次脚本画面比较模糊,需要降低相似度,那么就修改默认相似度的值。
所有查找都想输出显示日志,那么就修改日志显示默认值等。
  1. Import "zm.luae" //导入插件,只需执行一次
  2. zm.Init //初始化插件,只需执行一次

  3. Dim tMul() '定义默认返回数组
  4. '设置所有超级多点找色的默认返回参数tMul, 默认显示日志, 相似度默认0.7, 超时时间5000毫秒
  5. '其他更多设置见文档 [url]https://zimaoxy.com/m/post/zm.setfindmulticolor/[/url]
  6. zm.SetFindMultiColor {"ret":tMul, "showlog":"显示没找到", "sim":0.7, "timeout":5000}

  7. zm.FindMultiColor "0000FF", "157|-190|1592FF"
复制代码

最后编辑紫猫 最后编辑于 2022-02-10 17:54:18

【紫猫编程学院】火热招生中

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220 微信:zimaoxy

紫猫学院免费教程

加入交流QQ群: 7333555


2#

沙发,支持紫猫老师~

3#

总算找到需要的了.. 回复后慢慢学习

发新话题 回复该主题