魔兽世界插件编程解析(一)

魔兽世界中的插件是文本和多媒体文件的集合。这些文件与元数据一起进行封装并在客户端加载。实际上我们使用的插件还添加了一些脚本和媒介来扩展客户端提供的核心功能。
想要在游戏中加载和应用一个插件,你需要把它放在魔兽世界的特定安装子目录中。如果你已经加载过一个游戏,就会生成一个名为Interface的子目录,在这个目录中含有一个AddOns目录,可以用来存放你的插件。
暴雪的插件只有在客户端有需求时才会加载。以拍卖行用户界面为例,只有玩家访问拍卖师时,游戏才会加载Blizzard_AuctionUI插件。这样可以加快加载速度。
每个Blizzard插件在它的目录中都有一个以.pub为扩展名到唯一的文件。每一个自定义插件都会被保存在Blizzard插件相同的目录中,它们的组成部分都放在一个由插件命名的单独的子目录中。这些目录的命名和系统创建文件的位置不同。和Blizzard不同的是每一个自定义插件的目录都包含了使用和加载插件的所有必要文件。因此你将有不同种类的文件,不同的插件组织方式,和不同的命名习惯。
以##开头的行包含了一些与各种元数据有关的指令。
1.## Title: MyAddonName
插件选择窗口中列出的插件是通过它们的##Title指令进行分类和显示的,而不是它们的TOC文件和目录。默认的选项值就是插件目录的名字。这种指令可以被本地化,就是说它可以根据用户客户端设置的显示语言来设置不同的文本。
2.##Notes:这是对MyAddonName的描述
Notes指令可以对你的插件提供一个详细的描述,这样用户就可以很清楚的知道它应该做什么,哪里可以获得更多的信息。这个域也可以按照客户端所在的地方进行本地化。和## Title一样,这个域可以包含颜色代码来突出显示部分文本。
3.##Dependencies和##RequiredDeps:AddonA,AddonB
有时一个插件需要另一个插件的功能。例如只有用户运行一个特殊的slash命令后才会加载一个配置界面。##Dependencies指令给出了一个插件列表,只有在给出的所有有从属关系的插件已经被加载或者可以被加载时,游戏客户端才能加载这个插件。 如果在插件选择窗口中,一个插件有一个不可用的从属插件,屏幕上就会显示出错误指令。把鼠标移动到插件名字上就可以查看插件从属列表和缺失插件。从属关系还可以保证插件按照一定的次序加载。
4.##OptionalDeps:AddonA,AddonB
若一个插件和另一个插件有交互,但又不需要把它作为硬从属,就可以使用##OptionalDeps指令把它放置在可选从属列表中。如果加载的从属插件可用并且存在,这些指令就要保证他们之间加载的次序关系,插件的名字用逗号分隔,同时还必须和.toc文件名和所给插件的目录名相匹配。
5.##LoadOnDemand:1或0
所有的暴雪插件都是按需要进行配置和加载的。就是说为了对一些事件进行响应,游戏客户端才会加载和初始化这些插件。并不是所有插件都支持按需加载(LoD),所以可以用该指令来标记插件的LoD可用性。
6.##LoadsWith:AddonA,AddonB
一旦一个插件加载完毕,##LoadsWith指令可以与##LoadOnDemand组合来加载另一个插件。例如用来修改默认BlizzardRaid UI的插件,当客户端加载Raid UI插件以后,如果有##LoadsWith:Blizzard_Raid UI指令,那么它也会被加载。
7.## DefaultState:enable 或disabled
并不是所有插件的设计对于每一个角色都是可用的或可加载的,因此需要一个指令来设置插件的默认状态。在默认情况下,客户端可以通过这个标志位来判断是否要对插件选择窗口中的插件进行确认。如果一个用户重写了一个设置,系统就会选择用户的首选项。若不提供这个值,它就会自动设置为可用。
8.##LoadManager:Addon A
可以通过##LoadManager指令来添加LoD系统的复杂性,若LoadManager可用,则指令将允许插件标记为LoD,否则它会被作为一个普通插件加载。和简单的标记插件LoD相比,使用这个指令有很小的差别,就是这个插件需要另外一个插件来处理第一个插件的加载,否则它就会被无条件的加载。
9.##SavedVariables:VariableName
在会话中插件要保存信息,只能定义一个Lua变量,并在TOC文件的##SavedVariables指令中列出变量的名字。当关闭游戏的时候,系统就会将这个变量的内容存储到一个外面的文件中。当游戏重新启动时又会读取该变量。变量类型可以是字符串,数字或者表格。
10.##SaveVariablesPerCharacter:VariableName
这个指令与##SavedVariables运行方式是一样的,只不过每个角色登录时保存和加载的文件不同。你登录的角色与另一个角色是分开保存的。不需要向插件内添加其他的特殊内容,这些都由客户端自动完成。

未完待续(_)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,841评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,415评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,904评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,051评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,055评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,255评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,729评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,377评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,517评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,420评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,467评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,144评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,735评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,812评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,029评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,528评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,126评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,295评论 25 707
  • 除了官方支持的元数据之外,在自定义插件的.toc文件中还可能包含许多其他的标记。TOC文件可以列出每个Lua文件(...
    编程爱好者阅读 2,278评论 0 0
  • 水本无衣裳。 六朝时候谢庄的《月赋》“洞庭始波,木叶微脱”,是秋声在水中的变奏,我没有去过洞庭,不知“木叶微脱”是...
    深蓝色木鱼阅读 332评论 2 3
  • 有没有一瞬间会觉得这个世界很多的难能可贵都不会出现在你的生活里 人阿 自私到贪求 无望却不舍 我也曾觉得这个世界美...
    无趣又平庸阅读 151评论 0 0