TC官方合作论坛

 找回密码
 立即注册
查看: 22724|回复: 86

一个简单的回合制网游脚本的制作过程

[复制链接]
发表于 2011-9-9 21:38:13 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
写在前面的话:本人是小白一个,大神们请勿鄙视,写这个东西只是让那些刚接触TC的亲们能切身的体会到一个脚本的制作过程。

对于回合制网游本人接触不是很多,所以在功能的构思上会有很多不合适的地方,如果各位有什么更好的构思可以跟帖指出,本人感激不尽!

好了,闲话少说,现在我们开始制作脚本!

第一步 构思脚本流程

要做一个脚本,首先要知道我们想让脚本帮助我们做什么,也就是脚本应该有什么功能。
今天我要写的是一个简单的自动打怪和自动加血加蓝的脚本,也就是自动打怪功能和自动加血加蓝功能!
首先是自动打怪功能,要想打怪首先就得找到怪,玩过回合制网游的都知道,回合制网游和一般网游打怪不同的地方就是打野怪的时候是看不到怪物所在位置的,要控制游戏人物在地图上跑来跑去,直到踩到暗雷才会进入打怪的战斗模式。
所以,回合制网游脚本实施找怪的功能就没有简单的快捷键,我们就设定两个坐标,让人物在两个坐标点之间来回跑动,以达到踩暗雷找怪的目的。功能代码如下:
1功能 整型 找怪()
2 循环 (真)
3 鼠标.移动 (xxx,yyy)
4 鼠标.左键单击(1)
5 辅助.等待(800)
6 鼠标.相对移动(80,0)
7 鼠标.左键单击(1)
8 辅助.等待(800)
9 循环结束
10返回 0
11功能结束

以上这段代码就是控制人物在坐标XXX,YYY附近左右水平移动,xxx,yyy 坐标我取的是人物左边的一个点,大家可以看到,第六条代码鼠标的移动方式是相对移动,也就是X坐标+80,Y坐标不变,这样就能让鼠标水平象右移动80个坐标点!(如果XXX,YYY取的是人物左边的坐标点,那么鼠标相对移动时就应该是-80,0),因为这个动作我们是要一直作的,所以加了循环语句,这样就可以重复的进行这个跑动的动作了!
好,如果现在测试以上代码的话,大家就会发现,游戏人物开始在两个坐标点之间不停的跑动了。
那么跑动踩暗雷功能算是完成了,那么接下来开始进入战斗模式。
我们首先要做的就是怎么去判断已经进入了战斗模式,通过观察我发现,战斗模式和平常模式有个很明显的特征就是有一个战斗读秒,这是在游戏窗口一个固定位置出现的倒数数字。虽然每一个游戏这个数字的形状和颜色都不一样,但是我想这个应该是每一款回合制网游的战斗模式都会有的吧!
那么我们就拿这个特征来作为判断是否进入战斗模式的条件,功能代码如下:

功能 整型 进入战斗模式()
整型 战斗模式
战斗模式=图像.坐标点取色(XXX,YYY)
如果 (战斗模式!=#FFFFFF)
如果结束
返回0
功能结束
以上这段代码中的取色坐标XXX,YYY就是战斗模式时游戏窗口那个倒数读秒数字上的一个点,而FFFFFF就是我们用抓抓工具在这个点上抓到的颜色值.
我们用这个来判断,如果这个坐标点上这个颜色存在那就是进入了战斗模式,如果不存在,那就是平常模式!
那么我们就把这个判断是否进入战斗模式的功能加入到前面的找怪功能去,代码如下:
功能 整型 找怪()
整型 战斗模式
循环 (真)
战斗模式=图像.坐标点取色(XXX,YYY)
如果 (战斗模式!=#FFFFFF)

鼠标.移动 (XXX2,YYY2)
鼠标.左键单击(1)
辅助.等待(800)
鼠标.相对移动(80,0)
鼠标.左键单击(1)
辅助.等待(800)
如果结束
循环结束
返回 0
功能结束

以上代码的意思就是 在坐标点XXX,YYY取色,如果在坐标点XXX,YYY找到的颜色不是FFFFFF,那么鼠标就移动到坐标点XXX2,YYY2,单击鼠标左键一次,然后水平向右移动80个坐标点,单击鼠标左键一次,等待800毫秒,一直循环这一系列动作直到在XXX,YYY坐标点找到FFFFFF颜色为止!

好,既然我们可以判断战斗模式和平常模式了,那么下面就是战斗模式时的打怪功能,回合制网游一般战斗的时候都会有战斗快捷键的,我们做的是简单的脚本,所以就使用快捷键来进行战斗!因为这样比较简单,呵呵!功能代码如下:
功能 整型 打怪()
循环 (真)
键盘.按下(164)
键盘.按下(65)
键盘.弹起(65)
键盘.弹起(164)
辅助.等待(500)
循环结束
返回 0
功能结束

以上只是简单的重复攻击动作,通过查询TC的键码,我们可以看出,这段代码实行的动作就是重复键盘按下ALT+A这个动作,ALT+A这个组合键是大多数回合制网游的随机普通攻击快捷键,大家也可以把它换成别的,比如重复上一回合攻击或者是使用默认法术等快捷键来达到使用法术攻击的目的.因为是简单的功能所以一些选择法术攻击的功能就不能实行了,我们将在下一次探讨!
战斗攻击我们做到了,那么不能这样一直攻击下去吖,所以我们要给它加一个判断,判断怪物是否死亡.
由于大多数回合制网游战斗时选怪是不能显示怪物血量的,所以我们不能象大多数网游那样用血量来判断怪物是否死亡.本来我是想用鼠标的特征码来做这个判断的,后来我发现回合制网游战斗时杀死怪物,怪物一般都是被击飞消失的,也就是说怪物死了就直接在游戏窗口消失了.于是,我就用怪物的名字来作为判断怪物是否死亡的特征.功能代码如下:
功能 整型 判断怪()
整型 X
整型 y
逻辑型 怪物名
怪物名=图像.区域找色(XXX,YYY,XXX2,YYY2,#FFFFFF,0,X,Y)
如果 (!怪物名)
如果结束
返回 0
功能结束
以上是判断怪物是否死亡的功能代码,区域找色里的坐标XXX,YYY,XXX2,YYY2就是游戏窗口内怪物所在区域的范围坐标.FFFFFF就是怪物名字的颜色!
这个判断怪物是否死亡的功能我们可以把它和前面的打怪功能结合到一起,代码如下:
功能 整型 打怪()
整型 X
整型 Y
逻辑型 怪物名
循环 (真)
键盘.按下(164)
键盘.按下(65)
键盘.弹起(65)
键盘.弹起(164)
辅助.等待(500)
怪物名=图像.区域找色(XXX,YYY,XXX2,YYY2,#FFFFFF,0,X,Y)
如果 (!怪物名)
跳出

否则
如果结束

循环结束
返回 0
功能结束

以上这段代码的意思就是,按一下组合键ALT+A,在坐标XXX,YYY,XXX2,YYY2范围内找颜色FFFFFF,如果没有找到,那就跳出这个循环!这段代码所达到的目的就是按下ALT+A攻击,然后判断怪物所在范围还有没有怪,有就继续攻击,没有就跳出功能!

然后我们在找怪功能中调用这个打怪功能,那么一个简单的循环自动找怪打怪脚本就算是完成了!代码如下
功能 整型 找怪()
整型 开始打怪
整型 战斗模式
循环 (真)
战斗模式=图像.坐标点取色(XXX,YYY)
如果 (战斗模式!=#FFFFFF)
鼠标.移动 (XXX2,YYY2)
鼠标.左键单击(1)
辅助.等待(800)
鼠标.相对移动(80,0)
鼠标.左键单击(1)
辅助.等待(800)
否则
邪风曲OL测试版.打怪()
如果结束
循环结束
返回 0
功能结束

以上这段找怪功能代码加上打怪的功能代码就能达到让人物在两个坐标点之间循环跑动,直到进入战斗模式,然后在战斗模式中,按ALT+A进行攻击,直到怪物全部死亡,退出战斗模式后,继续循环跑动,这样一个自动找怪打怪的目的!

自动打怪的功能我们算是做好了,一个游戏挂机脚本,哪怕再简单也要有自动加血加蓝的功能吧,要不没挂多久人物就挂了,这个脚本也就没有了挂机的意义了!
好了,下面我们继续做加血加蓝的功能.
首先,我们要弄清楚游戏的加血加蓝方式,回合制游戏一般都没有加血加蓝的快捷键的,平常模式下,可以在血条蓝条的位置点击鼠标的右键来达到加血加蓝的目的.
而战斗模式中要加血加蓝,除了技能,就是要打开物品栏选取加血蓝的药品再选择对象来进行加血加蓝,我们做的是简单的加血加蓝,所以只实现平常模式的加血加蓝,而战斗模式的加血蓝,我们在下一次进行探讨!
想要实施平常模式中的加血蓝,我们要知道当血蓝消耗到一个什么程度,脚本开始实施加血蓝的动作.举例代码如下:
功能 整型 加血加蓝()
整型 人物血
人物血=图像.坐标点取色(XXX,YYY)
如果(人物血!=#FFFFFF)
鼠标.移动(X,Y)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
如果结束
返回 0
功能结束

以上代码的意思是,在坐标XXX,YYY取色,如果颜色不是FFFFFF,那么鼠标移动到坐标XXX,YYY点击右键.
坐标XXX,YYY是什么呢?我们都知道,血条一般以红色表示满血,当血条不满的时候,红色的血条就会缩短,而空出来的地方就是黑色或灰色或别的什么颜色,反正不会是红色的了.所以XXX,YYY这个坐标就是血条上我们想要加血的坐标位置,比如,在血条的中间抓取这个坐标点,那么当血消耗过中间位置的时候,脚本实施加血动作.而颜色FFFFFF就是这个坐标点血条满血的时颜色!
好了,我们依照这个例子,就可以作出给人物加蓝,给宠物加血,给宠物加蓝的功能.举例代码如下:
功能 整型 加血加蓝()
整型 人物血,人物蓝,宠物血,宠物蓝
人物血=图像.坐标点取色(X,Y)
如果(人物血!=#FFFFFF)
鼠标.移动(X,Y)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
宠物血=图像.坐标点取色(XX,YY)
如果(宠物血!=#CCCCCC)
鼠标.移动(XX,YY)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
人物蓝=图像.坐标点取色(XXX,YYY)
  如果(人物蓝!=#EEEEEE)
鼠标.移动(XXX,YYY)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
宠物蓝=图像.坐标点取色(XXXX,YYYY)
   如果(宠物蓝!=#DDDDDD)
鼠标.移动(XXXX,YYYY)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
   如果结束
  如果结束
如果结束
如果结束
返回 0
功能结束

以上是给人物和宠物自动加血加蓝的功能代码,但是这个功能是固定坐标的,也就是我们抓的什么位置那么就只能当血蓝掉到这个位置的时候实施加血蓝的动作!
要想做到可以自由设定加血蓝的位置,有很多种方法,由于我用来测试脚本的这款回合制网游它的血条蓝条在横向坐标上的颜色值是相同的,所以我就简单的做了个算法,来达到设定加血蓝位置的目的,由于用的是简单的算法,所以不能精确到几点血,几点蓝,但是大概的百分比还是准确的.我是用界面设计里的下拉框来设定加血蓝的百分比,只是作为一个例子,大家可以用自己喜欢的方式来设定,功能代码如下:
功能 整型 加血加蓝()
整型 人物血,人物蓝,宠物血,宠物蓝
整型 x,y,a,b,c,d,e,f
a=160-58
b=278-207
字符型 内容1
字符型 内容2
字符型 内容3
字符型 内容4
内容1=下拉框.获得内容("下拉框0",1)         
c=转换.字符型转整型(内容1)
内容2=下拉框.获得内容("下拉框1",1)         
d=转换.字符型转整型(内容2)
内容3=下拉框.获得内容("下拉框2",1)         
e=转换.字符型转整型(内容3)
内容4=下拉框.获得内容("下拉框3",1)         
f=转换.字符型转整型(内容4)        
人物血=图像.坐标点取色(160-a*(100-c)/100,37)
如果(人物血!=#3434BF)
鼠标.移动(160-a*(100-c)/100,37)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
宠物血=图像.坐标点取色(278-b*(100-d)/100,36)
如果(宠物血!=#3838C3)
鼠标.移动(278-b*(100-d)/100,36)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
人物蓝=图像.坐标点取色(160-a*(100-e)/100,47)
  如果(人物蓝!=#C27A0B)
鼠标.移动(278-a*(100-e)/100,47)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
宠物蓝=图像.坐标点取色(278-b*(100-f)/100,45)
   如果(宠物蓝!=#8E4C06)
鼠标.移动(278-b*(100-f)/100,36)
辅助.等待(20)
鼠标.右键单击(1)
辅助.等待(50)
   如果结束
  如果结束
如果结束
如果结束
返回 0
功能结束

在这里我简单说一下我用的算法,代码里的A=160-58,160就是人物血条最右边的X坐标值,也就是满血位置,58是最左边的X坐标值.这样A就等于是血条长度.算式(160-a*(100-c)/100,37)中,C是下拉框0的值,在界面设计中,我们可以在下拉框中设定几个十的倍数,比如我设的:80,60,40,20,而这个算式里的37,就是我们取色时的Y坐标,这个坐标在这里是固定的.这样当下拉框0选择的是80的时候,人物血条掉到80%以下就会实施加血的动作了.

好了,加血加蓝的功能也算是做好了,我们可以在找怪的功能里调用,代码如下:
功能 整型 找怪()
整型 开始打怪
整型 鼠标窗口
鼠标窗口=窗口.鼠标所在窗口句柄()
窗口.置顶(鼠标窗口)
窗口.设置位置(鼠标窗口,0,0)
循环 (真)
邪风曲OL测试版.加血加蓝()
开始打怪=图像.坐标点取色(490,262)
如果 (开始打怪!=#0ADCFF)
鼠标.移动 (404,410)
鼠标.左键单击(1)
辅助.等待(800)
鼠标.相对移动(80,0)
鼠标.左键单击(1)
辅助.等待(800)
否则
邪风曲OL测试版.打怪()
如果结束
循环结束
返回 0
功能结束

好,做到这里,一个简单的回合制网游自动打怪加血蓝的脚本所需要的功能我们就全部做出来了.
把他们整合到一起就是一个完整的脚本了.

附件是以上代码的例子,我是用 《邪风曲OL》 这款回合制网游进行测试的。安装了这款游戏的亲们可以下栽也测试下,看看有什么不足的地方!
没有安装这个游戏的亲们也可以下载帮我看下源代码,给予一些指教,小冷在这里先给大家鞠个躬啦!
最后,祝大家都能用TC写出自己需要的脚本,祝TC越来越强大!

以下是截面设计图和附件
邪风曲OL测试版.rar (2.68 MB, 下载次数: 482)
回复

使用道具 举报

发表于 2011-9-9 22:02:24 | 显示全部楼层
顶,楼主好用心。
回复 支持 反对

使用道具 举报

发表于 2011-9-9 23:56:23 | 显示全部楼层
冷月是好人
回复 支持 反对

使用道具 举报

发表于 2011-9-10 02:02:54 | 显示全部楼层
:D:D:D:D
回复 支持 反对

使用道具 举报

发表于 2011-9-10 07:34:25 | 显示全部楼层
先下载 再学习 楼主辛苦了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-10 09:55:34 | 显示全部楼层
回复 5楼yinghuaft的帖子

谢谢支持!发现有什么问题记得上来说哈!嘿嘿
回复 支持 反对

使用道具 举报

发表于 2011-9-11 16:22:59 | 显示全部楼层
不错,支持个。。
回复 支持 反对

使用道具 举报

发表于 2011-9-11 22:39:47 | 显示全部楼层
回复 1楼smtmangle的帖子

非常好的资料,看了有启发,谢谢冷月哥
回复 支持 反对

使用道具 举报

发表于 2011-9-12 00:38:46 | 显示全部楼层
有帮助啊 参考下
回复 支持 反对

使用道具 举报

发表于 2011-10-2 22:18:31 | 显示全部楼层
我 靠。 我找了好久。!!  大爱!~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-4 16:55 , Processed in 0.067372 second(s), 28 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表