资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1序序 言言 闪电战 1 发行之时,地图编辑器与资源编辑器作为“赠品” 与游戏一同打包。然而编辑器的帮助文件内容有限,而且完全 没有介绍如何通过编码(脚本)控制自定义任务内的事件。全 靠累积玩家们在各个论坛上分享的发现,我们才能找出如何发 挥编辑器的最大效能。单从脚本语言 LUA 方面来看,同样是 依靠准确解码、反复试错以及广泛开放的发现共享才得以完善。 数量众多的个人玩家以“破解”Lua 为己任来制作自定义地图, 为跟随者开创了一条更为平坦的道路。直到这些先驱人物在 “闪”界隐退,每一位玩过或尝试过制作自定义地图的玩家都应 该感谢那些慷慨分享心得的编码破译者大量的辛勤劳作。 破译编码过程中产生的重要贡献之一是 Calvin 的 Blitzkrieg Guideto Programming Lua Functions。它提供了一份闪电战 1 中 使用脚本函数的列表以及如何运用这些函数的指导。它对于编 写闪电战脚本的人是十分必要的。这个指南像是一本 LUA 词 典,但它没有提供如何将这些术语组合成可用脚本的浅易说明。 (Calvin 提供了一个例子,但是这个例子不能被称为“简介”所 以脚本编写的新手最好忽略它。 )Calvin 的 Blitzkrieg Guideto Programming Lua Functions 可以在 Blitzkrieg Portal 下载。 Wespex 是第一位制作完整编辑地图指南的人,为此他编 辑了地图,编写了脚本,并且打包了可以与其他玩家分享的自 定义游戏。这个指南(再版很多次并最终与 Calvin 的指南合并) 是任何希望制作自定义地图玩家的入门教程。在发布这个指南 之后,Wespex 在 BKP 论坛就脚本编写提供了非常广泛的问题 答疑。这些指南和答疑最有价值的特征是在脚本范例中提供了 全面的注释,不仅提供了制成的脚本,还解释了脚本运作的原 理。如果说现在绝大多数脚本编写者是靠这个指南启蒙应该是 不失公允的。 这个基础教程的编写是为了响应 BKP 论坛上的一些评论 以及解决很多地图编辑者在开始尝试脚本编写时所面临的困难。 本教程阐述 Lua 的基本原理并展示如何为自定义游戏的某个基 本要点编写脚本。我将尝试揭开某些技术术语的神秘面纱。 考虑要点考虑要点 像每一个刚开始编写 Lua 的人那样,我非常熟悉入门的巨 大障碍以及脚本无效时的那份挫败感。无论如何,有些事情应 该记在我们的脑子里: Lua 是一种语言,你必须学会单个词句的意思以及如何运 用他们来“涂鸦”。即使你聪明绝顶, 这也并不意味你可以不 用认真学习词汇和语法就来编写 Lua 脚本。和人类语言不同, 即使你在 Lua 语句中犯了一个微不足道的错误,它也将彻底无 法被程序理解。开始编写 Lua 时的大多数挫败感是来源于那些 “一点不起作用”的脚本, “这几乎不可避免的是你的错误!”自 然的反应一般是说:“程序不在运转”或者“我的电脑出毛病了”。 但有 99.9%的可能是你犯下了一个拼写或语法错误。制作自己 的地图并看到自编脚本运转是非常有趣的;但让脚本运转起来 并不总是有趣的。即使 BKP 论坛上最优秀的脚本编写者也承 认在调试自己的作品时仍然遇到大量挫折。并非每个人都有足 够耐心只为了一个错位的字母、一个遗漏的括号或一个多余的 分号来逐行检查脚本。如果想要编写脚本你必须接受这个事实, 没有任何人能替你简化它。一旦你已经了解 Lua 的基础,最佳 学习方法是打开一张你喜欢的地图并且逐行研究它的脚本(在手边准备一份 Calvin 的指南。译者注: 或 liukun1982 翻译的 script 帮助文档)以弄清具体的原理。 如果你想测试一些新脚本或从其他编写者那里“借”来的脚 本,不要在你乐于为傲的 26X26 地图上进行测试。制作一张 4X4 的测试地图,放上最少的单位,仅测试脚本中对你来说是 新鲜内容的代码块。如果脚本不运行,你可以很快发现问题而 不需要检查一大堆其他不相干的东西来判断是否存在冲突。这 是本教程所采用的方针。如果你确实遇到了困难(在浏览了 BKP 写的抓虫须知(本书第 33 页)与这些教程以后) ,你可 以在论坛中进行搜索,大多数问题已被讨论过了。如果你仍然 无法找到答案,你可以在地图编辑问答专栏发布求助贴。如果 你的问题明确具体(最好复制粘贴一些你的脚本) ,那些脚本 编写的大侠们将会给我们这些小菜鸟提供迅速而有益的答复。 基础教程使用基础教程使用 以下每一节教程都配套一份与教程同名的地图(.bzm)与脚 本(.lua)文件。所有.bzm 文件和.lua 文件应被复制粘贴到闪电战 的 DataMaps 文件夹。这也是你用来保存自定义地图与脚本的 路径。为了学习每一节教程,你可以用地图编辑器打开地图, 用 SciTE 编辑器打开脚本。当你阅读完教程并看完地图和脚本 内容以后,你可以按下地图编辑器工具栏右上角的 RunBlitzkrieg 按钮看看脚本在游戏中是如何执行的。 前五节课程的每张地图都是建立在前一张地图的基础之上, 地图和脚本一步步升级。最后两节课程是独立的,涵盖了 BKP 论坛中经常提到的问题。本教程推荐你下载 BlitzkriegSciTEEditor。它非常有效,是免费软件,体积不大, 没什么理由不用。它不能替你编写脚本,当脚本无法运行时它 也不能替你找出错误。但在编写与检查脚本时它对你很有帮助, 所以还是下载吧!Blitzkrieg SciTE Editor (译者注:由于这个编辑器在处理中文时默认以半角格式处理, 所以退格删除中文时只删除半个,从而出现乱码。建议中文的 地图编写者最好加装汉化补丁,从而能完美支持在脚本中输入 中文。 ) 注:使用 SciTEEditor 给文件命名时你必须使用一个.lua 后缀否则它会被保存为.xml 格式。 基本原理基本原理 脚本是一个 lua 文件。在地图编辑器上有一个“扳手加字母 A”的按键,点击这个按键(译者注:设置脚本文件名)输入脚 本名称,来把地图和相应的 lua 脚本文件联系起来。 脚本包含一系列的指令,叫做 functions(函数) ,当地图 运行时,这些函数使事件发生。函数可以很简单,可以只是 (指令电脑)在特定时间完成一个事件, 或是更复杂的,测 试某个条件,并根据结果做出不同的事情。 注意: 附录 A 给出了一个闪电战特有函数列表 为了使函数和地图配合,地图上的单位,步兵班,建筑等 必须指定一个脚本代码(ScriptID) ,在地图编辑器中,在左边 选择 Objects 界面,双击单位调出“单位属性窗口”,然后双击 “ScriptID”文本框并输入一个代码(ID) ,然后关闭属性窗口。 提示:做一个笔记记录哪个代码是哪个单位。有的地图制闪电战闪电战 1 脚本编写基础教程脚本编写基础教程 2作者常常在脚本的开头写下他们的编码方式。 提示:一个很有用的方法,是给予玩家单位和敌方单位以 不同字头的代码(如 100s 和 200s) 很多函数要用到脚本区域(ScriptAreas 也译作脚本范围) 。 用地图编辑器左边的 MapTools 按键来定义这些脚本区域: 选择“脚本范围工具”,并且拖动鼠标在在地图上定义一个 (方形或圆形)区域,然后输入这个区域的名称。编写脚本时 必须准确的使用这个“脚本区域名称”, 包括大小写和空格等 都要一样。 提示:给你的脚本区域一个独特而有明确含义的名字,这 样你不会在脚本中混淆。 (Farm 和 Town, 而不要用 Area1,Area2) Lua 语言语言 Lua 的语法是简单而固定的,必须严格遵守。任何拼写, 间隔(空格) ,或标点的错误,都会导致脚本不运行或不能正 确执行函数的功能。多数的脚本问题都是拼写或语法错误。 下面的词语在下面的词语在 Lua 中有特殊的含义,被认为是保留字中有特殊的含义,被认为是保留字 (keywords): and break do else elseif if end false for function in local nil not or repeat return then true until while 无论你认为这些词语在现实中是什么意思,在 Lua 语言中, 他们有固定的用法,并且只能那样用。其中一些词语的用法在 下面的教程中会详细解说。按照规则, 这些保留字要用小写。这里也有一些闪电战的特定保留字,象“RunScript”, “LandReinforcement”,“Win” and“Loose” 等。这些必须正确书 写-首字母大写和其它字母小写。Calvin 的指南就像一部字 典,可用来指导我们怎样正确书写这些词语。 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEeditor) ,那么所有的保留字,如果你的拼 写正确,会变成蓝色并且以浅蓝背景高亮显示。 脚本编写者所定义的事件(函数)的名称叫“names”。它 们可以是任意数字和字母,但不能以数字开头。按照规则,我 以大写字母开头为(函数)名称。举例来说, 在第一课我写 的: function MoveCar() 在这里“function”是保留字,而“MoveCar”是名称 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEeditor) ,那么(保留字是蓝色而)名称是 黑色的。 当一个函数的名称确定以后,它就可以在后面被脚本调用。 当它被再次使用时,必须放在双引号内作为字符串被调用。如 我在第一课中写的:RunScript(“MoveCar”, 3000) 这里“RunScript”是闪电战专用保留字, “MoveCar”是字符串, 代表我在脚本中定义的一个函数。一个绝对的要点是这个字符 串要被正确的键入, 和之前的函数名完全一样,否则不会被 脚本认可。由于这个原因,用复制粘贴函数名和字符串是最好 的办法,可以防止键入错误。在使用双引号时,在引号和字符 串的头以及引号和字符串的尾之间不许有任何空格。 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEeditor) ,那么当引号的位置正确时,字符 串显示为紫色文字。如果你看到紫色背景的高亮显示,说明双 引号输入有错(少了一半) 。注意,这个 脚本编辑器不会检查你键入的字符串正确与否函数和保留字是 要用参数来限定的。要明白这个参数的作用,想象函数和保留 字就像有人大声对你喊“做”,但这没有任何意义,直到你被告 知做什么,什么时候做,做的频率多少,这些就是限定函数去 做的参数。 在 Lua 中参数总是被放在一对括号内,如 RunScript(“MoveCar”, 3000) 保留字“RunScript”需要知道运行 哪个函数,什么时候运行。这两个在括号内的参数, 被定义 为运行字符串“MoveCar”以及值(value )为 3000 (这个在 后面的教程中解释). 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEeditor) ,这个数值会显示为淡蓝色。当有 超过一个的以逗号隔开的参数,来赋予这个字符串或值,很重 要的一点, 如果这个逗号漏写了,脚本将不能运行。有些保 留字或函数不用任何的参数定义,那就是说它们对于脚本是不 解自明的,不需要用例如什么,哪里,何时,频率如何等来定 义。没有参数的保留字或函数的括号是空的,但这对括号仍然 必须保留。比如 Suicide() 以及函数名后的括号。漏掉一个空 括号是脚本不运行的一个常见原因。缩排是脚本编写者经常用 到的(在编辑器中按 Tab 键) ,但这不是必须的也不会对脚本 有影响。当然它们非常有助于使语句有条理。我会在举例中用 我自己的方法, 而脚本编写者有它们自己的方法。按照规则, 脚本的每一行结
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号