有的player每天晚上花4.5个小时跟公会活动打强大的BOSS. 也有些人钟爱PVP, 成天干竞技场, 战场. 还有休闲玩家, 只是喜欢和朋友一起进入游戏而已, 就算去打低等级的副本也很开心, 喜欢一起在YY里聊天, 在频道里打字扯蛋....的感觉.
WOW通过用插件来定制UI来实现多种玩法. 对技术控玩家和完美主义者玩家, 暴雪允许玩家定制UI和修改所有功能.
插件可以简单到改变血条的颜色或用'/'命令来做一些表情动作(/dance ==)或者复杂到分析一个服务器里的经济情况.
一个插件必须包含一个 Table of Contents (.toc) 文件, 并且文件名必须与插件的文件夹名相同比如RaidAchievement.toc(一个关于副本成就的插件, 本人是小成就控). 还可以包含 XML(定义界面), Lua 脚本, 图片, 音频等.
.toc 是驱动文件
.xml 是控制界面(都知道xml只能保存信息, 具体控制逻辑还是交给 .lua)
.lua 实现各种逻辑
插件加载过程:
1. 打开客户端的时候, 扫描AddOns目录, 建立一个已经安装的插件的列表. 包括各个插件的meta信息, 像是作者, 插件名, 版本号等等.(meta在客户端关闭之前只加载这一次)
2. 玩家进入某个服务器的角色选择界面.
3. 这时玩家可以给指定的角色启用或禁用某些插件.
4. 玩家选择一个角色, 读条进入游戏.
5. 按 FrameXML.toc 里列出的顺序, 加载默认UI XML 和 Lua 文件.
6. 没有出错的并且是启用的, 非LoD模式的插件被加载:(PS. Load on Demand: 简单的说就是不自动加载, 常用在实现配置功能的插件里, 比如团队框架插件Grid, 设置好一次后不是要经常进行再次设置, 所以这个Grid设置功能插件设置成LoD模式, 可以节省加载插件的时间和空间, 当我们要修改Grid的设置的时候在聊天窗口input /grid 这时才真正加载Grid的设置部分.)
a. 如果这个插件运行在其它插件基础之上, 并且依赖的插件没被加载, 那么先加载需要的插件(PS. 加载的顺序和操作系统有关, 可能按名字的字母序, 也可能按照文件的创建日期)
b. 读这个插件的.toc文件, 建立需要加载的文件列表(PS. 前面忘记说了, .toc文件就像是一个插件的驱动文件, 它包含这个插件要用到的 .xml, .lua 文件列表.)
c. 所有文件按顺序执行, LoadAddon() 命令立即执行. 遇到 XML 里的 script 元素也立即执行它们(PS. 例如:<Script file="Libs\LibStub\LibStub.lua"/>).
d.加载这个插件保存的变量(上次游戏时保存的, 如果保存过的话.)
e. 当 ADDON_LOADED 事件的第一个参数被设置成一个已加载的插件名的时候就被触发.(PS. 加载结构很复杂, 第一个看到的事件不一定是最先被执行的)
7. 服务器端保存的变量(角色的等级, 装备, 成就啥的), 相关按键设置, 宏命令也开始在后台同步加载.
8. SPELLS_CHANGED 事件触发, 标志着玩家的技能加载了, 并且UI可用了.
9.PLAYER_LOGIN 事件触发, 标志着大多数游戏数据可用了, 各种界面元素(技能栏, 施法条等等)定位都已Okey.
10.PLAYER_ENTERING_WORLD 事件触发, 标志哥已经读完蓝条进入了游戏!(PS. 您的好友幻小梦进入了游戏
)