魔兽世界插件三部曲之一 ---- TOC
参考文献:www.wowwiki/TOC @Wowwiki (魔兽世界)
摘要:
《魔兽世界》之所以会被数以千万的玩家所追捧而风靡全球,不仅仅在于它本身游戏内容的丰富和具有可玩性高,操作性强等优点,还在于它有一个比较完善的系统体系。WOW之所以经久的另一个原因就是,BLZ为了让玩家在游戏过程中能更好的适应习惯游戏的操作,改善游戏操作环境而开放了“官方API函数接口”,让玩家可以在开放并授权的代码规则下自己定义自己的用户界面(User Interface,简称UI)。
从05年运营至今,BLZ力求让游戏中的每一个细节都做到人性化,为此不断完善游戏系统...BLZ知道玩家在游戏过程中会对部分游戏功能和操作的不适应,可能会需要一些第三
方软件来辅助他们游戏,于是乎,便有了WOW API(官方API函数接口),而事实上,在随着对游戏内容的不断了解和对游戏操作的熟悉后,玩家确实会渐渐的发现一些官方设置不如人意的地方,例如游戏内包裹打开的繁琐,内置动作条的局限,战斗提示的缺失,这些都或多或少影响了玩家游戏的操作性。同时UI接口的开放,让更多的编程爱好者、编程技术人员在
《魔兽世界》之所以会被数以千万的玩家所追捧而风靡全球,不仅仅在于它本身游戏内容的丰富和具有可玩性高,操作性强等优点,还在于它有一个比较完善的系统体系。WOW之所以经久的另一个原因就是,BLZ为了让玩家在游戏过程中能更好的适应习惯游戏的操作,改善游戏操作环境而开放了“官方API函数接口”,让玩家可以在开放并授权的代码规则下自己定义自己的用户界面(User Interface,简称UI)。
从05年运营至今,BLZ力求让游戏中的每一个细节都做到人性化,为此不断完善游戏系统...BLZ知道玩家在游戏过程中会对部分游戏功能和操作的不适应,可能会需要一些第三
方软件来辅助他们游戏,于是乎,便有了WOW API(官方API函数接口),而事实上,在随着对游戏内容的不断了解和对游戏操作的熟悉后,玩家确实会渐渐的发现一些官方设置不如人意的地方,例如游戏内包裹打开的繁琐,内置动作条的局限,战斗提示的缺失,这些都或多或少影响了玩家游戏的操作性。同时UI接口的开放,让更多的编程爱好者、编程技术人员在
休息之余投入到了WOW的插件开发,给WOW又增加了一份新的乐趣。通过游戏一些界面的修改,各种类型的插件辅助完善其游戏本身,以及BLZ在每次更新过程中对API进行的完善修正,可以这么说,WOW已经逐渐演变成续Windows之后的游戏中的"Windows".UI的添加使用,造就了WOW的繁荣,经久不衰...
不过,UI制作需要了解一些专业的编程知识,因此大部分玩家还没有能力自己制作UI,只有一些熟悉XML和LUA语言的编程爱好者或者一些插件制作工作室能为我们提供他们制作的UI,并且放入WOW文件夹内发挥作用,这被称为X件(AddOn)。插件需要严格按照暴雪所设定的开源函数所编制,并且不能加入任何延时指令,即必须按照以下规则:“任何一个技能的施放必须由一个单独的鼠标或者键盘的物理动作来触发。”这就限制了插件不能做出自动施法的功能。插件并没有任何可执行文件,只是由一些以lua、xml、toc为后缀名的文件组成,将他们装到一个文件夹里,放置到魔兽世界文件夹下由暴雪指定的文件夹里就能够让《魔兽世界》来调用这些文件,这也是插件和非法第三方软件的最大区别。一个正常安全的UI只可能包含LUA、XML、BLP、TGA等脚本及资源文件,绝不可能含有EXE、COM、SCR等等可执行文件和以及.js、.vbs…脚本的,所有的脚本及资源文件全部是在玩家选择人物及载入插件列表后由WOW的脚本解释器编译执行的,这个时候所有的关于用户名及密码的操
不过,UI制作需要了解一些专业的编程知识,因此大部分玩家还没有能力自己制作UI,只有一些熟悉XML和LUA语言的编程爱好者或者一些插件制作工作室能为我们提供他们制作的UI,并且放入WOW文件夹内发挥作用,这被称为X件(AddOn)。插件需要严格按照暴雪所设定的开源函数所编制,并且不能加入任何延时指令,即必须按照以下规则:“任何一个技能的施放必须由一个单独的鼠标或者键盘的物理动作来触发。”这就限制了插件不能做出自动施法的功能。插件并没有任何可执行文件,只是由一些以lua、xml、toc为后缀名的文件组成,将他们装到一个文件夹里,放置到魔兽世界文件夹下由暴雪指定的文件夹里就能够让《魔兽世界》来调用这些文件,这也是插件和非法第三方软件的最大区别。一个正常安全的UI只可能包含LUA、XML、BLP、TGA等脚本及资源文件,绝不可能含有EXE、COM、SCR等等可执行文件和以及.js、.vbs…脚本的,所有的脚本及资源文件全部是在玩家选择人物及载入插件列表后由WOW的脚本解释器编译执行的,这个时候所有的关于用户名及密码的操
作都已结束,所以合法的插件是不可能盗号的。就目前来讲,WOW系统的这个LUA脚本语言和WOW UI提供的API接口还没有发现漏洞,所以插件是无法盗取你的帐号的。不过需要注意的是,BLZ虽然开放了WOWAPI,但是并没有承诺对其进行技术支持,所以错误的使用插件可能让游戏不正常甚至出错,如果玩家对插件没有足够的了解,那么建议玩家并不要使用插件。
〓TOC新手教程〓
魔兽世界的插件结构:
< World of Warcraft >(魔兽世界目录)
┗< Interface >
┗< Addons >
┗< *AddonName* > (以插件名字命名的文件夹)
┣*AddonName*.toc (插件的加载信息)
┣*AddonName*.xml (插件定义文档)
〓TOC新手教程〓
魔兽世界的插件结构:
< World of Warcraft >(魔兽世界目录)
┗< Interface >
┗< Addons >
┗< *AddonName* > (以插件名字命名的文件夹)
┣*AddonName*.toc (插件的加载信息)
┣*AddonName*.xml (插件定义文档)
┣*AddonName*.lua (插件脚本文件)
┣...
任何一个ADDONS都是由3种文件组成: .LUA .XML .TOC
这里先介绍下*.TOC的结构和写法,TOC全称为Table of Contents,就是目录索引的意思,是ADDONS的标签,就好比是一本书的目录,它将告诉WOW我们所编写插件的名字、作者、版本号、注释、主要文件、依赖文件、保存文件等,所以任何一个ADDONS中TOC文件都是必不可少的。
简单的来说 *.toc中标注了关于插件信息的定义,以及需要加载的*.xml的位置。*.xml是插件的核心,包括界面、功能等元素都在其内。*.lua是一种嵌入式脚本语言,在WoW中实现*.xml调用的函数。换句话说,*.toc告诉WoW插件的名字和*.xml的位置,*.xml告诉WoW插件都有些什么元素,怎么工作,具体如何操作则交由*.lua来处理。
┣...
任何一个ADDONS都是由3种文件组成: .LUA .XML .TOC
这里先介绍下*.TOC的结构和写法,TOC全称为Table of Contents,就是目录索引的意思,是ADDONS的标签,就好比是一本书的目录,它将告诉WOW我们所编写插件的名字、作者、版本号、注释、主要文件、依赖文件、保存文件等,所以任何一个ADDONS中TOC文件都是必不可少的。
简单的来说 *.toc中标注了关于插件信息的定义,以及需要加载的*.xml的位置。*.xml是插件的核心,包括界面、功能等元素都在其内。*.lua是一种嵌入式脚本语言,在WoW中实现*.xml调用的函数。换句话说,*.toc告诉WoW插件的名字和*.xml的位置,*.xml告诉WoW插件都有些什么元素,怎么工作,具体如何操作则交由*.lua来处理。
引用:
官方注解:
The TOC format for files defines information about each addon installed, as well as specify which .xml and/or .lua files need to be loaded. It is
currently required for an addon to be recognized, show up in the addons list and be loaded. The TOC filename must match the folder name in order for it to be recognized by WoW; however, any other files can be named whatever you want as long as they have the proper extension and are listed in the TOC or in an XML file inside <Script> or <Include> tags.
WoW reads up to the first 1024 characters of each line only. Additional characters are ignored and do not cause an error.
currently required for an addon to be recognized, show up in the addons list and be loaded. The TOC filename must match the folder name in order for it to be recognized by WoW; however, any other files can be named whatever you want as long as they have the proper extension and are listed in the TOC or in an XML file inside <Script> or <Include> tags.
WoW reads up to the first 1024 characters of each line only. Additional characters are ignored and do not cause an error.
大致翻译如下(E文不是很好 ,欢迎指正)
TOC文档包含着已安装插件储存的文件信息,它需要由*.xml和*.lua一起被加载工作.TOC的文件名必须和插件的文件夹名保持一致才能被wow导入,包括名字的大小写,而其他文件的名字不管多长都将被列在TOC或者XML文件的<Script> <Include> 标签中
需要注意的是,WoW只能编译1024字节/行,多出的部分将会被忽略而且不会报错。
TOC位置:
World of Warcraft\Interface\AddOns\MyAddon\MyAddon.toc
或
c:\users\games\World of Warcraft\Interface\AddOns\MyAddon\MyAddon.toc
其中高亮部分为你所装插件名称,必须保证文件夹名和文件名完全一致,包括大小写。
TOC文档包含着已安装插件储存的文件信息,它需要由*.xml和*.lua一起被加载工作.TOC的文件名必须和插件的文件夹名保持一致才能被wow导入,包括名字的大小写,而其他文件的名字不管多长都将被列在TOC或者XML文件的<Script> <Include> 标签中
需要注意的是,WoW只能编译1024字节/行,多出的部分将会被忽略而且不会报错。
TOC位置:
World of Warcraft\Interface\AddOns\MyAddon\MyAddon.toc
或
c:\users\games\World of Warcraft\Interface\AddOns\MyAddon\MyAddon.toc
其中高亮部分为你所装插件名称,必须保证文件夹名和文件名完全一致,包括大小写。
客户端识别:
所有标签都必须要以"##"开头,只有Title和Notes标签支持其他语言,除此之外都要用英语书写。
Interface(插件版本号):
复制内容到剪贴板
代码:
格式:##Interface:30100
Interface 版本号表示插件对应的游戏客户端的版本号,也就是这个插件是为哪个版本的WoW所开发的. 如果版本号与客户端不符合,插件将不会被调用加载而默认设置(这就是为什
么游戏客户端一升级,部分插件就不能使用的原因) ,但是你可以在插件管理面板中手动勾选加载"过期插件",这样客户端就会忽略Interface版本号而强制加载使用插件,不过,最好还是尽快升级插件版本以避免插件出错。
引用:
获取当前客户端版本号有点麻烦,你当然可以启动游戏然后看看屏幕上显示的一串数字,但那个是错误的。WoW的每次更新会写一个版本号在里,但这个文件被埋在一个MPQ中。暴雪为此专门提供了一个工具ftp.blizzard/pub/WoW/other/InterfaceAddOnKit_Win.zip 类似一个解压缩工具,然后用此工具打开World of Warcraft\Data\patch.mpq,文件较大可能需要需要一点时间。打开之后你会看到一个列表,到Interface\,(framexml目录默认是隐藏的,只有用工具才能看见,这也就是为什么部分玩家有时候发现framexml目录错误却在Interface文件夹下不到此文件夹的原因) 双击用默认的TXT记事本或者notpad之类的文本编辑器打开就可以看到版本号了。
具体方法:见26楼(点击进入)
具体方法:见26楼(点击进入)
Title(插件名称):
复制内容到剪贴板
代码:
格式: ##Title: My Addon
##Title-zhCN: 我的插件
##Title-zhCN: 我的插件
Title表示插件的名称,也就是角界面左下角插件管理面板里显示的那个。支持多种语言定义,默认为英语。其他语言要在Title后面加上后缀,如上所示,zhCN表示简体中文,zhTW就是繁体中文。前面2个小写字母代表语言,后面2个大写代表国家和地区。
引用:
引用:
"frFR": French
"deDE": German
"enUS": American english (what should be "enGB" clients return "enUS", too)
"deDE": German
"enUS": American english (what should be "enGB" clients return "enUS", too)
"koKR": Korean
"zhCN": Chinese (simplified)
"zhTW": Chinese (traditional)
"ruRU": Russian (UI AddOn)
"esES": Spanish (Spain)
"esMX": Spanish (Mexico)
"zhCN": Chinese (simplified)
"zhTW": Chinese (traditional)
"ruRU": Russian (UI AddOn)
"esES": Spanish (Spain)
"esMX": Spanish (Mexico)
也可以为名称添加自己喜欢的颜,WoW支持字串形式的颜定义。插件管理面板默认字体颜为黄,你可以根据自己的喜好自行定义文本颜
颜字串以"|c"开头"|r"结束。中间为16进制α(alpha透明度) RGB颜代码和你要显示的文本。
例如:将"我的插件"几个字显示为蓝。那么就应该是:
颜字串以"|c"开头"|r"结束。中间为16进制α(alpha透明度) RGB颜代码和你要显示的文本。
例如:将"我的插件"几个字显示为蓝。那么就应该是:
复制内容到剪贴板
代码:
##Title: |cff0000ff我的插件|r
颜代码参照:www.zhaozi/color.htm
其中|c表示接下来的8位字符是颜代码,以α(alpha透明度)、R(红)、G(绿)、B(蓝)顺序排列。前面2位ff表示被着的文本完全不透明(一般都取FF )
XX表示红的比率(从00到FF,16进制)
YY表示绿的比率(从00到FF,16进制)
ZZ表示蓝的比率(从00到FF,16进制)
不过并非所有的地方都支持透明。代码后面紧跟要显示的文本 "我的插件",|r表示代码结束,如果没有标记|r,WoW将会把颜代码应用到这一行结束的全部文本
Note(插件标签):
复制内容到剪贴板
代码:
格式:## Notes: This is my first AddOn.
## Notes-deDE: Informationen
## Notes-zhCN: 这是我的第一个插件。
## Notes-deDE: Informationen
## Notes-zhCN: 这是我的第一个插件。
Notes包含对插件的说明内容,也就是对插件功能的简单描述,插件管理面板中鼠标经过插件名称时将会出现此介绍标签
RequiredDeps(依赖插件):
RequiredDeps(依赖插件):
复制内容到剪贴板
代码:
格式:## Dependencies: someAddOn, someOtherAddOn
## RequiredDeps: someAddOn, someOtherAddOn
如Grid的GridManaBars模块
## Dependencies: Grid 意为需要Grid核心库的支持
为了让插件更好地工作,某些插件开发者会使用第三方库或其他现成的插件作为基础和辅助,这么做的有点就是节约了开发成本,也使开发过程简便了许多,缺点是,要让插件
正常工作,系统必须确保所依赖的文件都要存在,否则,如果任何依赖的库或插件缺失,当前插件加载都会失败。依赖的名称即依赖插件的名称,也就是目录文件夹的名称。如果
需要依赖多个库或插件,彼此用逗号","隔开。注意大小写一致。
这就是为什么禁用部分插件后,部分插件会因为依赖功能缺失而导致无法加载的原因,用过大脚、精灵之类整合包的玩家应该会有所了解,禁用bigfoot核心文件,将会造成部
分插件功能无法启用,就是这个道理。
Tip: Dependencies、RequiredDeps、Dependancies[sic]效果是一样的。
## Dependencies: Grid 意为需要Grid核心库的支持
为了让插件更好地工作,某些插件开发者会使用第三方库或其他现成的插件作为基础和辅助,这么做的有点就是节约了开发成本,也使开发过程简便了许多,缺点是,要让插件
正常工作,系统必须确保所依赖的文件都要存在,否则,如果任何依赖的库或插件缺失,当前插件加载都会失败。依赖的名称即依赖插件的名称,也就是目录文件夹的名称。如果
需要依赖多个库或插件,彼此用逗号","隔开。注意大小写一致。
这就是为什么禁用部分插件后,部分插件会因为依赖功能缺失而导致无法加载的原因,用过大脚、精灵之类整合包的玩家应该会有所了解,禁用bigfoot核心文件,将会造成部
分插件功能无法启用,就是这个道理。
Tip: Dependencies、RequiredDeps、Dependancies[sic]效果是一样的。
OptionalDeps(可选依赖库):
复制内容到剪贴板
代码:
格式:## OptionalDeps: someAddOn, someOtherAddOn
当前插件为了实现某些附加功能而依赖的外部库或插件,若依赖的库/插件不存在addons下,那么当前插件仍然可以正常工作,但是使用可选依赖的插件就必须在可选依赖存在时
才能正常工作。
LoadOnDemand(命令加载):
才能正常工作。
LoadOnDemand(命令加载):
复制内容到剪贴板
代码游戏xml文件修改:
格式: ## LoadOnDemand: 1
## LoadOnDemand: 0
## LoadOnDemand: 0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论