《魔兽世界(WOW)》【心得】致本板发问者:宏/巨集的基本功能与限制(附常见问题解说)
更新时间:1232631193 | 来源:巴哈姆特
cnhrz (风凌正)
#1
2009-01-22 21:33:13
鉴于目前巨集板状况,几乎每天,甚至每个小时都会出现一些诡异的发问文,小弟在此整理一些心得。应该是不会有详尽教学,建议各位新手去看一下最起码的语法跟函式说明,别只期待别人帮你改、让你剪贴。
一开始,要说的似乎不是巨集能做什幺,而是巨集不能做什幺。(先堵住每日文了。)
首先,最基本的问题,巨集一定得按下去才能使用,巨集不可能让你设了之后就自动运作。
其次,巨集不能判断你的技能或物品冷却时间,或是否处于冷却中,也不能判断目标是否处于施放範围内。简而言之,巨集不能判断一个技能或物品是否符合使用或施放的要求。此外,巨集不能判断任何单位(即包含自身、宠物、目标、队友、目标的目标、监视目标等等一切的一切)的职业、种族、血魔量、团队图标、连击点,或者身上是否有某增减益等状态。
注:前述「不能判断」乃指「施法或使用物品」而言,实际上使用旧式脚本及函式依然可以获取前述资料,并应用在频道通报及其他不涉直接作战之动作。
最后,巨集无法同时排入相互卡冷却时间的技能或物品,这也包含共用冷却时间(GCD)。并且,绝大部分的指令都是即时完成,并不提供伫列功能。
鉴于前述,什幺「甲技能冷却中则施放乙技能」、「甲技能不能施放则施放乙技能」、「触发骤亡则施放斩杀,否则英打」、「触发热血沸腾则施放猛击,否则英打」这类的问题,麻烦就免发了!
那幺接下来,巨集能做什幺?
首先说说,巨集能提供哪些判断?包含你自身是否处于战斗中、自身骑乘中、自身游泳中、自身飞行中、自身在室内或室外、自身所处区域是否可以飞行、自身在某个姿态(如战士的战、防、狂)、自身是否在队伍或团队中、自身连结法术中、自身装备了某物品、目标友好或敌对状态、自身宠物存在、目标生死、目标存在等等,以及几个控制判断:滑鼠按键、键盘辅助键(Ctrl、Alt、Shift)、动作条页次。
接着,巨集提供哪些一般状况做不到的功能?包含顺序或随机使用物品、施放技能,以及对特定单位施放技能或使用物品,包含:自身、宠物、游标指向对象、目标、监控目标(Focus)、第几名队友或团员或他们的宠物,以及前述几项的目标。
当然,还有一些如「解除坐骑」、「选择或清除目标」、「选择或清除监控目标」之类的杂项指令,以及功能较为複杂的旧式函式,在此不多作解说。
因此,综合内建函式与判断式,我们可以写出「在战斗中施放甲技能,非战斗中施放乙技能」(用于特定技能开怪)、「左击巨集施放甲技能,右击巨集施放乙技能」、「目标友善则对目标施放,目标敌对则对目标的目标施放」(多半用于补师无脑补王的目标)、「战斗姿态冲锋,防御姿态阻扰,狂暴姿态拦截」、「放完冰脚放闪现」等功能。
先写到这,晚点再补充,出团出团……
想对巨集有更深入的了解,可以参阅藏宝箱巨集版的几篇文,那些似乎是目前比较齐全的中文教学资料。(抢巴哈生意?囧)
cnhrz (风凌正)
#2
2009-01-22 21:35:13
第二篇位子先佔起来,打算整理些常见问题,有空再补充。
语法、指令及其相关常见问题
980123:我的巨集只显示巨集名称和技能图示,有没有办法修改呢?
常在网上剪贴别人巨集可能会看到许多以「#showtooltip」为第一行的写法,这个注解就是使游标移至巨集图示时,显示技能或物品的提示。前提是你的巨集图示必须选择问号「?」。
例如一个名称为「1234」,内容为「/施放 英勇投掷」的巨集,在未设定时,游标移过仅会显示「1234」,而若在首行加入「#showtooltip」注解,则会显示第一个可施放技能或可使用物品的图示及提示,本範例则显示「英勇投掷」。
也可在「#showtooltip」后加入技能或物品名称,则可以指定巨集的图示与说明。例如:「#showtooltip 英勇打击」。这个注解支援多数合法判断式。例如「#showtooltip [help]圣光术;[harm]十字军圣击」。
此外,另有一个注解为「#show」仅显示图示,即巨集原本预设的显示方法,但可以指定技能或物品,用法与「#showtooltip」相同。
980123:巨集一定要用英文吗?
转载自:http://forum.gamer.com.tw/C.php?bsn=05219&snA=321956
其中「userandom」原作「使用者随机」,修改为「使用随机」。
使用中文指令的优点有二:
一、消弭初学者的「英文恐惧症」且增加巨集可读性。
二、魔兽世界中,无论中文、英文、特殊字母等,无论该字元佔用多少位元组,都是算一个字,简单说,所谓「255」算的是字数,而非佔用容量,什幺「中文佔两个位元组」(实际上魔兽世界用的编码是UTF-8,中文佔了三个位元组)之类的怪论根本不存在。换句话说,巨集中的「255个字元」,同样一个「施法」功能,「/cast」佔用五个字元,而「/施放」仅佔用三个字元。结论就是:中文指令比较省。
然而,每次改版,由不同包商作中文翻译,此部份或会变成不同的指令,此点需要注意。
英文指令 |
中文指令 |
/stopmacro |
/关闭巨集 |
/cast |
/施放
/法术 |
/castrandom |
/随机施法 |
/castsequence |
/连续施法 |
/use |
/使用 |
/userandom |
/使用随机 |
/script
/run |
/脚本
/跑 |
/startattack |
/开始攻击 |
/stopattack |
/停止攻击 |
/stopcasting |
/停止施法
/停止射击 |
/petattack |
/宠物攻击 |
/petfollow |
/宠物跟随 |
/petstay |
/宠物停留 |
/petaggressive |
/宠物攻击型 |
/petdefensive |
/宠物防御型 |
/petpassive |
/宠物被动型 |
/petautocaston |
/开启宠物自动施法 |
/petautocastoff |
/关闭宠物自动施法 |
/petautocasttoggle |
/切换宠物自动施法 |
/focus |
/专注目标 |
/clearfocus |
/清除专注目标 |
/target
/tar |
/目标 |
/cleartarget |
/清除目标 |
/targetexact |
/选定指定目标 |
/targetlasttarget |
/选定前一目标 |
/targetenemy |
/目标敌人 |
/targetlastenemy |
/选定前一敌人 |
/targetexact |
/选定指定目标 |
/assist
/a |
? |
/cancelform |
/取消形态 |
/cancelaura |
/取消光环 |
/equip
/eq |
/装备 |
/equipslot |
/装备栏位 |
/changeactionbar |
/改变快捷列 |
/swapactionbar |
/切换快捷列 |
/console |
/控制台 |
/dismount |
/下马 |
/targetenemyplayer |
/选定敌方玩家 |
/targetfriendplayer |
/选定友方玩家 |
/stopwatch |
/码錶 |
/sw
/timer |
/计时 |
980207:指令判断条件的一些附加说明
help:单位为友好。必须是「可施放增益」的单位。即可被玩家施放一般增益法术,如战吼、王者等。
harm:单位为敌对。必须是「可攻击」的单位,而非以关係程度区分。比如一般小动物、黄字中立单位,都会被判定为真;而女王的妹妹之于部落(达拉然那位,红字敌对,不可攻击),则会被判定为假。
flyable:可飞行。此功能不能判断自身是否达到飞行条件(如骑术、北域的寒冷飞行等),仅仅判断所处是否可以飞行,如北域、外域可以飞行,而艾泽拉斯的东部与卡林多无法飞行。不能判断子地区,比如冬握湖、达拉然等禁飞区,flyable依旧会被判定为真。
exists:单位存在。此条件在help、harm、dead等单位相关判断为真时,必然也为真,因此时常可以省略。(当你能够判定一个单位为友好、仇恨或者死亡时,该单位必然也就存在。)
stealth:潜行。实际上亦可以应用在隐形术以及夜精灵的影遁等大多数隐身技能上。
980216:循环施放的「reset=N」秒数是从什幺时候开始算?
常有玩家误会这是从「第一个施法后」开始计算,实际上却是依「最后一次启用该巨集」开始算,也就是说,此法不能用来準确的判定技能或物品的冷却时间。
980219:开篇说巨集没有排程伫列功能?那/in是什幺?
是的,「/in」就是一种排程伫列功能(必须安装插件,许多使用ACE库的插件都有提供),使用方法是:「/in N /指令」,「N」代表等待秒数,后面则可接其他指令,例如「/in 6 /rw 测试」即是六秒后于团队警告频道发布「测试」的讯息。
然而,「/in」只能接受聊天指令,不可能用以施法或使用物品,因此通常仅用来倒数、喊话,还请各位想用偷吃步的板友节哀。
980306:空与不空?谈谈空格。
在指令的参数、条件上,空与不空十分随意,比如后列两个巨集都可被接受并执行:
- /施放 [help]圣光术;光明审判
- /施放 [help] 圣光术; 光明审判
如此空格只是为了视觉上的方便,并非必要。原则上,只有指令与参数间的空格为必须,也就是本例标示红色处,条件与参数间、条件与条件间,或以逗号、分号分隔的参数间,则可有可无。
980528:技能名称的夹注号
巨集引擎会把技能名称分成两个部份:技能名称、技能等级。
分法是把最后一个半形夹注号「()」当成等级,没有夹注号,或者夹注号内为空,则施放最高等级。
因此,以「精灵之火(野性)」为例,其中的「(野性)」会被当成「技能等级」,可是实际上,没有这个等级,因此也就无法施放。必须在后面放一个空夹注号,或者在后面放上「(等级 X)」,告诉巨集引擎,后面的才是「技能等级」,而「精灵之火(野性)」这整串则是「技能名称」。
/施放 精灵之火(野性)()
常见应用问题
980205:技能喊话?开怪喊话?
其实大家在游戏中看到的喊话,有九成九是CastYeller这个插件的效果,而非巨集功能。如果非得要用巨集的话。两个内建变数提供参考:「%T」与「%F」,前者为目标的名字,后者为专注目标的名字。
实际使用方式为:
/施放 射击
/y 我对「%T」做了OOXX(羞),大家快轮着上!
如果你的目标名叫「缝补者」则会出现:「我对『缝补者』做了OOXX(羞),大家快轮着上!」的讯息,「%F」应用方式相同。「/y」则为喊话频道,常用的有:
- /s:说
- /y:大喊
- /p:队伍
- /ra:团队
- /rw:团队警告
- /bg:战场
- /em:表情
- /g:公会
- /w:密语
- /频道编号:其他频道
- /c 频道名称:其他频道
980207——如何施放宠物技能?
看到板友询问如何施放宠物技能。其实非常简单,只要使用「/cast」或其中文指令「/施放」即可,与玩家技能一模一样,不用使用其他指令或参数。其实仔细观察可以发现,玻璃渣在设计宠物技能时,绝对不会出现与玩家技能同名的,以避免混用。(不过中文翻译包商可能会出包……)
cnhrz (风凌正)
#3
2009-01-24 02:46:28
首先补充一下,单纯「判定」这部份是可以的,比如UnitCreatureType()等函式,但「应用」方面则有诸多限制,至少施法部份就打死了。如楼上几位所述,「CastSpellByName()」函式确实已经被锁很久。
至于楼上说「确定可以」,小弟刚刚去实测了一下,发现CastSpellByName()仅能在「追蹤类」技能上生效,其余技能一概不可。不确定是漏洞还是暴雪原本就如此设定。
其他如果没有安装什幺「不该用的插件」,应该是会跳出「巨集指令被Blizzard UI有效动作封锁」的提示。
小弟有空再整理一下旧式脚本与函式的资料,至于2.0新版巨集指令,可以参阅第一篇底部的连结。
-
精彩推荐
- Wonderful recommendation
更多
-
-
...
发布时间:2020-09-29
-
-
...
发布时间:2020-09-28
-
-
...
发布时间:2020-11-24
-
-
...
发布时间:2020-10-07
-
-
...
发布时间:2020-09-29
-
-
...
发布时间:2020-10-26
-
-
...
发布时间:2020-10-07
-
专题推荐
- Special Recommend
更多