闪电战1脚本编写基础教程-[闪电战论坛]

上传人:mg****85 文档编号:36998032 上传时间:2018-04-05 格式:DOC 页数:12 大小:112.50KB
返回 下载 相关 举报
闪电战1脚本编写基础教程-[闪电战论坛]_第1页
第1页 / 共12页
闪电战1脚本编写基础教程-[闪电战论坛]_第2页
第2页 / 共12页
闪电战1脚本编写基础教程-[闪电战论坛]_第3页
第3页 / 共12页
闪电战1脚本编写基础教程-[闪电战论坛]_第4页
第4页 / 共12页
闪电战1脚本编写基础教程-[闪电战论坛]_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《闪电战1脚本编写基础教程-[闪电战论坛]》由会员分享,可在线阅读,更多相关《闪电战1脚本编写基础教程-[闪电战论坛](12页珍藏版)》请在金锄头文库上搜索。

1、1序序 言言 闪电战 1 发行之时,地图编辑器与资源编辑器作为“赠品” 与游戏一同打包。然而编辑器的帮助文件内容有限,而且完全 没有介绍如何通过编码(脚本)控制自定义任务内的事件。全 靠累积玩家们在各个论坛上分享的发现,我们才能找出如何发 挥编辑器的最大效能。单从脚本语言 LUA 方面来看,同样是 依靠准确解码、反复试错以及广泛开放的发现共享才得以完善。 数量众多的个人玩家以“破解”Lua 为己任来制作自定义地图, 为跟随者开创了一条更为平坦的道路。直到这些先驱人物在 “闪”界隐退,每一位玩过或尝试过制作自定义地图的玩家都应 该感谢那些慷慨分享心得的编码破译者大量的辛勤劳作。 破译编码过程中产

2、生的重要贡献之一是 Calvin 的 Blitzkrieg Guideto Programming Lua Functions。它提供了一份闪电战 1 中 使用脚本函数的列表以及如何运用这些函数的指导。它对于编 写闪电战脚本的人是十分必要的。这个指南像是一本 LUA 词 典,但它没有提供如何将这些术语组合成可用脚本的浅易说明。 (Calvin 提供了一个例子,但是这个例子不能被称为“简介”所 以脚本编写的新手最好忽略它。 )Calvin 的 Blitzkrieg Guideto Programming Lua Functions 可以在 Blitzkrieg Portal 下载。 Wespex

3、 是第一位制作完整编辑地图指南的人,为此他编 辑了地图,编写了脚本,并且打包了可以与其他玩家分享的自 定义游戏。这个指南(再版很多次并最终与 Calvin 的指南合并) 是任何希望制作自定义地图玩家的入门教程。在发布这个指南 之后,Wespex 在 BKP 论坛就脚本编写提供了非常广泛的问题 答疑。这些指南和答疑最有价值的特征是在脚本范例中提供了 全面的注释,不仅提供了制成的脚本,还解释了脚本运作的原 理。如果说现在绝大多数脚本编写者是靠这个指南启蒙应该是 不失公允的。 这个基础教程的编写是为了响应 BKP 论坛上的一些评论 以及解决很多地图编辑者在开始尝试脚本编写时所面临的困难。 本教程阐述

4、 Lua 的基本原理并展示如何为自定义游戏的某个基 本要点编写脚本。我将尝试揭开某些技术术语的神秘面纱。 考虑要点考虑要点 像每一个刚开始编写 Lua 的人那样,我非常熟悉入门的巨 大障碍以及脚本无效时的那份挫败感。无论如何,有些事情应 该记在我们的脑子里: Lua 是一种语言,你必须学会单个词句的意思以及如何运 用他们来“涂鸦”。即使你聪明绝顶, 这也并不意味你可以不 用认真学习词汇和语法就来编写 Lua 脚本。和人类语言不同, 即使你在 Lua 语句中犯了一个微不足道的错误,它也将彻底无 法被程序理解。开始编写 Lua 时的大多数挫败感是来源于那些 “一点不起作用”的脚本, “这几乎不可避

5、免的是你的错误!”自 然的反应一般是说:“程序不在运转”或者“我的电脑出毛病了”。 但有 99.9%的可能是你犯下了一个拼写或语法错误。制作自己 的地图并看到自编脚本运转是非常有趣的;但让脚本运转起来 并不总是有趣的。即使 BKP 论坛上最优秀的脚本编写者也承 认在调试自己的作品时仍然遇到大量挫折。并非每个人都有足 够耐心只为了一个错位的字母、一个遗漏的括号或一个多余的 分号来逐行检查脚本。如果想要编写脚本你必须接受这个事实, 没有任何人能替你简化它。一旦你已经了解 Lua 的基础,最佳 学习方法是打开一张你喜欢的地图并且逐行研究它的脚本(在手边准备一份 Calvin 的指南。译者注: 或 l

6、iukun1982 翻译的 script 帮助文档)以弄清具体的原理。 如果你想测试一些新脚本或从其他编写者那里“借”来的脚 本,不要在你乐于为傲的 26X26 地图上进行测试。制作一张 4X4 的测试地图,放上最少的单位,仅测试脚本中对你来说是 新鲜内容的代码块。如果脚本不运行,你可以很快发现问题而 不需要检查一大堆其他不相干的东西来判断是否存在冲突。这 是本教程所采用的方针。如果你确实遇到了困难(在浏览了 BKP 写的抓虫须知(本书第 33 页)与这些教程以后) ,你可 以在论坛中进行搜索,大多数问题已被讨论过了。如果你仍然 无法找到答案,你可以在地图编辑问答专栏发布求助贴。如果 你的问题

7、明确具体(最好复制粘贴一些你的脚本) ,那些脚本 编写的大侠们将会给我们这些小菜鸟提供迅速而有益的答复。 基础教程使用基础教程使用 以下每一节教程都配套一份与教程同名的地图(.bzm)与脚 本(.lua)文件。所有.bzm 文件和.lua 文件应被复制粘贴到闪电战 的 DataMaps 文件夹。这也是你用来保存自定义地图与脚本的 路径。为了学习每一节教程,你可以用地图编辑器打开地图, 用 SciTE 编辑器打开脚本。当你阅读完教程并看完地图和脚本 内容以后,你可以按下地图编辑器工具栏右上角的 RunBlitzkrieg 按钮看看脚本在游戏中是如何执行的。 前五节课程的每张地图都是建立在前一张地

8、图的基础之上, 地图和脚本一步步升级。最后两节课程是独立的,涵盖了 BKP 论坛中经常提到的问题。本教程推荐你下载 BlitzkriegSciTEEditor。它非常有效,是免费软件,体积不大, 没什么理由不用。它不能替你编写脚本,当脚本无法运行时它 也不能替你找出错误。但在编写与检查脚本时它对你很有帮助, 所以还是下载吧!Blitzkrieg SciTE Editor (译者注:由于这个编辑器在处理中文时默认以半角格式处理, 所以退格删除中文时只删除半个,从而出现乱码。建议中文的 地图编写者最好加装汉化补丁,从而能完美支持在脚本中输入 中文。 ) 注:使用 SciTEEditor 给文件命名

9、时你必须使用一个.lua 后缀否则它会被保存为.xml 格式。 基本原理基本原理 脚本是一个 lua 文件。在地图编辑器上有一个“扳手加字母 A”的按键,点击这个按键(译者注:设置脚本文件名)输入脚 本名称,来把地图和相应的 lua 脚本文件联系起来。 脚本包含一系列的指令,叫做 functions(函数) ,当地图 运行时,这些函数使事件发生。函数可以很简单,可以只是 (指令电脑)在特定时间完成一个事件, 或是更复杂的,测 试某个条件,并根据结果做出不同的事情。 注意: 附录 A 给出了一个闪电战特有函数列表 为了使函数和地图配合,地图上的单位,步兵班,建筑等 必须指定一个脚本代码(Scri

10、ptID) ,在地图编辑器中,在左边 选择 Objects 界面,双击单位调出“单位属性窗口”,然后双击 “ScriptID”文本框并输入一个代码(ID) ,然后关闭属性窗口。 提示:做一个笔记记录哪个代码是哪个单位。有的地图制闪电战闪电战 1 脚本编写基础教程脚本编写基础教程 2作者常常在脚本的开头写下他们的编码方式。 提示:一个很有用的方法,是给予玩家单位和敌方单位以 不同字头的代码(如 100s 和 200s) 很多函数要用到脚本区域(ScriptAreas 也译作脚本范围) 。 用地图编辑器左边的 MapTools 按键来定义这些脚本区域: 选择“脚本范围工具”,并且拖动鼠标在在地图上

11、定义一个 (方形或圆形)区域,然后输入这个区域的名称。编写脚本时 必须准确的使用这个“脚本区域名称”, 包括大小写和空格等 都要一样。 提示:给你的脚本区域一个独特而有明确含义的名字,这 样你不会在脚本中混淆。 (Farm 和 Town, 而不要用 Area1,Area2) Lua 语言语言 Lua 的语法是简单而固定的,必须严格遵守。任何拼写, 间隔(空格) ,或标点的错误,都会导致脚本不运行或不能正 确执行函数的功能。多数的脚本问题都是拼写或语法错误。 下面的词语在下面的词语在 Lua 中有特殊的含义,被认为是保留字中有特殊的含义,被认为是保留字 (keywords): and break

12、 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 的指南就像一部字 典,可用来指导我

13、们怎样正确书写这些词语。 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEeditor) ,那么所有的保留字,如果你的拼 写正确,会变成蓝色并且以浅蓝背景高亮显示。 脚本编写者所定义的事件(函数)的名称叫“names”。它 们可以是任意数字和字母,但不能以数字开头。按照规则,我 以大写字母开头为(函数)名称。举例来说, 在第一课我写 的: function MoveCar() 在这里“function”是保留字,而“MoveCar”是名称 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEeditor) ,那么(保留字是蓝色而)名称是 黑色的。 当一个

14、函数的名称确定以后,它就可以在后面被脚本调用。 当它被再次使用时,必须放在双引号内作为字符串被调用。如 我在第一课中写的:RunScript(“MoveCar”, 3000) 这里“RunScript”是闪电战专用保留字, “MoveCar”是字符串, 代表我在脚本中定义的一个函数。一个绝对的要点是这个字符 串要被正确的键入, 和之前的函数名完全一样,否则不会被 脚本认可。由于这个原因,用复制粘贴函数名和字符串是最好 的办法,可以防止键入错误。在使用双引号时,在引号和字符 串的头以及引号和字符串的尾之间不许有任何空格。 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEed

15、itor) ,那么当引号的位置正确时,字符 串显示为紫色文字。如果你看到紫色背景的高亮显示,说明双 引号输入有错(少了一半) 。注意,这个 脚本编辑器不会检查你键入的字符串正确与否函数和保留字是 要用参数来限定的。要明白这个参数的作用,想象函数和保留 字就像有人大声对你喊“做”,但这没有任何意义,直到你被告 知做什么,什么时候做,做的频率多少,这些就是限定函数去 做的参数。 在 Lua 中参数总是被放在一对括号内,如 RunScript(“MoveCar”, 3000) 保留字“RunScript”需要知道运行 哪个函数,什么时候运行。这两个在括号内的参数, 被定义 为运行字符串“MoveCa

16、r”以及值(value )为 3000 (这个在 后面的教程中解释). 提示:如果使用闪电战脚本编辑器 (theBlitzkriegSciTEeditor) ,这个数值会显示为淡蓝色。当有 超过一个的以逗号隔开的参数,来赋予这个字符串或值,很重 要的一点, 如果这个逗号漏写了,脚本将不能运行。有些保 留字或函数不用任何的参数定义,那就是说它们对于脚本是不 解自明的,不需要用例如什么,哪里,何时,频率如何等来定 义。没有参数的保留字或函数的括号是空的,但这对括号仍然 必须保留。比如 Suicide() 以及函数名后的括号。漏掉一个空 括号是脚本不运行的一个常见原因。缩排是脚本编写者经常用 到的(在编辑器中按 Tab 键) ,但这不是必须的也不会对脚本 有影响。当然它们非常有助于使语句有条理。我会在举例中用 我自己的方法, 而脚本编写者有它们自己的方法。按照规则, 脚本的每一行结

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号