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

软件版本:2014.06
软件大小:22.9M
更新时间:03-18

按键精灵安卓版
立即下载

软件版本:3.3.8
软件大小:62.5M
更新时间:12-18

按键精灵iOS版
立即下载

软件版本:1.6.8
软件大小:29.2M
更新时间:03-03

最新企业版UiBot
立即下载

软件版本:3.3
软件大小:282M
更新时间:08-06

快捷导航

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

登录 注册
返回列表 12345678» / 10
发新话题 回复该主题

[技术交流] 【院刊】-【201409期】DNF六点刷新疲劳值时从第一个角色开始执行 [复制链接]

1#

DNF六点刷新疲劳值时从第一个角色开始执行




DNF游戏每天早上六点刷新疲劳值,如果我们想在六点的时候,不执行当前的游戏角色,重新从第一个角色开始执行呢?听起来很容易的样子……实际做起来就木有那么顺手了


选择角色登录


我们想要让脚本一个角色执行完之后执行下一个角色,首先,要记录角色的序号
1、把角色的序号写到ini文件中
ini文件内容设置(角色序号默认设置为1,第一个角色):
[角色ID]
角色=1
2、每执行完一个角色之后,角色序号加一
3、判断最后一个角色执行完成之后退出脚本




拿上面三个角色做例子。




我们第一次启动,角色序号是一,选择第一个账号登录。
1、键盘上的方向键可以选择人物,小编设置每次选择角色的时候,鼠标先点击第一个人物,然后读取当前该执行的角色序号,例如当前要执行的角色序号是2,那就按下一次右方向键,选择第二个人物,如果是3则按下两次方向键。
(方式有很多,例如,记录第一个角色的中心坐标点来遍历找到其它要执行的角色。哪种方便选哪种。

  1. w = CInt(Plugin.File.ReadINI("角色ID", "角色", "G:\test\DNF.ini")) //读取角色序号
  2. If w > 3 Then
  3. MessageBox "所有角色都执行完毕。"
  4. ExitScript
  5. End If
  6. MoveTo 90, 120
  7. LeftClick 1 //点击选择第一个角色
  8. Delay 1000
  9. If w > 1 Then 判断如果不是第一个角色就按方向键选择其他角色
  10. For i = 1 To w - 1
  11. KeyPressS "Right", 1
  12. KeyPress 39,1//按下方向键右键进行选择角色
  13. Delay 1000
  14. Next
  15. End If
复制代码

角色登录之后





角色登录之后,开始执行任务。
1、建立一个线程,命名为主线程。主线程里写我们需要脚本执行的任务。
2、再建立一个新的线程,命名为时间监视。用来监控时间。
*第一重判断,判断当前时间是否是早晨六点
*是早晨六点的话,停止主线程,把ini里的角色序号重置为1
*重新启动主线程,从第一个角色开始执行


全部代码:
  1. //在角色选择界面启动脚本
  2. Dim 总共角色数
  3. 总共角色数=3
  4. hwnd= Plugin.Window.Find("地下城与勇士", 0)
  5. Call Plugin.Window.Size(hwnd,800,600)
  6. Call Plugin.Window.move(hwnd, 0, 0)
  7. Call Plugin.Window.Active(hwnd)
  8. 线程ID = BeginThread(主线程)
  9. 线程ID2=BeginThread(时间监视)
  10. Sub 主线程()
  11. Do
  12. //点击第一个角色
  13. w = CInt(Plugin.File.ReadINI("角色ID", "角色", "G:\test\DNF.ini"))
  14. If w > 3 Then
  15. MessageBox "所有角色都执行完毕。"
  16. ExitScript
  17. End If
  18. TracePrint w
  19. MoveTo 90, 120
  20. LeftClick 1 //点击
  21. Delay 1000
  22. If w > 1 Then
  23. For i = 1 To w - 1
  24. KeyPressS "Right", 1
  25. KeyPress 39,1//按下方向键右键进行选择角色
  26. Delay 1000
  27. Next
  28. End If
  29. Call Plugin.File.WriteINI("角色ID", "角色", w + 1, "G:\test\DNF.ini")
  30. Moveto 395, 547
  31. LeftClick 1 //点击开始游戏
  32. Delay 8000
  33. KeyPress "Esc", 1 //调出游戏菜单
  34. Moveto 390, 410
  35. LeftClick 1//点击选择角色
  36. Delay 3000
  37. Loop
  38. End Sub

  39. Sub 时间监视()
  40. Do
  41. s = Hour(Time)//获取系统时间 小时
  42. m =minute(Time)//获取系统时间 分钟
  43. If s = 6 and m = 0 Then //如果是六点
  44. StopThread 线程ID //停止主线程
  45. Call Plugin.File.WriteINI("角色ID", "角色", 1, "G:\test\DNF.ini")
  46. KeyPress "Esc", 1 //调出游戏菜单
  47. Moveto 390, 410
  48. LeftClick 1//点击选择角色
  49. Delay 3000
  50. End If
  51. Delay 6000
  52. Loop
  53. 线程ID= BeginThread(主线程)
  54. End Sub
复制代码


注意:小编的代码简单说明了下思路,许多细节的地方,童鞋们在写的过程中需要多加注意下。例如,当我们判断到当前时间是六点的时候,如果我们的角色还在做副本怎么办?


拓展思路:



如果童鞋们希望在角色把当前的任务执行完之后再从第一个角色开始,我们可以这样:

1、我们建立一个全局变量
2、时间监控线程判断到当前时间是六点的时候,全局变量的值设置为1
3、判断下当前角色的疲劳值,如果疲劳值还有,继续做任务

(在主线程的末尾,角色任务执行完的时候,判断下全局变量,如果为1,退到角色选择界面,从第一个角色开始执行。)
4、如果疲劳值没有了则退出到角色选择界面
注意:这里需要做的是判断当前角色是在什么地方,然后该如何回到角色选择界面,例如,如果在副本里,就需要先退出副本然后再回到主界面)



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


按键学院实战班(入驻最终幻想)火热招生


按键学院基础视频抢先观看











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

    2#

    11111

    3#

    eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeetrrrrrrrrrrrrrrrrrr

    4#

    说得对发是

    5#

    吃vbcvbvcbvcbc

    6#

    看看有什么好东西

    7#

    s事实上是事实是事实是事实是事实是事实生生世世

    8#

    学习学习,更快乐!

    9#

    学习一下...

    10#


    11#

    15161561651651

    12#

    新人学习学习

    13#

    6666666

    14#

    11111111111

    15#

    看大神表演~

    16#

    ............................................

    17#

    HAHHAHAHHHHHHHHAHAH哈哈哈哈h

    18#

    11111111111111111111

    19#

    88888888888888888999999

    20#

    学习思路

    发新话题 回复该主题