魔改将空罐器改成手动瓶装气体装回气体管道
本帖最后由 fanvalen 于 2024-7-7 20:34 编辑魔改的原理就是用空罐器加上气体管道出口,使空瓶不发射到周围
我在空瓶功能里设置了一个发射标志位
BottleEmptier bottleEmptier = go.AddOrGet<BottleEmptier>();
bottleEmptier.emit=false;
下面是效果和改的代码
这个是建造代码最后在tuning.buildings下添加BottleEmptierGas2,(这个要下面添加好保存了再来添加这个否则会失败)using System;
using TUNING;
using UnityEngine;
public class BottleEmptierGasConfig2 : IBuildingConfig
{
public override BuildingDef CreateBuildingDef()
{
string id = "BottleEmptierGas2";
int width = 1;
int height = 3;
string anim = "gas_emptying_station_kanim";
int hitpoints = 30;
float construction_time = 60f;
float[] tier = BUILDINGS.CONSTRUCTION_MASS_KG.TIER2;
string[] refined_METALS = MATERIALS.REFINED_METALS;
float melting_point = 1600f;
BuildLocationRule build_location_rule = BuildLocationRule.Anywhere;
EffectorValues tier2 = NOISE_POLLUTION.NOISY.TIER1;
BuildingDef buildingDef = BuildingTemplates.CreateBuildingDef(id, width, height, anim, hitpoints, construction_time, tier, refined_METALS, melting_point, build_location_rule, BUILDINGS.DECOR.PENALTY.TIER2, tier2, 0.2f);
buildingDef.Floodable = false;
buildingDef.AudioCategory = "Metal";
buildingDef.Overheatable = false;
buildingDef.PermittedRotations = PermittedRotations.FlipH;
buildingDef.OutputConduitType = ConduitType.Gas;
buildingDef.UtilityOutputOffset = new CellOffset(0, 1);
return buildingDef;
}
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
{
Prioritizable.AddRef(go);
Storage storage = go.AddOrGet<Storage>();
storage.storageFilters = STORAGEFILTERS.GASES;
storage.showInUI = true;
storage.showDescriptor = true;
storage.capacityKg = 2000f;
go.AddOrGet<TreeFilterable>();
BottleEmptier bottleEmptier = go.AddOrGet<BottleEmptier>();
bottleEmptier.isGasEmptier = true;
bottleEmptier.emptyRate = 1000f;
bottleEmptier.isEmit = false;
ConduitDispenser conduitDispenser = go.AddOrGet<ConduitDispenser>();
conduitDispenser.conduitType = ConduitType.Gas;
conduitDispenser.alwaysDispense = true;
conduitDispenser.elementFilter = null;
}
public override void DoPostConfigureComplete(GameObject go)
{
}
public BottleEmptierGasConfig2()
{
}
public const string ID = "BottleEmptierGas2";
}
先添加public bool isEmit = true;
再修改下面
BottleEmptier里找public void Emit(float dt)改成下面这样
主要就是添加判断是否发射if (base.master.isEmit){}
public void Emit(float dt)
{
if (base.master.isEmit)
{
PrimaryElement firstPrimaryElement = this.GetFirstPrimaryElement();
if (firstPrimaryElement == null)
{
return;
}
Storage component = base.GetComponent<Storage>();
float num = Mathf.Min(firstPrimaryElement.Mass, base.master.emptyRate * dt);
if (num <= 0f)
{
return;
}
Tag prefabTag = firstPrimaryElement.GetComponent<KPrefabID>().PrefabTag;
float num2;
SimUtil.DiseaseInfo diseaseInfo;
float temperature;
component.ConsumeAndGetDisease(prefabTag, num, out num2, out diseaseInfo, out temperature);
Vector3 position = base.transform.GetPosition();
position.y += 1.8f;
bool flag = base.GetComponent<Rotatable>().GetOrientation() == Orientation.FlipH;
position.x += (flag ? -0.2f : 0.2f);
int num3 = Grid.PosToCell(position) + (flag ? -1 : 1);
if (Grid.Solid)
{
num3 += (flag ? 1 : -1);
}
Element element = firstPrimaryElement.Element;
byte idx = element.idx;
if (element.IsLiquid)
{
FallingWater.instance.AddParticle(num3, idx, num2, temperature, diseaseInfo.idx, diseaseInfo.count, true, false, false, false);
return;
}
SimMessages.ModifyCell(num3, (int)idx, temperature, num2, diseaseInfo.idx, diseaseInfo.count, SimMessages.ReplaceType.None, false, -1);
}
}
我设置的标志位是public bool emit = true;
在Emit功能里做了判断
true的时候执行原来的功能
false就不执行发射
本帖最后由 fanvalen 于 2024-9-4 17:08 编辑
上面是气体装管
这个是液体装管必须要等上面的添加好了再添加这个
最后都要添加到tuning.buildings下加BottleEmptier2
using System;
using TUNING;
using UnityEngine;
// Token: 0x02002C2A RID: 11306
public class BottleEmptierConfig2 : IBuildingConfig
{
// Token: 0x0600B020 RID: 45088
public override BuildingDef CreateBuildingDef()
{
string id = "BottleEmptier2";
int width = 1;
int height = 3;
string anim = "liquidator_kanim";
int hitpoints = 30;
float construction_time = 10f;
float[] tier = BUILDINGS.CONSTRUCTION_MASS_KG.TIER4;
string[] raw_MINERALS = MATERIALS.RAW_MINERALS;
float melting_point = 1600f;
BuildLocationRule build_location_rule = BuildLocationRule.Anywhere;
EffectorValues none = NOISE_POLLUTION.NONE;
BuildingDef buildingDef = BuildingTemplates.CreateBuildingDef(id, width, height, anim, hitpoints, construction_time, tier, raw_MINERALS, melting_point, build_location_rule, BUILDINGS.DECOR.PENALTY.TIER1, none, 0.2f);
buildingDef.Floodable = false;
buildingDef.AudioCategory = "Metal";
buildingDef.Overheatable = false;
buildingDef.PermittedRotations = PermittedRotations.FlipH;
buildingDef.OutputConduitType = ConduitType.Liquid;
buildingDef.UtilityOutputOffset = new CellOffset(0, 1);
return buildingDef;
}
// Token: 0x0600B021 RID: 45089
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
{
Prioritizable.AddRef(go);
Storage storage = go.AddOrGet<Storage>();
storage.storageFilters = STORAGEFILTERS.LIQUIDS;
storage.showInUI = true;
storage.showDescriptor = true;
storage.capacityKg = 2000f;
go.AddOrGet<TreeFilterable>();
go.AddOrGet<BottleEmptier>();
BottleEmptier bottleEmptier = go.AddOrGet<BottleEmptier>();
bottleEmptier.isGasEmptier = false;
bottleEmptier.emptyRate = 1000f;
bottleEmptier.isEmit = false;
ConduitDispenser conduitDispenser = go.AddOrGet<ConduitDispenser>();
conduitDispenser.conduitType = ConduitType.Liquid;
conduitDispenser.alwaysDispense = true;
conduitDispenser.elementFilter = null;
}
// Token: 0x0600B022 RID: 45090
public override void DoPostConfigureComplete(GameObject go)
{
}
// Token: 0x0600B023 RID: 45091
public BottleEmptierConfig2()
{
}
// Token: 0x0400B061 RID: 45153
public const string ID = "BottleEmptier2";
}
本帖最后由 随便VV逛逛 于 2021-12-31 10:05 编辑
fanvalen 发表于 2021-11-18 18:16
上面是气体装管
这个是液体装管必须要等上面的添加好了再添加这个
最后都要添加到tuning.buildings下加Bott ...
能不能详细点介绍,在原建筑的基础上,再添加一个修改过的建筑啊BottleEmptierConfig2 随便VV逛逛 发表于 2021-12-31 10:04
能不能详细点介绍,在原建筑的基础上,再添加一个修改过的建筑啊BottleEmptierConfig2 ...
编辑添加类把完整代码复制进去保存,再编辑找BottleEmptierConfig2
is emit找不到该定义何解,以前改过一次瞎捣鼓成功了。 wz1 发表于 2023-4-8 07:19
is emit找不到该定义何解,以前改过一次瞎捣鼓成功了。
你这也太早了,
先在核心功能里创建一个变量叫isemit
保存重新加载文件就可以访问了,否则读取不到
fanvalen 发表于 2023-4-8 08:35
你这也太早了,
先在核心功能里创建一个变量叫isemit
保存重新加载文件就可以访问了,否则读取不到
感谢大佬,之前变量给BottleEmptier 里面创建了,但是好像没打对。感谢感谢
这个现在还能改吗,改完发现气压服会一直充气 气压服解决了,发现空瓶消耗完还会在哪duangduang动,小人不会搬运添加,可能版本问题吧,
页:
[1]