跳到主要内容

zm.FindStrYouTu 优图找字

🎯功能

使用优图AI识别来实现找字功能, 对横屏识别效果不佳, 不需要字库, 字体颜色之类的参数, 必须先使用zm.OcrYouTuInit 初始化优图OCR进行初始化后使用, 默认参数使用zm.SetFindStr 设置FindStr默认参数修改

📜语法

结果 = zm.FindStrYouTu([对象][x1, y1, x2, y2, ]文字[, 查找超时][, 是否点击][, 点击坐标][, 显示日志][, 输出行号][, 备注][, 等待消失][, 消失超时][, 参数返回值])

📥参数

参数数据类型解释
对象可选, 把所有参数放入一个table中传入, 若后面跟有其他参数, 则会对应覆盖对象数据
x1数值型可选, 查找范围的左上角x坐标, 省略默认为0
y1数值型可选, 查找范围的左上角y坐标, 省略默认为0
x2数值型可选, 查找范围的右下角x坐标, 省略默认为0
y2数值型可选, 查找范围的右下角y坐标, 省略默认为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 //初始化插件,只需执行一次

If zm.OcrYouTuInit("请修改成你的AppID", "请修改成你的AppKey") Then
TracePrint "设置优图AI识别成功"
Else
TracePrint "设置优图AI识别失败"
End If

Dim ret

//--------------------初级用法--------------------//
//默认全屏查找"紫猫学园"这4个字, 任何颜色都可以
ret = zm.FindStrYouTu("紫猫学园")
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.FindStrYouTu(100, 200, 300, 400, "紫猫学园", 返回数组) 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)里, 限时30000毫秒内循环查找("紫猫|学园")
//找到任何一个后退出循环查找, 然后点击找到的坐标(True), 并将找到的序号与坐标结果保存到数组变量(ret)与(返回数组)中
//同时开启日志的输出("显示")功能, 在当前脚本第("_40")行输出备注("@怪物1"), 查找结果与其他参数信息
ret = zm.FindStrYouTu(100, 200, 300, 400, "紫猫|学园", 30*1000, True, "显示", "@怪物1", 返回数组, "_40")
If ret Then
TracePrint "找到了"
Else
TracePrint "没有找到"
End If

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

//--------------------修改默认值--------------------//
Dim IXYs()
//设置默认参数返回值IXYs, 若命令不填写参数返回值, 则默认保存在该变量中
//设置默认日志输出为显示状态, 后面所有 zm.FindStrYouTu() 都默认输出调试信息
//更多修改默认设置详见 zm.SetFindStr() 命令帮助
zm.SetFindStr {"ret":IXYs, "showlog":"显示"}
If zm.FindStrYouTu("喵星人") 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

📘备注

  • 本命令调用腾讯优图OCR的识别功能, 与百度云识别相比, 目前优图OCR完全免费使用
  • 本命令只适合正常屏幕方向使用, 横屏情况推荐使用zm.FindStrBaiDu 百度云找字
  • 获取优图AppID和AppKey的步骤:
    • 前往腾讯AI官网注册并登录
    • 打开控制台
    • 点击创建应用, 并输入相关资料, 记得勾选全部OCR接口
    • 查看刚刚创建的应用, 就可以查到AppID和AppKey
  • V3.1839: 加入命令
  • V3.1849: 支持超级缩放