首页 > 且听风吟 > LazyScript教程-判断条件
2023
11-19

LazyScript教程-判断条件

判断条件列表
========
为技能施放附加判断条件。必须满足所有条件才会施放技能。每个技能和判断条件一行,顺序从上到下,施放满足判断条件的技能。

大括号({})内的多个值需要选择一个或多个,如果选择多个,请用英文逗号(,)隔开(例如ifRace=Human,Gnome)判断条件满足任意一个即可(人类或侏儒都可以)。如果选择多个并使用了“Not”(例如ifNotRace=Human,Gnome),判断条件必须两个都不是才会执行(既不是人类也不是侏儒才可以)。中括号([])表示该值是可选的。不要在脚本中保留大括号或中括号。

动作判断条件:
----------------

-everyXXs											--每隔X秒(X秒内只执行一次)
-if[Not]{Ctrl,Alt,Shift}Down 			--判断按键是否按下(Ctrl,Alt,Shift),注意使用此判断条件时,不能在游戏内将Ctrl/Alt/Shift键绑定技能,注1
-if[Not]Cooldown{<,>}XXs={action1,action2,...}		--判断技能冷却时间
-if[Not]CurrentAction[=action1,action2,...]			--当前读条技能
-if[Not]GlobalCooldown 					--判断GCD,判断方式见注8
-if[Not]History{<,=,>}XX=action						--已使用过的技能
-if[Not]HistoryCount{<,=,>}XX=action				--技能使用次数
-if[Not]LastAction=action							--最近使用的技能
-if[Not]LastUsed>XXs=action 				--在X秒内使用过该技能,计时规则见注10
-if[Not]InCooldown={action1,action2,...}			--技能冷却中
-if[Not]InRange={action1,action2,...} 			--技能在施法距离内,注2
-if[Not]Timer>XXs=action 					--在X秒内未使用过该技能,计时规则见注10
-if[Not]Usable={action1,action2,...} 			--技能可用,注7

攻击判断条件:
----------------

-if[Not]BehindAttackJustFailed[X[.Y]s] 	 --背后攻击失败(背刺时在目标正面),默认时间为0.3秒。注3
-if[Not]InFrontAttackJustFailed[X[.Y]s] 	 --正面攻击失败(凿击时在目标背面),默认时间为0.3秒。注3
-if[Not]OutdoorsAttackJustFailed[X[.Y]s] 	 --户外技能失败(小德缠绕,旅行形态),默认时间为0.3秒。注3
-if[Not]Casting --施法读条
-if[Not]Channelling --引导法术引导中
-if[Not]Shooting --自动射击
-if[Not]Wanding --魔杖射击

Buff/Debuff判断条件:
-------------------------

-if[Not]{Buff,Debuff}Duration{<,>}XXs={buff1,buff2,...} (player only) --buff/debuff持续时间(只能判断玩家本身)
-if[Not]{Buff,Debuff}TitleDuration{<,>}XXs={buffTitle1,buffTitle2,...} 	 --不在列表中的buff/debuff持续时间(只能判断玩家本身),注4
-if[Not][<UnitId>]Has{Buff,Debuff}[{<,=,>}XX]={buff1,buff2,...} 	 --(宠物、目标、目标的目标等)是否有buff/debuff,注5、注9
-if[Not][<UnitId>]Has{Buff,Debuff}Title[{<,=,>}XX]={buffTitle1,buffTitle2,...} 	 --(宠物、目标、目标的目标等)是否有不在列表中的buff/debuff,注4、注5、注9
-if[Not][<UnitId>]Is={Asleep, Bleeding, CCd, Charmed, Cursed, Diseased, Disoriented, Dotted, Drinking, Eating, Feared, Immobile, Incapacitated, Magicked, Poisoned, Polymorphed, Slowed, Stunned, Stung} 	 --状态(沉睡,流血,CCd,魅惑,诅咒,疾病,迷惑,Dot,喝水,食物,恐惧,定身,瘫痪,魔法,中毒,变形,减速,昏迷),注9
-if[Not]{MainHand, OffHand}Buffed --主副手武器临时buff(磨刀石、上毒、涂油)

物品判断条件:
----------------

-if[Not]ItemCooldown{<,>}XXs={item1,item2,...} --物品冷却时间
-if[Not]ItemInCooldown={item1,item2,...} --物品冷却中

玩家判断条件:
----------------

-if[Not]Dueling --决斗中
-if[Not]Equipped=item --是否装备物品
-if[Not]Ganked --被PPPVP
-if[Not]InGroup (party or raid) --在队伍(团队)中
-if[Not]InInstance --在副本中
-if[Not]InBattleground --在战场
-if[Not]InRaid --在团队中
-if[Not]Mounted --骑上坐骑
-if[Not]Shadowmelded --影遁中
-if[Not]Tracking={Herbs, Minerals, Treasure} --追踪草药,矿物,财宝
-if[{<,=,>}]XAttackers (PvP only) --N个敌人攻击玩家(仅PVP)
-if[Not]Zone=zonename

宠物判断条件:
----------------

-if[Not]HasPet --已有宠物
-if[Not]PetAlive --宠物存活
-if[Not]Pet{Attacking, Following, Staying, Aggressive, Defensive, Passive} --宠物状态(攻击,跟随,停留,主动型,防御型,被动型)
-if[Not]PetFamily={Bat, Bear, Boar, Carrion Bird, Cat, Crab, Crocolisk, Doomguard, Felhunter, Gorilla, Hyena, Imp, Infernal, Owl, Raptor, Scorpid, Spider, Succubus, Tallstrider, Turtle, Voidwalker, Windserpent, Wolf} --宠物类型(蝙蝠、熊、猪、食腐鸟、猫、螃蟹、鳄鱼、末日守卫、恶魔猎手、猩猩、鬣狗、小鬼、地狱火、猫头鹰、迅猛龙、蝎子、蜘蛛、魅魔、陆行鸟、乌龟、虚空行者、风蛇、狼)
-if[Not]PetName=name --宠物名字

玩家、宠物、目标判断条件:
------------------------------

-if[Not]{[Player],Target}{Blocked, Dodged, Parried, Resisted}[{<,>}XX.XXs] 	 --玩家,目标格挡,闪避,招架,抵抗,默认 <5s,注11
-if[Not]{[Player],Target}FlaggedPVP --PVP状态
-if[Not]{[Player],Target}FlagRunner --战歌旗手
-if[Not]{[Player],Pet,Target}InCombat --战斗中
-if[<UnitId>]{<,=,>}XX[%]{hp,mana/energy/rage/focus}[Deficit] 	 --状态(血量,法力,能量,怒气,集中值),注9
-if[Not]{[Player],Target}Race={Human, Night Elf, Gnome, Dwarf, Orc, Scourge/Undead, Tauren, Troll} --玩家,目标种族(人类,暗夜精灵,侏儒,矮人,兽人,亡灵,牛头人,巨魔)

目标判断条件:
----------------

-if[Not]CanDebuff --可以上Debuff
-if[Not]HaveTarget --有目标
-if[Not]TargetAlive --目标存活
-if[Not]TargetAttackable --目标可以被攻击
-if[Not]TargetBoss --目标是Boss
-if[Not]TargetClass={Druid, Hunter, Mage, Paladin, Priest, Rogue, Shaman, Warlock, Warrior} --目标职业(德鲁伊、猎人、法师、圣骑士、牧师、盗贼、萨满、术士、战士)
-if[Not]TargetElite --目标是精英怪
-if[Not]TargetEnemy --目标是敌人
-if[Not]TargetFleeing (NPC only) --目标逃跑(仅NPC)
-if[Not]TargetFriend --目标友善
-if[Not]TargetHasTarget --目标有目标
-if[Not]TargetHostile --目标敌对
-if[Not]TargetIsCasting[={name regex,FIRE,FROST,NATURE,SHADOW,ARCANE,HOLY}] --目标施法中(技能全称,火,冰,自然,暗影,奥术,神圣)
-if[Not]TargetImmune[=action] --目标免疫技能
-if[Not]TargetInBlindRange (Within 10 yards) --目标在致盲距离(10码内)
-if[Not]TargetInLongRange (Within 28 yards) --目标在28码内
-if[Not]TargetInMediumRange (Within 10 yards) --目标在10码内
-if[Not]TargetInMeleeRange 		 --目标在近战距离,注6
-if[Not]TargetLevel{<,=,>}XX (Does not work for bosses) --目标等级(对Boss无效)
-if[Not]TargetMyLevel{<,=,>}{plus,minus}XX (Does not work for bosses) --目标与玩家等级差距(对Boss无效)
-if[Not]TargetNamed={regex1,regex2,...} --目标名字
-if[Not]TargetNPC --目标是NPC
-if[Not]TargetOfTarget --目标的目标
-if[Not]TargetOfTargetClass={Druid, Hunter, Mage, Paladin, Priest, Rogue, Shaman, Warlock, Warrior} --目标的目标职业(德鲁伊、猎人、法师、圣骑士、牧师、盗贼、萨满、术士、战士)
-if[Not]TargetTrivial --目标是菜鸡
-if[Not]TargetType={Beast, Critter, Demon, Dragonkin, Elemental, Humanoid, Undead} --目标类型(野兽、小动物、恶魔、龙类、元素、人形、亡灵)
-ifTimeToDeath{<,=,>}XXs --X秒内死亡

**注1**:要使用-if{Ctrl,Alt,Shift}Down,不能在游戏内将Ctrl/Alt/Shift键绑定技能,否则游戏将拦截该键,LazyScript无法判断。

**注2**:-if[Not]InRange={action1,action2,...}一定要使用-if[Not]TargetFriend来辅助判断,如果目标不是技能的有效目标(给敌对boss上buff,对友方目标使用伤害技能),也会判断为满足条件(true)。

**注3**: 在X.Y秒内,默认为0.3秒,一般用默认值。

**注4**: 不在列表中buff/debuff要写全称。

**注5**: XX指buff/debuff层数,如-ifTargetHasDebuff<5=sunder

**注6**: 乌龟服和N服,该判断条件仅盗贼(邪恶攻击)、德鲁伊(低吼)、猎人(摔绊)和战士(撕裂)四个职业对敌对目标情况下有效。

**注7**: ifUsable调用API的IsUsableAction函数,不检查技能冷却或技能范围。

**注8**:ifGlobalCooldown需要通过特定的技能来判断。你需要把该技能拖到动作栏来检查GCD。每个职业对应技能如下(均为初始技能或2级学习技能):
盗贼:邪恶攻击
德鲁伊:野性印记
猎人:追踪野兽
牧师:真言术:韧
战士:战斗怒吼
法师:冰甲术
术士:恶魔皮肤
萨满:石化武器
圣骑士:正义圣印

**注9**:<UnitId>可以是任何有效的UnitId序列,见<https://wowpedia.fandom.com/wiki/UnitId>。如:player,pet,target,targettarget。首字母大写并不重要。

**注10**:ifLastUsed计时规则:开始战斗或改变目标后使用该技能。ifTimer计时规则,开始战斗或改变目标后XX秒,第一次施放该技能。

**注11**: 此判断条件仅检测完全格挡和抵抗。部分格挡或抵抗(“菜鸡击中你造成100点伤害(90点被格挡)。”)玩家或目标均不满足此判断条件。

觉得文章有用,微信打赏一元。



LazyScript教程-判断条件》有 3 条评论

  1. STOP 说:

    请问风神,平砍的英文简称是哪个呢?

  2. 风神 说:

    不用,-ifTargetOfTarget只能判断是不是玩家

  3. 二师兄 说:

    请问可以判断目标的目标是否是自己吗?
    -ifTargetOfTarget=player
    可以这样写吗?

留下一个回复

你的email不会被公开。