美文网首页程序员
魔兽世界插件编程解析(二)

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

作者: 编程爱好者 | 来源:发表于2016-01-17 12:59 被阅读298次

    除了官方支持的元数据之外,在自定义插件的.toc文件中还可能包含许多其他的标记。TOC文件可以列出每个Lua文件(包括子目录中的文件)。这些文件都按照TOC文件中列出的次序,由游戏客户端进行加载、解析和执行。也就是说你可以在文件层面上定义局部变量,这些变量对于其他文件是不可用的。
    1.Lua脚本文件和XML文件
    Lua文件即可以用于定义插件的行为,又可以用来动态的创建窗口。.toc文件可以从插件中下载任何.XML文件。这些文件中的标记被解析和加载时,系统会用UI.xsd模式进行验证。也就是说XML文件中可以使用<Script file=“SomeFile.lua”/>标签来加载Lua文件,这也是用户界面默认要做的事情。而且每个XML文件都应该从XML文件加载的根目录的<UI>元素声明开始:

    <Ui  xmlns=“http://www.blizzard.com/wow/ui”
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance”
    xsi:schemaLocation="http://www.blizzard.com/wow/ui
    ..\FrameXML\UI.xsd”>
    </Ui>
    

    当加载这些文件时,在你的魔兽世界中安装的Logs\FrameXML.log文件中会显示出现的错误。一旦你的插件运行不正常,就应该检查一下这个文件,看看在验证文档时是否有错误记录。

    2.媒体文件
    在游戏客户端插件也可以包含自定义的图形,声音和字体等,从而为你提供各种不同的视听风格。这些文件包含在插件自己的目录里,并通过魔兽世界的目录来全路径标明地址。
    (1)音乐。
    如果有一个名为mysound.mp3的音频文件,你想在MySound插件中包含它,则你需要把它放在如下的目录中:

    Interface\Addons\MySound\mysound.mp3
    

    在游戏中运行下边的命令,这个音频文件就会播放,由于在Lua中会把反斜杠字符作为转义字符,因此要转义反斜杠字符:

    /run PlaySoundFile(“Interface\\Addons\\MySound\\mysound.mp3”)
    

    (2)图形。
    加载窗口纹理时,魔兽世界支持两种不同的图形格式。要加载的文件必须是这两种文件的一种,并且满足以下基本要求:
    (1)文件的高度和宽度要大于或等于2像素,同时小于512像素。
    (2)文件的高度和宽度要是2的整数次幂,但并不要求相同。
    另外,文件还要包含一个alpha频道,它对你所使用的图像编辑软件很重要。接下来介绍两种主要的图形格式。

    BLP格式
    当你使用User Interface Customization Tool提取Blizzard Interface Art后,你会发现所有的文件都拥有一个.blp扩展名。这种图形格式是Blizzard创造的,并应用于魔兽争霸III和魔兽世界中。
    TGA格式
    这是一种比较简单的图像格式,它可以用来存储带有透明度信息的彩色图像。TGA不能使用无损压缩,也就是说这种图像在作为保存图像时,不能和JPG文件一样不收损。
    3.实现本地化插件。
    (1)为每个地方语言添加一个文件。
    为你翻译的地方语言添加一个新的本地化文件。若没有什么翻译,就在你开发的插件中为“基本”地方语言创建一个简单的文件。例如在我的插件中,就是在我的目录结构中添加一个Localization.enUS.lua文件,并把这个文件添加到.toc文件的顶部,保证第一时间加载这个文件。
    (2)创建一个包含基本串的全局表。
    假设插件名字为MyAddon,就可以在Localization.enUS.lua文件中创建一个名字为MyAddonLocalization的全局表。可以通过使用完整字符串或使用标记的方式向这个文件中添加基础翻译。
    下面就是一个使用完整字符串翻译的表定义集。既用完整字符串作为键又将它作为值。

    MyAddonLocalization = { }
    MyAddonLocalization[“Frames have been locked ”]=“Frames have been locked”
    MyAddonLocalization [“Frames have been unlocked”] =“Frames have been unlocked”
    

    它可以用于较短的字符串,但用于较长大字符串键就会变得非常冗余。
    我们可以使用一个较短的字符串或标记来代替完整字符串作为表的键。本地化文件如下:

    MyAddonLocalization = {}
    MyAddonLocalization[“FRAMES_LOCKED”]=“Frames have been locked”
    MyAddonLocalization [“FRAMES_UNLOCKED”] =“Frames have been unlocked”
    

    4.创建插件框架
    你的插件必须位于Interface\Addons目录中,它位于魔兽世界基础安装路径的一个子目录中。可以通过创建一个名为WowXMLExample的目录将你的插件命名为WowXMLExample这个目录的相对路径应当为:
    World of Warcraft\Interface\AddOns\WowXMLExample
    接下来创建一个.toc文件,若没有一个TOC文件,插件将不起作用,因此先使用下面的代码创建一个TOC文件:

     ##Interface: 
     ##Title:WowXMLExample
     ##Description:Example   addon for World of Warcraft Programming
    
     WowXMLExample.xml
    

    这个小文件声明了Interface编号,以及一个用于插件的标题和描述。其加载的唯一文件是 WowXMLExample.xml,接下来你将创建这个文件。

    <Ui  xmlns=“http://www.blizzard.com/wow/ui”
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance”
    xsi:schemaLocation="http://www.blizzard.com/wow/ui
    ..\FrameXML\UI.xsd”>
    </Ui>
    

    文件需要这个基本的声明来验证正确无误。使用这段代码在插件的目录中创建 WowXMLExample.xml文件。

    5.使用外部库

    在尝试学习某个库的辅助函数前,应该先学习如何使用魔兽世界API以及XML定义来写一些基本的插件。

    未完待续(_)

    相关文章

      网友评论

        本文标题:魔兽世界插件编程解析(二)

        本文链接:https://www.haomeiwen.com/subject/shnhkttx.html