概述
====
LazyScript是魔兽世界的一种脚本语言,它能够在指定的条件下施放某些技能或能力。这是通过编写一个“脚本”来实现的,该脚本由一系列技能和判断条件组成。当LazyScript宏运行时,LazyScript插件将从上到下读取技能和判断条件列表,直到找到一个满足判断条件的技能,然后使用该技能。
任何一行都可以通过在最前面添加“--”“//”或者“#”号,来注释掉本行,跳过不用执行。
教程1:入门
========
例如,让我们让LazyScript执行施放邪恶攻击。首先请在“动作”选项卡中查看“邪恶攻击”的简称。可以查到它是“ss”。现在点击小地图上的LazyScript图标打开菜单,从中选择“创建脚本”。给你的脚本起一个类似“战斗贼一键”的名字,然后键入:
ss
单击“测试Test”按钮。如果一切正常,没有写错,聊天框中会提示“测试完成。”。如果出错了,聊天框中会提示错误原因。如果一切正常,请单击“OK”按钮。现在,你应该可以在LazyScript minimap菜单中看到脚本“战斗贼一键”,左键点击“战斗贼一键”将其设置为默认值,此时一个打勾标记应该出现在小地图菜单上的“战斗贼一键”旁边。 现在在游戏中创建一个宏,名称叫“一键输出”,内容为:
/lazyscript
然后将宏拖到动作栏。同时将最高级的“邪恶攻击”拖到任意动作栏,现在就设置完成了。猛按“一键输出”宏,LazyScript将自动施放邪恶攻击。
教程2:进阶
========
“这和普通的宏也没啥区别”。别急,强力的在后面。现在把“反击”这种不是一直可以用的技能加进来。反击的优先级远高于邪恶攻击,但反击不是一直可用的。编辑“战斗贼一键”并在邪恶攻击前添加反击,就像这样:
riposte ss
把反击拖到你的动作栏上。现在,当你猛按“一键输出”宏时,平时LazyScript将施放邪恶攻击,当你招架后LazyScript将施放反击。最重要的是,不会像普通的自制宏那样提示“该技能无法使用”。
教程3:判断条件
===========
LazyScript最有用的特性之一是能够判断条件施放技能。例如你只想在目标施法时使用脚踢,在“判断条件”选项卡中,我们注意到有一个条件“-if[Not]TargetIsCasting”和其他一些看起来很复杂的东西。不用管它,只需要使用“-ifTargetIsCasting”。打断施法比使用反击更重要,因此编辑“战斗贼一键”并将其更改为:
kick-ifTargetIsCasting riposte ss
现在LazyScript只会在目标施法时使用脚踢。“但要是我只想打断火系魔法呢?”好吧,继续编辑“战斗贼一键”并将其更改为:
kick-ifTargetIsCasting=FIRE riposte ss
“如果我想打断火系和冰系魔法怎么办?”将“战斗贼一键”更改为:
kick-ifTargetIsCasting=FIRE,FROST riposte ss
“我很强力,MC毕业,最烦的就是治疗,就打德,就打德”可以打断某个法术,只需使用正确的技能全称即可(英文版没问题,汉化版待验证)。
kick-ifTargetIsCasting=Heal,Greater Heal riposte ss
教程4:再复杂也只需一键
================
你可能会遇到的最复杂的判断条件是buff/debuff问题。它们非常复杂,需要根据具体情况来判断。比如,你只想在没有切割buff时补切割,首先检查“Buff/Debuff”选项卡,找出切割的Buff/Debuff简称。它是“snd”,因此在脚本中添加一行:
snd-ifNotPlayerHasBuff=snd
如果你只想在目标没有割裂时使用割裂:
rupture-ifNotTargetHasDebuff=rupture
“为什么我在buff/debuff列表中没有找到某某技能?”虽然我们尽可能地完善职业技能,但如果要列出游戏中的所有buff,那将消耗过多内存。如果buff/debuff不在列表中,可以使用buff全称来判断:
echo=w00t-ifPlayerHasBuffTitle=屠龙者的咆哮
“我的坦克是个大水货,3破开打才能不OT。LazyScript能帮帮我吗?”LazyScript可以检查buff/debuff层数,你可以在脚本开头添加类似内容:
stopAll-ifTargetHasDebuff<3=sunder
教程5:组合技
=========
现在你可能已经注意到,在“动作”选项卡上的一些技能是绿色。希望您已经看了帮助并知道这些技能没有GCD。你可以组合任意数量的无GCD技能与最多一个有GCD技能到一行中,LazyScript会按顺序施放它们。例如,冷血剔骨,并宣告死亡:
coldBlood-evisc-sayInSay=DIE!-ifCbKillShot
这里还有几个例子
huntersMark-petAttack judge-sealCommand innerFocus-greaterHeal
教程6:脚本复用
===========
现在,你已经写了一些脚本,并且内容越来越多。如果它们包含相同的部分,你可以将该部分分离到另一个脚本中,并使用includeForm将其包含在其他脚本中。例如:
脚本“打断”:
kick-ifTargetIsCasting-ifNotTargetIs=Stunned gouge-ifTargetIsCasting-ifNotInFrontAttackJustFailed-ifNotTargetIs=Stunned ks-ifTargetIsCasting=Greater Heal,Prayer of Healing,Healing Touch,Holy Light,Healing Wave,Chain Heal-ifNotTargetIs=Stunned blind-ifTargetIsCasting=Greater Heal,Prayer of Healing,Healing Touch,Holy Light,Healing Wave,Chain Heal-ifNotTargetIs=Stunned
脚本“战斗剑”:
includeForm=打断 riposte evisc-5cp ss
脚本“战匕”:
includeForm=打断 evisc-5cp bs
这样就可以将脚本“打断”的内容加入脚本“战斗剑”和“战匕”的最前面,相当于你将整个脚本复制粘贴进去了。当你修改更改脚本“打断”的内容时,它将自动更新“战斗剑”和“战匕”。
注意:请注意不要自我复用脚本(A包含A),或者循环复用脚本(A包含B包括A)。这些将产生无限递归循环,导致堆栈溢出错误。
现在,您可能有一些只希望在某些条件下执行的操作,但不希望每次按下LazyScript快捷键都要检查整个脚本。我们看一下前面的例子,可以看到,“ifTargetIsCasting”是“打断”脚本中所有操作的判断条件,我们可以使用callForm重写前面的例子:
脚本“打断”:
kick gouge-ifNotInFrontAttackJustFailed ks-ifTargetIsCasting=Greater Heal,Prayer of Healing,Healing Touch,Holy Light,Healing Wave,Chain Heal blind-ifTargetIsCasting=Greater Heal,Prayer of Healing,Healing Touch,Holy Light,Healing Wave,Chain Heal
脚本“战斗剑”:
callForm=打断-ifTargetIsCasting-ifNotTargetIs=Stunned riposte evisc-5cp ss
脚本“战匕”:
callForm=打断-ifTargetIsCasting-ifNotTargetIs=Stunned evisc-5cp bs
有了这些变化,当你执行“战斗剑”或“战匕”时,仅当目标正在施法且没有昏迷时,才会调用“打断”脚本。当目标没有施法时,不会调用任何“打断”脚本内容,提升脚本运行效率。
- 本文固定链接: https://www.fengshen.cn/2023/10/lazyscript教程-从入坑到挖坑/gameofwind/
- 转载请注明: fengshen 发表于 Dream of Wind | 一梦风神

游戏内lazyscript插件自带的帮助页面。
怎么查看buff/debuff选项卡