仙境传说是很早以前非常流行的一款网络游戏,其中的人物设置的非常可爱,尤其是一些夸张的头饰和百变的插卡系统让人回味无穷。虽然从游戏性来说仍然逃不出韩国游戏泡菜的怪圈(或者说是一款标准的泡菜游戏),但仍然是可圈可点的。

游戏中玩家要耗费大量时间进行练级,虽然现在的代理昆仑也有经验奖励的措施,比如高级经验书,高级JOB经验书,双倍经验时间区等,但是要让玩家,特别是高等级的玩家进行练级仍然是一件非常痛苦的事情。常有的事是,三转100~110的职业往往要在熔岩地图上打一个熔岩波利的怪物来进行性价比较高的练级。基本上要打1000个波利才能升一级(2~3小时),这对玩家的“摧残”是非常可怕的。因此我想通过按键精灵脚本的方法来减轻自己的负担,让我有更多精力投入到游戏更有意思的方面。

图1.令一些玩家蛋疼的刷怪时刻,多少RO玩家都是被怪劝退的

按键精灵是一个非常好用的,易上手的VB脚本工具,其中集成了许多关于模拟鼠标键盘的函数,还有一些用于识别游戏元素的函数,如找图,找色函数(比如怪物的识别)。

首先,我们必须找到游戏窗口的位置(在真正实现中我偷了个懒,因为窗口的默认打开位置是一定的,故下面代码中我用了绝对坐标)

winTitle = "仙境传说"
//=================== 获取窗口信息 ======================
//查找主窗口类名(0)或者标题("仙境传说"),返回找到的句柄RoHwnd  ,0表示忽略
RoHwnd = 0
RoHwnd = Plugin.Window.Find(0, winTitle)
If RoHwnd = 0 Then MsgBox "仙境传说没有找到"End If//MsgBox "查找到的窗口句柄为:" & RoHwnd
//EndScript
//用窗口插件得到格式为(窗口左上角起点在桌面x坐标|窗口左上角起点在桌面y坐标|窗口宽|窗口高)的字符串
Rect = Plugin.Window.GetClientRect(RoHwnd)
Call Plugin.Window.Active(RoHwnd)
//切割字符串为二维数组
XYArray = Split(Rect, "|")
//窗口左上角起点在桌面x坐标
Ux = CInt(XYArray(0))
//窗口左上角起点在桌面y坐标
Uy = CInt(XYArray(1))
//窗口宽
Uwidth = CInt(XYArray(2))
//窗口高
Uheight = CInt(XYArray(3))//一块区域搜索的次数
SearchCount = 0
//最大搜索次数
Max = 3//大地图中心点坐标
CenterX = (Ux + Uwidth) / 2
CenterY = (Uy + Uheight) / 2

接下来,我要让人物走动起来,并且希望他能够自动判定行进的方向(遇到不能走的地方能改变行进路线)。RO中,人物的走动是通过鼠标左键来实现的,从下图可以得知,我可以通过判断箭头所指小地图上白色小箭头(即人物的坐标)的坐标是否移动来判断我们的角色是否成功移动。

我们可以通过按键精灵的抓图找色工具来实现找到白色小箭头中的红色中心点的RGB值,可以看到是0000D6。然后利用找色函数FindColor就可以得到红点的坐标(搜索范围为小地图区域)。细心的读者可能发现,在小地图上还有两个红点(地图的出口),从而回想这样计算出来的坐标是否还要剔除这两个红点的固定坐标。经过我实验,发现这两点的RGB值不是0000D6,因此使用这个函数没有任何问题。

下面的代码可以用来获取小地图上红点的位置

//小地图坐标区域
SmallMapLeft = 511
SmallMapTop = 70
SmallMapRight = 611
SmallMapBottom = 187MoveDirX = Array(50, -50 )
MoveDirY = Array(50,-50)
//定位小地图人物坐标(箭头最左上白色坐标中的中心红点)
FindColor SmallMapLeft, SmallMapTop, SmallMapRight, SmallMapBottom, "0000D6", PrevieousX, PrevieousY

通过设定MoveDirX,MoveDirY,我们可以是人物在这四个相对便宜量的22组合(左上,右上,左下,右下)上发生移动。若右上角小地图红点不移动则说明便宜无效,换个方向继续行进


While 1For i = 0 To 1For j = 0 To 1MoveTo CenterX + MoveDirX(i), CenterY + MoveDirY(j)Delay 500LeftClick 1Delay 500//若找到怪则继续搜索c = FindMonster(0, 0, 0)FindColor SmallMapLeft, SmallMapTop, SmallMapRight, SmallMapBottom, "0000D6", ResultX, ResultY//若发现小地图人族坐标发生未偏移则认定移动无效While ResultX <> PrevieousX or ResultY <> PrevieousYPrevieousX = ResultXPrevieousY = ResultYMoveTo CenterX + MoveDirX(i), CenterY + MoveDirY(j)Delay 500LeftClick 1Delay 500//若找到怪则继续搜索c = FindMonster(0, 0, 0)FindColor SmallMapLeft, SmallMapTop, SmallMapRight, SmallMapBottom, "0000D6", ResultX, ResultYWendNextNextWend

接下来我们要解决怪物判定的问题,按键精灵提供了两个函数找色和找图。找图的方法我试了一下,没有成功。个人认为是图片搜索的效率很低,使得搜索到目标怪物的时候怪物的动作进入下一个图片,从而错失匹配。用找色的方法效率有所提升, 但仍然只有手动效率的1/3,且耗药(攻击时间设定为固定值的,很容易打完怪之后,还呆在一个地方给主动怪白打)。

//寻找画面中心,近整幅画布,若附近怪物,存在则攻击
Function FindMonster(CenterX, CenterY, Hwnd)//定义搜索范围为653*508SearchRangeX = 653SearchRangeY = 508ResultX = 0ResultY = 0isFinded = 0//RenewHP FindColor 0, 0, SearchRangeX, SearchRangeY, "96C8FE",  ResultX,  ResultY//若找到指定颜色,则判定这个坐标有怪,点击左键执行攻击If ResultX > 0 and ResultY > 0 Then //找到标志置位1isFinded = 1MoveTo ResultX, ResultYDelay 500LeftClick 1//3秒时间用来移动Delay 6000 //回血RenewHPEnd IfFindMonster = isFinded
End Function//按下F5,和回车,飞到随机地点
Function Fly()KeyPress "F5", 1Delay (500)KeyPress "enter", 1Delay (500)
End Function//按下F5,和回车,飞到随机地点
Function RenewHP()//============喝药===================//判断是否要嗑药GetColor = GetPixelColor(22, 72)//按下F1喝白水,直到血条不红While GetColor <> "000000"//MsgBox "血条已红,准备嗑药"//先飞c = Fly()//喝水KeyPress "F1", 1Delay (500)GetColor = GetPixelColor(22, 72)Wend
End Function

果然还是我的风格,虎头蛇尾啊

仙境传说-按键精灵脚步研究相关推荐

  1. 贴吧顶贴php脚步,【技术贴安卓按键精灵】贴吧顶贴脚本源码分享

    贴吧顶贴脚本源码分享 配置介绍:模拟器:雷电模拟器 480*800  dpi 160 按键精灵手机助手 涉及的图片有两张: 注意事项:每次发布3-5条,之后时间间隔不低于20分钟,单账号一天不要发布太 ...

  2. 【按键精灵】sub子程序、调用子程序

    按键精灵是jls介绍我用的.09年初.并手把手教了第一个编制脚本. 第一次使用的效果并不突出.所以一直没再用. 第二次使用是1年后. 先是10年1月左右.录制操作,然后回放执行.编辑界面,无意中发现普 ...

  3. 【新人求助】苹果允许开发者制作类似按键精灵的app吗?

    环境:ios.不越狱 我在网上搜了一下发现了一个app叫触摸精灵,但是貌似需要越狱才能使用,所以想问问大神们,苹果允许开发者制作类似按键精灵的app吗?如果我申请成为开发者,然后做一个类似按键精灵的a ...

  4. 按键精灵 android版运行异常,按键精灵安卓版 tap、touch命令 不好用的解决办法!...

    用按键精灵手机版写脚本来操作新浪微博APP,在关注列表页自动取消关注,代码如下: If x > -1 And y > -1 Then delay 1000 tap x,y delay 10 ...

  5. UiPath与按键精灵区别

    领导就是发疯,就是商人任意,看啥就吹啥,UIPATH究竟是啥,这就是RPA还是炒剩饭. 看来中国的人工费太贵了,RPA有噱头,有搞头. UIPATH的技术研究 说UIPATH好牛逼的,样子.我花三天研 ...

  6. python和按键精灵自动化测试_自动化测试程序和按键精灵

    以前一直以为自动化测试都是在程序内部进行的,没想到还可以用按键精灵来做.当时由于枪魂项目快上线,然后会经常打包测试,测试人员比较少,于是总监突发奇想,居然让我用按键精灵来做,当时运营部的主管说做好这个 ...

  7. 【按键精灵学习记录】以DOTA2人机为例

    [按键精灵学习记录]以DOTA2人机为例 一.写在前面 二.准备工作 1.环境准备 2.需求分析 3.流程图 三.代码实现 1.命令分析 2.代码实现 状态判断 主循环 英雄选择 游戏中 3.实测 四 ...

  8. 按键精灵9.5.1.11790秒速启动,多余元素全灭版

    原创   作者:奇幻软件坊 原文链接 本版本是按键精灵官方未加穿山甲强壳之后的最后一个版本,同时也是运行稳定后门相对来说比较少的一个版本, 原版本是启动过程中,屏幕中间会出现一个 正在检查最新补丁的东 ...

  9. 来也科技总裁、按键精灵之父,给开发者的一封信

    2021 年 7 月,Gartner 发布了<2021 年 RPA 魔力象限>报告.来也科技作为首次入围的中国厂商代表,与 UiPath 等全球 18 家 RPA 厂商被重点推荐.Gart ...

最新文章

  1. Linux系统中sysctl命令详解 sysctl -p、sysctl -a、sysctl -w
  2. 每天进步一点点:(11)进程优先级学习 nice
  3. Qt Creator管理会议
  4. putty保存用户名和密码_使用PuTTY远程登录软件登录 Linux 实例
  5. DTCC 2020 | 阿里云梁高中:DAS基于Workload的全局自动优化实践
  6. 【渝粤教育】国家开放大学2018年秋季 2247T社会工作政策法规 参考试题
  7. Mysql存储过程老是报错_mysql中看看这个存储过程老是报错,该如何处理
  8. (原创)我眼中的设计模式系列之外观模式(二)
  9. dataframe指定位置插入行
  10. vue双向数据绑定的简单实现
  11. ABP 集成 nswag 根据 Swagger API 自动生成操作类代码
  12. 通信信号与系统分析(一)
  13. 三线表(带有行横标目)的绘制方法
  14. 小米 12S Utra 莱卡水印生成在线工具
  15. 断开现有的网络共享映射_彭世瑜_新浪博客
  16. DirectX的发展历程!
  17. 聚观早报 | 羊了个羊幕后推手月流水曾破亿;雷军卸任小米董事长
  18. android环信删除会话列表,关于会话列表的置顶聊天
  19. sunyueonline.com最新SEO成果显著,百度百科收录“孙越”
  20. C语言小例子【基础】

热门文章

  1. java中流转pdf_Java中的PDX到PDF转换器
  2. ORACLE日期函数大全!
  3. 阿里云ECS云盘在线扩容
  4. excel转换成html工具,Convert Excel to HTML(Excel转HTML工具) V29.11.15 官方版
  5. 软考中级数据库系统工程师好考吗?
  6. LINGO如何求解数学模型
  7. linux socket inet_addr,linux c socket ip地址字符串数字转换 inet_addr inet_ntoa
  8. 数字图像处理MATLAB大作业:基础版
  9. 计算机毕业论文提纲如何写,计算机毕业论文提纲范例.doc
  10. GPS通信协议——最常用的NMEA0183协议