zm.FindStr 超级找字

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

功能

FindStr 区域找字 更加强大的命令, 具体特色如下

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

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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:
  • V1.1803: 支持超级缩放命令, 点击功能只受是否点击参数影响
  • V1.1804: 加入找到后等待消失可选参数
  • V1.1813: 修复点击参数不继承zm.SetTap()设置延时问题, 感谢likanglong反馈
  • V1.1818:
    • 修复由超级缩放命令引起的自动点击坐标0,0问题, 感谢ersheep反馈此BUG
    • 修复超级图色输出是否点击异常, 感谢2578学员反馈此BUG
  • V2.1826: 为智能相似度增加另一种方便的写法, 旧语法依旧有效
  • V2.1828: 若要点击找到坐标, 推荐使用zm.FindStrTap 超级找字点击