标题：魔兽世界编程宝典--World of Warcraft Addons完全参考手册
书籍概述
中文名: 魔兽世界编程宝典--World of Warcraft Addons完全参考手册
原名: World of Warcraft Programming: A Guide and Reference for Creating WoW Addons
作者: (美)James Whitehead II  Bryan McLemore  Matthew Orlando  魔兽世界编程宝典译者: 杨柏林 张卫星 王聪
图书分类: 软件
出版社: Tsinghua University Press
书号: 9787XXX222392
发行时间: 2010年6月
地区: 大陆
语言: 简体中文
内容介绍
阅读完本书，您将学会如何对魔兽世界界面进行自定义修改。如果您初学编程，将从本书学习到lua和xml的基础知识，以及如何开始编写自己的第一个插件。如果您已经熟悉一些原始插件，那么可以直接跳到本书的第Ⅲ第Ⅳ部分，使用模板、函数钩、自定义图形、状态标题等。本书有助于您发布自己的插件，使wow更加有趣。本书是创建wow插件的指南和参考手册。本书分为5部分，其主题的复杂程度逐渐由低到高。第Ⅰ部分介绍了lua和xml，使读者快速地上手这两门语言，便于创建插件。第Ⅱ部分讨论了插件的初步构成，以及事件驱动(event-driven)的魔兽世界插件编程的基本概念。在本部分，读者将创建自己的第一个插件，并熟悉wow中的常用api。第Ⅲ部分通过从头到尾实现一些插件，将读者引入更加高级的主题中。第Ⅳ部分为整个api的完备参考，包括函数、工具集、事件以及安全模板。第Ⅴ部分为附录。
作者介绍
James Whitehead II创建的插件包括PerfectRaid、Clique、TomTom和其他可以从网站下载的插件。他还是Hacking World of Warcraft一书的作者之一。
目录
第Ⅰ部分 学习编程
第1章 关于魔兽世界的编程
1.1 定制用户界面
1.1.1 插件是如何工作的
1.1.2 插件能够做什么
1.2 Lua新手上路
1.2.1 下载和安装Wow[ma
1.2.2 在网上使用Lua
1.2.3 下载并安装Lua解释器
1.3 探究您的Lua解释器
第2章 探讨Lua基础知识
2.1 使用Lua解释器
2.1.1 运行命令
2.1.2 错误信息的理解
2.1.3 使用历史信息来做改变
2.1.4 退出解释器
2.2 处理数字
2.2.1 基本算术运算
2.2.2 科学记数法
2.2.3 十六进制表示法
2.2.4 理解浮点
2.3 理解值和变量
2.3.1 探讨值和它们的类型
2.3.2 使用变量
2.4 使用字符串
2.4.1 比较字符串
2.4 2多个字符串的连接
2.4.3 将数字转换成字符串
2.4.4 将字符串转换成数字
2.4.5 引用字符串
2.4.6 转义特殊的字符
2.4.7 获得字符串的长度
2.5 布尔值和运算符
2.5.1 使用and运算符
2.5.2 or运算符的使用
2.5.3 not运算符的使用
2.5.4 理解nil值
2.6 探讨作用域
2.6.1 块(Block)
2.6.2 组块(Chunk)
2.7 小结
第3章 基本的函数和控制结构
3.1 使用函数
3.1.1 创建函数
3.1.2 局部函数
3.1.3 函数的参数和返回值
3.1.4 函数作为Lua值
3.2 用if语句进行判断
3.2.1 简单的条件
3.2.2 复杂的表达式
3.2.3 扩展的条件语句
3.2.4 显示个人问候信息
3.3 用while语句来重复动作
3.3.1 计算阶乘
3.3.2 while和repeat之间的差异
3.4 用数值执行for循环
3.4.1 计算阶乘
3.4.2 循环条件的求值
3.4.3 循环中的变量作用域
3.5 小结
第4章 使用表
4.1 用表来存储数据
4.1.1 创建和索引表
4.1.2 从表中清除元素
4.1.3 字符串关键字的快捷方式
4.1.4 创建有内容的表
4.2 把表当作数组使用
4.2.1 创建数组
4.2.2 获取数组的长度
4.2.3 在数组中添加元素
4.2.4 从数组中删除元素
4.2.5 对数组中的元素排序
4.3 用名称空间使用表
4.3.1 创建util名称空间
4.3.2 向util中添加函数
4.4 表的面向对象编程
4.4.1 创建非面向对象计数器
4.4.2 把表作为简单的对象
4.4.3 用冒号调用对象方法
4.4.4 用冒号定义函数
4.4.5 创建更佳的计数器
4.5 利用元表对表进行扩展
4.5.1 添加元表
4.5.2 定义元方法
4.5.3 旁路元表
4.6 小结
第5章 高级函数和控制结构
5.1 多值返回
5.2 将十六进制转换成RGB
5.3 指定多个值
5.4 返回值丢失
5.5 W0W中的多个返回值
5.6 接受可变数目的参数
5.7 声明变参函数
5.8 结合select()函数使用
5.9 范型for循环和迭代器
5.10 范型for语句的语法
5.11 遍历表的数组部分
5.12 遍历完整的表
5.13 表的清除
5.14 其他的迭代器
5.15 对表的数组排序
5.16 定义样例数据
5.17 默认的排序顺序
5.18 创建比较函数
5.19 创建更复杂的比较函数
5.20 小结
第6章 Lua标准库
6.1 表库
6.1.1 table.concat(table，sep[，i[，j]]])
6.1.2 table.insert(table,[pos，]value)
6.1.3 table.maxn(table)
6.1.4 table.remove(table[，pos])
6.1.5 table.sort(1xtble[，comp])
6.2 数学函数库
6.3 字符串函数
6.4 格式化新字符串
6.5 模式匹配
6.5.1 字符类型
6.5.2 模式选项
6.5.3 模式捕获
6.5.4 模式锚点
6.5.5 模式的例子
6.6 模式匹配函数
6.7 Lua在WoW插件中的补充
6.8 函数别名
6.9 小结
第7章 学习XML
7.1 XML——一种标记语言
7.1.1 XML与HTML的关系
7.1.2 XML的组件
7.1.3创建规范的XML
7.2 验证XML文档
7.2.1 规范定义的样例
7.2.2 XMIL文件的例子
7.2.3 魔兽世界中的XML
7.2.4 使用GradientType
7.2.5 探讨模式
7.3 小结
第Ⅱ部分 魔兽世界编程
第8章 魔兽世界编程概述
8.1 游戏中运行和测试代码
8.1.1 安装
8.1.2 使用/script和/run
8.1.3 显示输出
8.2 在游戏中编辑代码
8.2.1 TinyPad
8.2.2 Omnibus
8.2.3 WowLlla
8.3 编写自定义print()函数
8.4 插件和脚本的局限性
8.5 用Blizzard插件编写资源
8.5.1 用户界面自定义工具
8.5.2 用户界面和宏论坛
8.6 论坛资源
8.6.1 WowwiKI
8.6.2 魔兽版本监视器
8.7 小结
第9章 插件解析
9.1 开发属于您自己的插件文件夹
9.1.1 暴雪的插件
9.1.2 自定义插件
9.2 插件组件和文件
9.2.1 内容表格文件(.toc)
9.2.2 Lua脚本文件
9.2.3 XIL文件
9.2.4 媒体文件
9.3 本地化您的插件
9.3.1 可用的本地语言
9.3.2 本地化的原因
9.3.3 鼓励玩家建议
9.3.4 实现本地化
9.4 创建插件框架
9.4.1 为插件命名(创建目录)
9.4.2 创建.toc文件
9.4.3 创建框架.xml文件
9.5 使用外部库
9.6 小结
第10章 在XML中创建窗体
10.1 了解UI对象
10.1.1 为对象进行命名
10.1.2 指定父对象
10.1.3 设置对象尺寸
10.1.4 锚定对象
10.1.5 将窗体和图形元素分层
10.1.6 一般属性
10.2 创建纹理
10.2.1 添加颜色
10.2.2 添加渐变效果
10.2.3 添加图形元素
10.3 使用字体字符串创建文本
10.3.1 使用模板
10.3.2 使用的例子
10.3.3 进一步自定义
10.4 探讨窗体类型
10.4.1 按钮(Button)
10.4.2 复选按钮(CheckButton)
10.4.3 颜色选择ColorSelect)
10.4.4 编辑框(Editbox)
10.4.5 游戏工具提示(GalneTooltip)
10.4.6 消息窗体(MessageFrame)
10.4.7 小地图(Minimap)
10.4.8 模型(Modeel)
10.4.9 滚动信息窗体(scrollingMessageFrame)
10.4.10 滚动窗体(Scroll Frame)
10.4.11 简单的HTML窗体
10.4.12 滑动器(Slider)
10.4.13 状态栏(StatusBar)
10.4.14 飞行路线窗体
10.5 小结
第11章 向XML窗体中添加行为
11.1 理解事件和脚本
11.1.1 窗体脚本
11.1.2 游戏事件
11.2 使用脚本响应窗体事件
11.2.1 <OnEnter>和<OnLeave>
11.2.2 <OnLoad>
11.2.3 <OnEvent>
11.2.4 <OnClick>
11.2.5 <OnUpdate>
11.3 可用的窗体脚本
11.4 使用窗体方法改变窗体
11.4.1 常用方法
11.4.2 指定类型的函数
11.5 创建并使用模板
11.5.1 模板有用的原因
11.5.2 新建XML模板
11.5.3 使用XML模板
11.6 使用默认UI工具集模板
11.7 小结
第12章 创建您的第一个插件：CombatTracker
12.1 定义规格说明
12.1.1 combatTracker用户要求
12.1.2 找准游戏事件
12.2 创建插件架构
12.3 定义CombatTracker的XML窗体
12.4 测试CombatTrackerFrame
12.5 向CombatTrackerFrame添加操作脚本
12.5.1 <OnLoad>
12.5.2 <OnEvent>
12.5.3 <OnClick>
12.5.4 <OnDragStart>
12.5.5 <OnDragStop>
12.6 为CombatTracken.lua添加函数
12.6.1 CombatTracker-OnLoad(frame)
12.6.2 CombatTracker-OnEvent(frame，event.)
12.6.3 CombatTrackerReportDPS0
12.7 测试CombatTracker
12.7.1 窗体拖拽
12.7.2 右击报告：第1部分
12.7.3 测试战斗跟踪
12.7.4 右击报告：第Ⅱ部分
12.8 小结
第13章 运用魔兽世界API
13.1 理解魔兽世界API
13.1.1 常规API
13.1.2 类库API
13.1.3 FrameXML函数
13.1.4 受保护函数
13.1.5 单位函数的使用与关闭
13.2 创建简单的单位窗体
13.2.1 创建窗体
13.2.2 添加数据域
13.2.3 设定窗体事件处理程序
13.3 使用API
13.3.1 显示和隐藏窗体
13.3.2 实现简单的更新函数
13.3.3 显示生命和法力值
13.3.4 更新敌对信息
13.4 小结
第14章 使用AddOn Studio创建基本插件
14.1 开始使用AddOnStudio
14.2 可视化设计您的界面
14.2.1 使用Toolbox
14.2.2 设置属性
14.3 编写代码
14.3.1 监听事件
14.3.2 自动添加事件处理程序
14.3.3 验证单位是否存在
14.3.4 添加“关闭”按钮的代码
14.4 部署插件
14.5 小结
第Ⅲ部分 高级插件技术
第15章 利用编程模板
15.1 向TargetText添加增益
15.1.1 创立基本木板模板
15.1.2 定义基本的行为
15.2 创建增益图标
15.2.1 创建栅格
15.2.2 设定锚点
15.2.3 创建特定的wrapper函数
15.3 更新增益
15.3.1 对增益进行遍历
15.3.2 对更新操作进行封装
15.4 小结
第16章 脱离XML编写插件
16.1 探索基本的窗体创建
16.1.1 使用CreateFontString()函数
16.1.2 使用CreateTexture()函数
16.2 创建更好的玩家窗体
16.2.1 设置Lua
16.2.2 创建窗体
16.2.3 使它工作
16.3 比较LUA窗体和XML窗体
16.4 小结
第17章 使用安全模板
17.1 了解污染(Taint)
17.1.1 启用污染日志
17.1.2 执行污染
17.1.3 变量污染
17.1.4 蔓延的污染
17.1.5 理解被保护的窗体
17.1.6 无污染地设置窗体属性
17.2 使用安全模板
17.2.1 为动作按钮定义行为
17.2.2 做一些简单的选择
17.3 使您的单位窗体充满生机
17.3.1 移除禁止代码
17.3.2 接受单击
17.3.3 显示和隐藏窗体
17.3.4 设置动作
17.4 小结
第18章 创建命令
18.1 检测基本的命令
18.2 小提示、技巧以及好主意
18.2.1 象征输入
18.2.2 将确定用于模式匹配
18.2.3 假跳转
18.2.4 好主意
18.3 小结
第19章 用函数钩改变已有行为
19.1 什么是函数钩
19.1.1 修改返回值
19.1.2 函数钩工具脚本
19.1.3 安全地钩一个函数
19.1.4 安全地钩住脚本
19.2 决定什么时候使用函数钩
19.2.1 理解钩链(Hook Chain)
19.2.2 寻找替代
19.3 设计插件：MapZoomOut
19.3.1 创建定时器
19.3.2 创建MapZoomOut
19.4 小结
第20章 创建自定义图形界面
20.1 创建图形的普遍规则
20.2 GIMP
20.2.1 新建图片
20.2.2 添加图形组件
20.2.3 保存纹理
20.3 Adobe Photoshop
20.3.1 新建图像
20.3.2 添加图形组件
20 .3.3 创建透明度通道
20.3.4 保存图像
20.4 Paint Shop Pro
20.4.1 新建图像
20.4.2 添加图像组件
20.4.3 创建透明度通道
20.4.4 保存图像
20.5 测试纹理
20.5.1 没有按钮出现
20.5.2 出现绿色方块
20.6 小结
第21章 使窗体移动
21.1 拖放和放置
21.2 标题区域
21.3 使用 OnMouseDown和OnMouseUp
21.4 使用OnDragStart/OnDragStop
21.5 给窗体赋予生命
21.6 渐隐
21.7 小结
第22章 创建滚动窗体
22.1 使用滚动结构
22.1.1 定义滚动窗体
22.1.2 添加子滚动条
22.1.3 创建滚动条
22.2 创建伪滚动窗体
22.2.1 添加滚动条
22.2.2 利用鼠标滚轮进行滚动
22.3 小结
第23章 创建下拉菜单
23.1 创建简单的下拉菜单
23.1.1 添加切换按钮
23.1.2 创建下拉窗体
23.1.3 初始化下拉菜单
23.1.4 设置下拉菜单
23.1.5 测试下拉菜单
23.2 创建多级下拉菜单
23.3 创建高级下拉菜单
23.3.1 功能菜单项
23.3.2 CheckButton菜单项
23.4 调色板菜单项
23.5 自动创建菜单
23.6 小结
第24章 工具提示
24.1 操作工具提示
24.1.1 使用”:Set…”函数
24.1.2 包含自定义信息的工具提示
24.1.3 创建自定义工具提示
24.2 解析工具提示数据
24.2.1 基础结构剖析
24.2.2 基本扫描循环
24.3 小结
第25章 使用状态标题
25.1 创建第一个状态标题
25.1.1 重设鼠标单击
25.1.2 通过单击修改状态
25.2 控制视觉属性
25.2.1 显示和隐藏子标题
25.2.2 重置子标题的位置
25.2.3 重新定义子标题和标题的大小
25.2.4 重置标题位置
25.3 配置其他的属性
25.3.1 改变标题的单位
25.3.2 覆盖绑定键
25.3.3 在栈中存储状态
25.4 创建宏序列
25.4.1 定义序列
25.4.2 设定基本的序列
25.4.3 重置您的序列
25.5 创建 Pie按钮
25.5.1 设定 Pie按钮
25.5.2 构建窗体
25.5.3 完成行为
25.6 小结
第26章 驱动状态改变
26.1 使用状态驱动
26.1.1 延时驱动状态改变
26.1.2 理解宏选项
26.1.3 合并情景类型
26.1.4 在标题中共享状态
26.2 使用定位模板
26.2.1 触发定位改变
26.2.2 重新映射定位转换
26.3 创建动作弹出菜单
26.3.1 创建窗口
26.3.2 添加按钮
26.3.3 定义基本行为
26.3.4 应用锚点
26.4 小结
第27章 利用组模板创建单位窗体
27.1 模板的工作原理
27.2 配置SecureGroupHeader
27.3 SecureCroupPetHeader模板属性
27.4 新建SecureGroupHeader
27.5 定义XML模板
27.6 添加行为脚本
27.6.1 初始化窗体
27.6.2 更新单位信息
27.6.3 更新最大生命值
27.6.4 添加拖拽支持
27.7 测试BasicUnitFrames
27.8 小结
第Ⅳ部分 参考文献
第28章 API参考文献
28.1 API参考约定
28.1.1 函数签名
28.1.2 参数和返回列表
28.2 API伪类型
28.3 按字母排序的API列表
第29章 API目录
29.1 动作
29.2 动作栏
29.3 插件
29.4 竞技场
29.5 拍卖
29.6 银行
29.7 战场
29.8 绑定
29.9 增益
29.10 摄像机
29.11 频道
29.12 聊天
29.13 仅在中国使用的函数
29.14 客户端
29.15 战斗
29.16 申诉
29.17 容器
29.18 手工艺
29.19 光标
29.20 配置变量
29.21 调试
29.22 阵营
29.23 GM调查
29.24 GM请求
29.25 公会
29.26公会银行
29.27 查看
29.28 副本
29.29 物品栏
29.30 物品
29.31 物品链接
29.32 物品文本
29.33 知识库
29.34 键盘
29.35 寻求组队/寻求成员
29.36 拾取
29.37 Mac
29.38 Macro
29.39 邮件
29.40 地图
29.41 商人
29.42 其他
29.43 不同的单击
29.44 金钱
29.45 移动
29.46 NPC
29.47 小队
29.48 宠物
29.49 请求
29.50 玩家
29.51 配置
29.52 PvP
29.53 任务
29.54 团队
29.55 技能
29.56 社交
29.57 凹槽
29.58 声音
29.59 法术
29.60 形态
29.61 统计信息
29.62 天赋
29.63 目标
29.64 飞行器
29.65 跟踪
29.66 交易
29.67 交易技能
29.68 训练师
29.69 UI
29.70 单位
29.71 实用程序
29.72 视频
29.73 语音
29.74 区域
第30章 事件参考
第31章 工具集参考
31.1 工具集API
31.1.1 UIObject
31.1.2 FontInstance
31.1.3 Region
31.1.4 VisibleRegion
31.1.5 LayeredRegion
31.1.6 Font
31.1.7 Texture
31.1.8 FontString
31.1.9 Frame
31.1.10 GameTooltip
31.1.11 EditBox
31.1.12 Slider
31.1.13 Model
31.1.14 MessageFrame
31.1.15 Cooldown
31.1.16 ScrollFrame
31.1.17 ColorSelect
31.1.18 Minimap
31.1.19 SimpleHTML
31.1.20 ScrollingMessageFrame
31.1.21 StatusBar
31.1.22 Button
31.1.23 PlayerModel
31.1.24 CheckButton
31.1.25 TabardModel
31.1.26 DressUpModel
31.2 处理程序列表
第Ⅴ部分 附录
附录A 发布插件
附录B 利用版本控制系统跟踪历史记录
附录C 最好的代码风格
附录D 避免常见的错误
附录E 使用插件库
附录F 作者和插件社区
附录G 词汇表