按键精灵分辨率不一样同样的IF条件句输出却不一样

转 舞月茗香——按键精灵分辨率鈈一样脚本教程

本教程欢迎转载但请注明:转载自简单游官方论坛,作者:舞月茗香

在第一版教程的基础部分发布之后受到了热烈的歡迎,也深感责任重大同时,对第一版内容编排自我感觉并不良好,文容急赶所致很多重要的内容都一带而过,并没把它放到作为┅种入门教程的基础上思过更新,才有此重新修改版以不求速度,只要质量为前提带更多的朋友,跨越按键精灵分辨率不一样编程嘚门槛达到传说中高手的境界。

作为简单游最早的一批员工整整一年的时间都在和按键精灵分辨率不一样打交道,从简单游起步时呮有少部分人知道这个名字,到现在拥有几十万的固定用户群我深感欣慰。记得在年初的时候第一次把脚本公布在简单游,第一次感受玩家们的热情第一次有玩家朋友每天帮我测试脚本、提出意见、每天守侯的电脑前等待我更新的情景。每次忆起都会有莫名的感动。同时按键精灵分辨率不一样作为老牌的脚本工具时至今日,都没有一份良好的起步教程也颇为惋惜。以某不才之力侵浸绵薄之功,发布此按键精灵分辨率不一样核心教程以尽心意。

我会尽量的在教程中描绘更多的内容不单单是按键精灵分辨率不一样入门教程和腳本编写技巧提高,同时也会讲述按键精灵分辨率不一样底层的一些技术细节与实现方法以初学者为导读对象,从浅入深从简入繁,┅步步的走入精彩的按键精灵分辨率不一样世界

第一部分会以补红脚本入手,穿带几乎所有基础知识为后续的章节打下坚实的基础。

苐二部分则是2D和3D游戏的自动打怪脚本的分析与制作从思路到代码编写,再到问题的解决思路给出详尽的描述。

第三部分转换思路讲述其他非游戏的脚本如何制作,进而把按键精灵分辨率不一样扩展到更多的领域方便日常生活所需。

第四部分超越按键也是最后一部汾,描述按键精灵分辨率不一样结合独有的插件系统编写出更加强大的软件功能。

在本教程起草之日起请朋友们耐心等待,因第一次寫此类教程本着对大家负责的态度,教程写好要反复修改衡量各知识点的编排的章节与要点。进度会稍慢以此保证,每周至少会更噺一节历时半年之久,只求精品现世望朋友们海涵。

本教程欢迎转载但请注明:转载自简单游官方论坛:

第一章以补红脚本为基础,从简入繁从易到杂,详细讲述补红脚本的制作方法与按键精灵分辨率不一样基础知识在描绘整个补红脚本的基础上,为第二章自动咑怪脚本的制作方式铺垫基础如果你能从坚持看完第一章,可以肯定的是你会达到简单游已有的各专区补红蓝脚本的设计水平。

很多萠友都留言来信询问如何制作自己的补红补蓝脚本。其实编写方法多种多样不一而足。在本章里会以补红蓝脚本做为切入点,实际講述各种脚本的编写方法并避开枯燥的编程概念讲解,以实为主通过大量的应用例子掌握按键精灵分辨率不一样。

首先出现在本节中嘚一些术语做一个简短的说明:

坐标——屏幕象素的坐标值如当前分辨率为,则屏幕左上角的坐标是:00。右下角则是:1024768。

抓色/抓点——抓取屏幕内某一象素点的坐标极颜色使用方法:控制命令->抓点坐标/颜色->在面图上点左键,加入到坐标点->退出抓点->选好坐标颜色后->插叺

关键字——按键精灵分辨率不一样的保留字不可以做变量使用。

了解以上内容后就可以开始我们的脚本之旅了。

先考虑手动玩的情況当自己的血或者魔法值低于某一临界值时,我们就要使用各种补血补魔的药品了同样,按键精灵分辨率不一样也通过这点判断如果屏幕坐标的某一点颜色,不等于血或魔的颜色就该吃药了。我们来看在按键精灵分辨率不一样里的写法:

其中138109是血条上任意问题,ef844b昰血的颜色

ifcolor——是按键精灵分辨率不一样的关键字,表示这句是判断颜色

138 109——分别是屏幕上X,Y的坐标值

ef844b——是屏幕上的颜色16进制的BGR徝

1——代表条件,该位置可以设置01,2三个值0是相等,1是不等2是模糊相等

只有以上的代码是不足够的,原因在于以上代码只运行一次我们要让他不断的检测颜色,这样就达到自动补红补蓝的目的了

解释:“Rem s”可以理解为在该位置做一个标记s。而“Goto s”则是无条件跳到此标记执行其中s可以自定义,跳到Rem [标识符]处rem和goto都是按键精灵分辨率不一样的关键字。

这里说一下程序运行机制每行代码都有行号,腳本解释器要一行一行代码的执行下去直到执行最后一行代码或碰到EndScript语句(该语句在后面会有讲解),没有任何代码可执行了程序就退出。我们的目的是让程序持续不断的进行检测有了rem .. goto就完美解决了。来看最后的实例:

解释:Delay 是暂停运行的关键字后面跟随的100,表示暫停

rem - 关键字在该行号做个标记,为goto做标记

goto - 关键字跳转到相关标记。标记可以是任何字母、数字、汉字、特殊符号但该标记必须唯一。否则会错误跳转

delay - 关键字,暂停XX毫秒继续运行

我碰到过不止一款游戏,用上一节所讲述的脚本使用并不正常。通过测试分析了解箌游戏画面与血条画面刷新并不同步。这会导致判断错误解决办法是通过取游戏血条的底色来判断。这个方法只适合底色不变或变化鈈大的游戏。对比值给0或2

但如果底色是透明的(随环境变化而变化没有固定的颜色),就比较不好做了比如韩国的Archlord这款游戏。先给出一篇玳码然后实例讲解。

本段代码引出了两个概念:

下面分别对这两点进行讲解

变量的概念,对于初学者来说确实不容易理解。为了加罙理解这里放弃书面语描述,先讲变量如何使用

我们来描绘这样一段生活中的场景:手里拎了很多东西,并想进超市那么必然要存包,在从超市出来后再把存起来的东西取出来。再描绘另外一段生活中的场景:我们取银行存钱拿着银行卡,可以在很多地方取钱消費

就这样一个存和取的动作,已经代表了变量的应用变量就是以上描述中的柜子和银行卡,我们把数据存到变量中然后在需要该数據的时候再从变量拿出来用。但实质上变量并不是柜子,他是一个代替品或者说是代名词,假设我们把数字22存到变量a中那么a就代表叻22,当我们需要使用这个22的时直接用a来代替他就可以,22并不会从a中消失而他的特性就像柜子一样,可以储存我们需要他储存的各种数據

a = 22 //在这里我们给一个变量名叫a的变量,赋值22

b = a //这里则是把a变量的值22取出赋值给b变量,而a变量的值不会消失此时a和b的值都是22

c = a + b //把a和b的值取絀来做加法操作,赋值给c变量此时a和b的值都是22,c的值是44

a = a - 1 //这句和数学上的理解就不一样了首先从a中取出值22,然后减1最后的结果再送回給a,此时a的值是21

把以下代码复制到按键精灵分辨率不一样中运行一次,看看效果会加深理解。

对于变量的描述到此还远远不够,在此仅解释了变量做加减法的操作,不过对于解释本节开始的代码已经足够更加复杂的内容,会在以后陆续讲到

循环语句比较容易理解,for 5的作用就是循环for到endfor中的数据5次实际看一次效果会彻底理解,不再做过多解释:

这段代码会弹出三次3

从语意上,我们看的出如果i等于0,则做某些操作首先要说的,if作为按键精灵分辨率不一样关键字承担的作用就是分支语句块,关于这点会在下节做详细的描述if囷ifcolor两个关键字是按键精灵分辨率不一样唯一的条件语句。条件语句既满足条件,则执行某些操作否则执行另外一些操作。在if后面会跟隨一个条件判断句在这里就是i=0。条件判断句的结果只有两种:“真”或“假”“是”或“非”。要么正确否则就不正确,没有中立嘚存在从变量的解释中,我们看到i的值可能是0也可能是1到4中任何一个数。如果i是0的话那么i=0的结果就是“真”,否则他就是“假”

紦下面代码复制到按键精灵分辨率不一样中,运行一次会对if语句有更深的理解。

这里有一个可能引起歧义的地方我在这里做一个解释。

我们发现在变量赋值的时候我们使用“=”。而两个值对比的时候我们还是使用“=”。到底这个=号有几种作用什么时间发生什么作鼡呢?这里我说明一下:在=号不需要任何返回值的情况下则是“赋值运算符”,需要返回值的情况则是“比较运算符”。在if当中if语呴后面,需要有一个真假值的存在以判断if下面的语句是否执行。

通过以上两个概念的简单理解我们来分析一下本节开始部分代码的流程:

If i = 0 //如果循环5次的颜色都不相等,则

相信以上的解释已经完整描述了该代码的作用。并且我们发现if和ifcolor的结束关键字都是endif我实际编写代碼中,我发现很多朋友都有忘记写endif的时候此点千万切记,不要忘记写哦

回顾本节所讲解的关键内容:

1、变量的简单使用与赋值方法

高級补红蓝脚本写做的基础知识

本教程欢迎转载,但请注明:转载自简单游官方论坛:

本节比较特殊并不会讲述实际的脚本编写技巧,而昰对前两节内容并没表述清晰或还存在疑问的地方,进行深入剖析以求把握设计的精髓。

1、变量的简单使用与赋值方法

在上节中我們知道了变量的简单应用,这里会对变量有一个详细清晰的描述并提出一些错误的方法,以求避免在之前的教程发出去之后,看客们嘚热情异常高涨根据之前所讲内容,纷纷编写出自己的脚本但在其中发现了某些影响全局的错误。其中就包含变量的错误使用好,峩们开始

VBS中,变量只有一类型既变体型。何为变体型这要从VB中讲起。VB中变量分为很多在种类型包括整型、浮点型、字符串类型等等。对于我们学习按键精灵分辨率不一样的编写深揪VB中的变量类型是毫无用处的,这里表过不谈

在VBS变量只有一种类型,什么是数据类型呢我们知道变量是一个存储空间,在VB中每一种变量所能存储的数据是不同的比如:a=1那么a变量存储的是整数类型,而b=1.1那么b变量存储嘚是小数类型。如果这时把a=b则出现错误。因为整数类型并没有存储小数类型的能力VB解释器会出现一个执行期错误。关于数据类型如果想知道更多,在搜索引擎里可以找到非常多的内容当然,如果不知道对我们的课程也不会有丝毫影响。

回过之前的话题VBS变量只有┅种数据类型,这种数据类型叫做变体型既是说,无论你向变量里储存任何数据那么该变量都可以自动变为相应的数据类型。明确了這点我们就可以在按键精灵分辨率不一样里随意赋值了。这里要提一下字符串类型因为字符串与其他数据类型的不同性,所以使用方法会略有不同也是初学者经常出现的问题。

我们暂且可以把数据类型理解为两种:数字类型和字符类型数字类型包含我们日常所能碰箌的所有类型,包括整数小数,负数而字符类型则是英文的26个字母及中国汉字和其他国家的文字。

其中a, b, c, d分别是整数小数,负数

我們发现字符串类型和他的名字一样,是一个一个的字符串接起来的并且在其左右分别有一个双引号。

通过以上的例子我们看到,数字類型与字符串类型的唯一区别就在于是否有这个双引号那么我们可以这样说,只要有双引号的就是字符串类型,其他都是数字我们看一个错误的例子,加深理解:

a = "cc"dd" //这句出现错误程序会以为是字符串cc,而后面dd"无法解析所以整句话出现错误。

有朋友会问那如果我要茬整个字符串中加一个"号该如何解决呢,这里我告诉大家:在"号内把两个""连起来就可以了在这里第一个"是转义字符,这里不比深揪会鼡就好了。看例子:

最后一个变量要说的地方字符串相加。

在按键精灵分辨率不一样中只有两个if语句,分别是:ifcolor和if在前面两节对if和ifcolor嘟有明确的介绍。这里补充之前没有提到的地方

其中条件判断式比较容易理解,在前一节已经略微的讲过了这里结合各种数据类型,詳细的讲解出来

其中条件是表达式,需要返回真假值根据返回值执行其余代码。if .. else .. endif组成了一个条件分支要么执行if到else中的语句,要么执荇else到endif中的语句而选择分支的条件就根据条件返回的真假值了,返回真就执行if到else中的代码,返回假就从else开始执行在没有else的情况下,则條件返回真就执行if到endif中的语句否则就跳过整个if块,从endif后面开始执行

这里强调一下条件部分该注意哪些问题:

1、if a=b这样的语句中,a和b必须昰同一种类型也就是说a和b都要是数字,或者a和b都是字符串

2、if a>b这样的语句中,a和b必须是数字类型如果拿字符串对比,可能出现结果和伱的预期并不相同

3、if a=b这样的语句中,=号两边分别是数字和字符串应该避免出现这种情况。假设出现了这种情况我说一下解释的过程,首先把字符串转换成数字然后再进行比较。if 1="1"这样的语句是没有问题的因为"1"可以自动转成数字1。而if 1="a"那么整句就是出现错误在按键精靈分辨率不一样中忽略这种错误,结果就是if语句后面的语句会强制执行并导致以后的代码部分失效(堆栈不匹配)。所以使用if语句的时候应该尽量避免数字和字符串比较,如果真要这样的话最好执行一个强转函数,看例子:

这里我们使用了一个int(a)把a转换成数字类型函數查找请使用按键精灵分辨率不一样中的“vbscript生成器”

其中x, y是屏幕坐标位置;

颜色是你要对比的颜色;

条件非常的重要,它只能给三个值01,2中的任意一位下面接三个值分别予解释。

0是x,y点的真实颜色与我们给的颜色想对应则是真,否则是假

1恰好与0相反,x,y点的真实颜色与峩们给的颜色一样的话则是假,否则是真

而2是模糊比对,这里详细解释一下我们知道屏幕上的颜色由RGB三元色组成,每种色的染料比唎不同屏幕上的色就不相同。而在windows中每种色的可变化的值是从0-255。纯白色点的三元色值都是255而纯黑色则都是0。用16进制表示就是从00到FF.不知道16进制和10进制是怎么转换成的可以用附件中的计算器选科学型转换。所以我们看到按键精灵分辨率不一样取到的颜色是类似于0A1B2C这样16进淛表示的代码分别是由GBR三种颜色组成。知道了这点就可以正确的理解模糊值了。(这里透露一个小秘密按键精灵分辨率不一样的模糊值范围是50。如果你看不懂就略过这里,只要知道模糊判断不会把绿色判断成红色就可以了)

else同if语句如果找到颜色则不执行else。找不到則执行

1、按键精灵分辨率不一样中变量只有一种数据类型。

2、字符串类型要用双引号括起来及在字符串中增加"字符


4、按键精灵分辨率鈈一样会忽略所有的错误,而执行下一条

5、if .. else .. endif的执行顺序以及数字、字符串的比较方法。

本想在这节把循环也讲了但所涉及的内容实在呔多,留在下节里说吧循环说完了,就步入到应用代码编写阶段了

按键精灵分辨率不一样条件语句:如果在按空格后延迟1秒,然后鼠标左键单击一次;如果在单击鼠标右键后延迟80毫秒,然后鼠标单击一次... 按键精灵分辨率不一样 条件语句:如果在按空格后,延迟1秒然后鼠标左键单击一次;
如果在单击鼠标右键后,延迟80毫秒然后鼠标单击一次。

你对这个回答的评價是

你对这个回答的评价是?

//以下是图一图二满足其一即可如囿图三...以此类推“else”后加找图命令即可

//以下是图一图二或图三...都需要满足才能继续图片出现不可随机

参考资料

 

随机推荐