注:本文系属Beginning Lua with World of Warcraft Addons(翻译)

简介

附加组件 (插件)是一个令人兴奋地话题,它可以让你修改游戏来提升游戏体验。只有少数网游允许修改UI(User Interface 用户界面),例如魔兽世界(wow)你可以彻底修改UI或者添加。

有成千上万的有效附加组件和宏命令可以再互联网上中找到,在魔兽世界里你也许正在使用很多的插件和宏命令,但是你知道它们是如何工作的吗?事实上所有的玩家都在使用的这些,但是只有很少一部分人可以自己动手编写插件或修改的现有的插件,你很快也会成为它们的一员!

插件几乎可以修改游戏UI每个方面。有许多简单小巧的插件增强了界面。例如:你可以用几行代码在聊天框前实现时间戳的功能,你将会在第6张看到如何实现;你可以在第4张看到如何在聊天中添加链接提示。当然有成千上万行代码组成的大插件,你将会编写一个先进的功能完全的多人德州扑克游戏插件

Lua编程语言被魔兽世界使用,它小巧、强大、易学。本章结束后你就会了解到Lua的概要。

这些基础知识可以使你写出第三张的第一个Hello world插件。真正的乐趣在第四章才正开始,你会编写第一个真正使用的插件就如我们刚刚提到的聊天框提示.

让我们开始吧!

CHAPTER 1

本章将讨论几个很基本关于Lua及魔兽世界插件在我们下一张学习Lua语言之前。同时也介绍几款非常有用的工具,我们在整本书都会使用的。

Lua是什么?

Lua 是一个编程语言是巴西里约热内卢天主教大学的Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo1993年开发。Lua在葡萄牙语里指的是“月亮”,发音为“LOO-ah”,Lua采用MIT授权条款,MIT是相对宽松的软件授权条款:只要有版权声明和许可你可以用Lua做任何事

Lua的特点:可扩展性,简单性,效率和可移植性。非常容易的写出增加功能性的模块,也非常容易的把它当做脚本语言嵌入到游戏中。脚本语言是一种在另一个较大的应用程序的特定部分所使用的编程语言。魔兽世界(C++编写)使用Lua来开发界面。有很多游戏使用Lua来运行用户界面或脚本配置文件(“战锤Online”和"孤岛惊魂")。但是我们可以使用Lua写出整个游戏,有很多可以使用的扩展库和框架wxWidgets (wxLua), the .NET Framework (LuaInterface), 3D 引擎有基于Lua的OGRE (Lugre) 。这些扩展也称为绑定,因为它们将Lua扩展成为一个更强大、复杂的框架或库。

Lua是简单易学,语法很简单明了。人们可以阅读和理解不知道对任何小的Lua脚本语言。所以没有编程知识的人们就可以使用Lua来配置文件。 Lua是一种动态类型语言,这意味着编程时自由和灵活。您将将会了解更多的特性第2章。尽管简单,但是Lua是一个非常强大的多范型编程语言。它提供必要的,实用和面向对象的范例来为你编写脚本提供参考。我会告诉讲解这些范例在下面的章节。您也不必考虑内存管理;的Lua提供了一个很好的增量垃圾收集器。垃圾收集器是在脚本和释放先前程序占用的内存之间交错运行的程序,增量意味着它一直运行,渐进方式工作。

尽管这是一个功能齐全的强大的多范型语言,但是Lua运行起来非常快。Lua 5.1实用的虚拟机(编译Lua代码并执行它)是所使用的脚本语言在最快的。还有一个基于on the fly即时编译器(一种程序,将Lua飞速的转换为本地机器编码)更快。

Lua快速编译并执行成千上万行的脚本代码而且十分容易的处理大量数据。它可以编写脚本用来创建其他的由包含很多的项的庞大的表构成Lua脚本,或者创建持久性数据。 lua的编译器可以快速加载,编译这些数据文件。如果你认为你需要安装几兆的软件使得Lua可以在本地运行,再考虑下吧。Lua虚拟机仅仅有160 KB,而编译器才200KB。 (Lua 5.1.4 on Windows x86)

Lua是纯ANSI C编写,所以它是非常轻便。它几乎可以运行在每一台你听说知道或者不知道的机器和操作系统,例如,Lua中已经成功地在乐高的Mindstorms NXT的平台上编译。.

一个好地方来获取有关Lua的其他信息网站:

WOW Addons是什么?

魔兽世界的UI可以用Lua和UML修改   XML是一种强有力的数据描述语言,在前五章你不用考虑你是否有没基础。我们可以使用高度自定义的所谓的扩展插件来更换整个默认的UI。LUa  常被当做脚本语言使用,xml 可以用简单的方式来生成GUI元素。

暴雪娱乐公司  WOW开发商,提供了很丰富的UI API(应用程序编程接口,一系列的函数可以上使用,通过脚本语言与与游戏通信,例如Lua)使得用户可以为游戏的每个部分编写脚本。有插件几乎包含了从元素更换和迷你游戏的聊天工具动作条像宝石迷阵

bots:  病毒介绍 Bots是一种能执行外部命令的自动运行型木马。

MOD是英文单词modification(意为修改)的缩写,它是游戏的一种修改或增强程序。

暴雪认为用户开发插件过于强大,因为他们接近机器人。像Decursive插件能够检查RAID中减益效并一键驱散他们。另一个插件让治疗职业只需使用一个键就可以选择最佳目标和释放治疗法术。治疗职业使用这些MODS只要重复地按相同的键就可以在战斗中发挥完美。另外mod甚至允许你运行某些预定义的路径,如在熔火之心跑尸。

因此,补丁2.0限制涉及“安全码”的某些行动,这是从默认的UI代码。受限制行动的目标,施法和运动相关的功能。然而,许多功能仍可能在某些情况下使用,所以还是有可能创建RAID框架mod。但它不再可能编写像刚才提到的战斗中自动化作战相关的任务插件。

默认的用户界面提供了游戏中普通用户需要的所有功能,但扩展可以提供高级的功能或不同的主题。图1-1显示了游戏默认的用户界面。一个大量修改的用户界面,用户界面截图所示的样子几乎什么都可以替换。

图二的UI全部被更改了,更改游戏默认的字体使得游戏看起来完全是另一款游戏。你会看到小地图、动作条和提示框。

玩家们可以去网站下载一个插件并安装它,但是在1150万的魔兽世界玩家中只有很少的人可以编写MODS。你读过这本书后将成为这为数不多的一员。你可能迫不及待,那么让我们看到一些书中使用的有用的工具。

Lua基础入门—— 写出自己的魔兽世界插件相关推荐

  1. Java基础知识(一),打好基础才能写出高质量代码

    前沿:不管工作多久,基础永远是最重要的,好多大厂看的就是基础好不好,所以写代码的同时,基础知识还是要去理解和记忆的,坚持每天来看一点 Java基础.语法: java面向对象的特征有哪些方面? 1.抽象 ...

  2. 【转】Dynamics CRM 365零基础入门学习(二)Dynamics 插件注册的基本流程

    插件的官方定义是:插件是可与 Microsoft Dynamics CRM 365 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标 ...

  3. 设置 Visual Studio 文件版权信息 - C语言零基础入门教程

    目录 一.手动修改原始代码模板 二.通过插件 Visual Assist 设置版权信息 1.安装插件 Visual Assist 2.打开 VS,找到 VAssistX 选项 3.设置模板内容 4.点 ...

  4. c语言写类似饥荒的游戏,饥荒MOD lua编程0基础入门

    前言 原贴写于饥荒游戏贴吧,为了使文章针对性更强,将原文切割并精简.此贴主要为编程0基础的modder讲解一些编程的基础知识.至于说有关饥荒框架的介绍,则会放在另一篇文章里讲解. 编程0基础的人,要想 ...

  5. 零基础入门学完Java?如何写出一份漂亮的简历,建议如下

    现在互联网产业非常的好,很多人想要转行做Java开发,也就是我们常说的程序员,之所以这么多人想要转行程序员,就是因为程序员的工作工资比很多工作的工资高几倍.在这个每个人都缺钱的时代,每个人都想多赚钱. ...

  6. Lua 快速入门(一)——基础语法

    前言 Lua是由标准C实现的解释型语言,它的执行效率比较高,通常作为脚本嵌入到应用程序中. 由于支持热更新,Lua在游戏开发领域应用普遍.作为从业人员,不得不来填这个大坑. 本文是Lua入门学习笔记, ...

  7. 一位入行4年的优化师是怎么写出一本信息流广告入门书的?

    作者 | 宁阿姨 责编 | 一点也点 出版社编辑访谈:宁阿姨,2016年入行做信息流广告,操作过日消耗1000元到1000000元的账户.擅长从实际操作中总结优化经验,她的公众号"三里屯信息 ...

  8. Lua === Lua 十分钟基础入门上手

    Lua维基百科 Lua的目标是成为一个很容易嵌入到其他语言中使用的语言: 很多程序员使用Lua作为自己的嵌入式脚本语言,实现可配置性,可扩展性: 轻量级语言,体积小速度启动快,只包含一个精简的核心和基 ...

  9. Lua快速入门篇(基础概述)(Yanlz+toLua+xLua)

    <Lua热更新> ##<Lua热更新>发布说明: ++++"Lua热更新"开始了,立钻哥哥终于开始此部分的探索了. ++++作为游戏发布迭代的重要技术:Lu ...

最新文章

  1. Ubuntu搭建Spark运行环境
  2. 5 亿微博数据疑泄露,Python 爬虫如何避免踩天坑?
  3. mysql设置keepalived_MySQL高可用性之Keepalived+MySQL(双主热备)
  4. Android Retrofit实现原理分析
  5. access开发精要(1)-字段验证
  6. java程序源代码如何保存到桌面_如何编写JAVA小白第一个程序
  7. (四)Raspberry Pi上的人工智能人脸检测
  8. python class用法理解_通过钢铁侠变身快速理解Python的装饰器用法
  9. matlab批量修改图片的大小_matlab批量修改图片大小
  10. LeetCode1419-数青蛙
  11. HTML点击图片实现提交或跳转链接页面
  12. 闲聊JavaScript
  13. DataGridView.BorderStyle 属性
  14. 64匹马,8个赛道,找出前4名最少比赛多少场?
  15. arcgis地图开发测面、测距、定位小工具
  16. 智慧政务解决方案-最新全套文件
  17. java 安全警告 关闭_关闭安全警告的两种方法
  18. vue router meth的2个属性: keepAlive 、deepth
  19. 【Java】Java方法详解篇
  20. matlab 降低计算精度,MATLAB 计算精度控制

热门文章

  1. Matplotlib 绘制折线图 - 正余弦函数图像
  2. linux c编译安装,uClinux设置(安装,编译)
  3. 熄灯问题POJ1222的一些思考
  4. 多可文档管理系统的手机版
  5. 【年终总结】——梦想起航
  6. SQL注入靶场 RedTiger通关教程(level1~level10)
  7. 7-2 sdust-Java-学生成绩读取与排序 (8 分)
  8. 同时打开对比两个pdf文件软件推荐
  9. 禁止input密码自动填充及浏览器记住密码完整解决方案
  10. Python爬虫实例,一小时上手爬取淘宝评论(附代码)!