HYNDコン 发表于 2017-1-29 13:53

【教程】从零开始学WOW输出脚本

本帖最后由 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加一个判断:

http://i.imgur.com/a3zTLDD.png

2、 GetLastKey、WaitKey

GetLastKey支持移动战,你按住WASD行走的时候按1,脚本可以正常工作,但是CPU占用比较高。
WaitKey不支持移动战,你按住WASD,脚本就不起作用了。

我的脚本是GetLastKey,但是后面有Delay 5这个语句,加上Delay语句一样不能移动战。我选用GetLastKey只是为了调试方便,注解掉Delay 5就可以移动战,不注解就不能移动战。


木桩视频:
http://video.weibo.com/player/1034:0d969ec3df50d21624c8ac141a4b6dfe/v.swf

origen 发表于 2017-1-29 14:08

超能力者的wow

sandro 发表于 2017-1-29 14:10

学习了

SMFBasa 发表于 2017-1-29 14:11

我柑橘你的号要美丽

sjstephen 发表于 2017-1-29 14:11

木桩爆表

移动战吃力

其实何必用脚本,去玩1234的职业就行了

rubicon 发表于 2017-1-29 14:59

惊了,当年还是滚键盘的....

查理·布朗 发表于 2017-1-29 16:13

按键精灵不是会被封号的吗

fneasag 发表于 2017-1-29 16:38

没事,还有更脑残的gse。

—— 来自 samsung SM-G9308, Android 6.0.1

trentswd 发表于 2017-1-29 16:40

先告诉我会不会被封号?

str007 发表于 2017-1-29 16:41

trentswd 发表于 2017-1-29 16:45

讲真我觉得用了tmw把优先级显示出来就等你按确实挺无聊的,但是用自动工具就触及了暴雪的底线,封号可能性很大
说白了不是什么酸不酸的问题,而是如果自动工具普及了毕业速度就会提高,毕业速度提高暴雪这个版本弄这么多刷刷刷元素来拖台钱岂不是抛媚眼给瞎子看?所以封号概率太大了请各位三思。

HYNDコン 发表于 2017-1-29 17:14

trentswd 发表于 2017-1-29 16:45
讲真我觉得用了tmw把优先级显示出来就等你按确实挺无聊的,但是用自动工具就触及了暴雪的底线,封号可能性 ...

照你这说法,没有DBM和TMW,玩家都在石器时代打滚,暴雪岂不乐开了花?

nonononono 发表于 2017-1-29 17:39

HYNDコン 发表于 2017-1-29 17:14
照你这说法,没有DBM和TMW,玩家都在石器时代打滚,暴雪岂不乐开了花?

可能你分不得清开放接口和外部工具的区别。

HYNDコン 发表于 2017-1-29 18:15

nonononono 发表于 2017-1-29 17:39
可能你分不得清开放接口和外部工具的区别。

你口中的外部工具包不包括你的键盘和鼠标。

—— 来自 smartisan SM901, Android 6.0.1上的 S1Next-鹅版

nonononono 发表于 2017-1-29 18:43

HYNDコン 发表于 2017-1-29 18:15
你口中的外部工具包不包括你的键盘和鼠标。

—— 来自 smartisan SM901, Android 6.0.1上的 S1Next-鹅版 ...

哈哈哈哈

HYNDコン 发表于 2017-1-29 18:53

isadora 发表于 2017-1-29 18:53

应该送去和小黑屋里的tifa团聚啊

夏影 发表于 2017-1-29 19:06

trentswd 发表于 2017-1-29 19:16

HYNDコン 发表于 2017-1-29 17:14
照你这说法,没有DBM和TMW,玩家都在石器时代打滚,暴雪岂不乐开了花?

tmw和dbm用的是wow内部接口做的
你说暴雪乐意吗?我猜不是很乐意,更新的时候就喜欢删除api来让插件吃屎。之前dbm有雷达功能,7.1之后就没有了,你猜是为什么?
但是纵然不是很乐意,但是没有违背他们的用户协议,所以他们也不好太怎么样,也只能删掉一些他们觉得太过分的api来限制功能

按键精灵就不是了。我不是说不支持楼主用或者写教程,我是在提醒楼主你注意风险,不要把暴雪全家桶账号给废了

你说tmw提示然后你按,和tmw提示你用脚本按,是不是一样弱智?我同意是一样弱智,但是前者是在体制内后者在体制外,你也没办法呀
人类喜欢用工具来降低自己的重复劳动,但是游戏开发商和游戏运营商喜欢用重复劳动来确保游戏时间也是很正常的事情呀

费老师 发表于 2017-1-29 19:26

会被封号
再说都17年了,还有这个……

SMFBasa 发表于 2017-1-29 19:30

我只想说你自己敢开按键精灵玩一个月吗?你敢,那我就膜拜你是真的勇士,希望在下次的封号名单里看见你的号

立早鱼 发表于 2017-1-29 19:34

LZ不是上次外野tifa楼里蹦跶的很欢的脚本党嘛
祝早日封号
外挂死全家,嘻嘻

HYNDコン 发表于 2017-1-29 19:36

立早鱼 发表于 2017-1-29 19:34
LZ不是上次外野tifa楼里蹦跶的很欢的脚本党嘛
祝早日封号
外挂死全家,嘻嘻 ...

谢谢您的关心。我封不封号不关您事。

另外,外挂死全家。

脚本不是外挂。

—— 来自 smartisan SM901, Android 6.0.1上的 S1Next-鹅版

midearth 发表于 2017-1-29 19:39

猴子也能学会的封号指南

HYNDコン 发表于 2017-1-29 19:40

SMFBasa 发表于 2017-1-29 19:30
我只想说你自己敢开按键精灵玩一个月吗?你敢,那我就膜拜你是真的勇士,希望在下次的封号名单里看见你的号 ...

谢谢您的关心,我用不用是我的事,如果你没看到我榜上有名,并不代表我肯定没用脚本。我发这个帖子,也不代表我一定会用这个脚本。

—— 来自 smartisan SM901, Android 6.0.1上的 S1Next-鹅版

sandro 发表于 2017-1-29 19:42

SMFBasa 发表于 2017-1-29 19:30
我只想说你自己敢开按键精灵玩一个月吗?你敢,那我就膜拜你是真的勇士,希望在下次的封号名单里看见你的号 ...

我用gnomesequencer+按键精灵玩了张季卡到afk也没啥事啊

midearth 发表于 2017-1-29 19:44

S1不是学术讨论的地方,你写再多也只会被冷嘲热讽。建议楼主发去NGA普渡众生,如果有门路搞定那边版主的话。

HYNDコン 发表于 2017-1-29 19:47

midearth 发表于 2017-1-29 19:44
S1不是学术讨论的地方,你写再多也只会被冷嘲热讽。建议楼主发去NGA普渡众生,如果有门路搞定那边版主的话 ...

我正有此意,但是在nga没有马甲。哪位可以带着批判的眼光帮我转一下?

—— 来自 smartisan SM901, Android 6.0.1上的 S1Next-鹅版

nonononono 发表于 2017-1-29 19:49

midearth 发表于 2017-1-29 19:44
S1不是学术讨论的地方,你写再多也只会被冷嘲热讽。建议楼主发去NGA普渡众生,如果有门路搞定那边版主的话 ...

那你用嘛,还学术讨论,笑死我了一堆歪理。

尘剑一 发表于 2017-1-29 19:52

我倒是觉得楼主的脚本很屌啊
暴雪现在这种钦定的A触发B,然后盯着C的输出方式纯粹是恶心玩家,练熟了也没什么技术含量
我想用什么技能就用什么技能是打游戏底限,可以有CD,可以有连招,也可以有奥冲奥冲奥弹循环,但是sb触发再见。

悲叹的夜想曲 发表于 2017-1-29 20:11

frosta 发表于 2017-1-29 20:18

不知道前面在吵什么,现在按键精灵都不封号了么

— from motorola XT1095, Android 6.0 of S1Next-鹅版

trentswd 发表于 2017-1-29 21:17

尘剑一 发表于 2017-1-29 19:52
我倒是觉得楼主的脚本很屌啊
暴雪现在这种钦定的A触发B,然后盯着C的输出方式纯粹是恶心玩家,练熟了也没什 ...

但是暴雪就是用这种智障手段来增加复杂度
尝试使用自动工具来绕过这种限制无异于釜底抽薪

lyghzw 发表于 2017-1-29 21:57

按键精灵很容易导致封号的,这个属于树大招风,很多游戏都对按键精灵敏感,建议换成自带宏功能的键盘鼠标。

RedSpecial 发表于 2017-1-29 23:16

楼主这个木桩打得高还是低?

deathomega 发表于 2017-1-29 23:41

打毛线这个游戏还有学术可言。整天改数据已经很不学术了好吗?我见过最不严谨的游戏就是这个了,搞数据模型的人简直就是过不了试用期就被换掉。

大厨麦当牛 发表于 2017-1-29 23:57

lz这个想法是很美,但这样搞也很容易让自己丧失乐趣,可能对那些不择手段冲进度的工会有用,不过这种近乎于半自动挂的方法我相信WCL前排的人早就在用了...

大厨麦当牛 发表于 2017-1-30 00:01

还有LS某些人的也不用担心LZ的方法会害人被封号,因为据我所知90%的wow玩家连TMW地鼠都不会写,更何况再去研究按键精灵脚本了。

keytomylife0 发表于 2017-1-30 00:09

这和外挂有什么分别
D3也是充斥着类似的东西

hellgate11 发表于 2017-1-30 02:32

页: [1] 2
查看完整版本: 【教程】从零开始学WOW输出脚本