发帖
充值
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
33 1

分享一个有用的函数封装

教程专区 38455 33 2021-8-18 11:04:38
本帖最后由 qiaohw04 于 2021-8-18 11:08 编辑

写脚本(特别游戏脚本)时, 经常遇到类似的情况: 点击了背包按钮, 如果接着就判断背包是否打开,往往识别不到, 这是因为点击后,背包不是立刻打开, 中间会经历几十或者上百毫秒, 因为时间短,所以我们主观上感觉是立刻打开的.
因此, 我们应该在点击背包按钮后, 在一段时间内循环判断背包界面的颜色特征是否出现. 以下代码可以作为参考, 为新手提供思路
  1. function utils.waitExp(func,expireTime)
  2.         if not expireTime then expireTime=0 end
  3.         local sTime = systemTime()
  4.         while (true) do
  5.                 local ret= func[1](func[2])
  6.                 if ret then
  7.                         return ret
  8.                 end
  9.                 if(systemTime() - sTime >= expireTime) then
  10.                         return false
  11.                 end
  12.                 sleep(100)
  13.         end
  14. end
复制代码

参数func是一个table类型, func[1]是函数, func[2]是传入函数的参数, 注意此方法只适用于func[1]只有一个参数的情况. 参数expireTime是超时时间,单位毫秒
调用方法如下:
-- 点击背包按钮后
local 背包界面色征 = {......}
local ret = utils.waitExp({findMultiColorAllT, 背包界面色征}, 3000)
由此, 就可以实现在点击了背包按钮后, 接下来检测背包界面特征, 如果检测到背包界面,返回找色的结果(坐标), 如果3秒内没有检测到背包界面, 返回false



使用道具 举报

2021-8-19 08:42:27
2021-8-19 15:41:53
可以用for循环吗
2021-8-19 19:18:27
谢谢大佬分享
2021-8-19 22:09:00
学习学习
2021-8-20 08:56:17
学习学习学习
2021-8-20 12:17:05
可以封装一个等待特征出现和等待消失
2021-8-20 13:10:51
收藏了
2021-8-25 12:05:17

也可以啊, 不过for是要有循环变量的, 用起来没有while舒服
2021-8-25 12:06:03
总体的思路就是循环等待特征出现, 至于怎么实现个人习惯吧
您需要登录后才可以回帖 立即登录
高级模式
1234下一页
教程专区