“TrigEditPlus”的版本间的差异
(未显示同一用户的2个中间版本) | |||
第6行: | 第6行: | ||
TEP可以将地图中已有的触发以lua代码的形式呈现出来,也可以通过编写lua代码来修改地图中的触发或向地图中加入新的触发。 | TEP可以将地图中已有的触发以lua代码的形式呈现出来,也可以通过编写lua代码来修改地图中的触发或向地图中加入新的触发。 | ||
推荐的下载版本为[https://github.com/armoha armoha]大神修改过的0. | 推荐的下载版本为[https://github.com/armoha armoha]大神修改过的0.88版,详见[[TrigEditPlus#.E4.B8.8B.E8.BD.BD|下载]] | ||
第23行: | 第22行: | ||
https://github.com/armoha/TrigEditPlus/releases | https://github.com/armoha/TrigEditPlus/releases | ||
下载最新版的release中的TrigEditPlus.sdp文件即可。为区分不同版本的TEP,下载之后可自行修改TrigEditPlus.sdp的文件名,如修改为TrigEditPlus_armoha_2021-06-01.sdp。修改文件名不影响其功能。 | |||
=== 方式二: === | === 方式二: === | ||
第30行: | 第31行: | ||
在工具箱中找到TrigEditPlus,点击“点我下载”即可下载,百度网盘提取码为qwer | 在工具箱中找到TrigEditPlus,点击“点我下载”即可下载,百度网盘提取码为qwer | ||
下载之后解压,会出来一个 拓展名为sdp的文件 | |||
== 使用方法 == | == 使用方法 == | ||
将sdp文件复制粘贴到你的scmd的安装路径里面的plugins文件夹中。本教程使用的地图编辑器是最新版[[SCMD|SCMD2020-06-24]],如图所示 | |||
[[文件:P01.png]] | [[文件:P01.png]] |
2022年4月24日 (日) 13:26的最新版本
简介
scmd的trigger editor在使用体验上有诸多不便之处,比如无法把一个地图的触发直接复制到另一个地图上、无法批量写触发、可读性较差、触发量较大时很难查找与定位等等。
TrigEditPlus(简称TEP)是一个scmd插件,它可以将触发全部代码化,可以批量写触发,自由复制粘贴、轻松查找定位,是编辑高级地图时必不可少的利器。
TEP可以将地图中已有的触发以lua代码的形式呈现出来,也可以通过编写lua代码来修改地图中的触发或向地图中加入新的触发。
推荐的下载版本为armoha大神修改过的0.88版,详见下载
TEP原作者是Trigger King大神,他的github链接:
这里面有一些旧版的TEP
下载
方式一:
直接去Armoha的Github下载:
https://github.com/armoha/TrigEditPlus/releases
下载最新版的release中的TrigEditPlus.sdp文件即可。为区分不同版本的TEP,下载之后可自行修改TrigEditPlus.sdp的文件名,如修改为TrigEditPlus_armoha_2021-06-01.sdp。修改文件名不影响其功能。
方式二:
在工具箱内下载(不保证为最新版)
在工具箱中找到TrigEditPlus,点击“点我下载”即可下载,百度网盘提取码为qwer
下载之后解压,会出来一个 拓展名为sdp的文件
使用方法
将sdp文件复制粘贴到你的scmd的安装路径里面的plugins文件夹中。本教程使用的地图编辑器是最新版SCMD2020-06-24,如图所示
然后使用最新版scmd随便打开一个星际地图,在菜单的Triggers里面就会有TrigEdit++这个选项了,如下图所示。如果你没有看到这个选项,说明你的插件可能没放对地方,你可能拥有多个scmd版本,你要重新确定你把插件放在了SCMD2020-06-24的plugins文件夹中。
此时点击TrigEdit++,就可进入TEP的代码界面。如果你打开的地图内含有已经写好的触发,那么你会看到地图中已有的触发被转化为了lua代码呈现出来,如下图所示。
点“-”可以折叠相应代码,点“+”可以展开已折叠的代码。你也点选择左上角的View - Fold All或者Unfold All来折叠全部代码或者展开全部代码。
你可以在这里面直接写代码,写完代码之后可以按Ctrl+S保存并编译。如果你的代码有误,就会报错,无法保存。保存成功之后即可关掉这个窗口,你打开Triggers - Classic Map Triggers就可以看到编译完成后的触发。
注意!该TEP版本有一个特点:TEP代码界面写的代码在编译成功后,当你退出这个界面之后再重新打开这个界面时,你看到的将是编译好的结果(一堆Trigger),而不是你的源代码!所以强烈建议在另外的文本编辑器内写好全部代码,最后直接把全部代码复制粘贴到TEP代码编辑界面内,然后直接编译保存。
而其他版本的TEP可能会依然保存源代码,并且会在触发列表里面自动加一个很奇怪的SetDeath触发。由于本教程是以armoha修改的TEP0.087版本为例,并且只有此版本可以完美解决中文字符显示问题,所以关于其他版本TEP的特性我就不做赘述。
举一个最简单的例子:
新建一张空地图,打开TEP代码界面,输入如下代码
for x = 1, 5 do Trigger { players = {P1}, conditions = { Always(); }, actions = { SetResources(P1, Add, x, Ore); }, } end
然后按Ctrl+S保存,然后关掉窗口再打开,你会看到:
可以看到,代码被编译成了5个触发,储存在了地图中。并且再次打开TEP后,TEP将这5个触发以lua代码的形式呈现了出来。当然,你没有机会再看到源代码了。
下面介绍一下TEP的工作原理:
TEP的本质是一个lua代码编译器,它可以将lua代码编译为星际触发,并仍以lua代码的形式呈现这些触发。
我们先来谈一谈一般情况下的代码:
在平时我们写代码的时候,一般会将“代码的运行结果”理解为代码中print出来的内容。毕竟代码的运行过程相当于计算机内部的操作,而最终我们能看到的只有print出来的部分。比如以下lua代码:
x = 1 y = x^2 + 2*x print(y)
该代码的运行结果(输出)为
3
解释:
编译器首先阅读第一行代码,在计算机内部创建一个变量x,赋值为1
然后阅读第二行代码,将新变量y赋值为x的平方加2倍的x(计算结果为3),故将y赋值为3
最后阅读第三行代码,将y的值print出来。
这三行代码非常容易理解,我相信,即使是从来没有学过编程的外行也能一眼看出它们的含义。
编译器阅读代码、运行代码的过程是在计算机内部进行的,我们看不到。我们只能看到“3”这个结果。
再看这个例子:
x = 1 y = x^2 + 2*x
该代码的运行结果(输出)为:什么都没有
解释:
编译器阅读前两行代码的过程同上,在计算机内部创建了x和y两个变量并赋值,然而由于没有print,所以我们看不到任何东西呈现出来。我们可以说,代码写得再天花乱坠,只要没有“print”,这个代码就可以被视为没有运行结果。相当于内部黑箱操作一通,最后什么东西也没让我们看到。
下面我们来谈一谈TEP内的代码:
TEP的“运行结果”不是print出来的内容,而是一个一个的形如Trigger{...}的东西。
举例:
在打开scmd中的TEP窗口,在里面写代码:
x = 1 y = x^2 + 2*x print(y)
然后编译保存,再打开会发现什么都没有。这就是说,这一串代码在TEP中执行之后并没有“运行结果”
再举例:
a = P1 b = add x = 1 y = x^2 + 2*x Trigger { players = {a}, conditions = { Always(); }, actions = { SetResources(a, b, y, 0); CreateUnit(1, 2, 64, 1); }, }
这个代码在TEP中的运行结果就是生成一个触发,具体生成什么触发请自己实践。生成的这个触发就可以视为这个代码在TEP中的运行结果。我们可以看到,代码中的“Trigger”部分就好比平常代码中的print,决定着代码的最终输出结果。TEP编译器的作用就是运行每一行代码,然后将运行过程中遇到的所有Trigger作为结果来输出。输出结果自然就是一堆触发。
上面的a=P1和b=add这两行代码,以及CreateUnit括号内的数字,会在之后的教程做详细解释。
注:lua代码中的变量名不区分大小写,但是table中的key名区分大小写