暴雪用5年的世界打造了世界顶级的网游World of Warcraft,复杂多变的操作方法为游戏增添了无穷乐趣,而游戏的可玩性不仅仅体现在游戏世界本身,其XML+Lua的扩展机制也成为该款游戏的一大玩点。就像大家熟知的firefox一样,WoW提供了丰富的接口,允许玩家实现一些有额外功能(如:物件ID查询),这些额外功能被称为Addon。客户端安装目录下/Interface/AddOns就是用于放置各种Addon的地方。
在开发Addon之前,必须了解其构成。在WoW中,规定Addon由至少三中文件构成:

  • toc:指明该Addon适用的客户端API版本,以及Addon包含(和依赖)的文件。
  • xml:用于创建UI,指明事件处理脚本(Lua)。在某些情况下,可以不需要Lua文件,而直接将脚本嵌入到<scripts></scripts>标签中。
  • lua:实现Addon功能的脚本。

下面我将实现一个在聊天框中输入命令来执行两个整数相加的Lua脚本,我将该插件命名为Test:
Test.toc文件内容:

## Interface: 20300
## Title: Test Addon
test.lua
test.xml

Test.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">
    <Frame name = "Test_Frame" hidden="true">
        <Scripts>
            <OnLoad>Test_load();</OnLoad>
        </Scripts>
    </Frame>
</Ui>

Test.lua文件内容:

function Test_load()
    -- Slash Commands
    SLASH_Test1 = "/test";
    SlashCmdList["Test"] = Test_commandline;
    DEFAULT_CHAT_FRAME:AddMessage("Test AddOn is now loaded!");
end

function Test_commandline(cmd)
    local a = gsub(cmd , "(%d+)(%s)(%d+)", "%1");
    local b = gsub(cmd , "(%d+)(%s)(%d+)", "%3");
    DEFAULT_CHAT_FRAME:AddMessage("a + b ="..a+b);
end
为了运行Addon,需要将上述三个文件放在

客户端安装目录下/Interface/AddOns/Test目录下,然后启动客户端,在聊天框中输入:/test <arg1> <arg2>就可以运行脚本了。截图如下:

AddOns for World of Warcraft 之 “Hello, WoW!”相关推荐

  1. WOW AutoFollow

    魔兽世界怀旧版,自动跟随插件,真麻烦,什么版本投诉,我还是贴出来吧 D:\World of Warcraft\_classic_\Interface\AddOns\ D:\World of Warcr ...

  2. Cindy中的Filter

    Cindy中的Filter 今天和Arbow在MSN上讨论时谈到了MINA中的Filter机制,Arbow认为这是一个非常方便的功能,他提到了比如可以设定黑名单/白名单,来设定要不要剩下的Listen ...

  3. 大脚插件技能栏美化_血条也性感:TidyPlates姓名板美化增强插件

    简介: TidyPlates是一款已经开发的强大到爆的姓名板美化增强插件,可选的多款姓名板皮肤下载,强大醒目的3个等级的仇恨发光,特别适用于坦克群拉. 特别注明:姓名板是指你按V后怪物头上出现的血量和 ...

  4. Think in Pushlet

    Think in Pushlet 作者: cleverpig 介绍         server端向浏览器client发送通知这种通讯模式在J2EE应用中很常见,通常使用采用 RMI. CORBA或者 ...

  5. 学习Lua编写魔兽插件 for wow addons

    Lua的学习真的很简单,安装完一个20多M的小文件之后,会直接出来一系列小教程.让有一定编程基础的人快速掌握这门语言. 比较有意思的是多赋值语句: a,b=b,a 会自动交换两个变量的值. ----- ...

  6. WOW战场报新场宏实现(以及该插件实现研究)

    不用插件的只用一个宏:/run空格JoinBattlefield(0)打开战场npc ,然后等喊排时点这个宏排队,这样排队的战场列表不会消失,等出场时,如果列表里没有你出的场就是新场.有的话就是老场了 ...

  7. WOW插件:ShortKey 4.7 发布(2009.9.27)

    最近更新及下载:http://bbs.cwowaddon.com/thread-805-1-1.html 我在这里只保存一些历史信息. 更新:v4.7 2009.9.28 这个版本主要在代码结构方面变 ...

  8. WOW插件:ShortUnitFrame 2.1 发布(2007.7.17)

    作者: simonw From CWDG  2区 暗影之月, 人类牧师, 民族英雄 simonw的wow插件技术博客: http://blog.cwowaddon.com/simonw 1. 玩家窗体 ...

  9. WOW插件:ShortRobot 1.21 发布(2006.10.3)

    下载:http://files.cnblogs.com/simonw/ShortRobot.rar 作者:simonw, [2区 暗影之月 人类牧师 民族英雄] Email::i-simon AT m ...

最新文章

  1. MyEclipse使用技巧小总结
  2. pytorch test单张图片_PyTorch版EfficientDet比官方TF实现快25倍?这个GitHub项目数天狂揽千星...
  3. Linux给Java程序设置端口_扫描服务端口的Java程序
  4. html载入图片代码,TextVeiw加载HTML代码块内图片
  5. python下载numpy库_安装numpy库
  6. 正态分布的前世今生:误差分布曲线的确立
  7. android 盒子gpu,挑选电视盒子时CPU和GPU哪个更重要?
  8. 计算机二级Python笔记——第一部分
  9. 《数据结构(C语言版)》严蔚敏代码实现———顺序表
  10. 魔兽争霸无法在这个计算机,魔兽争霸提示内存不足 无法执行此操作 然后自动退出游戏了 怎么处理?我内存8G 硬盘1T WIN7 32位系统...
  11. “室友靠这个拿到了华为50万年薪,太牛逼了…”
  12. unity加载文件夹下的所有预制体
  13. xman的思维导图快捷键_MindMaster 思维导图快捷键
  14. matlab中累加的小程序,微信小程序学习用demo:数字累加,动态效果
  15. 脑电数据分析方法与应用实例简介-EEG Processing and Feature 1
  16. LeetCode每日一题——Day17
  17. 机器学习学习笔记-西瓜书
  18. 经济低迷时期,企业如何通过知识管理逆风翻盘?
  19. 海思处理器sensor驱动调用过程与源码解析与实战
  20. thinkphp session设置

热门文章

  1. Swift.自定制相册,实现首个cell是拍照功能
  2. [shell应用]——打乱文件顺序
  3. SDUT 贪心商人小鑫
  4. 流体控制阀的原理和分类
  5. 场景管理方法之BVH介绍
  6. curl基本用法,curl和wget区别
  7. 机器人是如何完成避障的?机器人避障解决方案解读
  8. 2023年除了百度还有哪些搜索引擎推荐?
  9. Flutter使用UDP
  10. Matlab进行彩色图像直方图匹配(不用histeq函数)