【Mod教程】TPTmod制作系列教程之二——制作新元素
物理沙盘吧
全部回复
仅看楼主
level 11
这是TPTmod制作系列教程的第二篇,向你自己的TPT中增添新元素。
没看过第一篇的请先看第一篇:https://tieba.baidu.com/p/3099469450
2014年06月15日 13点06分 1
level 11
由于笼统地介绍各个元素的属性代码是几乎不可能的,这里我们以一个mod中的元素为例:
HETR,heater加热器,颜色与HEAT相同,是在special菜单里不能常规摧毁的固体,导热极快,迅速升温
2014年06月15日 13点06分 2
level 11
更了呢
2014年06月15日 13点06分 3
level 11
1.打开你的VS Express 2013,打开你之前编译的源文件(点“文件->打开项目…”)(就是tpt++.sln文件)
2014年06月15日 13点06分 4
level 11
对了,关于你的mod不能运行的问题,是这样的:你是用VS Express 2013做的,但是如果电脑里没有microsoft visual c++ 2013的话就无法运行,所以网上搜一个microsoft visual c++ 2013下载安装就行了
2014年06月15日 13点06分 5
嗯 恭喜你
2014年06月15日 13点06分
回复 sxxshy :恩
2014年06月15日 13点06分
level 11
2.在源文件根目录中/src/simulation/elements(路径)文件夹中新建HETR.cpp(这指定了元素的名字)
2014年06月15日 13点06分 6
level 11
3.在VS Express 2013(以后简称VSE)中你会看到右面有一个“解决方案资源管理器”,里面是像资源管理器一样的路径。依次展开tpt++/Source Files/simulation/elements,右键单击elements,选择“添加->现有项…”,然后在弹出的窗口中找到你的HETR.cpp放进去
2014年06月15日 13点06分 7
level 11
4.在那个“解决方案资源管理器”中的elements文件夹下找到你的HETR.cpp并双击它,你会看到它是一个空的文件,因为你还没有往里面添加东西。
2014年06月15日 13点06分 8
level 11
5.还是在那个“解决方案资源管理器”中在Source Files/generated文件夹下找到ElementClasses.h,双击打开它,里面全是“#define PT_XXXX Y”这样的东西。向下滚动,你应该会看到这一长串的最后一个是“#define PT_VRSG 176”,这指的是目前的最后一个元素,气态病毒VRSG。每个元素都有一个ID,就是列表中所写的。你要添加一个新元素,当然ID应该是最大的,也就是177(89.2版本);随着添加元素的增多,ID也会增大。如果再添加一个元素的话当然ID就是178了
2014年06月15日 13点06分 9
注意:不要编辑ElementClasses.h文件!它是通过generator.py(根目录下)自动生成的!
2014年06月15日 13点06分
回复 sxxshy :这也就是说,每次你添加完一个元素,都要先运行一遍generator.py。注意,只有在元素编程全部完毕的时候才能运行,否则会出错!
2014年06月15日 13点06分
level 11
6.现在开始编辑我们的HETR.cpp。它现在是空的,从头来很费劲。我们可以从另一个元素那里复制一下模板,然后再编辑。接下来我会给你们看一些元素的片段,来熟悉它们。
2014年06月15日 13点06分 10
level 11
加油
2014年06月15日 13点06分 12
level 11
让我们以最基础的元素DUST为例。下面是DUST.cpp的代码前半部分,中文是解说:
#include "simulation/Elements.h" 这是每个元素都必须有的相同的标识符
//#TPT-Directive ElementClass Element_DUST PT_DUST 1 这里标识元素标识符及序号
Element_DUST::Element_DUST() 同样,元素标识符。
{
Identifier = "DEFAULT_PT_DUST"; 这里指定了元素的标识符,都是DEFAULT_PT_XXXX格式的。
Name = "DUST"; 这是元素的名字。推荐使用四个字母。
Colour = PIXPACK(0xFFE0A0); 这是元素的颜色,使用16进制编码。不懂的百度去。
MenuVisible = 1; 是否是隐藏元素。1就是能直接创造出来,0则只能通过反应和控制台产生。
MenuSection = SC_POWDERS; 元素的类别。这里DUST是powders里的。
Enabled = 1; 是否能被创造出来。永远用1。
Advection = 0.7f; 元素被气流影响的程度。固体都是0,取值是-1到1。负数表示逆气流而上,ANAR和DEST就是。
AirDrag = 0.02f * CFDS; 物体在移动的时候产生的气流大小,0~1。只改动数字就行了。一般这个数非常小,0.04就算很大了。
AirLoss = 0.96f; 物体对气流的阻碍作用大小,0~1。1是完全没有作用,0是完全阻挡。绝大多数元素都大于0.9。
Loss = 0.80f; 物体每帧损失多少速度。0-1,1是不损失速度,0.5是损失一半,固体是0。一般只有能量粒子是1。
Collision = 0.0f; 当与其他物体碰撞时速度反弹的大小与原来速度的比例。都是负数,-1~0。能量粒子都是-0.99,也就是几乎不损失速度。别的都是-0.01或者0.0。
Gravity = 0.1f; 物体下落多快。-1~1,负数漂浮。气体一般是小负数,0.04就下落得相当快了。
Diffusion = 0.00f; 粒子晃动程度的大小,想想气体粒子的乱动。0~3(可能还能更大。),GAS是0.75,HYGN是3.00;非气体都是0.
HotAir = 0.000f* CFDS; 粒子产生的压力是多少,0~1。非气体都是0(除了VENT和VACU),一般极小,像0.000001这种的。但VENT和VACU达到了±0.010
Falldown = 1; 0=固体/气体/能量粒子;1=粉末;2=液体
Flammable = 10; 是否燃烧。数越大少得越快。例如WOOD是20,C-4有1000.
Explosive = 0; 0=不爆炸,1=遇火爆炸,2=遇火/高压爆炸
Meltable = 0; 是否熔化,0不熔,1熔
Hardness = 30; ACID腐蚀它有多快。0是不腐蚀,越大腐蚀得越快。GLAS是0,最大一般到50
Weight = 85; 物体重量。重量大的沉在重量小的下面。1=气体,0-49是液体,50-99是粉末,100是固体
Temperature = R_TEMP+0.0f+273.15f; 产生时的温度。R_TEMP是室温,应该能看懂吧。
HeatConduct = 70; 导热速度,0~255。
Description = "Very light dust. Flammable."; 描述。
State = ST_SOLID; 状态。粉末和固体是ST_SOLID,液体ST_LIQUID,气体ST_GAS,能量粒子和别的一些东西用ST_NONE
Properties = TYPE_PART|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; 比较麻烦,以后会详细介绍
2014年06月15日 13点06分 13
注意:改动时只改动数字,不要动那些f和*CFDS!!!
2014年06月15日 13点06分
注意2:Advection到Gravity的所有项目都是非常难调的,最好从其它类似元素那里复制
2014年06月15日 14点06分
累死我了……明天再更
2014年06月15日 14点06分
level 2
顶楼主,这贴不精华就可怜了楼主的小键盘了
2014年06月19日 12点06分 14
level 11
我一没时间你就不更啊……
2014年07月04日 09点07分 15
level 11
坑了-_-||
2014年08月06日 05点08分 16
level 12
哇 ---------------------------来自自动回帖
2014年08月16日 17点08分 17
level 7
有编程基础的人应该会[哈哈]
2014年11月16日 11点11分 18
level 11
[滑稽]挖起来催更
2016年01月22日 02点01分 19
1