自动炼油的脱盐器(密码回帖私你)
本帖最后由 fanvalen 于 2024-4-5 20:31 编辑前面说原油精炼不好改,我直接改了一个设备当炼油的适合v525812以上版本
using System;
using TUNING;
using UnityEngine;
public class DesalinatorConfig2 : IBuildingConfig
{
public override BuildingDef CreateBuildingDef()
{
string id = "FastOil";
int width = 4;
int height = 3;
string anim = "desalinator_kanim";
int hitpoints = 30;
float construction_time = 10f;
float[] tier = BUILDINGS.CONSTRUCTION_MASS_KG.TIER3;
string[] raw_METALS = MATERIALS.RAW_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, raw_METALS, melting_point, build_location_rule, BUILDINGS.DECOR.PENALTY.TIER0, tier2, 0.2f);
buildingDef.RequiresPowerInput = true;
buildingDef.EnergyConsumptionWhenActive = 80f;
buildingDef.SelfHeatKilowattsWhenActive = 0f;
buildingDef.ExhaustKilowattsWhenActive = 0f;
buildingDef.InputConduitType = ConduitType.Liquid;
buildingDef.OutputConduitType = ConduitType.Liquid;
buildingDef.Floodable = false;
buildingDef.ViewMode = OverlayModes.LiquidConduits.ID;
buildingDef.AudioCategory = "Metal";
buildingDef.UtilityInputOffset = new CellOffset(-1, 0);
buildingDef.UtilityOutputOffset = new CellOffset(0, 0);
buildingDef.PermittedRotations = PermittedRotations.FlipH;
return buildingDef;
}
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
{
go.GetComponent<KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
Storage storage = go.AddOrGet<Storage>();
storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
storage.showInUI = true;
go.AddOrGet<Desalinator>().maxSalt = 945f;
ElementConverter elementConverter = go.AddComponent<ElementConverter>();
elementConverter.consumedElements = new ElementConverter.ConsumedElement[]
{
new ElementConverter.ConsumedElement(new Tag("CrudeOil"), 10f, true)
};
elementConverter.outputElements = new ElementConverter.OutputElement[]
{
new ElementConverter.OutputElement(10f, SimHashes.Petroleum, 0f, false, true, 0f, 0.5f, 0.75f, byte.MaxValue, 0, true)
};
DesalinatorWorkableEmpty desalinatorWorkableEmpty = go.AddOrGet<DesalinatorWorkableEmpty>();
desalinatorWorkableEmpty.workTime = 1f;
desalinatorWorkableEmpty.workLayer = Grid.SceneLayer.BuildingFront;
ConduitConsumer conduitConsumer = go.AddOrGet<ConduitConsumer>();
conduitConsumer.conduitType = ConduitType.Liquid;
conduitConsumer.consumptionRate = 10f;
conduitConsumer.capacityKG = 20f;
conduitConsumer.capacityTag = GameTags.Any;
conduitConsumer.forceAlwaysSatisfied = true;
conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store;
ConduitDispenser conduitDispenser = go.AddOrGet<ConduitDispenser>();
conduitDispenser.conduitType = ConduitType.Liquid;
conduitDispenser.invertElementFilter = true;
conduitDispenser.elementFilter = new SimHashes[]
{
SimHashes.CrudeOil
};
Prioritizable.AddRef(go);
}
public override void DoPostConfigurePreview(BuildingDef def, GameObject go)
{
base.DoPostConfigurePreview(def, go);
}
public override void DoPostConfigureUnderConstruction(GameObject go)
{
base.DoPostConfigureUnderConstruction(go);
}
public override void DoPostConfigureComplete(GameObject go)
{
go.AddOrGetDef<PoweredActiveController.Def>().showWorkingStatus = true;
}
}
适合v525812以下版本
using System;
using TUNING;
using UnityEngine;
public class DesalinatorConfig2 : IBuildingConfig
{
public override BuildingDef CreateBuildingDef()
{
string id = "FastOil";
int width = 4;
int height = 3;
string anim = "desalinator_kanim";
int hitpoints = 30;
float construction_time = 10f;
float[] tier = BUILDINGS.CONSTRUCTION_MASS_KG.TIER3;
string[] raw_METALS = MATERIALS.RAW_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, raw_METALS, melting_point, build_location_rule, BUILDINGS.DECOR.PENALTY.TIER0, tier2, 0.2f);
buildingDef.RequiresPowerInput = true;
buildingDef.EnergyConsumptionWhenActive = 80f;
buildingDef.SelfHeatKilowattsWhenActive = 0f;
buildingDef.ExhaustKilowattsWhenActive = 0f;
buildingDef.InputConduitType = ConduitType.Liquid;
buildingDef.OutputConduitType = ConduitType.Liquid;
buildingDef.Floodable = false;
buildingDef.ViewMode = OverlayModes.LiquidConduits.ID;
buildingDef.AudioCategory = "Metal";
buildingDef.UtilityInputOffset = new CellOffset(-1, 0);
buildingDef.UtilityOutputOffset = new CellOffset(0, 0);
buildingDef.PermittedRotations = PermittedRotations.FlipH;
return buildingDef;
}
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
{
go.GetComponent<KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
Storage storage = go.AddOrGet<Storage>();
storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
storage.showInUI = true;
go.AddOrGet<Desalinator>().maxSalt = 945f;
ElementConverter elementConverter = go.AddComponent<ElementConverter>();
elementConverter.consumedElements = new ElementConverter.ConsumedElement[]
{
new ElementConverter.ConsumedElement(new Tag("CrudeOil"), 10f)
};
elementConverter.outputElements = new ElementConverter.OutputElement[]
{
new ElementConverter.OutputElement(10f, SimHashes.Petroleum, 0f, false, true, 0f, 0.5f, 0.75f, byte.MaxValue, 0)
};
DesalinatorWorkableEmpty desalinatorWorkableEmpty = go.AddOrGet<DesalinatorWorkableEmpty>();
desalinatorWorkableEmpty.workTime = 1f;
desalinatorWorkableEmpty.workLayer = Grid.SceneLayer.BuildingFront;
ConduitConsumer conduitConsumer = go.AddOrGet<ConduitConsumer>();
conduitConsumer.conduitType = ConduitType.Liquid;
conduitConsumer.consumptionRate = 10f;
conduitConsumer.capacityKG = 100f;
conduitConsumer.capacityTag = GameTags.Any;
conduitConsumer.forceAlwaysSatisfied = true;
conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store;
ConduitDispenser conduitDispenser = go.AddOrGet<ConduitDispenser>();
conduitDispenser.conduitType = ConduitType.Liquid;
conduitDispenser.invertElementFilter = true;
conduitDispenser.elementFilter = new SimHashes[]
{
SimHashes.CrudeOil
};
Prioritizable.AddRef(go);
}
public override void DoPostConfigurePreview(BuildingDef def, GameObject go)
{
base.DoPostConfigurePreview(def, go);
}
public override void DoPostConfigureUnderConstruction(GameObject go)
{
base.DoPostConfigureUnderConstruction(go);
}
public override void DoPostConfigureComplete(GameObject go)
{
go.AddOrGetDef<PoweredActiveController.Def>().showWorkingStatus = true;
}
}
编辑添加类
然后tuning.builds添加到菜单"FastOil"看个人喜好
我一般添加到氧气栏它比较少
汉化
STRINGS.BUILDINGS.PREFABS
public class FASTOIL
{
public static LocString NAME = UI.FormatAsLink("快速炼油器", "FASTOIL");
public static LocString DESC = "每秒10kg速度.";
public static LocString EFFECT = string.Concat(new string[]
{
"CrudeOil",
"Petroleum"
});
}
以上编辑都选用编辑类,而不是编辑方法
自动丢盐的脱盐器呢? 19611024 发表于 2022-10-26 19:10
自动丢盐的脱盐器呢?
DesalinatorConfig2 这些新的不是原始基础上改\滑稽
fanvalen 发表于 2022-10-26 19:22
DesalinatorConfig2 这些新的不是原始基础上改\滑稽
using System;
using TUNING;
using UnityEngine;
// Token: 0x020009D7 RID: 2519
public class DesalinatorConfig : IBuildingConfig
{
// Token: 0x06002F32 RID: 12082 RVA: 0x0011D238 File Offset: 0x0011B438
public override BuildingDef CreateBuildingDef()
{
string id = "Desalinator";
int width = 4;
int height = 3;
string anim = "desalinator_kanim";
int hitpoints = 30;
float construction_time = 10f;
float[] tier = BUILDINGS.CONSTRUCTION_MASS_KG.TIER3;
string[] raw_METALS = MATERIALS.RAW_METALS;
float melting_point = 1600f;
BuildLocationRule build_location_rule = BuildLocationRule.OnFloor;
EffectorValues tier2 = NOISE_POLLUTION.NOISY.TIER1;
BuildingDef buildingDef = BuildingTemplates.CreateBuildingDef(id, width, height, anim, hitpoints, construction_time, tier, raw_METALS, melting_point, build_location_rule, BUILDINGS.DECOR.PENALTY.TIER0, tier2, 0.2f);
buildingDef.RequiresPowerInput = true;
buildingDef.EnergyConsumptionWhenActive = 480f;
buildingDef.SelfHeatKilowattsWhenActive = 8f;
buildingDef.ExhaustKilowattsWhenActive = 0f;
buildingDef.InputConduitType = ConduitType.Liquid;
buildingDef.OutputConduitType = ConduitType.Liquid;
buildingDef.Floodable = false;
buildingDef.ViewMode = OverlayModes.LiquidConduits.ID;
buildingDef.AudioCategory = "Metal";
buildingDef.UtilityInputOffset = new CellOffset(-1, 0);
buildingDef.UtilityOutputOffset = new CellOffset(0, 0);
buildingDef.PermittedRotations = PermittedRotations.FlipH;
return buildingDef;
}
// Token: 0x06002F33 RID: 12083 RVA: 0x0011D2F4 File Offset: 0x0011B4F4
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
{
go.GetComponent<KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
Storage storage = go.AddOrGet<Storage>();
storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
storage.showInUI = true;
go.AddOrGet<Desalinator>().maxSalt = 10000f;
var maxmass=10f;
if(storage.capacityKG<maxmass)
{
maxmass=storage.capacityKG;
}
ElementConverter elementConverter = go.AddComponent<ElementConverter>();
elementConverter.consumedElements = new ElementConverter.ConsumedElement[]
{
new ElementConverter.ConsumedElement(new Tag("SaltWater"), maxmass)
};
elementConverter.outputElements = new ElementConverter.OutputElement[]
{
new ElementConverter.OutputElement(maxmass*0.93f, SimHashes.Water, 0f, false, true, 0f, 0.5f, 0.75f, byte.MaxValue, 0),
new ElementConverter.OutputElement(maxmass*0.07f, SimHashes.Salt, 0f, false, true, 0f, 0.5f, 0.25f, byte.MaxValue, 0)
};
ElementConverter elementConverter2 = go.AddComponent<ElementConverter>();
elementConverter2.consumedElements = new ElementConverter.ConsumedElement[]
{
new ElementConverter.ConsumedElement(new Tag("Brine"), maxmass)
};
elementConverter2.outputElements = new ElementConverter.OutputElement[]
{
new ElementConverter.OutputElement(maxmass*0.7f, SimHashes.Water, 0f, false, true, 0f, 0.5f, 0.75f, byte.MaxValue, 0),
new ElementConverter.OutputElement(maxmass*0.3f, SimHashes.Salt, 0f, false, true, 0f, 0.5f, 0.25f, byte.MaxValue, 0)
};
DesalinatorWorkableEmpty desalinatorWorkableEmpty = go.AddOrGet<DesalinatorWorkableEmpty>();
desalinatorWorkableEmpty.workTime = 0.1f;
desalinatorWorkableEmpty.workLayer = Grid.SceneLayer.BuildingFront;
ElementDropper elementDropper = go.AddComponent<ElementDropper>();
elementDropper.emitMass = 800f;
elementDropper.emitTag = new Tag("Salt");
elementDropper.emitOffset = new Vector3(0f, 1f, 0f);
ConduitConsumer conduitConsumer = go.AddOrGet<ConduitConsumer>();
conduitConsumer.conduitType = ConduitType.Liquid;
conduitConsumer.consumptionRate = 100f;
conduitConsumer.capacityKG = 200f;
conduitConsumer.capacityTag = GameTags.AnyWater;
conduitConsumer.forceAlwaysSatisfied = true;
conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store;
ConduitDispenser conduitDispenser = go.AddOrGet<ConduitDispenser>();
conduitDispenser.conduitType = ConduitType.Liquid;
conduitDispenser.invertElementFilter = true;
conduitDispenser.elementFilter = new SimHashes[]
{
SimHashes.SaltWater,
SimHashes.Brine
};
Prioritizable.AddRef(go);
}
// Token: 0x06002F34 RID: 12084 RVA: 0x0001C8BB File Offset: 0x0001AABB
public override void DoPostConfigurePreview(BuildingDef def, GameObject go)
{
base.DoPostConfigurePreview(def, go);
}
// Token: 0x06002F35 RID: 12085 RVA: 0x0001C8C5 File Offset: 0x0001AAC5
public override void DoPostConfigureUnderConstruction(GameObject go)
{
base.DoPostConfigureUnderConstruction(go);
}
// Token: 0x06002F36 RID: 12086 RVA: 0x00009769 File Offset: 0x00007969
public override void DoPostConfigureComplete(GameObject go)
{
go.AddOrGetDef<PoweredActiveController.Def>().showWorkingStatus = true;
}
// Token: 0x04001FCD RID: 8141
public const string ID = "Desalinator";
// Token: 0x04001FCE RID: 8142
private const ConduitType CONDUIT_TYPE = ConduitType.Liquid;
// Token: 0x04001FCF RID: 8143
private const float INPUT_RATE = 5f;
// Token: 0x04001FD0 RID: 8144
private const float SALT_WATER_TO_SALT_OUTPUT_RATE = 0.35f;
// Token: 0x04001FD1 RID: 8145
private const float SALT_WATER_TO_CLEAN_WATER_OUTPUT_RATE = 4.65f;
// Token: 0x04001FD2 RID: 8146
private const float BRINE_TO_SALT_OUTPUT_RATE = 1.5f;
// Token: 0x04001FD3 RID: 8147
private const float BRINE_TO_CLEAN_WATER_OUTPUT_RATE = 3.5f;
}
这个不能用了
19611024 发表于 2022-10-27 23:47
using System;
using TUNING;
using UnityEngine;
v525812级以上的版本参考更新后的代码
自动炼油的脱盐器 马克一下 回头来取 感谢大佬 大佬,怎么看不到代码了?只显示汉字,英文几乎都没了 1224487158 发表于 2024-4-5 12:49
大佬,怎么看不到代码了?只显示汉字,英文几乎都没了
luntande yuanyin,yijinggenggaixianshi
页:
[1]