魔兽世界跟NPC互动的宏怎么做

魔兽世界跟NPC互动的宏怎么做,第1张

1、首先需要做一个选中目标的宏。按Esc键,打开主菜单,选择“宏命令设置”。

2、新建一个选中目标宏,“/目标 NPC的名字”。比如NPC的名字叫格里兹尔,宏的内容就是“/目标 格里兹尔”。

3、然后将这个宏命令拖到动作条上,如下图所示。

4、再次点击Esc键,打开主菜单,点击“按键设置”,如下图所示。

5、然后在打开的页面中,点击“选中目标”,给“与目标互动”设置一个按键。

6、现在,站到NPC身边,点一下刚刚制作的宏,再按一下互动快捷键,就能跟NPC对话了。

原来法师的魔法宝石宏和术士的法术石宏都用的这个语句,关键不在红色部分的字,猫腻都在“熏烤塔布羊排” 之中。

根据物品名称摧毁物品的的判断语句出现了两个双引号,第二个双引号内是空白,也就是说默认所有物品,因此默认只摧毁熏烤塔布羊排的语句变成摧毁熏烤塔布羊排+默认所有物品;还有您这个宏肯定哪不对,要不绝对能删东西,因为暴雪现在还没把这BUG修复。

魔兽世界宏命令说明:

玩过EQ的都知道一点宏的知识,比如组队时用来告诉队友你的行动,告诉目标等。最简单的比如puller 常用的: /v %t过来了,大家集中火力。 法师常用的: /v 我要催眠%t,大家不要打醒他,这些宏个性鲜明,是EQ的一大乐趣之一。

然而EQ毕竟是N年前的游戏,宏也比较简单,和它比起来。WOW的宏就复杂和强大的多了。它的函数就有上千种,如果都掌握,能实现许多匪夷所思的功能。

一个宏可以完成一个相对比较复杂的命令,比如战斗中发布命令,如果打字当然不算麻烦,但在战斗中却很要命,浪费了时间和生命,一个简单的宏便可以用一个键来完成这一切。

1、target,noexists]群体驱散;驱散魔法神圣新星宏。按下ctrl或者不在战斗中时使用1级,主要用来炸潜行者。如果在战斗中且没按下ctrl,则是施放顶级神圣新星。

2、首先,回车,再敲/MACRO。弹出一个窗口,上面有New(新建宏命令)和Complete(完成宏命令)两个按键。

3、登录个人账号,进入游戏。进入游戏中之后,找到菜单,可以看到中间有一个选项叫做宏命令设置,点击进入。进入之后,上面有两个选项,点击角色的专用宏。

4、经常看到求alt+驱散自己,直接按驱散目标的宏,就是这个。其实这个宏完全没必要,设置alt+自我施法就可以了不过既然要的人多,还是放出。

5、魔兽世界怀旧服跟正式服一样,做宏命令需要暴雪开放的宏命令端口。一般来讲,常用宏的端口都是直接开放的,但是比如很早版本时自动计时的端口已经不存在了。

6、现在没有宏能判断目标的buff状态,所以你需要的这种宏是不可能的。

  如果没说错的话,这个宏有错误或这个宏不是完整的。

  首先解释下宏的意思

  /script if (UnitClass("target")=="Warrior") then SendChatMessage("", "WHISPER") else

  脚本 判断 目标是否为战士,如果是就悄悄话M他说“”否则

  if (UnitClass("target"))=="Roque" then SendChatMessage("", "WHISPER") else

  判断 目标是否为盗贼,如果是就悄悄话M他说“”否则

  if (UnitClass("target"))=="Priest" then SendChatMessage("", "WHISPER") else

  判断 目标是否为牧师,如果是就悄悄话M他说“”否则

  if (UnitClass("target"))=="Mage" then SendChatMessage("", "WHISPER") else

  判断 目标是否为法师,如果是就悄悄话M他说“”否则

  if (UnitClass("target"))=="Hunter" then SendChatMessage("", "WHISPER") else

  判断 目标是否为猎人,如果是就悄悄话M他说“”否则

  SendChatMessage("", "WHISPER") end end end end end

  如果都不满足以上条件直接对目标悄悄话M“”;

  /script SendChatMessage("", "WHISPER")

  脚本M话方式;

  结素。

  这个宏应该是判断目标什么职业然后做出相应的M话,M话内容应该在SendChatMessage("", "WHISPER")这个函数的""里。WHISPER是选择对话方式,不写默认为普通。

  补充:

  不好意思,前就几天由于忙,没时间来,现在仔细看了看。终于发现问题的所在。问题如下:

  首先了解下这个函数SendChatMessage()参数结构:

  SendChatMessage("message","system","language","channel");

  不知道为什么,惟独当system参数为whisper时需要加完整的参数。

  我把你的宏改了下。(一定要注意,为了保证宏的正确性,要直接复制,格式和位置千万不要改动)具体如下:

  /script if UnitClass("target")=="战士"then SendChatMessage('你要说的内容','whisper',thislanguage,UnitName('target'));else if UnitClass("target")=="盗贼"then SendChatMessage('你要说的内容','whisper',thislanguage,UnitName('target'));else if UnitClass("target")=="牧师"then SendChatMessage('你要说的内容','whisper',thislanguage,UnitName('target'));else if UnitClass("target")=="法师"then SendChatMessage('你要说的内容','whisper',thislanguage,UnitName('target'));else if UnitClass("target")=="猎人"then SendChatMessage('你要说的内容','whisper',thislanguage,UnitName('target'));else SendChatMessage('你要说的内容','whisper',thislanguage,UnitName('target'));end end end end end

  我是在记事本上敲的貌似贴进来位置变了,记得,用的时候千万不要为了美观换行(shilong_1229原创)

  国际惯例:2区 爱斯特纳巨魔猎人

判断表达式,判断式(Option Set):由若干判断项组成,封闭在方括号[]中的真值表达式。继承自安全模板,能在受保护环境下允许运作的唯一判断形式。

一,写宏的基本法则

宏最主要的应用是带有判断的施法,这也是下文主要应用的模型。一个典型的这种宏可以抽象成以下形式:

Code(c):

/cast [表达式1-1][表达式1-2]技能1;[表达式2]技能2;技能3

--宏的模型

[项1,项2,项3, ]

--表达式的模型

--注:表达式中定义单位target=或@不是一种判断条件,但它重新指定了后续所有涉及目标的判断和最终技能施放的对象。比如指定了@mouseover后,后续的help/exists/dead之类的判断都会基于鼠标悬停的单位。

在这个模型下,讨论:

1逻辑及判断顺序(法则一,!极为重要)

涉及判断就有真值,但是不要被这个带有浓重编程和数学色彩的词吓倒。概括来说就两句话:

<1>方括号内各分项之间是AND的关系,用逗号间隔,只有各个分项都为真整个方括号(表达式)才为真。方括号内各项之间没有顺序要求。

<2>各个方括号之间是OR的关系,判断顺序是从左至右,遇到第一个方括号为真时即结束判断,而忽略其后的所有项目。

大部分宏出错/不能用/判断混乱的原因就是在此。写宏的时候必须把条件强的(或者说优先级高的)判断放到前面,弱的(泛用型的)判断放到后面。举个例子,昨天回答了问答区一个人的提问,他的宏

Code(c):

1:#showtooltip

2:/cast [nomod,spec:2]炼狱冲击;[nomod,target=mouseover,exists,harm,spec:2]炼狱冲击

无法对鼠标悬停目标放。究其原因就是,[nomod,spec:2]这一个表达式弱于后者

[nomod,target=mouseover,exists,harm,spec:2],后者不仅需要无修饰键和第二专精,同时需要存在一个可攻击的鼠标悬停目标才会为真,导致了后者为真时前者一定为真。

按照上文的<2>,从左至右的顺序将永远是前者表达式率先为真,因而无法对悬停目标施放炼狱冲击。修改的方法很简单,把两个判断调换位置即可:

Code(c):

1:#showtooltip

2:/cast [nomod,target=mouseover,exists,harm,spec:2]炼狱冲击;[nomod,spec:2]炼狱冲击

3:--修改后的宏

当然我在回答中还给出了优化方案,后文会详细介绍如何优化。

2 技能整合(法则二)

对于把多个技能整合进一个/cast命令里,在不同的条件下自动判断施放不同的技能,只有一条格式法则:不同技能之间用分号;间隔。具体可以参照本章开头提出的宏模型。

要注意,一个/cast任何情况下至多只能施放一个技能,而且各个方括号之间仍旧遵循上文提出的<2>判断顺序法则。

3 技能堆叠(法则三)

如果要做到一键同时放出两个或更多的技能,必须有多行/cast命令,这就是技能堆叠。这种宏通常用于爆发技能,喝药开饰品开技能需要同时完成。

其法则是:至多只能拥有一个产生/受到GCD影响的技能,幸运的是爆发类技能和药水等物品几乎都设计成不占用GCD。

Code(c):

1:#showtooltip

2:/cast 奥术强化

3:/use 13

4:/use 14

这样的宏是可行的,因为饰品和[奥术强化]本身并不产生GCD,甚至再加两行

Code(c):

/cast 气定神闲

/cast 奥术冲击

也是合法的。但是,形如以下的宏是非法的:

Code(c):

1:#showtooltip

2:/cast 驱邪术

3:/cast 审判

4:/cast 十字军打击

因为三者都产生GCD和/或被GCD影响,最终的效果是只相当于第一行[驱邪]有用。不要妄图这种方法能实现按优先级施放技能。

4 技能替代(法则四)

技能替代是一个十分有意思的机制,自CTM引进。这种机制允许某[基础技能]在特殊情况下被另一个[替代技能]替代,而即便在替代的情况下,通过宏命令施放[基础技能]时会自动定向到[替代技能],其最终的结果是正常施放[替代技能],宏的图标也会随之变化。

这种机制有两种情况:

1)单向的替代,/cast [替代技能]不会施放出基础技能,但是/cast [基础技能]是任何情况下通用的。

举例:神牧的[圣言术:罚]在黄轮和蓝轮下转换成[静]和[佑],只要宏

Code(c):

1:#showtooltip

2:/cast 圣言术:罚

就能自动根据轮的颜色转换技能,但因为这是[罚]被单向地替代,反过来如果宏里写[静]或[佑],在红轮下就会放不出技能。

2)双向的等价,[基础技能]和[替代技能]是完全等价的,就如同一个技能,任何情况下用宏施放任意一个技能的结果都是放出当前激活的那一个。比如[腐蚀术]和[献祭]两者,SS玩家可以分别在不同天赋下试试。

这种机制对于写宏非常有利,我们不需要为了技能被替换而另开一个宏。更深入的一点,以下两个技能需要重点提及:

Code(c):

1:#showtooltip

2:/cast 秘法炸弹

3:--这个技能对应法师75级天赋中的[虚空风暴],[寒冰炸弹]和[活动炸弹]。[秘法炸弹]被单向替代。

Code(c):

1:#showtooltip

2:/cast 神圣爆发

3:--这个技能对应牧师90级天赋,也是单向替代。

如果其他职业也有类似的天赋基础技能,请欢迎补充。

二,写宏的灵魂:逻辑和优先级

笔者和自己圈子里的很多人说过,写宏其实和编程没多大关系,需要的是一点数学的逻辑思维。尤其是那些技能整合宏,对在各种判断条件下到底哪一个技能才是优先的必须心里有谱。

实际上这是上文中法则一之<2>的推演,本质上仍旧是按照越优先越靠前的方式排列整个技能和判断序列。正因如此,上文法则一才是宏最最重要的法则,而优先级正是写宏的灵魂。

Code(c):

1:#showtooltip

2:/cast [help,dead][mod:shift,help][mod:shift,@player]Soulstone;[mod]Soul 

Link;Unending Resolve

3:/targetlasttarget [help,dead]

4:--比如这个术士宏,它的逻辑等价于:

5:--如果[目标死亡且可协助]或[按住shift并且目标可协助]或[其他按住shift的情况下对自己]施放[灵魂石]

6:--否则,如果[有按下其他任何修饰键]则施放灵魂链接

7:--否则任何其他情况下放盾墙

8:--此外,如果[目标死亡且可协助]还会顺带切换回之前的目标,目的是战复后目标切回怪身上

有人可能会问,[help,dead][mod:shift,help][mod:shift,@player]这一串看不懂,为什么先来个shift修饰后面又来一个,这里就涉及到优先级的问题了。

首先[help,dead]指定了[目标死亡且可协助]的情况,它是优先级最高的,只要满足这两个条件,其他任何条件不管满足不满足都会战复目标。

其次,[mod:shift,help]这一判断代表[按住shift并且目标可协助],但是它还有个隐藏条件。因为要判断到这一层,首先必须前者[help,dead]为假,也就是当[目标不可协助或者目标不死]的情况。

所以其实这个判断应该是[(目标不可协助或者目标不死)并且按住shift并且目标可协助],由于不可协助和可协助互斥,所以实际判断的真值应该是[目标不死并且按住shift并且目标可协助],满足这个条件,对目标放灵魂石。

再次,[mod:shift,@player],这里只用了一个判断即shift修饰,上文说过@player不是判断条件。但因为前一个判断已经有一种按下shift的情况被取走了,那么这里的判断表示[其他按住shift的情况下对自己]施放灵魂石。

然后,[mod]是个广义的修饰键判断,当alt/shift/ctrl中任何一个或多个被按下是都为true。当然shift在前面的判断中被取走,那么这里表示的是[按下alt/ctrl中任何一个或两个],他等同于[有按下其他任何修饰键]则施放灵魂链接。

最后,无尽决心没有任何判断,它是恒真的。也就是在其他任何条件下都会施放无尽决心。

上面这个例子有些复杂,下面会通过一个相对简单的实例来阐述如何运用这种模式写宏。

法师法术反制及焦点反制/悬停解诅咒整合宏

要求是:焦点可攻击按住任何修饰键都是焦点反制,不按修饰键且敌对目标是对目标反制,鼠标悬停到友善目标是解诅咒,目标是友善目标是解诅咒,默认状况下是对目标的反制。

首先就是厘清优先级。

那么整理之后的优先级就是:

第一优先级:焦点反制敌对目标,判断式[mod,@focus,exists,harm]

第二优先级:悬停解可协助目标诅咒,判断式[@mouseover,exists,help]

第三优先级:对友善目标解诅咒,判断式[help]

第四优先级:敌对目标反制,判断式[harm]

第五优先级:反制,无判断式(恒真)

要注意,harm和help有关系,但并不是help=noharm或者harm=nohelp。harm代表目标可攻击,help代表目标可协助(能给他加血上buff等),此外还有一种既不能攻击也不能协助的状态,称为"被动(Passive)"。

现在可以直接写出宏了,那就是:

Code(c):

1:#showtooltip

2:/cast [mod,@focus,exists,harm]法术反制;[@mouseover,exists,help][help]解除诅咒;[harm]法术反制;法术反制

3:--第一行的#showtooltip不是命令行,它的作用是能在鼠标提示上显示技能的有关信息

这个宏运作起来是符合要求的,但是可以继续优化。从逻辑上而言,第四与第五优先级可以合并,而且exists没必要与harm和help连用。因此最终的宏是:

Code(c):

1:#showtooltip

2:/cast [mod,@focus,harm]法术反制;[@mouseover,help][help]解除诅咒;法术反制

扩展资料:

常用宏模板:

1治疗/伤害技能混合宏,附带指向施法,或者用于解buff和攻击性技能组合:

Code(c):

1:#showtooltip

2:/cast [@mouseover,help]治疗技能;[harm]攻击技能;治疗技能

2 治疗指向宏,无指向对目标:

Code(c):

1:#showtooltip

2:/cast [@mouseover,help][]治疗技能

3 经典的修饰键整合宏:

Code(c):

1:#showtooltip

2:/cast [mod]技能1;技能2

或者更多的技能:

Code(c):

1:#showtooltip

2:/cast [mod:shift]技能1;[mod:ctrl]技能2;[mod]技能3;技能4

4 翻页宏:

Code(c):

1:#showtooltip

2:/cast 技能

3:/changeactionbar n

这个宏最近已经被玩坏了,n可取1-6。

5 花式宏,双修饰键/三修饰键判断:

Code(c):

1:#showtooltip

2:/cast [mod:alt,mod:ctrl,mod:shift]技能

按照需要自己整合,就是这个套路。

6 花式用法:

拆分1+alt和alt+1(按键顺序)。

1+alt指的是先按住1然后不放去按alt,保持alt松开1(此时放技能),最后松开alt。

这个用法需要关闭界面设置中的点击施法选项。

按键绑定中绑定alt+1,在这个动作按钮上放技能1

建立一个宏

Code(c):

1:#showtooltip

2:/cast [mod]技能2;技能3

把这个宏放到键1上。

其结果就是alt+1放出技能1,1+alt放出技能2,直接按1是技能3。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4083757.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-14
下一篇2024-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存