如何使用按键向导?
本教程欢迎转载,但请注意:转载自简单之旅官方论坛,作者:在月亮和向明上跳舞
教程第一版基础部分发布后,受到热烈欢迎,深感责任重大。同时,我对第一版的内容安排感觉不太好,这是因为文学的仓促造成的。很多重要的内容都过去了,我也没有放在作为入门教程的基础上。才想着更新,才有了这个修订版。在不求速度,但求质量的前提下,多带朋友,跨越关键精灵编程的门槛,达到传奇高手的境界。
作为简单游最早的员工,我花了整整一年的时间和钥匙法师打交道。从最开始的简单游,只有几个人知道名字,到现在我有几十万的固定用户。我深感欣慰。记得年初的时候,第一次把剧本贴在了简单游上,第一次感受到了玩家的热情。第一次,朋友每天帮我测试剧本,提出意见,每天在电脑前等我更新。每次想起都会莫名的感动。同时,作为一个老牌的脚本工具,key wizard在今天也没有一个很好的入门教程,也是相当遗憾的。在某人才的帮助下,我尽我所能的出版了这本关键巫师核心教程。
我会尽量在教程中描述更多的内容,不仅是按键向导入门教程和脚本技巧的提升,还有按键向导的一些技术细节和实现方法。以初学者为阅读指导对象,由浅入深,由简入繁,一步步走进奇妙的钥匙精灵世界。
第一部会从补红的剧本入手,穿几乎所有的基础知识,为后面的章节打下坚实的基础。
第二部分是2D和3D游戏自动调试脚本的分析和制作,从思路到代码编写到解题思路都做了详细的描述。
第三部分改变思路,讲述如何制作其他非游戏脚本,然后将按键向导扩展到更多领域。方便日常生活。
第四部分,也是最后一部分,描述了按键向导结合独特的插件系统,编写出更强大的软件功能。
从本教程起草之日起,请耐心等待。因为是第一次写这类教程,本着对大家负责的态度,教程已经写到了需要反复修改的章节和点,来衡量各种知识点的安排。进度会稍微慢一点,以保证每周至少更新一个板块。已经持续半年了,我只想要这个世界上最好的产品,希望朋友们诚实。
补红补蓝剧本初探
-
本教程欢迎转载,但请注明:转载自简单之旅官方论坛:bbs.jdyou.com。
作者:在月亮上跳舞
第一章是概述
第一章以补红手迹为基础,详细描述了补红手迹的制作方法和钥匙向导的基本知识。在描述整个剧本的基础上,为第二章自动打怪剧本的制作方法打下基础如果你能从头看完第一章,可以肯定你会达到现有剧本对简单之旅各区域填红填蓝的设计水平。
文本开始:
很多朋友都留言,来信询问如何制作自己的剧本来补充红蓝。其实有很多种写法。本章我们将以红蓝两种文字为切入点,实际讲述各种文字的书写方法。并且避免枯燥的编程概念,着眼于实际,通过大量的应用实例掌握关键向导。
首先,将简要解释本节中出现的一些术语:
坐标-屏幕像素的坐标值。如果当前分辨率为1024×768,则屏幕左上角坐标为0,0。右下角是:1024,768。
抓取颜色/抓取点-抓取屏幕中像素的坐标极坐标颜色。用法:control命令-& gt;抓取坐标/颜色-& gt;在图上单击左键,将其添加到坐标点-& gt;退出抓取点-& gt;选择坐标颜色后-& gt;插入
keyword-键向导的保留字,不能用作变量。
了解了以上,我们就可以开始我们的剧本之旅了。
我们先考虑手动播放的情况。当我们的血量或者魔法值低于某个临界值的时候,我们会用各种药物来补充血量和魔法。同样,钥匙法师也是通过这一点来判断,如果屏幕坐标的某个颜色不等于血或者魔法的颜色,那就该吃药了。让我们看看密钥向导中的内容:
if color 138 109 ef 844 b 1
按键49 1
EndIf
上述代码解释如下:
如果(138,109)的颜色不等于#ef844b的颜色,则
钥匙
条件结束
其中138,109是血条上的任意问题,ef844b是血的颜色。
如果颜色-是关键向导的关键词,说明这句话是判断颜色。
138 109-分别是屏幕上X和Y的坐标值。
ef 844 b-是屏幕上颜色16的BGR值。
1-表示条件。在这个位置可以设置三个值:0,1和2,其中0相等,1不相等,2模糊相等。
只有上面的代码是不够的,因为上面的代码只运行一次。我们想让他不断检测颜色,从而达到自动补充红蓝的目的。
看两句代码:
Rem s
转到s
说明:“Rem s”可以理解为在这个位置做一个标记s。而“Goto s”无条件跳转到这个标签,其中s可以自定义,跳转到Rem[标识符]。Rem和goto是key wizard的关键词。
这里先说一下程序的运行机制。每一行代码都有行号。脚本解释器将继续逐行执行,直到执行完最后一行代码或者遇到EndScript语句(后面会解释)。如果没有更多的代码要执行,程序将退出。我们的目标是让程序不断地探测,并且用rem..后藤,会完美解决的。看最后一个例子:
Rem s
if color 138 109 ef 844 b 1
按键49 1
EndIf
延迟100
转到s
说明:Delay是暂停操作的关键字,后面是100,表示0.1秒。
整个程序结构清晰明了,一目了然,无需过多解释。蓝色填充脚本是留给作业的。
回顾本节中解释的关键内容:
如何使用ifcolor..endif关键字
IfColor [X坐标] [Y坐标] [GBR颜色][对比条件]
如何使用rem..goto关键字
rem[标记名]
goto[标记名]
如何使用delay关键字
延迟[暂停时间,单位为毫秒]
-
然后重新穿透剧本补红。
本教程欢迎转载,但请注明:转载自简单之旅官方论坛:bbs.jdyou.com。
作者:在月亮上跳舞
回顾上一节所说的内容:
1,if color[x][y][颜色][对比度]
if color-关键字,用于颜色比较。
屏幕上的x横坐标
屏幕上的Y-fir坐标
彩色BGR三色
对比-0:相等1:不相等2:相等。
2.马克
rem-关键字,标记行号,标记goto。
3.转到[标签]
Goto-keyword,跳转到相关标签。标志可以是任何字母、数字、汉字或特殊符号,但必须是唯一的。否则会跳错。
4.延迟时间[毫秒]
delay-关键字,停止运行XX毫秒。
我遇到过不止一个游戏,上一节描述的脚本不能正常工作。通过测试和分析,我们知道游戏画面和血条画面不同步。这样会导致误判,解决办法是拿游戏血条的背景色来判断。这种方法只适用于背景颜色相同或者变化不大的游戏。比较值给出0或2。
if color 138 109 1b7c 5d 0
按键49 1
EndIf
但如果背景颜色是透明的(随环境变化,没有固定的颜色),就很难做到,比如韩国的游戏《大领主》。先给出一个代码,然后举例说明。
i = 0
为了5
if color 138 109 2312ff 0
i = i + 1
EndIf
结束
如果i = 0
//加血
EndIf
这段代码引出了两个概念:
1,变量:比如第一行i = 0,ifcolor体i = i+1。
2.循环语句:for 5
3.条件语句:如果i = 0
这两点解释如下。
1,变量:
变量的概念对于初学者来说真的不容易理解。为了加深理解,这里就放弃书面描述,先说说变量的使用方法。
我们来描述一下生活中的一个场景:我们手里有很多东西,想去超市,所以一定要把包存起来,从超市出来后再拿出来。描述一下生活中的另一个场景:我们从银行取钱,拿着银行卡,可以在很多地方取钱消费。
这样一个存取的动作,已经代表了变量的应用,就是上面说的柜子和银行卡。我们将数据保存到变量中,然后在需要时从变量中取出。但本质上,变量不是一个柜子,它是一个代称,或者代词。假设我们将数字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。
将下面的代码复制到按键向导中,运行一次看看效果,会加深你的理解。
a = 22
调用消息框(a)
b = a
调用消息框(b)
调用消息框(a)
c = a + b
调用消息框(a)
调用消息框(b)
调用消息框(c)
a = a - 1
调用消息框(a)
变量的描述远远不够。这里只解释变量的加减运算,但解释一下本节开头的代码就够了。更复杂的内容以后再说。
2.循环语句:for 5
loop语句很好理解,for 5的作用就是将数据从for到endfor循环五次。其实你一看效果就明白透了,不用过多解释:
三个人
VBSCall调用MessageBox(3)
结束
这个代码会弹出三次。
3.条件语句:如果i = 0
语义上,我们可以看到,如果I等于0,我们会做一些运算。首先,if作为一个关键的向导关键字,起着分句块的作用,这将在下一节详细介绍。If和ifcolor是键向导仅有的条件语句。条件语句,如果满足条件,将执行某些操作,否则将执行其他操作。If后面会跟一个条件句,这里是i=0。条件句只有两种结果:真或假,是或否。无论是对还是错,没有中立。从对变量的解释可以看出,I的值可能是0,也可能是1到4之间的任意一个数。如果I为0,那么i=0的结果为“真”,否则为“假”。
看看具体的例子:
如果1=2 //假
如果3=3 //真
将下面的代码复制到key wizard中运行一次,会对if语句有更深入的理解。
a=1
如果a=1
VBSCall调用MessageBox(1)
endif
如果a=0
VBSCall调用MessageBox(0)
endif
这里有一个可能会引起歧义的地方,我就在这里解释一下。
我们发现在给变量赋值的时候,我们用“=”。比较两个值的时候,我们还是用“=”。这个=符号到底有多少功能?什么时候有什么影响?我在这里解释一下:在=号不需要任何返回值的情况下,它是一个“赋值运算符”,在需要返回值的情况下,它是一个“比较运算符”。在if中,if语句之后需要有一个true和false值来判断if下面的语句是否被执行。
通过对以上两个概念的简单理解,我们来分析一下本节开头的代码流程:
I = 0 //先给变量I赋值0。
For 5 //循环执行ifcolor语句五次。
如果颜色138 109 2312ff 0//如果左边的颜色(138,109)等于2312ff。
I = i+1 //将I变量的值加上1。
EndIf // End ifcolor语句块
EndFor //结束循环体
如果i = 0 //如果5个周期后颜色不相等,则
//加血
EndIf // End if语句块
我相信上面的解释已经完整地描述了这段代码的功能。而且我们发现if和ifcolor的结尾关键字都是endif。实际写代码的时候,发现很多朋友忘记写endif了。别忘了写这一点。
回顾本节中解释的关键内容:
1.变量的简单使用和赋值方法
2.如何使用if..endif语句
3.如何将语句用于..结束
-
写高级红蓝脚本的基础知识
本教程欢迎转载,但请注明:转载自简单之旅官方论坛:bbs.jdyou.com。
作者:在月亮上跳舞
这一节比较特殊,不会讲实际的脚本技巧,而是对前两节没有表达清楚或者还有疑问的地方进行深入分析。才能抓住设计的本质。
回顾上一节:
1.变量的简单使用和赋值方法
2.如何使用if..endif语句
3.如何将语句用于..结束
变量的详细描述:
在最后一节中,我们知道了变量的简单应用。这里将对变量进行详细清晰的描述,并提出一些错误的避免方法。之前的教程发出后,看客的热情极高。根据之前的内容,他们陆续写了自己的剧本,但是发现了一些影响大局的错误。其中之一就是变量的误用。好了,我们开始吧。
在VBS,只有一种可变类型,即可变体型。什么是体型变化?这要从VB说起。VB中有很多种变量,包括整数、浮点、字符串等等。我们学习按键向导的编写是没有用的,深挖VB中的变量类型也是没有用的,这里就不说了。
在VBS只有一种类型的变量。数据类型是什么?我们知道一个变量就是一个存储空间,每个变量在VB中能存储的数据是不一样的。比如:a=1,那么变量A存储的是整数类型,b=1.1。然后b变量存储十进制类型。如果此时a=b,就会出现错误。因为整数类型不具备存储小数类型的能力,所以VB解释器会出现执行时错误。如果你想了解更多关于数据类型的知识,你可以在搜索引擎中找到很多内容。当然,如果我们不知道,也不会对我们的课程有什么影响。
回到上一个话题,VBS变量只有一种数据类型,叫做variant,也就是无论你在变量中存储什么数据,变量都能自动变成对应的数据类型。清楚了这一点,我们就可以在键向导中随意赋值了。这里要提一下字符串类型。由于字符串和其他数据类型的区别,使用方法会略有不同。也是新手的通病。
暂且把数据类型理解为两种类型:数字型和字符型。数字类型包括我们日常能遇到的所有类型,包括整数、小数、负数。字符类型是来自中国和其他国家的26个英文字母、汉字。
数字类型的赋值方法:
a = 32
b = 2.2
c = -25
d = -4.4
其中a、b、c和d分别是整数、小数和负数。
字符串的赋值方法:
x = "abcdefg "
y = "1234567890 "
Z = "你好"
我们发现,字符串的类型就像他的名字一样,是由字符串一个一个连接起来的。并且在它周围有一个双引号。
从上面的例子我们可以看出,数字类型和字符串类型唯一的区别就是有没有这个双引号。那么我们可以说,只要有双引号,就是字符串类型,剩下的都是数字。让我们看一个错误的例子来加深我们的理解:
A = 32 //这句话没错。
A = "bb" //这句话也对。
A = "cc"dd" //这句话有错误,程序会认为是字符串cc,但是后面的dd "无法解析,所以整句都有错误。
Vbscall调用messagebox(a) //这里的结果是bb,按键向导忽略所有错误继续运行。
有朋友会问,想给整个字符串加一个“符号”该怎么做?这里我告诉你:把“标志”里的两个“”连起来就行了,其中第一个“是转义符,能使用就更好了。看看这个例子:
a = "a""b""c" //a的值为:a "b" C。
a = "a" "b" "c" "//a的值为:a"b"c "
a = ""a ""b ""c "//a的值是" a "b" C。
在最后一个变量被说出的地方,字符串被加上。
我们都知道数字是可以加的,那么字符串怎么加,在这里我彻底告诉你。在按键向导中有两个用于字符串添加的运算符,即“+”和“&”。只有两边都是字符串时,才能使用“+”。如果两边都是数字,或者只有一边是数字,用“&”就可以达到字符串连接的目的。当然,当两边都是字符串时,也可以使用“&”。号码。在这里,我推荐你在连接字符串的时候用“&”而不是“+”。操作。这样,看到“+”号就是数字的加法;看到“&”就是字符串加起来。这样写也是很好的编程习惯。
一、if语句详解:
在按键向导中,只有两个if语句,即:ifcolor和if。前两节已经很清楚的介绍了if和ifcolor。这里是对以前没有提到的内容的补充。
先看if语句
原型:if【条件判断】..其他..endif
其中,条件判断更容易理解,这一点在上一节已经略有论述。结合各种数据类型,这里详细解释。
如果[条件]..其他..endif
在条件是表达式的情况下,需要返回true和false值,并根据返回值执行剩余的代码。如果..其他..endif形成一个条件分支。执行if to else或else to endif中的语句。选择分支的条件基于条件返回的true和false值。如果为真,则执行if to else中的代码,如果为假,则从else执行。在没有else的情况下,如果条件返回true,将执行if到endif中的语句;否则,将跳过整个IF块,并在endif之后开始执行。
在这里,我强调一下条件部分应该注意哪些问题:
在诸如1和if a=b这样的语句中,A和B必须是同一类型。也就是说a和b都是数字,或者a和b都是字符串。
2、如果a & gt在B这样的语句中,A和B必须是数值类型。如果比较字符串,结果可能与您预期的不同。
3.像if a=b这样的语句,等号两边都有数字和字符串,应该避免。假设出现这种情况,我来说说解释的过程。首先将字符串转换成数字,然后进行比较。如果1="1 "是没有问题的,因为" 1 "可以自动转换成数字1。如果1="a ",那么整个句子就是一个错误。在key wizard中忽略这个错误,结果就是if语句之后的语句会被强制执行,导致以后的代码部分失效(栈不匹配)。因此,在使用if语句时,应该尽量避免将数字与字符串进行比较。如果是这种情况,你最好执行一个强转换函数。参见示例:
a="123456 "
b=123456
如果int(a) = b
endif
这里我们用一个int(a)把a转换成数值类型。请使用键向导中的“vbscript生成器”来查找函数。
第二,再看ifcolor。
原型:if color[x][y][color][condition]..其他..endif
其中x,y是屏幕坐标位置;
颜色是你要比较的颜色;
条件很重要,它只能给出三个值0,1,2中的任意一个。以下三个值分别解释。
0是x,点Y的真彩色如果对应我们给的颜色就是真,否则就是假。
1正好和0相反。如果X点和Y点的真颜色和我们给的颜色一样,那就是假的,否则就是真的。
而2是模糊比较,这里详细讲解。我们知道屏幕上的颜色是由RGB三原色组成的,每种颜色的染料配比不同,屏幕上的颜色也不同。在windows中,每种颜色的变量值从0到255。纯白点的三元色值都是255,纯黑点都是0。使用16是从00到FF。不知道16和10怎么换算?你可以用附件里的计算器选择科学换算。所以我们看到钥匙精灵得到的颜色和16表示的代码很相似,比如0A1B2C,是由GBR的三种颜色组成的。知道了这一点,就能正确理解模糊值。这里有个小秘密。按键向导的模糊值范围是50。如果你不明白,直接跳过这里,只要你知道模糊判断不会把绿色判断为红色)
Else与if语句相同。如果找到一种颜色,else将不被执行。如果找不到,就会被执行。
总结一下我今天说的话:
1.在键向导中,变量只有一种数据类型。
2.字符串类型应该用双引号括起来,并且应该在字符串中添加“”字符。
3、“&数字作为字符串连接符
4.按键向导将忽略所有错误并执行下一个错误。
5、如果..其他..endif执行顺序。以及数字和字符串的比较方法。
6.ifcolor的执行顺序..其他..endif。
本想在这一节讲一下循环,但是涉及的内容太多了,还是留到下一节吧。当循环结束时,就该编写应用程序代码了。