ADDJ2017 发表于 2024-8-17 23:05:00

[插件/宏/WA分享] 关于营救宏的机制详解,以及一些示例分享

1. 基础
与一般的治疗技能不同,营救的基础使用方式:先点击选择地点,(无目标时)再点击选择目标单位。
在符合目前的治疗习惯,不提前选择目标的情况下,减少操作步骤有两个基本方向:鼠标指向选择单位(自动选择地点),或者鼠标指向选择地点(自动选择单位)。

2. 关于地点选择

[*]使用 /cast [@cursor]营救,可以自动选择鼠标指向的地点。当存在目标时,会直接对目标施放;不存在目标时,会进入点选目标单位状态。
[*]使用 /cast [@player]营救,可以自动选择玩家自身所在的地点。但与上面不同,无论是否存在目标,都会进入点选目标单位的状态。



[*]注:这可能是因为[@player]的双重含义,除了自身地点外,还能表示法术选择自己为目标。




3. 关于目标单位选择

[*]在/cast中使用@条件可以指定法术目标,一般搭配help和nodead条件。



[*]例如:
   

   
[*]/cast [@mouseover,help,nodead][]营救 - 对鼠标指向单位/当前目标施放,无目标时进入点选状态
   
[*]/cast [@focus,help,nodead]营救 - 对焦点施放
   
[*]/cast [@嘉里克船长,help,nodead]营救 - 对指定名字的目标施放
   


[*]局限性:与[@cursor]和[@player]无法共存,执行后会进入手动点选地点状态。


[*]在营救命令前使用/target命令选择目标。存在目标时,后续的[@cursor]即可对目标施放。



[*]例如:在/cast [@cursor]营救之前使用命令/target [@focus],就会先将焦点单位选为目标,然后自动对其施放。

[*]局限性:如2.2所说,[@player]在有目标的情况下仍然需要手动点选,此时先选目标没有效果。


[*]在等待手动点选目标单位的状态下,使用/target命令,可以选择本次施放的目标单位,且不会真正改变玩家的目标。



[*]例如:使用/cast [@player]营救,会进入点选目标状态。如果在后面跟上/target [@focus],就会自动对焦点施放。

[*]局限性:如2.1所说,存在目标时[@cursor]会直接对目标施放,不会进入点选目标状态。因此如果期望的单位优先级大于当前目标,这种情况需要额外处理。




4. 其他可能用到的

[*]/stopspelltarget命令:退出点选目标状态。



[*]例如:不存在目标时,/cast [@cursor]营救会进入点选目标状态,此时后面加/stopspelltarget可以直接退出。


[*]/stopmacro命令:停止后续命令执行,可搭配条件使用。



[*]例如:/stopmacro ,执行到这行命令时如果当前目标不能营救,后续的所有命令都会跳过。


[*]/targetlasttarget、/targetlastenemy:选择上一个选中的目标/选择上一个选中的敌方目标。



[*]可用于/target指定目标施放营救后切换回之前的目标,可以根据个人习惯使用。
   

   
[*]例如:选择敌方为目标的情况下,使用宏对鼠标指向的友方单位施放营救(在宏中切换了友方为目标),结尾用/targetlasttarget,可将目标改回原本选中的敌方。
   
[*]但并非所有情况都有预想中的效果,比如鼠标指向的单位就是原本的目标时,/targetlasttarget反而会将目标更改为其他单位。
   


[*]另一种使用方式是:在/cast命令前使用/cleartarget清除目标,在/cast命令后使用/target点选想要的目标,再使用/targetlasttarget恢复最开始选择的目标。




5. 一些示例

对鼠标指向/目标单位使用,飞向自身位置 信仰飞跃,但是是物理搬运版
#showtooltip
/cast [@player]营救
/target [@mouseover,help,nodead][]
鼠标指向友方时对其施放;否则对目标施放,飞向玩家自身位置。
如果鼠标指向和目标都不存在/无效,则会进入点选目标状态。如果这种情况下想要什么都不做,不要进入点选目标状态,可以加上/stopspelltarget。



对当前目标/焦点使用,飞向鼠标指向位置 英勇飞跃,但是要抓一个幸运儿
#showtooltip
/cleartarget
/cast [@cursor]营救
/target [@focus,help,nodead]
/stopspelltarget
/targetlasttarget
第二行会清除玩家一开始的目标。第三行执行后,鼠标进入点选目标状态,第四行会根据条件和优先级点选期望的目标。第五行则恢复一开始的目标。

另一种简单的实现方式:
#showtooltip
/target [@focus,help,nodead]
/cast [@cursor]营救
这个宏逻辑更简单,更容易调试。上面那个比较复杂,不知道会不会有某种情况失效。
这个宏会改变玩家选择的目标,如果想要维持目标不变,可以加入/targetlasttarget等,局限性见上面4.2。



组合键:按住ALT则将鼠标指向/目标单位带回自身位置,否则将目标/焦点带向鼠标指向位置
#showtooltip
/cast [@player,mod:alt]营救
/target [@mouseover,help,nodead,mod:alt]
/stopspelltarget
/stopmacro

/cleartarget
/cast [@cursor]营救
/target [@focus,help,nodead]
/stopspelltarget
/targetlasttarget
其实就是之前的两个宏拼接,给第一部分加上了ALT组合键的条件,按住则执行第一部分后停止,否则执行第二部分。



取巧:对鼠标指向的目标使用,飞向目标所在地点 青翠之拥,但是要知道队友在哪
功能受限:鼠标需要指向场景中的单位。
#showtooltip
/stopmacro [@mouseover,nohelp][@mouseover,dead]
/cleartarget
/cast [@cursor]营救
/target [@mouseover,help,nodead]
/stopspelltarget
/targetlasttarget
这个宏取了个巧,既使用了鼠标指向单位,又使用了鼠标指向地点。
“目标的位置”是宏无法实现的效果,但当鼠标指向场景中的友方玩家时,鼠标所在的位置也就是目标所在的位置。
如果鼠标指向的不是场景中的玩家,而是团队框架之类的界面元素,则会将对应的目标带到框架后鼠标实际指向的场景位置。


写在后面
花了一下午,可能有测试不全面的场景,欢迎反馈。
如果发现有其他常用场景,之后也可以补充在示例里。
页: [1]
查看完整版本: [插件/宏/WA分享] 关于营救宏的机制详解,以及一些示例分享