Using the console/zh

From The Powder Toy
Jump to: navigation, search
Language: English  • Deutsch • 中文

The Powder Toy目前使用的是Lua控制台,它可以让你输入比旧控制台更多的命令。如果你只是想做一些简单的事情,旧版控制台语法有更简单更短的命令。

使用控制台

从49.1版本后,命令需要在前面加上一个!,并且还可以使用 Lua 脚本(Lua Scripts)。

TPT中的控制台是一个窗口,你可以通过它直接触发TPT中的指令。由于它与代码本身的关系非常密切,你可以用它做一些有趣的事情,在一般情况下,很多操作仅通过鼠标点击是不可能实现的。

打开控制台很简单。按~键(在某些键盘上是`或¬或QWERTZ键盘上的^/°)(不管有没有按shift键,它就在1键的左边,在大多数键盘上的Tab上方),游戏就会暂停,会出现一个黑色的窗口,等待输入命令。

与大多数游戏相比,TPT的操作其实相当直观,但你可能还是要尝试几次才能记住输入语句的顺序。

最常用的,或者说至少是大多数人都会想知道的最立竿见影的酷炫有用的命令是Set命令。其语法是这样的:

!set [What variable to set] [the identity of the particle/s to be set] [the value it changes to]

!set [要设置的变量] [要设置的粒子的值] [要更改成的值]

换句话说,假设我想把25号粒子变成金属。我将键入:

!set type 25 metl

你甚至可以用关键字 "All "甚至元素名称来代替这个数字。所以命令:

!set type all metl

会把保存的每个粒子都变成metl。

!set type metl watr

会把所有的metl都变成水。以此类推。

!"set type metl none

将存档中的metl全部去除。

"type"这个变量也是可以替换的。你可以使用以下关键词:

  • Type:这设定了一个粒子的id。你可以用它来改变一个元素是什么。
  • Temp:这设置了一个粒子的温度。你可以用它来一次融化整个存档。(请注意:游戏使用开尔文温标,你可以将273.15加上当前温度得到摄氏度)
  • Ctype:这设置了元素的临时状态。这个功能有很多用途,比如说把LAVA冻结成NEUT。要做到这一点,放置一些LAVA,然后到控制台键入"!set ctype lava neut"(去掉引号),按回车键。在它下面放置一些室温的元素,然后取消暂停。当熔岩击中冷却器的物体时,它将冻结成neut。Ctype也是用来决定CLNE和它的变体会生成什么元素的。
  • Life:这设定了一个粒子的寿命。然而这个变量被用于许多不同的东西,比如火花的时间和火的颜色。
  • X,Y,VX,VY,VX,VY:这些设置了粒子在场中的X和Y位置。VX和VY分别设置了它们的速度。
  • Tmp:用于设置粒子的速度。用于变化的东西,比如石英的颜色。
  • Tmp2:类似于第二个Tmp,很少用到。
  • tmp3,tmp4和flag很少使用。


!Quit命令是一个直截了当的命令,它会直接关闭TPT。

!Quit


!Create命令也很直接。通过键入元素名称和你想要的坐标,你可以创建一个任意元素的粒子。比如说:

!create METL 200,100

这将在TPT的网格上的点(200,100)处创建一个METL(金属)像素。


!delete/!delete/!kill命令也是类似的,它们会删除一个点上的粒子。

!delete 200,100

这会删除你刚刚创建的粒子。


!load命令会加载一个特定的网络存档。这个命令将加载存档500000:

!load 500000


!bubble命令在特定的点创建一个肥皂泡。如果没有这个命令,就很难创建它们:

!bubble 100,100


!reset命令可以做很多事情。!reset velocity 将所有粒子的速度设置为0。 !reset pressure 重置压力图,就像按=键一样。!reset sparks 会清除屏幕上所有的火花,并将它们的type设置为ctype。!reset temp 将所有的粒子设置为你绘制时的默认温度。

这个wiki页面还没有涉及到其他命令。控制台的页面基本上描述了如何使用它,有了这些例子,你就可以拿着它去想办法了。

其他常见的命令:

!if

!if type 1,dmnd

这将检查 parts[1].type 是否为dmnd,如果是,则返回 1,如果不是,则返回 0。(part[1]是TPT网格中处于第一格的元素)

运行脚本

你可以通过创建一个文本文档并编写一个脚本来运行存储在文件中的控制台命令。

当你完成后,打开Powder Toy中的控制台,然后输入

'dofile("键入文件路径")',它可能会说脚本没有启用(scripts are not enabled.)。

脚本将被运行一次,你可以使用任何正常的命令,if,else,endif和end。而使用Lua运行脚本给了你更多的选择,让你的代码在TPT中每一帧都能运行。

关于使用tmp,life,tmp2和ctype的提示和技巧

ctype
  • 克隆(BCLN,PCLN,CLNE):ctype是克隆产生的元素。例如,你可以通过控制台/脚本命令"!set ctype clne neut" 来使屏幕上所有的clne产生中子。
  • 状态变化(ICE,LAVA):ctype是要熔化/冻结的元素。例如,你可以使用这个命令把lava冻成bomb:"!set ctype lava bomb"。这实际上会得到一些有趣的结果。
  • 电信号:ctype是sprk所覆盖的元素。
  • 颜色(PHOT,FILT,FWRK,GLOWlBRAY):ctype用来存储颜色的各种位信息。目前还没有简单的方法可以用控制台来改变。
  • PIPE:Ctype用来区分不同类型的管道(红/绿/蓝/未分配)。目前没有简单的方法可以用控制台来改变(但可以尝试将ctype设置为none,dust,watr,oil,fire)。关于PIPE的更多信息,请参见使用PIPE元素。
  • QRTZ:QRTZ的生长使用ctype。例如,自然的方式是将SLTW倒在上面。SLTW将ctype改成DUST。"!!set ctype qrtz sprk "会导致快速、不自然生长。以前是手动触发QRTZ造成的。
  • WWLD:不同类型的WWLD(电子头、电子尾、电子线)是通过ctype来区分的。可以尝试用ctype DUST,WATR和none来实验。
  • LIFE:ctype改变的生命类型。

使用ctype,你可以用这样的代码来制作熔冰熔钻:

对于熔冰,绘制一些ICE,然后输入" !set ctype ice lava " 再输入" !set temp ice 500",存档中的的ICE就会变成熔冰。

熔融钻石的情况下,绘制一些LAVA,然后输入" !set ctype lava dmnd " 。这和上面提到的状态变化是一致的。

tmp

Tmp是一个用于各种元素属性的值。只有少数元素使用它。注意:这不是温度值(它叫 "temp")。Tmp也可以改变WIFI的通道(但 "temp "或温度值控制着tmp值,从控制台改变tmp没有意义)。

  • PIPE:管道中当前包含的元素的类型。使用'!set tmp pipe 0'可以删除所有管道中的所有元素。
  • CRAY:射线的长度。使用 '!set tmp cray 0' 将其设置为默认值。
  • DRAY:要复制多少个粒子(默认为0,或直到空白处)。使用 '!set tmp dray 0' 来设置为默认值。
  • FILT:tmp改变FILT上的操作符:
0: "set "模式(默认):FILT的光谱被复制到通过它的PHOT粒子上。
1:"与(and)"模式:对PHOT和FILT的光谱进行与操作,结果存储在PHOT粒子中,任何不存在于FILT中的光谱将从PHOT中删除。
2:"或(or)"模式:执行位或运算:在FILT中存在的所有光谱都将在PHOT中被“开启”(如果未被开启)。
3: "减(sub)"模式:执行位与非运算:FILT中的所有光谱都会从PHOT中去除。
4:"红移"模式:光子的光谱被红移。红移的距离是以类似于它的非类型工作模式的方式从温度计算出来的。Tmp值被忽略。
5:"蓝移"模式:与 "红移"模式类似,但移位方向相反,光谱向蓝端移动。
6:"nop"模式:不进行光谱变化。如果你想把PHOT和ARAY的光束交叉,而不改变频谱,这很有用。
7: "异或(xor)"模式:执行一个位异或运算:在FILT中的所有颜色在PHOT的光谱中被 "翻转",也就是说,如果某些颜色被打开,它就会关闭,反之亦然。
8:"非(not)"模式:执行位非运算:PHOT颜色被翻转。注意,FILT的光谱被忽略。
9: "QRTZ散射 "模式。随机化光子的速度并随机改变光子的颜色,就像QRTZ一样。

改变SING的tmp值,可以手动改变其消耗的物质量,对制作炸弹很有用。

其他的都和nop模式一样,但建议nop用6,以防有新的模式加入。使用 !set tmp filt <操作编号>。

寿命

在火焰或等离子体上使用这个属性来设置他们的燃烧时间,直到燃烧殆尽。例如,"!set life fire 1000",火焰持续很长的时间(甚至在温度冷却到室温后,它还在发光,与等离子体相同)。改变FUSE的LIFE属性来使它处于燃烧状态,通过将这个数字降低到1这样的低值(命令是"!set life fuse 1")。你可以用它基本上可以把任何元素放入一个使用相同的特殊属性的状态,但使用的次数可以使元素多得多、好得多、长得多、短得多、差得多或少。

比如说:

  • DEUT有一个属性,它可以根据自己的温度来膨胀。如,9999999生命deut使它膨胀并占据整个屏幕。
  • LIFE的另一个的用途是它对ACID的作用。ACID是有腐蚀性的。它有一个设定的生命值为75,在不编辑游戏引擎的情况下无法提升。酸腐蚀掉的粒子越多,它的生命值就越少。如果设置为50以下,任何粒子都可以破坏ACID。
  • 开关,如SWCH、HSWC、PCLN、PUMP等开关也是利用生命值来开启和关闭。
  • 传送(PRTI,PRTO)使用生命来产生效果。这也是唯一一次生命自然变成负数的机会。
  • 火柴人的生命值由LIFE决定。
  1. SPRK不仅使用Ctype,还使用LIFE。SPRK在大多数金属上的SPRK的生命为4.这说明SPRK会在材料上停留多长时间。之后的材料再利用生命来计算什么时候可以再次产生SPRK。
  • COAL利用寿命来慢慢燃烧。开始时,它的寿命为110。与火的接触会使寿命减少,当寿命达到0时,就会被FIRE代替。
tmp2

tmp2类似于tmp,只是因为是次要属性,所以用得比较少。

比如说:

  • QRTZ/PQRT:tmp2 可以改变它们的颜色。使用 !set tmp2 qrtz <0到10之间的数字>。
  • Virs/Virg/Vrss。用来设置被感染的元素。使用 !set tmp2 virs <元素id或名称>。
  • CRAY:用于生成元素和本体之间的间距。
  • DRAY: 用于正本(复制前元素)和副本(复制后元素)之间的间距。使用 !set tmp2 dray <spacing>。
  • PIPE/STOR:用于生活类型(但不能正常使用)。
复杂的控制台命令

有很多控制台命令可以用来操作元素的重力等。tpt.el.metl.gravity=5会改变保存中所有的metl粒子的重力为5,因此会向下移动;ptp.el.gas.diffusion=10会改变粒子的扩散(或者说粒子的扩散程度),使其扩散到更高的程度。以上只是很多TPT用户不知道的数百条复杂命令中的几个例子。

https://www.boxmein.net/tpt/tptelements/reference/lua-reference.html#tree

视频教程

科学上网链接: http://youtu.be/mhlk98L5_0s