文学起点网
当前位置: 首页 文学百科

光遇脚本跑图怎么用(教你写手游脚本)

时间:2023-07-19 作者: 小编 阅读量: 4 栏目名: 文学百科

今天我们就基于按键精灵的多点找色函数打造适用于我们自己的找色函数。这样设计也有弊端:由于按键精灵无法直接返回多个返回值,所以只能通过数组的方式接收和传出。虽然解除了函数之间的耦合性,但是增加了需要编写的代码量,不过从实际使用来来说,因为使用频次不高,又能有效解决无法直接定位的问题,这依然是一个不错的设计。这是一个比较少见的特殊情况,但是不排除这种情况的存在。

前言

经过前面2篇文章的学习理解,相信大家对游戏脚本有了一定的了解。今天我们就基于按键精灵的多点找色函数打造适用于我们自己的找色函数。

按键精灵的多点找色函数

/*这是按键精灵自身的多点找色函数,原理就是根据你提供的颜色描述去对找当前屏幕像素,和指定的颜色进行对比,找到了就返回指定颜色的坐标,没找到就返回 -1, -1x1,y1 : 要找区域左上角坐标x2,y2 : 要找区域右下角坐标first_color : 要对比的颜色,就是参考颜色,也是要返回的坐标颜色offset_color : 要比对的多个点的颜色描述dir : 查找方向,一般默认0,从左上到右下sim : 对比相似度,一般默认0.9,再大不容易找到,太小容易找错intX,intY : 返回的坐标*/Dim intX, intYFindMultiColor(x1, y1, x2, y2, first_color, offset_color, dir, sim, intX, intY)

按键精灵给我们提供的这个函数只能满足基本需求,对我们而言还远远不够,我们期望能结合我们之前打造的点击函数结合起来进行使用。

开始打造非常棒的多点找色函数

初级设计:把多点找色当做判断条件

顾名思义,就是通过多点找色返回bool值,如果返回true我们做什么,如果返回false我们做什么,这样把函数当做判断条件会方便我们进行更多的动作。

//多点找色并返回真假Function multiFindColor(x1, y1, x2, y2, first_color, offset_color) Dim intX, intY //定义2个变量 KeepCapture //截图保存至内存中,大幅度提升找色速度 FindMultiColor(x1, y1, x2, y2, first_color, offset_color, 0, 0.9, intX, intY) //固定寻找方向和相似度 ReleaseCapture //释放内存中的图片 If intX > -1 Then //点返回值大于-1说明找到坐标,函数返回真multiFindColor = true ElsemultiFindColor = false End IfEnd Function

实例:找雷电中心

寻找雷电游戏中心

复制右侧的"选取范围"内容和"多点找色-颜色描述"的内容

//打印函数返回内容TracePrint multiFindColor(230, 207, 323, 294, "1FC5F4", "0|-13|000000,-23|-37|1FC5F4,22|-31|1FC5F4,1|-15|000000")

进阶设计:需要返回坐标方便我们配合点击函数

有时候我们找到了目标,还希望能把那个目标的坐标值也给我们,方便我们调用click函数,这时候我们需要再造一个能返回坐标的函数。

疑惑1:为什么我没有把点击函数写入找色函数里面?

为了解除函数与函数之间的耦合性,或者说达到一个松耦合的效果,什么叫耦合?就是相互关联性,一个独立的函数适用性远远大于一个关联紧密的函数。

疑惑2:这么设计有什么好处?

假设你想要找的目标是右上角,而你要点击的地方是左下角,这时候使用这个函数就非常棒,我们只要专注找色就是找色,点击就是点击就可以了。

/*多点找色并返回坐标x1,y1 : 要找区域左上角坐标x2,y2 : 要找区域右下角坐标first_color : 要对比的颜色,就是参考颜色,也是要返回的坐标颜色offset_color : 要比对的多个点的颜色描述*/Function colorPoint(x1, y1, x2, y2, first_color, offset_color) Dim intX, intY, retArray //定义3个变量 KeepCapture //截图保存至内存中,大幅度提升找色速度 FindMultiColor(x1, y1, x2, y2, first_color, offset_color, 0, 0.9, intX, intY) //固定寻找方向和相似度 ReleaseCapture //释放内存中的图片If intX > -1 Then//找到目标返回数组retArray = Array(intX, intY) Else//没找到目标返回-1,-1retArray = Array(-1, -1) End If //返回retArray数组 colorPoint = retArrayEnd Function//根据返回坐标数组进行点击动作Dim ret, x, y//用上面雷电的特征信息做例子ret = colorPoint(230, 207, 323, 294, "1FC5F4", "0|-13|000000,-23|-37|1FC5F4,22|-31|1FC5F4,1|-15|000000")x = ret(0)y = ret(1)//TracePrint x,yclick(x60, y350, 5) //最后点击了剪映

实例:我想通过雷电的图标来定位,但是最后点击的必须是剪映的位置

通过雷电中心找剪映

很多时候因为游戏的不规则性,我们想找的目标是漂浮不定或者透明无法确定的,这时候我们就需要找到其他静态的其他区域来帮我辅助完成动作。

这样设计也有弊端:

由于按键精灵无法直接返回多个返回值,所以只能通过数组的方式接收和传出。这并不是一个很理想的设计,显得很繁琐。虽然解除了函数之间的耦合性,但是增加了需要编写的代码量,不过从实际使用来来说,因为使用频次不高,又能有效解决无法直接定位的问题,这依然是一个不错的设计。(也可以用一个sub来把这个流程包裹起来。)

Sub 依雷电找剪映() //根据返回坐标数组进行点击动作 Dim ret, x, y //用上面雷电的特征信息做例子 ret = colorPoint(230, 207, 323, 294, "1FC5F4", "0|-13|000000,-23|-37|1FC5F4,22|-31|1FC5F4,1|-15|000000") x = ret(0) y = ret(1) //TracePrint x,y click(x60, y350, 5) //最后点击了剪映End Subcall 依雷电找剪映()

终极设计:对于只能找动态图,时不时又找不到目标,怎么办?

这是一个比较少见的特殊情况,但是不排除这种情况的存在。

最近在做的一款游戏就经常碰到这样的情况,整个页面都是画上去的,同一个界面每次找色都不一样,不过由于使用的不是按键精灵解决方案,很快就把这个问题解决了。

设计一个函数,使用循环对一个存储了找色数据的数组进行遍历找色,找到了返回真假,或者返回坐标。

暂时没找到比较有效的实现方法,一是由于按键精灵是基于VB设计的产物,上个世纪的老语言,很多时候设计都有局限性;二是有我自身的技术有限无法找到一个相对很棒的实现方法。

那遇到这样的情况怎么办?

1. 更换解决方案,不使用按键精灵,换其他方式;

2. 尽可能的去找静态稳定的目标;

结语:

在设计函数时,我们应该更多的考虑函数的可扩展性和复用性,而不是单纯的把一串代码拼凑起来,这样一没设计感,二没有灵魂!要记住没有最好的代码,只有适用的代码。

    推荐阅读
  • 荷塘月色简笔画彩图(荷塘的场景图简笔画)

    今日份简笔画荷塘月色.感恩日记1.,我来为整理几张简单漂亮的荷塘月色简笔画彩图?以下简笔画图片总有一款是你喜欢的,希望对你有帮助来看看吧!荷塘月色简笔画彩图今日份简笔画荷塘月色.感恩日记1.荷塘月色好看的儿童画图片儿童简笔画大全荷塘月色简笔画儿童画

  • 直硬头发软化前后效果图(头发软化前后效果图)

    可以使头发变软,变柔顺,变贴服,且价格也很便宜,普通的美发沙龙价格为50到80元左右,软化比较自然。头发软化后几天可以洗刚做完软化2至3天不要洗头,刚做完软化不要用力拉头发,会有损发质和效果。软化也是伤头发的,不过比不停地做一次性夹头发而言小很多,如果是短发做软化还是不错的。如果想让头发蓬蓬的,最好不要全头做软化,甚至不建议做软化。具体情况,建议咨询理发师。用药水要用好一点的,对头发伤害才不会很大。

  • 赞美运动员的话(赞美运动员的话有什么)

    年轻的我们自信飞扬,青春的气息如同出生的朝阳,蓬勃的力量如同阳光的挥洒此时此刻,跑道便是我们精彩的舞台,声声加油便是我们最高的奖项论何成功,谈何荣辱,心中的信念只有一个:拼搏,我来为大家科普一下关于赞美运动员的话?赞美运动员的话年轻的我们自信飞扬,青春的气息如同出生的朝阳,蓬勃的力量如同阳光的挥洒。所有的努力都是为了迎接这一刹那,所有的拼搏都是为了这一声令下。

  • 长安uni-k车主反映这款车怎么样(新车长安UNI-K登场)

    据长安汽车最新消息,中大型SUVUNI-K官图曝光,这是长安UNI系列的第二款车型。新车将搭载蓝鲸系列2.0T发动机并匹配8AT变速箱,将于广州车展首发亮相。新车亮点1.采用了全新的“V”型面设计和无边界格栅。新车概况新车前脸依然采用无边界设计并融入了V型面概念,不同于UNI-T,UNI-K的大灯位置设计在了最上方。车尾方面采用了时下流行的贯穿式尾灯设计,与UNI-T的V型后导流造型不同,UNI-K采用了新的航天器式造型,立式尾灯十分显眼。

  • 渡劫经典语录(关于渡劫的语录精选)

    情到深处人孤独,爱至穷时尽沧桑堕落的天使啊,你无知的游走着。我将于茫茫人海中访我唯一灵魂之伴侣;得之,我幸;不得,我命。玲珑骰子安红豆,入骨相思君知否。于千万人之中遇见你所遇见的人,于千万年时间无涯的荒野里,没有早一步,也没有晚一步,刚巧赶上了。生命是一朵千瓣莲花,我拒绝了绽放的同时,我也拒绝了枯萎和零落。就算哭泣也要皱眉优雅,就算失败也要转身潇洒。之后我也学会了阳奉阴违,发生了什么与我再无所谓。

  • 孤城闭什么时候上映(谁是主演)

    以下内容大家不妨参考一二希望能帮到您!孤城闭什么时候上映《孤城闭》将于2020年起在湖南卫视上映播出。该剧主要由王凯、江疏影、任敏、杨玏、边程、叶祖新、喻恩泰、王楚然、刘钧、孙坚等主演。《孤城闭》改编自米兰lady同名小说,以北宋为背景,在风起云涌的朝堂之事与剪不断理还乱的儿女情长之间,还原了一个复杂而真实的宋仁宗。

  • 大众朗逸所有灯图解(认识汽车灯图解)

    大众朗逸所有灯图解作为新手,汽车灯光就是一道难题,下面我们一起通过图解来认识一下汽车各种灯光吧。双闪灯的作用是当车辆发生意外情况后,引起其他车辆警惕,防止发生追尾事故。当踩下制动踏板后,制动灯立即亮起,并发出红色灯光,提醒后方车辆。倒车灯是白色,作用是为了照亮车尾的路面,减少倒车时盲区,另外也是对后方的提醒。

  • 雪里红的腌制方法(做雪里红腌菜的步骤)

    下面更多详细答案一起来看看吧!雪里红的腌制方法雪里红摘干净,根部用刀劈开,正一层反一层放入盆中,取盐均匀地洒在雪里红上,腌制1-2天。烧开水放凉,加盐,搅拌均匀,盐水倒入雪里红中泡制一天。泡好的雪里红捆成一小捆放入密封罐,倒入泡雪里红的盐水,盖好密封罐,即吃即取。

  • 郑州婚纱照推荐哪家好(郑州拍婚纱照团购)

    中国红喜嫁秀爆朋友圈的婚纱照中式婚纱照新中式婚纱照婚纱照风格高级感婚纱照婚纱照秀禾服的中式嫁衣,是完美诠释了东方女性温婉古典美。让人完全移不开目光~每一个女孩子都应该拥有这样华丽的喜嫁风太精致完全属于中式婚纱照的浪漫感~

  • 胎梦最准的位置(从胎梦看看你腹中的孩子给你暗示了吗)

    估计生完孩子和正在孕期的妈妈都会经历过这种事情,就是我们会经常做梦,而且会梦见一些动物植物什么的,这在老人眼里属于“胎梦”。你梦见的什么会预示着即将出生的宝宝是男孩还是女孩。你的胎梦准不准,来看看一下别人的胎梦。哈哈,看来有些胎梦还是挺准的,或许都是巧合吧,总之,宝宝来了就是我们的命中注定。