好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

WOW插件编写快速入手指南.pdf

13页
  • 卖家[上传人]:我***
  • 文档编号:133116395
  • 上传时间:2020-05-24
  • 文档格式:PDF
  • 文档大小:216.80KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 程序员快速入手指南程序员快速入手指南 作者 炽火 Zero 原文发表于 猫扑魔兽板块实用资料区 引言引言 本文将以一般的软件编程的眼光审视魔兽插件 剥去其难解的外皮 让你有个清晰的大致了解 一针见血 是技术性教学文章的最高境界 炽火 魔兽插件的架构魔兽插件的架构 插件工程插件工程 每个插件就是一个项目 或称为工程 目录位置 魔兽目录 Interface Addons 项目名 工程描述工程描述 即后缀名为 Toc 的文件 描述工程的必要信息 也是项目载入时的总入口 屏幕布局屏幕布局 布局描述使用 XML 文件 使用各种标签代表特定对象 控件 并描述相互位置 及各种特征属性 功能脚本功能脚本 脚本文件使用 LUA 语言 使用 WoW 提供的 API 函数编写代码实现各种具体操 作 TOC 工程描述文件工程描述文件 后缀名为 toc 的文件就是工程文件 包含工程的基本信息 主要包含以下内容 切换行号显示 1 Interface 适用的魔兽版本号 2 Title 显示的标题 默认语言 3 Notes 显示的说明 默认语言 4 Title zhCN 特定语言的标题 简体中文 5 Notes zhCN 特定语言的说明 简体中文 6 Author 作者 不显示 7 Version 版本 8 eMail 如题 9 UIType 插件类型 10 Dependencies 依赖的插件 11 RequiredDeps 必须依赖的其他插件 12 OptionalDeps 可选倚赖 13 SavedVariables 统一存放的变量 14 SavedVariablesPerCharacter 按角色存放的变量 15 LoadOnDemand 1 调用时加载 16 LoadWith 当指定插件加载时才加载 前提是调用时加载 17 DefaultState disabled默认状态 18 Secure 安全 功能未知 19 注释 1 dklasjfkasdj 20 Script lua 脚本文件 21 注释 2 dskajfklasdjfklsdaj 22 Layout xml 布局文件 和 为行注释符号 而以 开头的注释行可就不光是好看的了 这些都是插件的工程描述标记 要是不注意 插件根本就不会载入 示例中彩色的标记表示标准标记 每个标准标记都有特定功能 其它 eMail Author 等为 扩展标记 只有注释功能 工程标记之后的部分为包含文件列表 脚本文件和布局文件 数量随意 但每种至少要 有一个 一个 lua 或一个 xml 包含文件列表中的顺序对应着载入顺序 非常要紧 如果要写中文 一定要将 toc 文件保存为 UTF 8 格式 否则无法正确识别 方法很简单 用 记事本打开 另存为 选择编码就行 文件格式要选所有文件 否则会存成 txt 文件 建议你多下几个插件 打开看看 参考一下 XML 屏幕布局描述文件屏幕布局描述文件 在魔兽插件中使用 XML 来描述 UI 的屏幕布局 注释符号 注释符号 如果要写中文注释 必须在 XML 文件开头添加一行 XML 文件主要内容文件主要内容 一个 XML 文件往往包含以下内容 zBar OnLoad zBar OnEvent event Ui 标签标签 是最上级标签 其中的 schema 用来语法检查 如果你的如果你的 XML 编辑器支持还可以用来代码编辑器支持还可以用来代码 提示提示 否则对我们来说用处不大 可以简化为 或者更加简化 不太规范但是可用 布局内容布局内容 Script 标签标签 在 Ui 标签中最先包含的往往是表示在此处载入某 lua 文件 注意这里也有顺序哦 如果发现变量 函数不存在 检查一下看是不是顺序问题 这样一来我们有了两种方法载入 lua 文件 在 xml 中载入 lua 实际上不是非如此不可的 有 时候没必要用 xml 的就直接在 toc 中放个 lua 把 xml 省掉 这样做你必须在 lua 中有个入口 也就是有个裸语句 不在任何 function 中的 进行事件注册或者调用函数 Frame 标签标签 XML 中最主要的一个标签是 所谓 Frame 意指框架 就是用来包含其他东 西的 UIParent 是最上层的框架 所有的 UI 都包含在其中 与之并列的是一个特殊框架 World Frame 包括 FPS 截图 其它控件一般都是 Frame 的子类 都包含类似的属性和子标签 背景 贴图 边框 事件处理 如 等等 Frame 标签就像一个透明的玻璃容器 你可以仅用它来装载其它部件 当然也可以给他添加 贴图显示出来 记得游戏中按下 Alt z 的效果了么 被隐藏的就是 UIParent 容器被隐藏了 里面装的东 西也就透明了 子标签和属性子标签和属性 处理载入事件 处理用 RegisterEvent 注册过的事件 更新事件 显示事件 隐藏事件 单击事件 双击事件 鼠标进入 鼠标移出 拖放开始 接受拖放 值改变 用于 Slider 滑块 inheritsinherits 和和 parentparent 的区别的区别 inheritsinherits 继承 表示本控件未标明的属性全部继承自某某控件 包括事 件处理脚本 parentparent 父控件 表示依存关系 如果父控件隐藏了那么子控件也会隐 藏 AnchorAnchor 锚点中的定位规则锚点中的定位规则 PointPoint自身参考点 relativeTorelativeTo参考控件 relativePointrelativePoint 参考控件参考点 比如一个正方形的按钮 意思就是说 我的左边对父控件的右边 效果就是按钮始终在父控件的右 边 UI 对象的继承关系对象的继承关系 UIObject 始祖 所有其他 UI 对象都由它继承 LayoutFrame 布局框架 继承 UIObject 主要有一些布局函数 这是一个虚类不可创建实例 LayoutFrame的重要函数 GetParent SetParent GetAlpha SetAlpha SetWidth SetHeig ht IsShown IsShown 和和 IsVisible IsVisible 的区别的区别 IsShown IsShown 是否显示 表示一种属性 如果父对象可见的时候是否会显 示 IsVisible IsVisible 是否可见 表示当前状态 当前对象在屏幕上有没有显示 Frame 框架 继承 Layout Frame 最重要的 UI 对象 屏幕上可见的 UI 对象都是它的子类 一 般用来在上面放置其他控件 Frame 的子类 描述 Button 按钮 EditBox 可编辑文本框 GameTooltip 鼠标提示 ColorSelect 颜色选择器 MessageFrame 信息框架 Minimap 迷你地图 小地图 战场地图等 Model 模型 用于显示 3D 动画 人物模型 冷却都是 Model MovieFrame 影像框架 放电影的 不知道怎么用 ScrollFrame 可滚动框架 ScrollingMessageFrame 滚动信息框架 例如聊天窗口 战斗信息 窗口 SimpleHTML 简单超文本标记语言 应该是类似网页的可定义字体大小 颜色式样 带图片的文本 Slider 滑快 像系统设置中的 UI 缩放那个滑快 StatusBar 进度条 像是施法条 血条等等 LUA 脚本代码文件脚本代码文件 更深入的学习请阅读本站的其它文章 ProgrammingInLua 魔兽 Api 索引 如果你有一门以上的语言基础 那么学习 lua 语言不是什么难事 lua 是一种灵活的语言 关于他的来源我并不知道多少 只谈一下自己的感受 基本语法和 Basic 类似 或者说更像是 Asp 的脚本语言吧 但同时他又借鉴了 Java 的长处 更加的智能化 灵活 写法多样又方便不同习惯的人上手 lua 语法很简单 相关资料也很多 我只列出需要注意的部分 基本语法摘要基本语法摘要 行注释符号行注释符号 段注释符号段注释符号 实际上还是行注释 而 包围的部分编译器会认为 是一行 行结束符号行结束符号 用 或者不写都行 看你的习惯了 只要没有歧义就好 NULL 空值空值 在这里是 nil 没有指针没有指针 和 Java 一样 没指针的意思就是所有变量都是引用 要注意不是拷贝的副 本 改变引用变量原始变量会同时改变 变量作用域变量作用域 默认是 global 全局作用域 加上 local 前缀就是局部的了 文件内部 作用域 函数作用域函数作用域 和变量一样默认是全局作用域 实际上函数也是变量 数组 集合数组 集合 只有一种 类似于 我也不知道类似什么 写法也很随意 举例 Config attribute1 apple attribute2 false attribute3 animal 1 Button1 2 Cool 关于数组的就看上面的 Lua 脚本语言入门 讲的很清楚 关于布尔变量关于布尔变量 要注意的是只有 nil 和 false 表示 false 其他一律为 true 包括 0 而 false 是要占用引用内存的 建议把 false 一律换成 nil 关于布尔运算关于布尔运算 lua 里的布尔运算是很有趣的 也相当合理 注意运算的值并不是布尔 值 而是其中一个操作数的值 x a and b 与运算 a 为 false 则 x 等于 a a 为 true 则 x b x a or b 或运算 a 为 true 则 x 等于 a a 为 false 则 x b 是不是有点晕 其实很合理 如果你一时绕不清楚 就只要记住结果好了 布尔运算的妙用布尔运算的妙用 我坚定地认为 lua 中的布尔运算实际上不是布尔运算 而是简化了的 条件语句 比如 x a and b 相当于 if not a then x a else x b end x a or b 相当于 if a then x a else x b end 还有一种简化 常用于变量的初始化 x x or a 相当于 if not x then x a end 对象对象 在 lua 里 框架和控件都作为对象存在 要引用在 XML 中定义的框架或控件 使用如下语句 frame getglobal FrameName 对象的属性对象的属性 属性在对象中就像集合成员一样 属性引用符号为 例如 frame attribute1 对象实际上就是一个特殊集合 对象实际上就是一个特殊集合 对象的属性同样可以用集合方式引用 frame attribute2 函数调用也是一样 见下面说明 函数函数 函数定义函数定义 类似 Basic 例如 function add a b local ret a b return ret end 覆盖函数覆盖函数 函数定义实际上是把一个变量指向一段代码 前面举的例子含义是 把变量 add 指向一 段函数代码 因此 我们可以很方便的覆盖 Override Blizzard 的系统函数 只要把系 统函数变量指向自己定义的函数代码就可以了 以覆盖上面的 add 函数为例 有几种 方法 1 把原函数变量指向新的函数代码段 old add add 保存原始的 add 指向的函数 add function a b add 指向新的代码段 if old add a b 0 then return nil end return a b end 2 直接定义一个同名函数 function add a b 含义与第一种方法相同 改变 add 的值 使它指向新的代码段 local ret a b if ret 0 then return nil end return ret end 对象的函数对象的函数 函数在对象中有些特别 调用符号为冒号 例如 frame Show 函数实际上是一种特殊变量函数实际上是一种特殊变量 它指向一段代码 更一般的调用符号和一般的对象属性相同 为 而特殊符号 实际上是在调用的。

      点击阅读更多内容
      相关文档
      高等学校学生手册.doc 2025年区教育系统招聘编外教师储备人才事业单位考试押题.docx 2025年秋季青岛版三年级数学上册认识轴对称现象教学课件.pptx 2025年秋季青岛版三年级数学上册用乘法估算解决问题教学课件.pptx 2025年秋季青岛版三年级数学上册两、三位数乘一位数的笔算(不进位)教学课件.pptx 2025年秋季青岛版三年级数学上册1200张纸有多厚教学设计范文.docx 2025年秋季青岛版三年级数学上册多位数除以一位数教学课件.pptx 2025年秋季青岛版三年级数学上册认识平移、旋转现象教学课件.pptx 2025年秋季青岛版三年级数学上册多位数乘一位数教学设计范本.docx 2025年秋季青岛版三年级数学上册认识平移与旋转教学设计范文.docx 2025年秋季青岛版三年级数学上册乘数中间有0或末尾有0的乘法教学课件.pptx 2025年秋季青岛版三年级数学上册两位数乘一位数的笔算(进位)教学课件.pptx 2025年秋季青岛版三年级数学上册《两、三位数乘一位数的笔算(不进位)》教学设计与意图.docx 2025年秋季青岛版三年级数学上册我学会了吗教学课件.pptx 2025年连云港市妇幼保健院招聘专业技术人员考试笔试试题.docx 2025年深圳市大鹏新区发展和财政局招聘考试笔试试卷.docx 2025年绵阳市梓潼县财政投资评审中心招聘考试试题.docx 2025年来宾市妇幼保健院招聘考试笔试试题.docx 2025年无极县教育系统招聘教师考试笔试试卷.docx 2025年灵山县第三中学调配教师考试笔试试题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.