• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.3.1
软件大小:62.5M
更新时间:5-24

按键精灵iOS版
立即下载

软件版本:1.3.5
软件大小:29.2M
更新时间:06-14

最新企业版UiBot
立即下载

软件版本:3.2
软件大小:253M
更新时间:08-06

快捷导航

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

登录 注册
发新话题 回复该主题

[已解决] 如何实现函数成为中转站 [复制链接]

1#
如何实现函数成为中转站,当执行任务一的时候需要判断是否在界面,当任务一完成,执行任务二时,会先进行一个判断是否在界面,但直接调试“判断是否在界面”,发现会把任务一再执行一次,那如何实现把“判断是否在界面”这函数变成中转站?还是只能把代码再复制一次
Function 判断是否在界面()
Delay 1500
FindPic 459,1114, 909,1340, "Attachment:1.1.png", "000000", 0, 1, intx, inty
If intx > 0 Then
Delay 200
TracePrint "已经在了,进入商店"
Call 任务一()
Else
Delay 200
TracePrint "未在,返回界面识别"
Call 界面识别()
End If
End Function

Function 任务一()
Do
Delay 600
'服装店颜色
FindMultiColor 0,0,0,0,"ACA5DA","14|8|A1B0DB,9|-31|D8FDFE",0,1,intX,intY
If intX > -1 And intY > -1 Then
Delay 300
TracePrint "找到入口,进入服装店"
Tap 252, 1404
Call 任务二()
Else
Delay 300
TracePrint "未找到入口,进入界面识别"
Call 界面识别()
End If
Loop
End Function

Function 任务二()
Do
'青春记忆标志
FindMultiColor 0,0,0,0,"FEFDFD","9|18|E2DCD2,24|17|F9F8F7",0,1,intX,intY
If intX > -1 And intY > -1 Then
Delay 500
TracePrint "找到衣服,点击购买"
Tap 924,837
Call 确定交易()
Else
Delay 500
TracePrint "没有找到购买的衣服,判断是否在界面一"
Call 判断是否在界面()
End If
Loop
End Function

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

    本主题由 超级版主 n15976906190 于 2019/7/18 9:00:11 执行 审核帖子 操作
    2#

    回复 1楼沐星雨的帖子
    1. Function 判断是否在界面(参数)
    2. Delay 1500
    3. FindPic 459,1114, 909,1340, "Attachment:1.1.png", "000000", 0, 1, intx, inty
    4. If intx > 0 Then
    5. Delay 200
    6. If 参数 = 1 Then
    7.     TracePrint "已经在了,进入商店"
    8. Call 任务一()
    9. End If

    10. Else
    11. Delay 200
    12. TracePrint "未在,返回界面识别"
    13. Call 界面识别()
    14. End If
    15. End Function

    16. 判断是否在界面 1'会call 任务1
    17. 判断是否在界面 0'不会call 任务1
    复制代码

    收徒索引
    ----将满
    个人QQ:1223116618
    3#

    回复 2楼n15976906190的帖子

    大大,这个参数怎么设置变化,想了用For来设置变化的参数,但卡在了如何让它变化QAQ
    跪求大大帮忙

    4#

    回复 3楼沐星雨的帖子
    1. Sub 子程序(次数)
    2. For 次数
    3.     TracePrint "运行中"
    4.     Delay 500
    5. Next    
    6. End Sub

    7. Call 子程序(3)
    复制代码

    收徒索引
    ----将满
    个人QQ:1223116618
    5#

    回复 4楼n15976906190的帖子

    大大,难受,改了一段时间,发现没设置共享变量次数不会增加,设置共享变量后,调试时又脚本直接完成运行,找不到原因
    Dim intx,inty,次数=i+1,i=0
    Thread.SetShareVar "次数", 次数=i+1
    Call 子程序(次数)
    Sub 子程序(次数)
    次数=Thread.GetShareVar("次数")
    For 次数
    TracePrint "运行中"
    Delay 500
    TracePrint 次数
    Call 判断是否在(次数)
    Next
    End Sub
    Function 判断是否在(次数)
    Delay 1500
    FindMultiColor 0,0,0,0,"E8C660","-38|17|E1B42D,-32|-27|FDFAF3",0,1,intX,intY
    If intX > -1 And intY > -1 Then
    Delay 200
    If 次数 = 1 Then
    TracePrint "任务一"
    Call 任务一()
    Else
    TracePrint "跳至任务二"
    Call 任务二()
    End If
    Else
    Delay 200
    TracePrint "未在,返回界面识别"

    End If
    End Function

    Function 任务一()
    Do
    Delay 600

    FindMultiColor 0,0,0,0,"ACA5DA","14|8|A1B0DB,9|-31|D8FDFE",0,1,intX,intY
    If intX > -1 And intY > -1 Then
    Delay 300
    TracePrint "跳转任务二"
    Call 任务二()
    Else
    Delay 300
    TracePrint "跳转任务二"
    Call 任务二()
    End If
    Loop
    End Function
    Function 任务二()
    Delay 500
    TracePrint "测试次数是否增加"
    Call 子程序(次数)
    End Function

    6#

    回复 5楼沐星雨的帖子

    注:你好 描述混乱 代码混乱 无法给予修改 同时请提供简洁、扼要、清晰可直接测试的代码结构,并注释以及描述问题所在以及疑问(像这样的提问方式 我们无法提供完善任何解答或建议)[理解4#答复后再修改]
    1. Dim intx,inty,次数=i+1,i=0'没有次数=i+1这种dim方式
    2. TracePrint 次数'这里的次数永远是1
    3. TracePrint i'这里i永远是0
    4. Thread.SetShareVar "次数", 次数=i+1'次数=i+1这种参数填写方式
    5. Call 子程序(次数)'传递1作为参数
    6. Sub 子程序(次数)
    7. '抛弃参数1的传递
    8. 次数 = Thread.GetShareVar("次数")'从共享变量读取导致读取出true 故无法进行for
    9. TracePrint 次数
    10. For 次数'这里是true
    11. TracePrint "运行中"
    12. Delay 500
    13. TracePrint 次数
    14. Call 判断是否在(次数)'这里是true
    15. Next
    16. End Sub
    17. Function 判断是否在(次数)
    18. Delay 1500
    19. FindMultiColor 0,0,0,0,"E8C660","-38|17|E1B42D,-32|-27|FDFAF3",0,1,intX,intY
    20. If intX > -1 And intY > -1 Then
    21. Delay 200
    22. If 次数 = 1 Then
    23. TracePrint "任务一"
    24. Call 任务一()
    25. Else
    26. TracePrint "跳至任务二"
    27. Call 任务二()
    28. End If
    29. Else
    30. Delay 200
    31. TracePrint "未在,返回界面识别"
    32. End If
    33. End Function
    34. Function 任务一()
    35. Do
    36. Delay 600
    37. FindMultiColor 0,0,0,0,"ACA5DA","14|8|A1B0DB,9|-31|D8FDFE",0,1,intX,intY
    38. If intX > -1 And intY > -1 Then
    39. Delay 300
    40. TracePrint "跳转任务二"
    41. Call 任务二()
    42. Else
    43. Delay 300
    44. TracePrint "跳转任务二"
    45. Call 任务二()
    46. End If
    47. Loop
    48. End Function
    49. Function 任务二()
    50. Delay 500
    51. TracePrint "测试次数是否增加"
    52. Call 子程序(次数)
    53. End Function
    复制代码

    最后编辑n15976906190 最后编辑于 2019-07-17 16:14:33
    收徒索引
    ----将满
    个人QQ:1223116618
    7#

    回复 6楼n15976906190的帖子

    重新修改下,但共享变量值不知道怎么写,实现了次数依次递增
    Dim intx,inty,次数
    For 次数
    TracePrint "运行中"
    Delay 500
    TracePrint 次数'这个调试的时候无法显示出来...为什么呢?
    Next
    For i = 0 To 2
    次数 = 次数 + i
    TracePrint 次数
    Next
    Thread.SetShareVar "次数",0'共享变量值得填什么?
    Call 子程序(次数)
    Sub 子程序(次数)
    次数=Thread.GetShareVar("次数")
    For 次数
    TracePrint "运行中"
    Delay 500
    TracePrint 次数
    Next
    End Sub

    8#

    回复 6楼n15976906190的帖子

    啊啊,想不懂,想不懂,大大,你能否直接写个模板,真的崩溃了,这个方法真的没接触过,网上也找不到相关的例子QAQQQQQQQQQQQQQQQQQ

    9#

    回复 8楼沐星雨的帖子
    1. Dim intx,inty,次数
    2. For 次数
    3. TracePrint "运行中"
    4. Delay 500
    5. TracePrint 次数'这个调试的时候无法显示出来...为什么呢?[因为第二行的次数=""代码并无给次数赋值]
    6. Next
    7. For i = 0 To 2
    8. 次数 = 次数 + i
    9. TracePrint 次数
    10. Next
    11. Thread.SetShareVar "次数",0'共享变量值得填什么?[你想赋值什么就写什么,同时标点符号错误]
    12. Call 子程序(次数)'未设置参数值
    13. Sub 子程序(次数)
    14. 次数=Thread.GetShareVar("次数")'次数可通过13行的次数参数传递 无需从共享变量读取
    15. For 次数
    16. TracePrint "运行中"
    17. Delay 500
    18. TracePrint 次数
    19. Next
    20. End Sub
    21. '本帖4#就是一个完整的调用例子 建议你学好基础
    复制代码
    Sub 子程序(次数)
    TracePrint 次数
    For 次数
    TracePrint "运行中"
    Delay 500
    Next
    End Sub
    For i = 1 To 3
    Call 子程序(i)    
    Next

    收徒索引
    ----将满
    个人QQ:1223116618
    10#

    回复 9楼n15976906190的帖子

    好的,因为看了某某的教学视频,也做了一些笔记,但他的教学视频中并无参数的赋值,这一片确实的零基础,论坛中的vip教学视频是pc版的……安卓版的官方教学视频是不完整的,不知道是不是我vip等级不足无法查看完整版的,大大有关函数参数这一部分的教学视频能发下吗

    11#

    回复 9楼n15976906190的帖子

    发现在参数跟字符串,数值这些方面弄混了,网上查了一些资料后,写了下面的代码
    Import "shanhai.lua"
    Dim intx,inty,a
    Call 下一步()
    Sub 下一步()
    For i = 0 To 5
    Delay 2000
    TracePrint ShanHai.type (i)'调试的时候发现运行出结果很慢,是调用插件的问题吗?如果不是怎么解决这方法
    a = 1 + i
    TracePrint a
    If a < 2 Then
        Call 一()
        Else
        Call 二()
    End If
    Next
    End Sub

    Sub 一()
    Delay 200
    TracePrint "11"
    End Sub

    Sub 二()
    Delay 200
    TracePrint "2"
    End Sub

    12#

    回复 9楼n15976906190的帖子

    大大,最后一个问题,如何实现调用一次子程序,子程序会自动增加一Function 二()
    Delay 200
    a = 1'想让这个子程序被调用一次,a的值会在1的基础上增加1次
    Call 调试()
    End Function

    13#

    回复 10楼沐星雨的帖子
    1. a = 1
    2. Do

    3. TracePrint 二()
    4. a = a + 1
    5. Delay 2000
    6. Loop
    7. Function 二()'Function这是函数不是子程序
    8. Delay 200
    9. TracePrint a
    10. //Call 调试()
    11. End Function
    复制代码

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

      收徒索引
      ----将满
      个人QQ:1223116618
      14#
      收徒索引
      ----将满
      个人QQ:1223116618
      发新话题 回复该主题