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

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

按键精灵安卓版
立即下载

软件版本:3.6.9
软件大小:46.2M
更新时间:03-02

按键精灵iOS版
立即下载

软件版本:1.7.6
软件大小:29.2M
更新时间:12-06

按键手机助手
立即下载

软件版本:3.7.6
软件大小:262M
更新时间:08-06

快捷导航

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

返回列表 12345678» / 14
发新话题 回复该主题

[技术交流] 【院刊】-【201501期】学会这招,所有的游戏自动登录不在话下 [复制链接]

1#

学会这招,所有的游戏自动登录不在话下

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


按键学院交流群(1群已满):376122403

零基础学按键精灵群(2群):372671254



分明看了那么多教程,
看别人的源码也能看懂,
为什么自己要写的时候,却完全写不出来呢?
思路!思路!思路很重要!
小编今天要说的游戏脚本思路,是DNF登录脚本的一个思路流程。
希望对大家有所帮助~





流程图


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





启动游戏/查找窗口句柄


找到游戏安装目录下的 TCLS文件夹下的 Client.exe 登录程序


获取路径,使用runapp 命令 启动 Client.exe


启动 Client.exe 之后,会弹出游戏登录窗口


启动是需要时间的,电脑配置不一样网速不一样,启动的速度都不一致。


那我们要如何得知,登录窗口什么时候出现呢?




当然是找窗口句柄了对不对,


登录窗口出现,它的句柄就生成。


没有出现,就不会有登录窗口的句柄存在。


所以,我们只要在启动 Client.exe 之后,循环查找登录窗口的句柄,如果找到则退出循环,进行下一步操作,如果没有找到,则继续查找。


登录窗口句柄的时候要注意下,不能使用它的类名查找,因为它的类名每次启动都是会变化的,咱们查找标题即可。



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



好了,窗口句柄获取到之后,咱们就要开始先考虑它的绑定模式





测试图色/鼠标/文本输入的绑定模式



今天咱们的例子,会使用到大漠插件


之前的院刊中,我们有分享过使用大漠绑定测试工具来测试窗口的绑定模式: 传送门


当然,大漠绑定测试工具测试完,成功的模式,也不能打包票能用,所以我们还需要在脚本里测试


经过一番测试,吓尿了~


dnf的登录窗口不支持后台图色绑定的。




鼠标模式:windows/dx (其他后台绑定模式未测试)


区服选择,登录按钮等都支持windows/dx后台绑定模式。


唯有帐号密码输入框有它们自己的窗口句柄, 需要找到它们的句柄才能对它们进行后台操作


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




以桌面作为父窗口用findex命令查找,可以找到这两个类名为Edit的窗口。

但是,密码输入框,依然还是需要使用键码输入方式方可输入。

所以,本例子中不使用后台点击输入文本的方式,

到了要点击帐号密码输入框时,改用前台鼠标点击



文本输入


帐号输入框使用了saystring 前台文本输入 命令


密码输入框 saystring 无效,使用了命令库里的,keylist 键码输入命令





小编也看了下tx的疾风之刃


它的登录窗口也是不支持后台图色。



判断是否到了选区界面


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


DNF登录窗口——选区界面



前面,咱们用找句柄的方式判断了登录窗口是否出现,登录窗口第一个界面不就是选区界面么?


那为什么还要再找呢?不是脱裤子放屁多此一举么?





实际上,登录窗口句柄形成了之后,还要过一小会儿,它的窗口界面才会显示出来。


所以,当它的窗口句柄出现了之后,咱们绑定它,绑定完了之后,


我们循环判断红框框中的图片是否出现,出现了则说明选区界面已经加载好了。




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



判断其他图不行吗?为什么非要红框框里的呢?大家一起看下这张图片就明白了:




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



启动之后会出现连接服务器的提示,当它在连接过程中,只有 最近登录推荐大区那一块是没有显示出来的。


如果显示出来了,则说明服务器已经连接好了。


所以,我们可以通过判断那一块的特征图片来判断连接到服务器没有。


然而,最近登录那一块,最近登录过的区服它是会发光的


(ps:小编不知道最近登录区,是不是固定都是最后一个球才会发光,所以不稳定的因素,咱们不拿来判断, 推荐大区的那两个球不变的地方,都可以用来判断。


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





选择区服


前面,我们已经判断到了选区界面,判断到了选区界面之后,立即点击重新选择大区按钮。


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




然后循环找字,先找 大区的 区服文字,例如:福建区

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


字体很特别,在咱们的系统字体里找不到匹配的字体,不知道是个什么体

这种情况只能辛苦咱们一个个词组的去做字库了
(ps:考虑到工作量巨大,所以本例子中,小编只做了一个福建区的字库例子)

字库制作相关院刊:传送门

找到 “福建区 ”
单击它,然后循环查找 “福建1区”

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



找到 “福建1区 ”
之后,需要双击它才能进入帐号密码输入界面


判断是否到了帐号密码界面

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


帐号密码界面




选区界面到帐号密码界面,还需要加载,加载的快慢咱们估摸不来。
所以,依旧用找图的方式判断,到了帐号密码界面没有。
帐号密码界面的特征图片有许多,
“登录游戏” 按钮,“选择服务器” 按钮等。
例子中,找的是 “登录游戏” 按钮图片





获取帐号密码输入框位置,输入帐号密码



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



小编使用大漠综合工具,绑定窗口之后,用取色点获取帐号密码输入框的坐标位置,这样可以省去了一番计算。

获取之后,由于前面的点击动作都是使用后台点击,帐号密码框需要用前台点击,就需要转换坐标
这里,使用 大漠的 GetWindowRect 获取窗口在屏幕上的位置 命令
dm_ret = dm.GetWindowRect(hwnd,x1,y1,x2,y2)

返回值: x1,y1是窗口左上角的坐标,
加上先前用大漠综合工具绑定获取到的 坐标,即转换成屏幕坐标。
返回值:x2, y2 是窗口右下角坐标

后台坐标前台坐标转换相关院刊:传送门





接下来就是读取帐号密码,然后进行输入
帐号密码,咱们可以记录在记事本里,然后读取,
详细操作参见院刊:【院刊】-【201410期】记事本风云之游戏批量登录账号

帐号密码输入之后点击登录按钮

注意:帐号输入的时候要删除之前的帐号,双击可以选择帐号,但是由于鼠标点击游戏延迟等因素,并不是每次双击都可以稳妥的选中帐号,所以为了稳定起见,我们可以点击帐号框中间的位置,按下backspace 20次,删除左边的数字,再按下delete 20次删除右边的数字



检测是否登录成功


要如何判断登录成功与否?
在输入了帐号密码的前提下,有三种情况导致登录不了
1、延时,网络情况不好
2、密码错误
3、帐号错误


情况1: 咱们如法炮制,启动client.exe之后判断登录窗口出现的方法。
判断选频道窗口是否出现。
可设置长时间没出现,做出相应措施。

情况2:密码错误出现的提示:




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


ps:帐号密码都错的情况,它的提示也是 密码错误的提示


情况3:帐号错误出现的提示:

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




这些提示里,确定按钮都是一样的,还有上方的提示信息四个字也是不变的。
为了方便,小编判断 确定 按钮
如果点击了登录之后,等待频道窗口出现的过程中,找到了 确定按钮,则说明登录失败
点击确定按钮,重新登录,或者做其他的相应措施。

整体代码




  1. ///释放附件//////
  2. PutAttachment "D:\test","*.*"
  3. Call register()//调用注册大漠子程序

  4. ////加载字库//////
  5. dm_ret = dm.SetDict(0, "test.txt")

  6. ////启动游戏////
  7. RunApp "F:\地下城与勇士\TCLS\Client.exe"

  8. ////设置帐号密码/////
  9. 帐号 = "1234567"
  10. 密码 = "1234567"


  11. //查找登录窗口句柄////
  12. Do
  13. hwnd = Plugin.Window.find(0, "地下城与勇士登录程序")
  14. Delay 200
  15. Loop While hwnd = 0


  16. ///绑定窗口激活窗口/////
  17. dm_ret = dm.BindWindow(hwnd,"normal","windows","windows",0)
  18. dm_ret = dm.SetWindowState(hwnd, 1)

  19. ///获取窗口客户区大小,方便之后缩小范围找图以及 后台坐标转成前台坐标
  20. dm_ret = dm.GetClientRect(hwnd, x1, y1, x2, y2)


  21. //判断是否在选区界面////////
  22. Do
  23. dm_ret = dm.FindPic(x1, y1, x2, y2,"最近登录.bmp","000000",0.9,0,intX,intY)
  24. If intX >= 0 and intY >= 0 Then
  25. Delay 1000
  26. dm.moveto 300,631 //点击重新选择大区 按钮
  27. dm.leftclick
  28. End If
  29. Delay 200
  30. Loop While dm_ret = - 1 ////大漠找图命令,没有找到图返回值是-1

  31. ////查找 大区 "福建区"按钮 /////
  32. Do
  33. dm_ret = dm.FindStr(x1, y1, x2, y2,"福建区","dfdfdf-202020",1.0,intX,intY)
  34. If intX >= 0 and intY >= 0 Then
  35. dm.moveto intx, inty
  36. dm.leftclick //双击"福建区"
  37. End If
  38. Delay 200
  39. Loop While dm_ret = - 1 ////大漠找字命令,没有找到图返回值是-1


  40. ////查找 "福建1区"按钮/////
  41. Do
  42. dm_ret = dm.FindStr(x1, y1, x2, y2,"福建1区","dfdfdf-202020",1.0,intX,intY)
  43. If intX >= 0 and intY >= 0 Then
  44. dm.moveto intx, inty
  45. dm.leftdoubleclick //双击"福建1区"
  46. End If
  47. Delay 200
  48. Loop While dm_ret = - 1


  49. //判断是否在帐号输入界面////////
  50. Do
  51. dm_ret = dm.FindPic(x1, y1, x2, y2,"登录游戏.bmp","000000",0.9,0,intX,intY)
  52. If intX >= 0 and intY >= 0 Then
  53. Exit Do
  54. End If
  55. Delay 200
  56. Loop While dm_ret = - 1


  57. Rem a
  58. //点击帐号输入框//////
  59. Delay 1000
  60. MoveTo x1 + 493, y1 + 522
  61. LeftClick 1

  62. ///删除之前的帐号/////
  63. For 20
  64.     KeyPress 8,1
  65. Next
  66. For 20
  67.     KeyPress 46,1
  68. Next
  69. ////////////////////

  70. SayString 帐号


  71. //点击密码输入框//////
  72. moveto x1+476,y1+547
  73. LeftClick 1
  74. Delay 1000

  75. Call Lib.键盘.KeyList(密码, 2, 20)


  76. //点击登录按钮////////
  77. dm.moveto 740,532
  78. dm.LeftClick



  79. Do
  80. /// 查找 密码错误界面////

  81. dm_ret = dm.FindPic( x1, y1, x2, y2,"确定.bmp","000000",0.9,0,intX,intY)
  82. If intX >= 0 and intY >= 0 Then
  83. Delay 1000
  84. dm.moveto intX, intY
  85. dm.leftclick
  86. Goto a //出现错误提示,点击确定按钮之后,重新开始输入帐号密码
  87. Exit Do
  88. End If


  89. ///查找频道选择界面////
  90. hwndpd = Plugin.Window.find(0, "地下城与勇士")
  91. If hwndpd Q文件下载:
    您所在的用户组无法下载或查看附件

    注意:例子中,使用了循环找图找句柄,童鞋们可以按照自己的需求,加入一些条件,例如循环几次,循环找图找句柄多长时间,找不到要如何操作,以免进入死循环。

    避免死循环相关院刊:【院刊】-【201411期】不再为脚本卡死而忧伤。









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

    【招生】主流回合制常见功能网络辅助教学——你懂得!

    按键学院实战班




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

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

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


    3#

    必须看看啊!!!!!!!!!!!!!!!!!!!!!

    4#

    找到了

    5#


    6#

    喜喜喜喜喜喜

    7#

    学习下

    8#

    学习了

    9#

    在法国和女性能发工资呢

    10#

    股价格

    11#

    潇洒

    12#

    获取到之后,咱们就要开始

    13#

    感謝分享!!

    14#


    15#

    222222222222

    脚本定制,欢迎咨询QQ: 2692863915
    16#


    17#

    88888888888888888888

    18#

    感謝分享,想要好好學習看看

    19#

    楼主辛苦

    20#


    发新话题 回复该主题