TC官方合作论坛

 找回密码
 立即注册
查看: 2528|回复: 2

[游戏] dnf TC 完美登录源码,功能化分很细,带异常处理.

[复制链接]
发表于 2013-11-16 09:37:09 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 gjwkts 于 2013-11-16 09:41 编辑

  1. <P> </P>
  2. <DIV class=blockcode>
  3. <BLOCKQUOTE>空间 化骨绵掌
  4. //默认空间
  5. 变量 启动游戏线程句柄 //句柄相关

  6. 变量 界面配置文件路径 //界面配置文件的路径和文件名
  7. 变量 游戏路径,账号路径 //保存游戏路径和账号路径
  8. 变量 出货单价,保留金币,拍卖物品 //拍卖相关变量
  9. 变量 答题设置,答题串是 //答题处理相关变量
  10. 变量 安全模式,禁闭处理 //安全极禁闭相关变量
  11. 变量 拨号设置,宽带账号,宽带密码 //宽带拨号相关变量

  12. 变量 m_dt,stime,tid //答题
  13. 变量 dm,dm_Ret //大漠
  14. 变量 gjw //老耿插件

  15. 变量 账号数量,当前账号的序号,当前账号的账号,当前账号的密码 //账号相关变量
  16. 变量 当前账号的大区,当前账号的小区,当前账号的角色序号,当前账号的区类型

  17. 变量 临时时间 //测试用 最后删除掉


  18. 功能 复选框0_点击()

  19. 控件.有效("按钮0",真) //设置获取点阵的按钮为有效

  20. 功能结束


  21. 功能 复选框1_点击()

  22. 控件.有效("按钮1",真) //设置打补相的按钮为有效

  23. 功能结束


  24. 功能 按钮0_点击()


  25. 复选框.选中("复选框0",假) //设置复选框为不选 点阵
  26. 控件.有效("按钮0",假)
  27. 功能结束


  28. 功能 按钮1_点击()

  29. 复选框.选中("复选框1",假) //设置复选框为不选 补丁
  30. 控件.有效("按钮1",假)
  31. 功能结束

  32. 功能 保存界面配置() //保存界面配置文件

  33. 辅助.写配置("登录配置","游戏路径",浏览框.获得("浏览框0"),界面配置文件路径 ) //路径相关
  34. 辅助.写配置("登录配置","账号路径",浏览框.获得("浏览框1"),界面配置文件路径 )

  35. 辅助.写配置("登录配置","出货单价",编辑框.获得文本("编辑框0"),界面配置文件路径 ) //拍卖相关
  36. 辅助.写配置("登录配置","保留金币",编辑框.获得文本("编辑框1"),界面配置文件路径 )
  37. 辅助.写配置("登录配置","拍卖物品",编辑框.获得文本("编辑框2"),界面配置文件路径 )

  38. 辅助.写配置("登录配置","答题设置",下拉框.得到选项("下拉框0"),界面配置文件路径 ) //答题相关
  39. 辅助.写配置("登录配置","答题串是",编辑框.获得文本("编辑框3"),界面配置文件路径 )

  40. 辅助.写配置("登录配置","安全选项",下拉框.得到选项("下拉框1"),界面配置文件路径 ) //安全及拨号
  41. 辅助.写配置("登录配置","禁闭处理",下拉框.得到选项("下拉框2"),界面配置文件路径 )
  42. 辅助.写配置("登录配置","拨号设置",下拉框.得到选项("下拉框3"),界面配置文件路径 )

  43. 辅助.写配置("登录配置","宽带账号",编辑框.获得文本("编辑框4"),界面配置文件路径 )
  44. 辅助.写配置("登录配置","宽带密码",编辑框.获得文本("编辑框5"),界面配置文件路径 )

  45. 功能结束

  46. 功能 读取界面配置() //读取界面配置及变量信息

  47. 界面配置文件路径=系统.获取程序路径()&"化骨绵掌.ini"

  48. 游戏路径=辅助.读配置("登录配置","游戏路径",界面配置文件路径) //路径相关
  49. 账号路径=辅助.读配置("登录配置","账号路径",界面配置文件路径)

  50. 出货单价=辅助.读配置("登录配置","出货单价",界面配置文件路径) //拍卖相关
  51. 保留金币=辅助.读配置("登录配置","保留金币",界面配置文件路径)
  52. 拍卖物品=辅助.读配置("登录配置","拍卖物品",界面配置文件路径)

  53. 答题设置=辅助.读配置("登录配置","答题设置",界面配置文件路径) //答题相关
  54. 答题串是=辅助.读配置("登录配置","答题串是",界面配置文件路径)

  55. 安全模式=辅助.读配置("登录配置","安全选项",界面配置文件路径) //安全及拨号
  56. 禁闭处理=辅助.读配置("登录配置","禁闭处理",界面配置文件路径)
  57. 拨号设置=辅助.读配置("登录配置","拨号设置",界面配置文件路径)

  58. 宽带账号=辅助.读配置("登录配置","宽带账号",界面配置文件路径) //宽带账号及密码
  59. 宽带密码=辅助.读配置("登录配置","宽带密码",界面配置文件路径)

  60. 浏览框.设置("浏览框0",游戏路径) //路径相关
  61. 浏览框.设置("浏览框1",账号路径)

  62. 编辑框.设置文本("编辑框0",出货单价) //出货相关
  63. 编辑框.设置文本("编辑框1",保留金币)
  64. 编辑框.设置文本("编辑框2",拍卖物品)

  65. 如果(答题设置=="")
  66. 答题设置=-1
  67. 如果结束

  68. 下拉框.设置选项("下拉框0",答题设置) //答题相关
  69. 编辑框.设置文本("编辑框3",答题串是)

  70. 如果(安全模式=="")
  71. 安全模式=-1
  72. 如果结束

  73. 如果(禁闭处理=="")
  74. 禁闭处理=-1
  75. 如果结束

  76. 如果(拨号设置=="")
  77. 拨号设置=-1
  78. 如果结束

  79. 下拉框.设置选项("下拉框1",安全模式) //安全及拨号
  80. 下拉框.设置选项("下拉框2",禁闭处理)
  81. 下拉框.设置选项("下拉框3",拨号设置)

  82. 编辑框.设置文本("编辑框4",宽带账号) //账号与密码
  83. 编辑框.设置文本("编辑框5",宽带密码)

  84. 功能结束


  85. 功能 初始化()

  86. 化骨绵掌.注册大漠()
  87. 化骨绵掌.注册慧眼()
  88. 化骨绵掌.注册老耿()
  89. 化骨绵掌.读取界面配置()

  90. 功能结束


  91. 功能 按钮2_点击()
  92. 辅助.消息框(界面配置文件路径)
  93. 功能结束


  94. 功能 按钮4_点击()
  95. 化骨绵掌.保存界面配置()
  96. 功能结束

  97. 功能 注册大漠() //注册大漠

  98. 注册:
  99. 是否注册=辅助.是否注册("dm.dmsoft") //判断大漠是否已经注册到系统
  100. 如果(!是否注册)
  101. 是否注册=辅助.注册插件("rc:dm.dll",真) //当未注册到系统时,开始注册大漠插件到系统
  102. 如果(是否注册)
  103. 跳转 注册
  104. 如果结束
  105. 如果结束
  106. dm=com("dm.dmsoft") //创建大漠对像
  107. 如果(dm.ver()!=4.1345)
  108. 是否注册=辅助.注册插件("rc:dm.dll",假)
  109. 跳转 注册
  110. 如果结束
  111. dm_Ret=dm.reg("换成自己的注册码","laogeng01") //注册收费版大漠
  112. 如果(dm_Ret!=1)
  113. 辅助.退出()
  114. 如果结束
  115. dm_Ret = dm.DmGuard(1, "np")
  116. dm_Ret = dm.SetPath(辅助.获取资源路径("rc:"))
  117. dm_Ret = dm.SetDict(0,"login.dll") //设置登录字库

  118. // dm.SetShowErrorMsg (0) '大漠如果出现错误不提示信息

  119. 功能结束

  120. 功能 注册慧眼() //注册慧眼

  121. 注册:
  122. 是否注册=辅助.是否注册("HYDati.Dati")
  123. 如果(!是否注册)
  124. 是否注册=辅助.注册插件("rc:hydati.dll",真)
  125. 如果(是否注册)
  126. 跳转 注册
  127. 如果结束
  128. 如果结束
  129. m_dt=com("HYDati.Dati") //创建慧眼对像
  130. m_dt.SetAuthor("lifeng") //作者返利

  131. 功能结束

  132. 功能 注册老耿() //注册老耿插件
  133. 注册:
  134. 是否注册=辅助.是否注册("gjw.gjwsoft")
  135. 如果(!是否注册)
  136. 是否注册=辅助.注册插件("rc:gjw.dll",真)
  137. 如果(是否注册)
  138. 跳转 注册
  139. 如果结束
  140. 如果结束
  141. gjw=com("gjw.gjwsoft")
  142. 功能结束

  143. 功能 复选框2_点击()

  144. 控件.有效("按钮7",真) //打开脚本设置为可点

  145. 功能结束


  146. //点击关闭_执行操作
  147. 功能 化骨绵掌_关闭()
  148. dm=null
  149. m_dt=null
  150. 辅助.退出()
  151. 功能结束

  152. 功能 打开梦想脚本()
  153. 功能结束

  154. 功能 启动梦想脚本()
  155. 功能结束

  156. 功能 启动游戏()


  157. 开始登录游戏:

  158. //变量声明区

  159. 变量 登录游戏超时
  160. 变量 大小区坐标
  161. 变量 账号密码错误次数=0

  162. //功能实现区域

  163. //信息初始化

  164. 化骨绵掌.读取界面配置() //得到游戏登录所有的信息
  165. 化骨绵掌.读账号配置()
  166. dm.DeleteFile("c:\\windows\\stdnf.bat") //删除游戏启动BAT文件
  167. 辅助.等待(1000)
  168. dm.WriteFile("c:\\windows\\stdnf.bat",游戏路径) //重新生成BAT启动文件
  169. 辅助.等待(1000)
  170. 是否存在=文件.是否存在("c:\\windows\\stdnf.bat") //如果启动文件生成,成功启动游戏 ,否则跳转到开头
  171. 如果(!是否存在)
  172. 跳转 开始登录游戏
  173. 如果结束
  174. 辅助.命令(辅助.获取资源路径("rc:清理进程.bat"),假) //结束 已存在的进程,然后重新开游戏
  175. 辅助.等待(3000)

  176. 登录游戏超时=日期时间.当前日期() //得到当前时间,用于定时整个游戏启动过程,超时,执行超时代码
  177. 循环(真) //打开游戏到选区界面
  178. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "重新选择大区.bmp", "000000", 0.9, 0)
  179. 如果(字符串.长度(dm_Ret)>0) //重新选择大区部分
  180. dm.Moveto(282,600)
  181. 辅助.等待(200)
  182. dm.LeftClick() //点击重新选区
  183. 辅助.等待(200)
  184. dm.moveto(0,0)
  185. 如果结束

  186. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "选区界面.bmp", "000000", 0.9, 0)
  187. 如果(字符串.长度(dm_Ret)>0) //到达选区界面后跳出
  188. 如果(当前账号的区类型=="网通")
  189. dm.moveto(7,384)

  190. 否则
  191. dm.moveto(7,295)
  192. 如果结束
  193. 辅助.等待(200)
  194. dm.leftclick()
  195. 辅助.等待(500)
  196. 跳出
  197. 如果结束

  198. 如果(日期时间.日期间隔("s",登录游戏超时,日期时间.当前日期())>30) //游戏打开超时处理
  199. 跳转 开始登录游戏 //超时重新登录
  200. 如果结束

  201. 辅助.等待(2000)
  202. 循环结束

  203. 登录游戏超时=日期时间.当前日期()
  204. 循环(真)
  205. //这里选择大区
  206. dm_Ret=dm.FindStrFastEx(24, 253, 712, 468, 当前账号的大区, "ffffff-000000", 0.9) //这里是选择大区
  207. 如果(字符串.长度(dm_Ret)>0)
  208. 字符串.分割(dm_Ret,",",大小区坐标)
  209. dm.moveto(大小区坐标[1],大小区坐标[2])
  210. 辅助.等待(200)
  211. dm.LeftDoubleClick()
  212. 辅助.等待(200)
  213. 跳出
  214. 如果结束

  215. 如果(日期时间.日期间隔("s",登录游戏超时,日期时间.当前日期())>20) //游戏打开超时处理
  216. 跳转 开始登录游戏 //超时重新登录
  217. 如果结束

  218. 辅助.等待(1000)
  219. 循环结束

  220. 登录游戏超时=日期时间.当前日期()
  221. 循环(真)
  222. //这里选择小区
  223. dm_Ret=dm.FindStrFastEx(32, 472, 724, 629, 当前账号的小区, "ffffff-000000", 0.9) //这里是选择小区
  224. 如果(字符串.长度(dm_Ret)>0)
  225. 字符串.分割(dm_Ret,",",大小区坐标)
  226. dm.moveto(大小区坐标[1],大小区坐标[2])
  227. 辅助.等待(200)
  228. dm.LeftDoubleClick()
  229. 辅助.等待(200)
  230. 跳出
  231. 如果结束

  232. //这里插入 特别情况处理 比如 延时过大 瀑满等
  233. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "延时过大.bmp|已经爆满.bmp", "000000", 0.9, 0)
  234. 如果(字符串.长度(dm_Ret)>0)
  235. dm.MoveTo(456,433)
  236. 辅助.等待(200)
  237. dm.LeftClick()
  238. 辅助.等待(200)
  239. 如果结束

  240. 如果(日期时间.日期间隔("s",登录游戏超时,日期时间.当前日期())>30) //游戏打开超时处理
  241. 跳转 开始登录游戏 //超时重新登录
  242. 如果结束

  243. 辅助.等待(1000)
  244. 循环结束

  245. 重输账号密码:
  246. 登录游戏超时=日期时间.当前日期()
  247. 循环(真)
  248. //这里完成账号密码的输入
  249. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "输入账号密码.bmp", "000000", 0.9, 0) //这里是输入账号密码
  250. 如果(字符串.长度(dm_Ret)>0)
  251. 辅助.等待(5000)
  252. dm.MoveTo(437,504)
  253. 辅助.等待(200)
  254. dm.LeftClick() //移动到账号输入框
  255. 辅助.等待(200)
  256. 遍历(15) //删除原有账号输入框内的账号
  257. dm.KeyPress(8)
  258. 辅助.等待(50)
  259. 遍历结束

  260. dm.KeyPressStr(当前账号的账号,50) //输入账号
  261. 辅助.等待(500)
  262. dm.MoveTo(440,532)
  263. 辅助.等待(200)
  264. dm.LeftClick() //移动到密码输入框
  265. 辅助.等待(200)
  266. dm.KeyPressStr(当前账号的密码,50) //输入密码
  267. 辅助.等待(200)
  268. dm.MoveTo(626,510)
  269. 辅助.等待(200)
  270. dm.LeftClick()
  271. 辅助.等待(1000) //点登录按钮开始登录游戏
  272. 跳出
  273. 如果结束

  274. 如果(日期时间.日期间隔("s",登录游戏超时,日期时间.当前日期())>60) //游戏打开超时处理
  275. 跳转 开始登录游戏 //超时重新登录
  276. 如果结束

  277. 辅助.等待(1000)
  278. 循环结束

  279. 登录游戏超时=日期时间.当前日期()
  280. 循环(真)
  281. //这里处理 账号密码错误 答题 正常启动跳出 及一些异常处理
  282. 如果(化骨绵掌.进程是否存在("DNF.exe")) //当游戏主进程存在是直接离开
  283. 跳出
  284. 如果结束

  285. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "验证码.bmp", "000000", 0.9, 0)
  286. 如果(字符串.长度(dm_Ret)>0) //发现验证码准备答题
  287. 如果(化骨绵掌.游戏登录答题())
  288. //答题成功插入答题成功代码
  289. 否则
  290. //答题失败插入答题失败代码
  291. 跳转 开始登录游戏 //超时重新登录
  292. 如果结束
  293. 如果结束

  294. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "账号密码错误.bmp", "000000", 0.9, 0)
  295. 如果(字符串.长度(dm_Ret)>0) //发现验证码准备答题
  296. 账号密码错误次数=账号密码错误次数+1
  297. 如果(账号密码错误次数>=3) //账号密码错误次数过多,处理.
  298. 辅助.写配置("账号状态",当前账号的序号,"完成,16",账号路径)
  299. 跳转 开始登录游戏 //换号重新登录
  300. 如果结束
  301. dm.MoveTo(510,430)
  302. 辅助.等待(200)
  303. dm.LeftClick()
  304. 辅助.等待(200)
  305. 跳转 重输账号密码 //重新输入账号密码
  306. 如果结束

  307. 如果(日期时间.日期间隔("s",登录游戏超时,日期时间.当前日期())>120) //游戏打开超时处理
  308. 跳转 开始登录游戏 //超时重新登录
  309. 如果结束
  310. 辅助.等待(1000)
  311. 循环结束

  312. 登录游戏超时=日期时间.当前日期()
  313. 循环(真) //等等频道出现

  314. dm_Ret = dm.FindStrFastEx(0, 0, 800, 600, "频道", "00e6bf-000000", 0.9)
  315. 如果(字符串.长度(dm_Ret)>0)
  316. 如果(化骨绵掌.选择频道())
  317. //选择频道成功代码
  318. 跳出
  319. 否则
  320. //选择频道失败代码
  321. 跳转 开始登录游戏
  322. 如果结束
  323. 如果结束

  324. 如果(日期时间.日期间隔("s",登录游戏超时,日期时间.当前日期())>120) //游戏打开超时处理
  325. 跳转 开始登录游戏 //超时重新登录
  326. 如果结束
  327. 辅助.等待(1000)
  328. 循环结束

  329. 登录游戏超时=日期时间.当前日期()
  330. 循环(真) //判断是否到达选角色的界面

  331. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "选择角色界面.bmp", "000000", 0.9, 0)
  332. 如果(字符串.长度(dm_Ret)>0)
  333. //这是插入所有在角色界面的动作
  334. //例 检测角色是否存在 ,是否有异常窗口(三方,封号,公告,活动)
  335. 化骨绵掌.关闭推荐好友系统() //关闭推荐好友系统的活动

  336. 跳出
  337. 如果结束

  338. 如果(日期时间.日期间隔("s",登录游戏超时,日期时间.当前日期())>30) //游戏打开超时处理
  339. 跳转 开始登录游戏 //超时重新登录
  340. 如果结束

  341. 辅助.等待(1000)
  342. 循环结束

  343. 功能结束


  344. 功能 热键0_热键() //脚本全部从这里开始

  345. //这里需要插入智能识别代码,调用相对应的线程
  346. //比如,游戏内,仓库内 图内.没开游戏等
  347. //常规线程可以直接启动,需智能选择 如异常检测 游戏内答题检测 弹窗检测等
  348. 启动游戏线程句柄=线程.开启("化骨绵掌.启动游戏","")


  349. 功能结束

  350. 功能 读账号配置()

  351. 重新获取配置:

  352. //变量定义
  353. 变量 当前账号完整信息,当前账号分隔信息,当前账号分隔大小
  354. 变量 当前账号状态信息,当前账号状态分隔信息,当前账号状态分隔大小
  355. 变量 当前账号的角色数量,当前账号完成的数量,当前账号的状态
  356. 变量 网通区集合

  357. //功能实现区域

  358. 化骨绵掌.得到账号数量() //得到账号配置内的账号总数量

  359. 遍历(计数=1;计数<=账号数量;计数++)

  360. 当前账号完整信息=辅助.读配置("账号配置",计数,账号路径)
  361. 字符串.分割(当前账号完整信息,"|",当前账号分隔信息)
  362. 数组空间.大小(当前账号分隔信息,当前账号分隔大小)

  363. 如果(当前账号分隔大小==4)
  364. //变量 账号数量,当前账号的序号,当前账号的账号,当前账号的密码 //账号相关变量
  365. //变量 当前账号的大区,当前账号的小区,当前账号的角色序号
  366. 当前账号的序号=计数
  367. 当前账号的账号=当前账号分隔信息[0]
  368. 当前账号的密码=当前账号分隔信息[1]
  369. 当前账号的角色数量=当前账号分隔信息[2]
  370. 当前账号的小区=当前账号分隔信息[3]
  371. 选择(当前账号的小区)
  372. 条件 "广州1/2区":
  373. 当前账号的大区="广东区"

  374. 条件 "云南1区":
  375. 当前账号的大区 = "云贵区"

  376. 条件 "贵州1区":
  377. 当前账号的大区 = "云贵区"

  378. 默认:
  379. 当前账号的大区 =字符串.截取(当前账号的小区,0,2)&"区"

  380. 选择结束 //到这里得到所有账号信息,下面得到账号状态,返回当前需要刷的账号
  381. 网通区集合="华北区|河北区|天津区|东北区|北京区|内蒙古区|辽宁区|吉林区|黑龙江区|河南区|山东区|山西区"
  382. 如果(字符串.查找字符串(网通区集合,当前账号的大区)==-1)
  383. 当前账号的区类型="电信"
  384. 否则
  385. 当前账号的区类型="网通"
  386. 如果结束

  387. 如果结束

  388. 当前账号状态信息=辅助.读配置("账号状态",计数,账号路径)
  389. 字符串.分割(当前账号状态信息,",",当前账号状态分隔信息)
  390. 数组空间.大小(当前账号状态分隔信息,当前账号状态分隔大小)
  391. 如果(当前账号状态分隔大小==2)
  392. 当前账号的状态=当前账号状态分隔信息[0] //这里把信息传给变量,便于已后维护
  393. 当前账号完成的数量=当前账号状态分隔信息[1]
  394. 选择(当前账号的状态) //这里是根据当前账号的状态

  395. 条件 "完成":
  396. 如果(!类型.是否为整型(当前账号完成的数量)) //判断当前得到的状态是否是数字,
  397. 当前账号的角色序号=1
  398. 跳出
  399. 如果结束

  400. 如果(当前账号完成的数量>=当前账号的角色数量)
  401. 跳转 重新开始
  402. 否则
  403. 当前账号的角色序号=当前账号完成的数量+1
  404. 跳出
  405. 如果结束

  406. 默认:

  407. 跳转 重新开始

  408. 选择结束

  409. 否则
  410. 当前账号的状态="" //复位
  411. 当前账号完成的数量=""
  412. 当前账号的角色序号=1
  413. 跳出
  414. 如果结束

  415. 重新开始:

  416. 遍历结束

  417. 如果(账号数量==当前账号的序号&&当前账号完成的数量==当前账号的角色数量) //如果最后一个账号刷完,在这里刷新所有账号信息,或可以插入在界面上设置是否刷完所有账号自动刷新账号
  418. 遍历(次数=1;次数<=账号数量;次数++)
  419. 辅助.写配置("账号状态",次数,"",账号路径)
  420. 遍历结束
  421. 跳转 重新获取配置
  422. 如果结束

  423. //辅助.消息框(账号数量)
  424. //辅助.消息框(当前账号的序号)
  425. //辅助.消息框(当前账号的账号)
  426. //辅助.消息框(当前账号的密码)
  427. //辅助.消息框(当前账号的角色序号)
  428. //辅助.消息框(当前账号的大区)
  429. //辅助.消息框(当前账号的小区)

  430. 功能结束

  431. 功能 得到账号数量()
  432. //变量声明区域
  433. 变量 当前账号完整信息
  434. 变量 计数=1
  435. 账号数量=0 //初始化账号数量为0

  436. //功能实现区域

  437. 循环(真)

  438. 当前账号完整信息=辅助.读配置("账号配置",计数,账号路径)
  439. 如果(字符串.长度(当前账号完整信息)>0)
  440. 账号数量=计数
  441. 否则
  442. 跳出
  443. 如果结束

  444. 计数++

  445. 循环结束

  446. 功能结束

  447. 功能 进程是否存在(进程名称)
  448. //源理通过得到PID 判断进程是否存在,进程有大小写区分
  449. //变量声明区
  450. 变量 进程数组
  451. 变量 进程数组大小

  452. //功能实现区
  453. 进程数组=进程.信息(进程名称)
  454. 数组空间.大小(进程数组,进程数组大小)
  455. 如果(进程数组大小>0) //如果数组元素大于0,说明进程存在,否则不存在
  456. 返回 真
  457. 否则
  458. 返回 假
  459. 如果结束

  460. 功能结束

  461. 功能 游戏登录答题()
  462. //变量声明区
  463. 变量 答题次数=0

  464. //功能实现区
  465. 答题验证:

  466. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "验证码.bmp", "000000", 0.9, 0)
  467. 如果(字符串.长度(dm_Ret)==0)
  468. 返回 真 //无答题时 直接返回真,离开程序
  469. 如果结束

  470. tid = m_dt.SendImage(答题串是, 340, 363, 131, 56, 1000, 50, 1, "") //发送题目
  471. 辅助.等待(2000)
  472. stime=日期时间.当前日期() //答题定时
  473. 如果(字符串.长度(tid)>0 && 字符串.左侧(tid,1)!="#") //判断发送的答题是否正确
  474. 循环(真)
  475. 变量 answer //声明接收答题的变量
  476. answer=m_dt.GetAnswer(tid) //接收答题
  477. 选择(answer)
  478. 条件 "#答题超时":
  479. 返回 假 //重新登录游戏

  480. 条件 "#图片错误":
  481. 返回 假 //重新登录游戏

  482. 默认:
  483. 如果(字符串.长度(answer)==4) //接收到正确的答案,开始答题
  484. 辅助.等待(200)
  485. dm.MoveTo(659,396) //移动到验证码输入框
  486. 辅助.等待(200)
  487. dm.LeftClick() //选中验证输入框
  488. 辅助.等待(200)
  489. 遍历(10)
  490. dm.KeyPress(8) //防止输入框内有内容,先执行删除动作
  491. 辅助.等待(50)
  492. 遍历结束
  493. dm.KeyPressStr(answer,50) //把答案输入到验证码输入框
  494. 辅助.等待(200)
  495. dm.MoveTo(521,445) //点击验证窗口的确认,完成答题
  496. 辅助.等待(200)
  497. dm.LeftClick()
  498. 辅助.等待(2000)
  499. 答题次数=答题次数+1
  500. 跳出
  501. 如果结束
  502. 选择结束

  503. //答题超时部分
  504. 如果(日期时间.日期间隔("s",stime,日期时间.当前日期())>100) //游戏打开超时处理
  505. 返回 假 //答题超时直接返回假 重新登录游戏
  506. 如果结束

  507. 辅助.等待(1000)
  508. 循环结束

  509. 否则
  510. 返回 假 //重新登录游戏
  511. 如果结束

  512. //暂定这里插入答题次数过多的代码
  513. 如果(答题次数>=3)
  514. 返回 假
  515. 如果结束

  516. 跳转 答题验证 //重新验证是否答题成功
  517. 功能结束

  518. 功能 选择频道()
  519. //变量声明区
  520. 变量 频道信息数组,频道坐标数组,频道随机号,频道最大号
  521. 变量 频道超时

  522. //功能实现区
  523. 频道超时=日期时间.当前日期()
  524. 循环(真)
  525. 如果(窗口.找到窗口("splashres")==0)
  526. 辅助.等待(1000)
  527. dm_Ret = dm.FindStrFastEx(103, 185, 690, 415, "顺畅", "00ff00-000000", 0.9)
  528. 如果(字符串.长度(dm_Ret)==0)
  529. dm_Ret = dm.FindStrFastEx(103, 185, 690, 415, "良好", "ffb400-000000", 0.9)
  530. 如果(字符串.长度(dm_Ret)==0)
  531. dm_Ret = dm.FindStrFastEx(103, 185, 690, 415, "普通", "ff9600-000000", 0.9)
  532. 如果(字符串.长度(dm_Ret)==0)
  533. dm_Ret = dm.FindStrFastEx(103, 185, 690, 415, "拥挤", "ff0000-000000", 0.9)
  534. 如果(字符串.长度(dm_Ret)==0) //全线爆满
  535. 如果(dm.CmpColor(428, 477, "1e4969-000000", 0.9) == 0) //如果不是最后一页
  536. dm.MoveTo(428,477)
  537. 辅助.等待(200)
  538. dm.LeftClick()
  539. 辅助.等待(2000)
  540. 跳转 换页选区
  541. 否则
  542. dm_Ret=dm.FindStrFastEx(103, 185, 690, 415, "爆满", "ff00ff-000000", 0.9) //翻到最后一页找不到非瀑满频道时随便进入一个频道
  543. 如果结束
  544. 如果结束
  545. 如果结束
  546. 如果结束
  547. 如果结束

  548. 如果(字符串.长度(dm_Ret)==0) //频道错误,直接重开游戏
  549. 返回 假
  550. 如果结束

  551. 如果(字符串.查找字符串(dm_Ret,"|")>0) //频道信息正常
  552. 是否成功=字符串.分割(dm_Ret,"|",频道信息数组) //所有的频道信息他割保存到数组中
  553. 如果(!是否成功)
  554. 返回 假
  555. 如果结束
  556. 数组空间.大小(频道信息数组,频道最大号)
  557. 频道随机号=辅助.随机数(0,频道最大号-1) //得到最大可用频道号随机生成一个频道号
  558. 是否成功=字符串.分割(频道信息数组[频道随机号],",",频道坐标数组) //根据随机频道号分割出一个频道坐标
  559. 如果(!是否成功)
  560. 返回 假
  561. 如果结束
  562. 否则
  563. 是否成功=字符串.分割(dm_Ret,",",频道坐标数组)
  564. 如果(!是否成功)
  565. 返回 假
  566. 如果结束
  567. 如果结束
  568. 辅助.等待(1000)
  569. dm.MoveTo(频道坐标数组[1],频道坐标数组[2])
  570. 辅助.等待(500)
  571. dm.LeftDoubleClick()
  572. 辅助.等待(500)
  573. dm.LeftDoubleClick()
  574. 辅助.等待(2000) //选择频道
  575. dm.moveto(0,0)
  576. 辅助.等待(200) //复位鼠标位置
  577. 返回 真
  578. 如果结束

  579. 换页选区:

  580. 如果(日期时间.日期间隔("s",频道超时,日期时间.当前日期())>120) //游戏打开超时处理
  581. 返回 假
  582. 如果结束

  583. 辅助.等待(1000)
  584. 循环结束
  585. 功能结束

  586. 功能 关闭推荐好友系统()
  587. //变量声明区

  588. //功能实现区
  589. 循环(真)

  590. 验证推荐好友是否关闭:
  591. dm_Ret = dm.FindPicEx(0, 0, 1024, 768, "推荐好友.bmp", "000000", 0.9, 0)
  592. 如果(字符串.长度(dm_Ret)>0) //发现推荐好友系统后关闭
  593. 辅助.等待(200)
  594. dm.MoveTo(367,371) //取消
  595. 辅助.等待(500)
  596. dm.LeftClick()
  597. 辅助.等待(500)
  598. dm.MoveTo(368,326)
  599. 辅助.等待(500)
  600. dm.LeftClick()
  601. 辅助.等待(200)
  602. dm.MoveTo(0,0)
  603. 辅助.等待(300)
  604. 跳转 验证推荐好友是否关闭
  605. 如果结束

  606. 循环结束
  607. 功能结束

  608. 功能 按钮8_点击()


  609. 功能结束


  610. 功能 热键1_热键()
  611. //这里添加你要执行的代码
  612. 线程.关闭(启动游戏线程句柄)
  613. 功能结束

  614. 空间结束
  615. //空间结束语句
复制代码


回复

使用道具 举报

发表于 2013-11-16 09:42:36 | 显示全部楼层
正需要源码!谢谢分享
回复 支持 反对

使用道具 举报

发表于 2014-6-4 12:26:05 | 显示全部楼层
rtyryt
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-20 17:18 , Processed in 0.034061 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表