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

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

快捷导航

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

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

[按键精灵安卓版] 小知识点合集4 - 【201601期】 [复制链接]

1#

小知识点合集4


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

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


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

按键学院交流②群(已满):372671254

按键学院交流③群(快满):170084238

按键学院安卓①群:115768679


写脚本的时候,总有一些事与愿违的地方,一个不经意的小地方,可能会令我们寻找半天才发现并且解决,将我们平时碰到的积累起来,是一笔不小的财富,积少成多,跟着我记下书写脚本的点点滴滴吧。

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


1.分支上的逻辑判断


最近收到了很多问题,有几个很类似的问题,大致内容如下:寻找到图1时,点击某个位置,寻找图2继续接下去的操作,如果没找到时则开始找图3。诸如此类的问题,涉及到逻辑判断语句,这也是自己写比录制的脚本要强大很多的最主要原因!那么我们来看下都是如何处理的。


说到逻辑判断,学习过的人立马反应过来,是If语句,虽然还有其他逻辑控制语句,但都大同小异,这没有错,然而当大量的判断语句不断的嵌套的时候,而一页代码又无法看完逻辑的时候,就产生了易错,不易改等问题。特别是中途含有网络操作,就必须有延时等待,也就是需要加入循环语句。当各种控制语句掺杂在一起,再好的眼睛也撑不住。


于是我们可以采取另外一个解决办法,虽然If等逻辑控制语句是免不掉了,但是却可以让逻辑上非常清晰,我们将涉及到分支的逻辑当杜写出来,并将所有的可能性全部列入,通过返回值的方式做逻辑上的处理。


我们来看看应用中的一个涉及到分支处理的功能是如何处理的,这里以QQ为例,我们知道QQ打开的时候,如果之前登陆过,就会自动登陆直接到消息界面,但是如果在其他地方登陆过,就会先出现账号密码的输入界面(即使已经帮你输入好),然后需要点一下登陆。也就是说,当我们打开QQ,可能立马就涉及到了分支,虽然我们可以让用户事先登陆好,但是如果能更加自动化不是更好吗?



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




如以上图,我们希望能进入到第二个图再往下操作,但是当打开QQ的时候有可能会出现第三个图,就需要再点次登陆。我们来看看代码如何写的:


  1. SetScreenScale 720,1280
  2. Function 进入QQ()
  3. Dim intX,intY
  4. Do
  5. Delay 200
  6. //寻找QQ图标并点击
  7. FindMultiColor 0,0,0,0, "FEFEFE-101010","60|8|201C1C-101010,78|0|FEFEFE-101010,28|43|122DE3-101010", 0, 0.9, intX, intY
  8. If intX > -1 And intY > -1 Then
  9. Tap intX,intY
  10. End If
  11. Delay 200
  12. If CmpColorEx("357|1204|BBADAB-101010,601|1210|BBADAB-101010,110|1223|FAB700-101010", 0.9) = 1 Then
  13. 进入QQ = "消息页面"
  14. Exit Do
  15. End If
  16. Delay 200
  17. If CmpColorEx("164|650|F3BA1F-101010,256|644|F3BA1F-101010,512|655|F3BA1F-101010", 0.9) = 1 Then
  18. 进入QQ = "登陆页面"
  19. Exit Do
  20. End If
  21. Loop
  22. End Function

  23. Function 点击登陆()
  24. Do
  25. Delay 200
  26. If CmpColorEx("164|650|F3BA1F-101010,256|644|F3BA1F-101010,512|655|F3BA1F-101010", 0.9) = 1 Then
  27. Tap 376,644
  28. End If
  29. Delay 200
  30. If CmpColorEx("357|1204|BBADAB-101010,601|1210|BBADAB-101010,110|1223|FAB700-101010", 0.9) = 1 Then
  31. Exit Do
  32. End If
  33. Loop

  34. End Function

  35. Function 进入QQ主页面()
  36. If 进入QQ() = "消息页面" Then

  37. ElseIf 进入QQ() = "登陆页面" Then
  38. Call 点击登陆()
  39. End If
  40. End Function

  41. Call 进入QQ主页面()
复制代码

虽然代码略为繁琐,并且肯定有人要吐槽,直接在进入QQ的那个函数里,将寻找到登陆的图标的时候直接点击一下登陆,直到寻找到主页面才退出,这样根本用不到分支判断,If语句都省了。


这个例子是可以这样没有错,但是我们需要考虑的不单单是这个地方,假如有一个界面A,含有两个分支,分别到界面B和界面C,界面B和界面C的下一步都是到界面D,但是处理的内容不同,这个时候,你还能简单的通过一个Do ... Loop解决吗?


脚本以稳定性最为关键,确保你的脚本运行时能完全对应当前界面才是最稳定的!


2.修改器


好吧,这个其实和按键精灵暂时并没有关联----但我还是要说~万一以后可以读写内存了呢?
这里,我使用烧饼修改器做一个简单的内存搜索(修改器在附件里下载),安装完并打开修改器(打开后窗口化),然后打开我们要读写内存的游戏。

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



我们打开游戏的人物属性面板,可以看到类似的信息,这个时候,记录下比较有特征的值,比如经验是71964,我们点下修改器的悬浮窗,
搜索71964:


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


很容易就获取到了这个值的地址,我们可以尝试着修改一下,我改成22222222~~~,我们看看修改的结果:

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


简单易懂,当然并不是所有的数据都那么好找,如果我的数值都不大,游戏中有非常多的数值相同的属性,那么有没有解决办法呢?当然有!那就是用联合搜索,我们再看看属性页面,不单单有当前经验,还有总经验,一般游戏数据的存放都是有规律的,这两个相关值在内存中一般也是在附近的,于是我们使用联合搜索:

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

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

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

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




这样搜索到的值就更符合我们想要的内容,当然这样的修改其实大部分情况并没有作用,因为网游的数据都是存放在服务器,修改本地内容并没有用,但是我们可以把它当做一个高效的判断方式,比如要识别元宝数量,做字库神马的,无论正确率还是效率都远远比不上内存读出来的数据。


是不是比想象的更简单呢!想知道更多请关注院刊系列!



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


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


最后编辑兄弟工程师13 最后编辑于 2016-01-07 13:23:02
本主题由 超级版主 瑞祥幽冥狼 于 2023/8/13 22:35:29 执行 审核帖子 操作
2#

要要要切克闹..

3#

健康快乐了?

4#

sssssssssssss

5#

看看

6#

额服务

7#

学习下,谢谢分享

8#

脚本运行时能完全对应当前界面才是最稳定的

9#


10#

好东西值得一看

没个性不签名
11#

5455555


脚本制作联系QQ:561369986
12#

;lkl

13#


14#

看看赞

15#

合集

16#

我来看看修改器

17#

?????????诚信经销商110诚信经销商110??

18#

ASDASDASd

19#

666666666666666

20#

小知识点合集4 - 【201601期】

发新话题 回复该主题