婆罗门
精华
|
战斗力 鹅
|
回帖 0
注册时间 2010-10-21
|
本帖最后由 HYNDコン 于 2018-12-5 01:05 编辑
最新教程
【教程】从零开始学WOW输出脚本Ver2.0
https://bbs.saraba1st.com/2b/thread-1704782-1-1.html
前言
WOW的难度完全在于你在面对复杂到抓狂的输出手法的同时,你需要各种走位,所谓一心不能二用,这直接导致了WOW有宏和插件和没宏没插件完全是两款游戏,宏和插件都能光明正大完全合法的“告诉”你下一步你该做什么,于是你就跟着照做就是了。
既然宏和插件都能光明正大完全合法的“告诉”你下一步你该做什么,你不照做,输出就打不高,那你要汇报给我干毛,直接干就是了。我是领导,我是BOSS,我直接给你权限,我让你接管我的键盘,你判断该做什么的时候,不用汇报给我,直接做就是了,这样不是更轻松吗?
要是把技能输出循环外包给脚本,RAID里再也没有傻逼犯错了,大家打BOSS更加轻松愉快了,肝一天再也不必担心自己断手了,岂不美哉?
正文
在读此文之前,你需要了解:
1、TMW插件
2、按键精灵脚本
TMW插件,一个强大的插件,通过简单的设置,可以解放你的双眼,不再死盯住该死的BUFF栏和技能栏,你只有一双眼,一双手,战斗机飞行员如果没有软件辅助,是开不起一架战斗机的。你凭什么要求玩家眼观六路耳听八方既躲技能又打输出?万幸我们有TMW,WOW这款游戏才变得更加美好。
按键精灵脚本,嗯,会用的人觉得它好用。不会用的人觉得它是万恶之源,是恶鬼,用它的人拥有超能力,这种超能力会影响世界的平衡,会……总之它是一颗酸葡萄嗯。
好了,我们开始吧。
首先,我们先来讲整个脚本的结构:
我按下一个按键
TMW判断要做什么
TMW反馈给按键精灵
按键精灵执行它
简单吧?炒鸡简单。怎么实现呢?
举个最简单的例子,比如说,我要打一个月火术,这是一个DOT,当然,打这个技能是有条件的,如果目标挂着月火了,我就不需要上这个DOT了,如果目标没有月火DOT,我就上这个DOT。
这是个最常见的例子。怎么实现呢?
首先,我们要在TMW写一个判断图标,如果目标身上有月火,图标就变成红色,其他情况,就是默认的绿色。
然后,我们要在按键精灵里写一个固定区域找色的语句,如果某一个坐标范围内有颜色变成红色,那么就令A=1,如果不是,A=0。
再然后,我们要写一个无限循环的一串代码,如果A=1,就按下一个键,这个键就是月火术的技能键。
这样我们就实现啦!
等等,总觉得哪里不对劲。
这段代码是无限运行的,我根本控几不住它啊!
别紧张,GetLastKey()命令拯救你。
我们可以通过GetLastKey()命令,来捕获最近一次的按键,如果这个按键是1,那么就执行以下的语句,如果不是1,整个脚本就不运行。这样就OK啦!
这样以来,如果按1,脚本会自动帮你打月火;如果目标有月火,你按1,脚本就不会有任何动作。这样就控制住啦!
你可以把单体输出设置成按键1激活,把AOE输出设置成按键2激活,那么你不停按1,就是打月火,不停按2,就是打星辰陨落。
简单吧?
哪有这么简单。
职业输出都有固定的套路,就是俗称的“输出手法”、“技能循环”。清楚什么时候该打什么技能,才是老司机风范,才是高端玩家。拿鸟德举例子。先看看怪身上有没有月火阳炎双DOT,如果没有,得补上。再来看看新月法术是不是可用,要先打新月,这玩意能涨能量,输出也可观;如果能量高了,要用星涌术“泄怒”,这玩意能加强你的日月法术;单体输出,优先打日怒,加强版日怒打完了,再来看看加强版明月有没有,有就打加强版明月;全都加强版都打完了,既没能量,新月又在CD,才会去打普通日怒。
这些输出套路,该怎么翻译成TMW-脚本语言呢?
这里有诀窍:记住,TMW和脚本要分工明确,TMW只判断,脚本只操作。不要互相插手,到时候乱成一锅粥,自己都不知道怎么写下去了。还有,不要想的太多,什么判断都想往里塞。TMW的判断架构看起来特别不友好,有些优先级,直接在脚本里实现就好。
之前我就犯过不少错误,脚本写得冗长繁琐,连加强版日怒最多叠三层我也考虑进去了,写了一个三层图标,和一个没层数的图标,共同来控制是不是来打日怒。
我的天,这复杂程度,你根本想不出来该怎么写。
后来我忽然就想通了。这就是一句话的事情:有层就打,没层就不打。
那没层有时候也要打啊!
你管这么多干毛线。没层也打,交给下一句IF语句不就行了。
这就是优先级思路。- If si1 = 1 Then
- KeyPress "Z", 1
- Goto 结束
- End If
-
- If si2 = 1 Then
- KeyPress "X", 1
- Goto 结束
- End If
-
- If siA1 = 1 Then
- KeyPress "3", 1
- Goto 结束
- End If
-
- If siA2 = 1 and si5 = 1 Then
- KeyPress "T", 1
- Goto 结束
- End If
-
-
- If si4 = 1 Then
- KeyPress "E", 1
- Goto 结束
- End If
-
- If si3 = 1 Then
- KeyPress "Q", 1
- Goto 结束
- End If
-
- KeyPress "E", 1
复制代码 解释一下:
si1 月火判断
si2 阳炎判断
siA1 星涌所需的能量/看看会不会层数溢出判断
si5 新月CD判断
siA2 看看会不会溢出的能量判断
si4 日怒加强版层数判断
si3 明月加强版层数判断
都不满足,打日怒
语句从上至下,排好优先级。你们可以看到,有些判断,你可以分拆成两个判断图标,比如能量判断和层数溢出判断。你可以在脚本里把它们AND一下,也可以在TMW里直接AND,到底是分拆还是不分拆,这取决于这个判断是不是其他的脚本操作也要调用它,或者是TMW里整合后判断栏位太多影响到了阅读和理解给其他代码的书写造成了不便。
以下是咕咕输出脚本全文实例:- //状态指示(si)位置:附着 中上 中上 -110 -30 100%
- //si1:794 56 , 826 88
- //si2:838
- //
- Rem 开始
- Key = GetLastKey()
- If Key = 49 Then
- Key = 0
-
- // MoveTo 794, 56
- FindColorEx 785,51,803,72,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si1 = 1
- Else
- si1 = 0
- End If
-
- FindColorEx 805,52,825,71,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si2 = 1
- Else
- si2 = 0
- End If
-
-
- FindColorEx 826,51,848,72,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si3 = 1
- Else
- si3 = 0
- End If
-
- FindColorEx 850,53,869,71,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si4 = 1
- Else
- si4 = 0
- End If
-
- FindColorEx 872,51,891,70,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si5 = 1
- Else
- si5 = 0
- End If
-
- FindColorEx 783,74,803,93,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- siA1 = 1
- Else
- siA1 = 0
- End If
- FindColorEx 805,73,825,93,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- siA2 = 1
- Else
- siA2 = 0
- End If
- FindColorEx 894,53,913,70,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si6 = 1
- Else
- si6 = 0
- End If
-
- FindColorEx 917,53,935,70,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si7 = 1
- Else
- si7 = 0
-
- End If
-
- If si1 = 1 Then
- KeyPress "Z", 1
- Goto 结束
- End If
-
- If si2 = 1 Then
- KeyPress "X", 1
- Goto 结束
- End If
-
- If siA1 = 1 Then
- KeyPress "3", 1
- Goto 结束
- End If
-
- If siA2 = 1 and si5 = 1 Then
- KeyPress "T", 1
- Goto 结束
- End If
-
-
- If si4 = 1 Then
- KeyPress "E", 1
- Goto 结束
- End If
-
- If si3 = 1 Then
- KeyPress "Q", 1
- Goto 结束
- End If
-
- KeyPress "E", 1
-
-
- Goto 结束
-
- End If
- If Key = 50 Then
- Key = 0
-
-
- FindColorEx 785,51,803,72,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si1 = 1
- Else
- si1 = 0
- End If
-
- FindColorEx 805,52,825,71,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si2 = 1
- Else
- si2 = 0
- End If
-
- FindColorEx 826,51,848,72,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si3 = 1
- Else
- si3 = 0
- End If
-
- FindColorEx 850,53,869,71,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si4 = 1
- Else
- si4 = 0
- End If
-
- FindColorEx 872,51,891,70,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si5 = 1
- Else
- si5 = 0
- End If
-
-
- FindColorEx 783,74,803,93,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- siA1 = 1
- Else
- siA1 = 0
- End If
- FindColorEx 805,73,825,93,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- siA2 = 1
- Else
- siA2 = 0
- End If
-
- FindColorEx 894,53,913,70,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si6 = 1
- Else
- si6 = 0
- End If
-
- FindColorEx 917,53,935,70,"0000FF",0,0.9,intX,intY
- If intX > 0 And intY > 0 Then
- si7 = 1
- Else
- si7 = 0
- End If
-
- FindColor 828,73,848,93,"0000FF",intX,intY
- If intX > 0 And intY > 0 Then
- siA3 = 1
- Else
- siA3 = 0
- End If
-
-
-
- If si1 = 1 Then
- KeyPress "Z", 1
- Goto 结束
- End If
-
- If si2 = 1 Then
- KeyPress "X", 1
- Goto 结束
- End If
-
- If siA2 = 0 and si5 = 1 Then
- KeyPress "T", 1
- Goto 结束
- End If
-
-
- If siA3 = 1 Then
- KeyPress "4", 1
- Goto 结束
- End If
-
- If si3 = 1 Then
- KeyPress "Q", 1
- Goto 结束
- End If
-
- If si4 = 1 Then
- KeyPress "E", 1
- Goto 结束
- End If
-
-
- KeyPress "Q", 1
- Goto 结束
-
- End If
- Rem 结束
- Delay 5
- Goto 开始
复制代码 TMW脚本我就不放出了,自己写吧,只要能按自己的思路来就行。
最后我要提一下一些注意事项:
1、连读污染
比如你只有1层加强版日怒,TMW判断你有一层加强版,同时你在读条日怒,那么这一发肯定是加强版日怒,这没有问题。如果你不停按1脚本输出,那么问题来了:日怒是读条技能,由于你不停按的关系,导致了你加强版日怒出手的一瞬间,脚本仍旧是让你下一发还是读日怒,由于你只有1层加强版日怒,下一发只是普通日怒,这样就读了不该读的技能。像这种因为上一次该释放的技能被拖泥带水到了下一个GCD被释放的情况,就叫做连读污染。解决办法是TMW加一个判断:
2、 GetLastKey、WaitKey
GetLastKey支持移动战,你按住WASD行走的时候按1,脚本可以正常工作,但是CPU占用比较高。
WaitKey不支持移动战,你按住WASD,脚本就不起作用了。
我的脚本是GetLastKey,但是后面有Delay 5这个语句,加上Delay语句一样不能移动战。我选用GetLastKey只是为了调试方便,注解掉Delay 5就可以移动战,不注解就不能移动战。
木桩视频:
|
|