TC官方合作论坛
标题:
一个简单的回合制网游脚本的制作过程
[打印本页]
作者:
冷月无痕
时间:
2011-9-9 21:38
标题:
一个简单的回合制网游脚本的制作过程
写在前面的话:本人是小白一个,大神们请勿鄙视,写这个东西只是让那些刚接触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越来越强大!
以下是截面设计图和附件
[attach]4559[/attach]
作者:
zxyc2000
时间:
2011-9-9 22:02
顶,楼主好用心。
作者:
ghjily
时间:
2011-9-9 23:56
冷月是好人
作者:
amwgahiyj
时间:
2011-9-10 02:02
:D:D:D:D
作者:
yinghuaft
时间:
2011-9-10 07:34
先下载 再学习 楼主辛苦了
作者:
冷月无痕
时间:
2011-9-10 09:55
回复
5楼
yinghuaft
的帖子
谢谢支持!发现有什么问题记得上来说哈!嘿嘿
作者:
三猫大叔
时间:
2011-9-11 16:22
不错,支持个。。
作者:
VIP
时间:
2011-9-11 22:39
回复
1楼
smtmangle
的帖子
非常好的资料,看了有启发,谢谢冷月哥
作者:
q468181180
时间:
2011-9-12 00:38
有帮助啊 参考下
作者:
苏门答腊的爱
时间:
2011-10-2 22:18
我 靠。 我找了好久。!! 大爱!~
作者:
wang6665300
时间:
2011-10-10 10:14
路过路过
作者:
xuyl012018
时间:
2011-10-10 10:59
好复杂啊
作者:
tangryo
时间:
2011-10-10 12:39
呵呵 很不错啊·值得 学习
作者:
sangyiyuan
时间:
2011-10-10 17:33
有帮助啊
作者:
xiaoroad
时间:
2011-10-11 10:59
这个很适合像我这样的新手学习啊,支持下
作者:
ruijun1314
时间:
2011-10-11 14:07
支持,不错,给新手指引了一条好思路。。
作者:
hua00001
时间:
2011-10-12 10:45
支持,希望多出这样的教程
作者:
xieping
时间:
2011-10-20 11:10
:giggle太棒了
作者:
我菜菜
时间:
2011-10-20 16:49
支持一下
作者:
568345342
时间:
2011-10-20 18:14
新版本的还在录制9
作者:
菜鸟来玩玩
时间:
2011-11-17 14:55
小白看了,头晕了~~
作者:
Vinsonlien
时间:
2011-11-17 23:36
好详细,学习了。
决定每日一阅~哈哈~
作者:
Dance〃
时间:
2011-11-19 17:07
丁丁丁顶
!!!
作者:
TCSMH
时间:
2011-11-26 12:53
求冷月教我制作回合制自动加魔加血脚本可以的话+我QQ941223051谢谢
作者:
zhchfei88
时间:
2011-11-26 22:22
这下我有的看了.刚学中......
作者:
来迟的书信
时间:
2011-11-27 13:21
赞一个
作者:
loading
时间:
2011-12-5 15:08
非常好的资料
作者:
全世界失眠
时间:
2011-12-7 11:50
不错的思路
作者:
lanxujian
时间:
2011-12-7 16:11
不错,写的很详细,解释的通俗易懂,很适合新手学习,望多出此类帖子!
作者:
kiss529086
时间:
2011-12-8 13:57
cainiaoluguo
作者:
dzh
时间:
2011-12-8 21:05
努力学习!
作者:
lk521qq
时间:
2011-12-9 11:12
非常感谢啊,这是
作者:
568988502
时间:
2011-12-9 16:50
ding xia
作者:
lylsgd
时间:
2011-12-9 17:07
回复
1楼
smtmangle
的帖子
比官方的教材好多了
作者:
308838067
时间:
2011-12-16 19:55
围观。。
作者:
dzh
时间:
2011-12-16 22:18
真是有帮助!!!
作者:
智盛辅助软件
时间:
2011-12-18 04:26
LZ辛苦了,支持。。
作者:
dzh
时间:
2011-12-21 16:03
楼主好用心
作者:
23784529
时间:
2011-12-22 22:13
顶你不用考虑
作者:
sorei
时间:
2011-12-29 23:01
啊啊定时
作者:
a85520021
时间:
2011-12-30 18:41
好~~~
作者:
samtomg
时间:
2012-1-8 09:22
好厉害啊。。学习了。。
作者:
自嘲
时间:
2012-1-8 15:11
很好很强大
作者:
lhl9702115
时间:
2012-1-8 15:26
很好很强大很详细
作者:
flyingcream
时间:
2012-1-8 15:29
不错,很详细,学习学习
作者:
ck0070
时间:
2012-1-23 19:57
下不了啊
作者:
zc8968
时间:
2012-1-30 10:21
好东东啊
作者:
agan007
时间:
2012-1-31 22:36
学习哦。。。
作者:
136875205
时间:
2012-2-1 00:17
先恢复再好好看看
作者:
lianxuedejijie
时间:
2012-2-1 09:24
嘿嘿,好东西,加油
作者:
醉清风
时间:
2012-2-1 11:38
思想结晶呀·!谢谢分享··!
作者:
iceangellion
时间:
2012-2-14 16:32
你真的很用心在学习,我是小菜,能感受到。受教了。
作者:
人心不古
时间:
2012-2-16 14:44
楼主是好人,非常用心,雄起,完全为TC入门的人打开思路
作者:
1966466865
时间:
2012-2-23 22:10
超感谢啊
作者:
1966466865
时间:
2012-2-23 22:17
我想做个手机回合制网页文字游戏脚本.楼主 教一下啊
作者:
子仔工作室
时间:
2012-2-28 01:49
好人啊
作者:
bluecav
时间:
2012-3-10 14:56
我也试着做一个
作者:
8122206
时间:
2012-3-11 05:33
顶到你肺了
作者:
请输入您的密码
时间:
2012-3-28 17:17
顶.,...
作者:
btbcagf
时间:
2012-4-12 11:46
学会了很多。
作者:
hxdcc
时间:
2012-4-13 09:48
顶了,学习中
作者:
yhesdaf
时间:
2012-4-13 21:17
小白爱学习
作者:
MadeinChina
时间:
2012-4-14 15:24
拿分, 没看懂...
作者:
a841867051
时间:
2012-4-19 07:20
哇。这个强大啊有木有。。。
作者:
TC_小虎
时间:
2012-4-26 21:34
回复
1楼
冷月无痕
的帖子
楼主说的很细,作为新人顶一个
作者:
200632069
时间:
2012-5-9 12:28
学习学习下
作者:
xiaofe11
时间:
2012-5-9 18:05
新手学习 感谢 大神
作者:
xiaofe11
时间:
2012-5-9 18:06
下载要金币呢
作者:
无处藏身
时间:
2012-5-9 23:19
冷月大神谦虚了
作者:
jq4561057
时间:
2012-6-4 12:29
看看 学习下
作者:
sss139
时间:
2012-6-7 17:59
给力不解释 @!!!!!
作者:
wutao2361
时间:
2012-7-5 19:38
为什么我下过来,鼠标瞎跑。。也不点,也不动,。。。?
作者:
kankanba1001
时间:
2012-7-19 14:42
DDDDDDDDDDDDDDDDDDDDDDDD
作者:
xinguang01
时间:
2012-7-20 16:47
对于新手来说是个不错的帮助!!!
作者:
ytmihyd
时间:
2012-9-23 15:10
非常好的资料,看了有启发,
作者:
我想学脚本
时间:
2012-10-3 01:42
多点这些启发性的文章就好了
作者:
ivwjepl
时间:
2012-11-5 21:50
下了源码怎能不顶贴!
作者:
qianc
时间:
2012-12-20 09:27
膜拜
作者:
ddou83
时间:
2013-1-6 17:30
lz辛苦
作者:
laowantong
时间:
2013-3-11 22:42
真好,就是我不会玩这个游戏
作者:
鬼三皮
时间:
2013-6-11 19:30
积极回帖,努力帮助新手,赚取TC币.
作者:
fupinggui
时间:
2013-9-13 00:31
作者:
lovecherles
时间:
2013-10-2 14:08
支持一下 加油!!
作者:
w361521837
时间:
2014-10-28 10:45
好东西啊………留名学习
作者:
康师傅
时间:
2015-3-8 17:25
留着备用
作者:
zjdyn
时间:
2015-8-12 11:32
新手学习~
作者:
xiao1001s
时间:
2016-5-2 03:12
我想知道在战斗中如何实现加血!!!!跪求方法
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1