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

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

快捷导航

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

发新话题 回复该主题

[昨夜星辰] 【实战+源码+思路】网游YS自动采集木材 [复制链接]

1#
采集的条件与技巧:
1、需要使用长柄武器、单手剑、双手剑的角色对树木进行物理攻击,才能掉落木材。
2、树木中的木材采集完后,树木不会消失。
3、账号小退重进入游戏后,会刷新树木中的木材,且角色会出现在角色最后一次落地的位置。

思路:
根据上述技巧,我们只需要让角色站在树木比较集中的地方,在原地按一次空格进行跳跃,让游戏记录角色落地位置。然后让角色进行物理攻击,攻击树木一定次数,然后小退重新进入游戏,角色便会出现在上次跳跃后落地的位置,同时刷新树木中的木材。然后将角色攻击步骤的代码和账号小退重登步骤的代码,写成循环,即可自动采集木材。根据采集的条件,我们需要使用长柄武器、单手剑、双手剑的角色,在这3种武器类型的角色中,本人推荐单手剑和双手剑角色。原因是部分双手剑角色,在施放重击时会造成大范围的物理攻击,如诺艾尔、辛焱等。而部分单手剑角色,在施放重击时会造成较大范围的物理攻击,且能自动后撤,如刻晴、凯亚等。只有这样搭配起来,我们的脚本才能稳定地采集木材,否则角色可能偏离树木或采集效率较低。


动画演示:



流程图:



源码:
  1. Public Declare Function SetDllPathW Lib ".\plugin\dmreg.dll" Alias "SetDllPathW" (ByVal path As String, ByVal mode As Long) As Long
  2. Dim 脚本ID, 脚本文件存放路径
  3. 脚本ID = GetMacroID()
  4. 脚本文件存放路径 = "C:\原神伐木\" & 脚本ID & "\"
  5. Call 创建文件夹Ex(脚本文件存放路径)
  6. Call 释放文件
  7. Call 注册大漠插件到系统
  8. Call 创建大漠对象
  9. Call 设置大漠相对路径(脚本文件存放路径)
  10. Dim hwnd
  11. hwnd = dm.FindWindow("UnityWndClass", "原神")
  12. If hwnd = 0 Then
  13. MessageBox "未能找到游戏窗口!"
  14. ExitScript
  15. End If
  16. dm_ret = dm.BindWindowEx(hwnd, "normal", "normal", "normal", "", 0)
  17. If dm_ret = 0 Then
  18. MessageBox "游戏绑定失败,错误代码:" & dm.GetLastError()
  19. ExitScript
  20. End If
  21. Dim 重击次数
  22. 重击次数 = 5
  23. Do
  24. For 重击次数
  25. Call 人物重击
  26. Next
  27. Delay 1000
  28. Call 退出游戏
  29. Call 进入游戏
  30. Delay 1000
  31. Loop
  32. Function 打开系统菜单
  33. Do
  34. dm.keypress 27
  35. Delay 50
  36. Loop Until 是否找到了系统菜单(40, 50, true)(0) <> - 1
  37. Delay 50
  38. End Function
  39. Function 选择退出游戏
  40. Do
  41. Call 移动左单击(43, 1025)
  42. Delay 50
  43. Loop Until 是否找到了系统菜单(40, 50, false)(0) = - 1
  44. Delay 50
  45. End Function
  46. Function 确认退出游戏
  47. Do
  48. Call 移动左单击(1179,751)
  49. Delay 50
  50. Loop Until 是否找到了确认退出游戏(40, 50, false)(0) = - 1
  51. Delay 50
  52. End Function
  53. Function 退出游戏
  54. Call 打开系统菜单
  55. Call 选择退出游戏
  56. Call 等待确认退出
  57. Call 确认退出游戏
  58. End Function
  59. Function 进入游戏
  60. Call 等待返回登录界面
  61. Call 等待登录界面加载完毕
  62. Call 点击进入游戏
  63. Call 等待游戏进入完毕
  64. End Function
  65. Function 点击进入游戏
  66. Do
  67. Call 移动左单击(954,1018)
  68. Delay 50
  69. Loop Until 是否找到了点击进入提示(40, 50, false)(0) = - 1
  70. Delay 50
  71. End Function
  72. Function 等待确认退出
  73. If 是否找到了确认退出游戏(40, 50, true)(0) <> - 1 Then
  74. 等待确认退出 = 1
  75. Else
  76. 等待确认退出 = 0
  77. End If
  78. End Function
  79. Function 等待返回登录界面
  80. While 是否找到了关闭游戏按钮(1, 50, true)(0) = - 1
  81. Delay 50
  82. Wend
  83. Delay 50
  84. End Function
  85. Function 等待游戏进入完毕
  86. While 是否找到了派蒙头像(1, 50, true)(0) = - 1
  87. Delay 50
  88. Wend
  89. Delay 50
  90. End Function
  91. Function 等待登录界面加载完毕
  92. While 是否找到了点击进入提示(1, 50, true)(0) = - 1
  93. Delay 50
  94. Wend
  95. Delay 50
  96. End Function
  97. Function 是否找到了派蒙头像(查找次数, 查找间隔, 返回条件)
  98. 是否找到了派蒙头像=循环查找指定图片E_扩展(40,35,75,70, "派蒙头像.bmp", "101010", 0.95, 0, 查找次数, 查找间隔, 返回条件)
  99. End Function
  100. Function 是否找到了点击进入提示(查找次数, 查找间隔, 返回条件)
  101. 是否找到了点击进入提示=循环查找指定图片E_扩展(900,1000,1015,1040, "点击进入提示.bmp", "101010", 0.95, 0, 查找次数, 查找间隔, 返回条件)
  102. End Function
  103. Function 是否找到了关闭游戏按钮(查找次数, 查找间隔, 返回条件)
  104. 是否找到了关闭游戏按钮=循环查找指定图片E_扩展(80,960,110,1000, "关闭游戏按钮.bmp", "101010", 0.95, 0, 查找次数, 查找间隔, 返回条件)
  105. End Function
  106. Function 是否找到了确认退出游戏(查找次数, 查找间隔, 返回条件)
  107. 是否找到了确认退出游戏=循环查找指定图片E_扩展(840,500,1040,530, "确认退出游戏.bmp", "101010", 0.95, 0, 查找次数, 查找间隔, 返回条件)
  108. End Function
  109. Function 是否找到了系统菜单(查找次数, 查找间隔, 返回条件)
  110. 是否找到了系统菜单 = 循环查找指定图片E_扩展(30, 30, 65, 65, "系统菜单.bmp", "101010", 0.95, 0, 查找次数, 查找间隔, 返回条件)
  111. End Function
  112. Function 移动左单击(x, y)
  113. dm.Moveto x, y
  114. Delay 10
  115. dm.LeftClick
  116. End Function
  117. Function 人物重击
  118. dm.LeftDown
  119. Delay 生成随机数(400, 600)
  120. dm.LeftUp
  121. Delay 生成随机数(600, 800)
  122. End Function
  123. Function 生成随机数(最小值, 最大值)
  124. Randomize
  125. 生成随机数 = Int((最大值 - 最小值 + 1) * Rnd + 最小值)
  126. End Function
  127. Function 循环查找指定图片E(x1, y1, x2, y2, 图片名, 查找次数, 查找间隔, 返回条件)
  128. Dim ret
  129. For 查找次数
  130. ret = dm.FindPicE(x1, y1, x2, y2, 图片名, "000000", 0.9, 0)
  131. If 返回条件 = true Then
  132. If ret <> "-1|-1|-1" Then
  133. Exit For
  134. End If
  135. End If
  136. If 返回条件 = false Then
  137. If ret = "-1|-1|-1" Then
  138. Exit For
  139. End If
  140. End If
  141. delay 查找间隔
  142. Next
  143. ret = Split(ret, "|")
  144. 循环查找指定图片E = Array(CLng(ret(0)), CLng(ret(1)), CLng(ret(2)))
  145. End Function
  146. Function 循环查找指定图片E_扩展(x1, y1, x2, y2, 图片名, 偏色, 精准度, 查找方向, 查找次数, 查找间隔, 返回条件)
  147. Dim ret
  148. For 查找次数
  149. ret = dm.FindPicE(x1, y1, x2, y2, 图片名, 偏色, 精准度, 查找方向)
  150. If 返回条件 = true Then
  151. If ret <> "-1|-1|-1" Then
  152. Exit For
  153. End If
  154. End If
  155. If 返回条件 = false Then
  156. If ret = "-1|-1|-1" Then
  157. Exit For
  158. End If
  159. End If
  160. Delay 查找间隔
  161. Next
  162. ret = Split(ret, "|")
  163. 循环查找指定图片E_扩展 = Array(CLng(ret(0)), CLng(ret(1)), CLng(ret(2)))
  164. End Function
  165. Sub OnScriptExit()
  166. Call dm.UnBindWindow()
  167. End Sub
  168. Sub 释放文件
  169. PutAttachment 脚本文件存放路径, "*.*"
  170. PutAttachment ".\plugin", "dmreg.dll"
  171. End Sub
  172. Sub 创建大漠对象
  173. Set dm = createobject("dm.dmsoft")
  174. End Sub
  175. Sub 设置大漠相对路径(路径)
  176. dm_ret = dm.SetPath(路径)
  177. End Sub
  178. Sub 注册大漠插件到系统()
  179. Dim ver, need_ver
  180. need_ver="3.1233"
  181. Call SetDllPathW(脚本文件存放路径 & "dm.dll", 0)
  182. Set dm = createobject("dm.dmsoft")
  183. ver = dm.ver()
  184. If ver = "" Then
  185. MessageBox "插件对象创建失败!"
  186. ElseIf ver <> need_ver Then
  187. MessageBox "插件版本错误,当前使用的版本是:" & ver & ",插件所在目录是:" & dm.GetBasePath()
  188. End If
  189. End Sub
  190. Sub 创建文件夹Ex(路径)
  191. Dim 当前路径
  192. If 获取路径基本名称(路径) <> "" Then
  193. 当前路径 = 路径
  194. 路径 = 获取路径父文件夹(路径)
  195. Call 创建文件夹Ex(路径)
  196. Call 创建文件夹(当前路径)
  197. End If
  198. End Sub
  199. Function 获取路径父文件夹(DriveSpec)
  200. Dim fso
  201. Set fso = CreateObject("Scripting.FileSystemObject")
  202. 获取路径父文件夹 = fso.GetParentFolderName(Drivespec)
  203. set fso = nothing
  204. End Function
  205. Function 获取路径基本名称(filespec)
  206. Dim fso
  207. Set fso = CreateObject("Scripting.FileSystemObject")
  208. 获取路径基本名称 = fso.GetBaseName(filespec)
  209. set fso = nothing
  210. End Function
  211. Sub 创建文件夹(路径)
  212. Dim fso
  213. Set fso = CreateObject("Scripting.FileSystemObject")
  214. fso.CreateFolder 路径
  215. set fso = nothing
  216. End Sub
复制代码

源文件:

test.zip (, 下载次数:31)



注:源码与源文件的运行环境为Windows7 64位操作系统,游戏分辨率1920X1080。本帖仅为分享思路,若不能正常运行代码,请自行修改代码。

最后编辑昨夜星辰 最后编辑于 2022-03-19 12:24:54
近期制作:
传奇私服各种反外挂插件版本挂机软件,可教可售
原神加速、连发辅助工具
天下3自动钓大鱼辅助工具

承接脚本定制,点击下方联系
QQ:250039815

交流群:101296478

2#

666

3#

感谢

4#

顶一个6666

5#

这个需要学习一下

6#

123456

7#

大漠变参指针无法返回值

点评

昨夜星辰   不要 dim 变量 或者采用其他函数 如findpic换成findpicE  发表于 2022/3/24 21:19:43

8#

11111111111

9#

學習一下,謝謝

10#

学习看看

定制脚本请找官方脚本作者小蜜峰QQ450949738
11#

666666666666666666666666

12#

66666666国话

13#

学习下

14#

好不容易看到一个代码

15#

111111111111

16#

fafawefhjkll7t67

17#

看一下是怎么整的

18#

776666

19#

看看

20#

看看

发新话题 回复该主题