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

软件版本: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

快捷导航

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

发新话题 回复该主题

[技术交流] 【院刊】-【201411期】不再为脚本卡死而忧伤。 [复制链接]

1#

不再为脚本卡死而忧伤。


﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋

﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊

本文按键学院提供技术支



▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂
盆友写了个押镖脚本,刚开顺顺当当的,运行一会儿后没了反应,不操作也不停止脚本。
“为什么突然不灵了呢?”
小编最喜欢灵异事件,于是火急火燎的去看


▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂▂﹏▂﹏▂﹏▂﹏▂﹏▂﹏▂



为什么突然不灵了?

您所在的用户组无法下载或查看附件


盆友玩的是: XXXX某游戏
押镖规则:
1、可以选择坐在镖车上、步行、或者骑马。
2、步行或者骑马,人物在前面走,镖车会跟随人物。
3、如果人物与镖车距离过远了,镖车则停止跟随,停留在原地。





● 如果人物坐在镖车上,镖车行走的速度比蜗牛还慢,所以盆友选择了骑马的方式。

● 骑马的速度是快过镖车的,很容易造成镖车和人物距离远,镖车不跟随的情况。所以盆友这样写:骑马骑一段时间,停下来等待,循环找图,找到镖车图标之后,继续前进。


● 兴许是马儿跑得欢了,等停下来等待的时候,与镖车的距离早已超过了镖车会自动跟随的距离。

● 找不到镖车的图,就一直循环一直循环~看上去就像脚本卡住了一样



由此可见,死循环完全可以终结一个脚本。

死循环的例子还有其它


例如:


在游戏里点击npc交任务的时候,正常的流程是这样的:

1、循环找交任务按钮,找到交任务的按钮则点击,找不到则继续找,

2、循环找 接新任务的按钮,找到则点击,找不到则继续找。


但是会出现这样的情况,有的任务提交限等级,没有30级不能提交。

这个时候 我们点击完交任务的按钮,npc对话框上会提示没满等级任务不能交,但是npc交任务的对话框依然还在。

接新任务的按钮被对话框遮挡,无法找到,则进入死循环。





怎样才能解决死循环呢?

方法1:
既然循环会死- -,那就干脆不用循环。//以点击npc弹出对话框点击对话框里的接新任务为例。

1、点击npc对话
2、算准点击npc之后,对话框延时多长时间弹出来。
3、用延时命令,延时之后再进行找图。
  1. LeftClick 1//点击npc
  2. Delay 3000 //延时三秒等待npc对话框出现
  3. FindPic 0,0,1024,768,"c:\接新任务按钮.bmp",0.9,intX,intY
  4. If intX>0 and intY>0 Then
  5. // 执行操作
  6. End If
复制代码
评分:★
评语:要使用此法,前提是使用者的网络延迟情况要比脚本内设定的延时小。
网络太渣超过脚本设定延时则无法正常使用。
如果脚本作者考虑到网络延迟因素,尽可能加大脚本里的延时,脚本的效率就会变得很低。




方法2:
循环里加入计数,设置循环次数,1次2次10次,按照需求设置。如果次数到了,则退出循环。//以查找npc对话框中的接新任务按钮为例

1、使用变量i来记录次数。
2、找图。没找到图则i=i+1
3、当i=10,则退出循环。

Do循环例子:
  1. Dim i
  2. i = 0
  3. Do
  4. FindPic 0,0,1024,768,"c:\接新任务按钮.bmp",0.9,intX,intY
  5. If intX>0 and intY>0 Then
  6. // 执行操作
  7. Exit Do
  8. End If
  9. i = i + 1
  10. If i = 10 Then
  11. Exit Do
  12. End If
  13. Loop
复制代码
For循环例子:
  1. For i = 1 To 10
  2. FindPic 0,0,1024,768,"c:\接新任务按钮.bmp",0.9,intX,intY
  3. If intX>0 and intY>0 Then
  4. // 执行操作
  5. Exit For
  6. End If
  7. Next
复制代码
评分:★★
评语: 百分百解决死循环问题。



方法3:
循环里加入计数和计时,设置循环次数,每次循环延时多长时间。如果次数到了,则退出循环。
//以查找npc对话框中的接新任务按钮为例

1、使用变量i来记录次数。
2、找图。没找到图则i=i+1
3、加延时
4、当i=10,则退出循环。

Do循环例子:
  1. Dim i
  2. i = 0
  3. Do
  4. FindPic 0,0,1024,768,"c:\接新任务按钮.bmp",0.9,intX,intY
  5. If intX>0 and intY>0 Then
  6. // 执行操作
  7. Exit Do
  8. End If
  9. i = i + 1
  10. If i = 10 Then
  11. Exit Do
  12. End If
  13. Delay 1000
  14. Loop
复制代码
For循环例子:
  1. For i = 1 To 10
  2. FindPic 0,0,1024,768,"c:\接新任务按钮.bmp",0.9,intX,intY
  3. If intX>0 and intY>0 Then
  4. // 执行操作
  5. Exit For
  6. End If
  7. Delay 1000
  8. Next
复制代码
评分:★★★
评语: 百分百解决死循环问题,并且相较于循环加计数的,多加了一个计时,我们以时间去限制循环,而不单单是次数。
例如:我们希望这个循环,1分钟内执行不了则退出循环。我们可以设置循环60次,每次循环延时1秒钟,或者循环10次,每次循环延时6秒。





逃离死循环之后,后续该怎么处理呢?

押镖:第一个押镖的例子中,我们加入计数计时判断,判断次数达到限制次数之后,我们要怎么处理呢?肯定不是直接结束循环什么也不干。

后续处理:如果限定循环次数内未找到镖车的图标。则人物往回移动一点,继续找镖车图标。
限定往回走的次数,达到次数之后,弹出提示脚本遇到错误的信息或者停止脚本。




Npc对话框接新任务:

后续处理:如果限定循环次数内未找到接新任务按钮的图标。则判断当前窗口内是否有交任务的按钮,有则说明是任务没有交成功,点击关闭npc对话框。








童鞋们如果有其它对于死循环的看法,或者好的处理方法,欢迎分享讨论~~





本文按键学院提供技术支持

━═━═━━═━═━━═━═━◥◤━═━═━━═━═━━═━═━

按键学院开班【手机按键】 重金招募导师!

按键学院实战班


    已有1评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2023/10/5 18:40:01 执行 审核帖子 操作
    按键学院免费交流群:376122403

    按键学院招生计划
    按键学院系统教程
    2#

    5发大多数

    3#

    学习学习

    4#


    5#

    1111111111

    6#

    学习学习了

    7#

    潺潺潺潺

    8#

    這真的很煩

    9#

    学习学习下

    10#

    按下时

    11#

    天下没有白吃的午餐,有也轮不到你.所以别想忽悠俺.

    12#

    学习一下

    13#

    好弄噢噢噢

    14#

    看看

    15#


    16#

    '看看
    ,

    17#

    果有其它对于死循环的看法,或者好的处理方法,欢迎分享讨论

    18#

    自己领悟天哦

    19#

    如果人物与镖车距离过远了,镖车则停止跟随,停留在原地。

    20#

    感谢分享,支持原创

    发新话题 回复该主题