管方答疑(想学习初级脚本制作,高级脚本探讨的朋友现在统统看过来!!!)
活动内容:
由简单游官方定期举办按键精灵疑难解答,针对自愿报名学习的玩家进行脚本技术方面的问题解惑,了解按键精灵,了解简单游,用简单轻松的方式来诠释游戏,增加乐趣,释放我们的双手,减轻游戏疲劳,把重复枯燥的游戏内容统统扔掉!
第一课:概述
概述
本教程欢迎转载,但请注明:转载自简单游官方论坛:bbs.jdyou.com
作者:舞月
本节作为入门级的第一课,将教晓怎么才能编写出优秀的脚本。也可理解为学习过程。并尽量简单的说明整个学习过程。
编程初学者常犯的毛病,是希望在尽短时间内,就可以编写出强大功能的软件。学习编程到可以编写出有用,并且功能还不错的软件,是个长期艰苦的学习过程。需要付出大量的努力与时间。没有一掘而就的捷径。幸好,我们只学按键精灵,不用接触涉及编程中繁杂的方方面面。也希望按键爱好者以本教程做为编程入门,初窥编程大门。第一次学写教程类的文字,不足之处,多多指点。
本教程针对读者群为:对按键精灵有一定了解,可以使用按键精灵提供的基础指令来实现简单的机械操作。
如果你是刚刚接触按键精灵,并不了解他有何基础功能的朋友,可以参看由“兄弟工作组”制作,图文并茂讲解按键各基础的功能的“按键宝典”。可在按键精灵官方网站下载。
导读:
本教程分三部分。
第一部分,前6节为按键精灵的基础知识。
第二部分,从7节起,在大量的小例子面前,争取把基础知识融会贯通。
第三部分,搜集整理大量实用或复杂的脚本,讲解按键精灵的高级应用技巧。
第2课:零编程学会补红蓝脚本的制作
补红蓝脚本的制作
本教程欢迎转载,但请注明:转载自简单游官方论坛:bbs.jdyou.com
作者:舞月
我们应该知道,按键精灵拥有一只眼睛,一双手,眼睛可以帮我们查看屏幕上的颜色,而手可以帮我们不断的点击键盘鼠标。相信多数的朋友对于这双手的操控已经灵活自如了,而要编写出功能强大的脚本,没有眼睛可不行。本教程以此出发,教会读者使用这双眼睛,更好的控制机器人的手臂。
本章用到的按键精灵基础命令:
1、
IfColor 100 10 112233 0
EndIf
IfColor做为按键精灵最重要的颜色判断语句(眼睛),有着良好的易用性与理解性。
语句详细解释:
ifColor - 如果颜色
100 - 屏幕X象素
10 - 屏幕Y象素
112233 - 16位进制的颜色(以两位为一种颜色分别代表蓝、红、黄)
0 - 相等(1为不相等。2为模糊匹配)
解释:如果在坐标100,10的颜色为112233则执行。后面的EndIf做为IfColor的配对。
使用方法:控制命令->抓点坐标/颜色->在面图上点左键,加入到坐标点->退出抓点->选好坐标颜色后->插入
2、
//注释
解释:“//”为按键精灵的注释在“//”后面所跟写的任何文字都将被按键忽略。
3、
Rem s
Goto s
解释:“Rem s”可以理解为在改位置做一个标记s。而“Goto s”则是无条件跳到此标记执行。这里补一下程序运行概念:每行代码都有行号,脚本解释器要一行一行代码的执行下去,知道执行最后一行代码或碰到EndScript语句(该语句在后面会有讲解),没有任何可执行了,程序就退出。
4、
Delay 100
解释:暂停100毫秒(1000毫秒 等于 1秒)
看完了概念,我们来实际编写一个游戏的补红补蓝脚本,验证我们是否已经学会了该课的内容。
首先打开按键精灵,并进入游戏,用PrintScr(一般在F12右边第一个)键截取游戏图象。然后切换到按键精灵程序。按ifcolor的使用方法来抓取我们的血条颜色坐标。并且插入到代码内。
此时,我们可以看到在按键精灵里多出了三条语句(在源代码那边哦):
IfColor 126 19 4a5110 0
Else
EndIf
其中else是否则的意思,就是说如果上面的ifcolor不成立,则执行else下面的语句。我们先写个测试代码,看看取得的颜色是否正确
IfColor 126 19 4a5110 0
MessageBox 颜色正确
Else
MessageBox 颜色不对
EndIf
如果只弹出“颜色正确”那么恭喜你,您离成功很近了。如果颜色不对,请检查是不是颜色那里出现错误。直到弹出“颜色正确”就可以继续学习了。
我们继续。
修改代码如下:
Rem s
IfColor 126 19 4a5110 1
//使用F5的红药
KeyPress 116 1
EndIf
Delay 100
Goto s
注意以上代码。增加了rem..goto,持续不断的执行上面的过程。原来的ifcolor最后的0改为了1(1为不等于)。加了暂停的Delay(不让脚本的CPU占用率过高)。这时,你的这段代码已经可以补红了。补蓝的代码请自行加入,做为作业。
好了,这节已经结束。大家多注意休息,不要劳神哦~ 什么?代码不好使?颜色不对。好好,我加个补充说明。
补充说明:
如果按步骤写了以上代码并不好使,那么可能是颜色出现问题。解决方法给出几个供参考
1、取血条底色,如果颜色等于底色则执行加血的操作。
2、用模糊取色,如果颜色大约等于血色则,否则加血。或,如果颜色大约等于底色则加血(这里是模糊匹配和else的运用)
以上两点也为各游戏常遇到问题的解决办法。多多实验,总会成功的。
第3课:过程语句的学习
过程语句的学习
本教程欢迎转载,但请注明:转载自简单游官方论坛:bbs.jdyou.com
作者:舞月
接第2课,零编程学会补红蓝脚本的制作
本节想学会使用Sub和GoSub语句的使用,以及对第2节没有解释清楚的地方加以补充。
Sub作为一个过程语句的关键子,在代码重用和逻辑编排上启着致关重要的作用。先看一下关键字的说明:
Sub [过程名]
//这里的部分就是过程体(自命名,可以看的懂就好)了。可以添加执行代码。
Return
解释:[过程名]可以随意更改,启一个可以很容易理解的名字。是书写代码的良好习惯,也可以使用中文。Return 语句的作用是返回调用点。
GoSub [过程名]
解释:gosub固名思意,到sub。sub可以理解为过程、函数、方法。叫法不同,原理一样。
我们改装上次讲过的补红蓝脚本:
Sub main
Rem s
Gosub add_hp
Gosub add_mp
Delay 100
Goto s
Return
Sub add_hp
IfColor 126 19 4a5110 1
KeyPress 116 1
EndIf
Return
Sub add_mp
IfColor 126 19 4a5110 1
KeyPress 117 1
EndIf
Return
以上代码组成一个完整的体系,并且结构合理,清晰。易于看懂。通常会把执行单一功能的一块代码做为一个sub。比如补红蓝脚本,一个主控sub,一个补红,一个补蓝。要修改哪部分,只要在对应的sub中修改即可。
sub main只是一种编程习惯,在按键精灵里,如果没有碰到goto、gosub这两个语句(另外还有几个会发生跳转,以后章节就讲到)是不会发生跳转代码行号的,只是顺序执行,在碰到sub时,直接忽略该行语句,执行下一条。
我们来看下面代码:
Sub main
Gosub test
Return
MessageBox 测试
Sub test
MessageBox 测试
Return
该代码在按键精灵5.2以前的版本中(包括5.2)都会执行不正常。5.2版的执行结果为一直弹出“测试”提示框,而不是只弹出一次。这个错误在5.3版以及后续版本,都已经改正,所以在学习当中,尽量使用最新版本的按键精灵,以后的教程也都根据按键精灵最新的5.6版来讲解。
代码含义补充说明:
KeyPress 116 1
解释:
KeyPress - 按某一个键的关键字(在键盘选项卡里可以找到)
116 - F5键的虚拟键值码(在键盘选项卡里最下面左边的文本框可以按下键盘各种键,查询虚拟键值码。也可反之)
1 - 按1次(改成2就是按两下)
以上说明适合keydown(按键按下)、keyup(按键抬起)、leftclick(鼠标左键点击)等
第4课:变量的含义
变量的含义
本教程欢迎转载,但请注明:转载自简单游官方论坛:bbs.jdyou.com
作者:舞月
很多初学者都会迷惑,什么是变量。
个人觉得变量是编程入门的一道门槛。介绍变量概念的文章很多,这里先做易于理解的比喻,再从语言层面上进行讲解。如果你已经了解了变量的含义,则请跳过此节。
变量,你可以理解为超市的存包柜。每一个变量对应一个柜子。而柜子的号码就是变量名。想要哪个柜子里的东西(数据),就对应的找哪个变量名。变量名可是你自己命名的哦~
我们看例子:
a=1
把数字1放进柜子a中。
b="你猜对了吗?"
把字符串 你猜对了吗? 放进柜子b中。字符串必须用""包含。
dc=3.14159265
把小数放进柜子dc中。
num1=1
num1=33
num2=55
sum=num1+num2
首先把33和55分别放入num1和num2中。然后把他们取出来,做加法操作(加法是由CPU来处理的),把结果放在sum中。结果sum等于88
num1=1
num1=33
num1被给值为1,然后又给值为33。此时,num1中存储是的33。1就被覆盖掉了。没有了:)
sum=sum+1
这句不等同于数学的加法,也是初学者不容易理解的地方。我们只要想,把sum拿出来和1做加法,再放回sum中就可以了。sum原来的值是88,做完加法后,sum等于89。
pig=1
pig=pig*3+pig
能猜出pig最后等于几么?1*3+1。结果是4
好,相信到这里,你应该明白变量是怎么回事了。变量的加减法已经会发,乘除法作为作业喽。更高级的应用,将来以后的章节进行讲解。下面大致说一下C语言中的变量。
C语言比较接近于系统底层,更易于理解变量的机制。当代码中有a=2的时候,则在内存中分配一小块区域来存储这个变量,然后把2放在该内存的区域中。当执行b=a的时候,则通过变量名a提取出它的值数字2。在放在b在内存中的区域中!
当然,在语言实现层面也并非我上面说的寥寥几句,但这都并不是我们关心的。我们只要明白,变量、变量名是什么,以及怎么给他赋值,怎么提出他的值就可以了,毕竟我们要的只是应用。如果有兴趣知道更多,使用搜索引擎就可以得到你想要的答案了。 |