脚本是一个强大的工具,它按照LUA语言的语法执行,利用客户端提供的接口可以产生强大的智能。所以玻璃渣就给它加了限制,防止它被滥用而影响游戏平衡性。我之所以要先讲脚本的限制,为的是让大家对它别抱太大希望。虽然脚本还是很有用,但是不能用来施法、使用物品、改换技能栏或改变当前目标。这些功能只能依靠那些“安全化”的命令来实现。
魔兽世界客户端的用户界面是可以通过LUA脚本控制的。通过/run和/script命令就可以执行脚本(我个人推荐使用/run,节省字符数……)。在命令后面书写脚本内容,中间不能换行。不过一个宏中可以包含多个/run命令。
过多关于LUA语言和编程的内容本文就不再赘述。如果你有一定的编程经验,那么就可以访问lua.org学习LUA语言。如果没有什么基础,那么请先看《编程入门》了解一些基本概念。
玻璃渣提供了很多API函数(Application Programming Interface),可以在LUA脚本中调用来实现对界面的控制。关于API函数和相关的内容可以看看这篇文章:《界面DIY》(如果你打算花时间好好研究魔兽世界插件的话,WoWWiki是最优选择)。我不可能把所有关于用户界面的细节都讲到,因此我只打算用我最常用的一个宏做例子,简单地讲一下。想了解得可以看上面给出的链接,或者这里:《Mod Author Resources sticky》。
下面这个宏是我给出的例子,它会向所有和你目标相同的人发送悄悄话,通知他们改变目标(我的插件CCWarn也是就是基于这段代码的)。这样就可以防止已被羊的人受到攻击。
/cast 变形术
/run for i=1,GetNumRaidMembers()-1 do local u,t="raid"..i,"target"if UnitIsUnit(u..t,t)then SendChatMessage("Change targets! Trying to sheep...","WHISPER",nil,UnitName(u))end end
呃……貌似看起来有些乱……不过没办法……首先,宏是有255字符数限制的,所以常常要用一些不美观的方式去写代码。其次,脚本要写在一行中。这两个条件导致代码的可读性很低。如果把代码单独拿出来美化一下的话,应该是这个样子:
for i = 1, GetNumRaidMembers() - 1 do
local unit = "raid"..i
if UnitIsUnit(unit.."target", "target") then
SendChatMessage("Change targets! Trying to sheep...", "WHISPER", nil, UnitName(unit))
end
end