3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 1823|回复: 8
打印 上一主题 下一主题

[原创] 自动炼油的脱盐器(密码回帖私你)

[复制链接]

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
跳转到指定楼层
主题
发表于 2022-8-13 21:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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"
                                });
                        }


以上编辑都选用编辑类,而不是编辑方法





回复

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
舒服的沙发
 楼主| 发表于 2022-8-13 21:39 | 只看该作者
回复 支持 反对

使用道具 举报

10

主题

1035

帖子

2066

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
51
金元
18622
积分
2066
精华
0
注册时间
2011-2-15

G胖の微笑

硬硬的板凳
发表于 2022-10-26 19:10 | 只看该作者
自动丢盐的脱盐器呢?
回复 支持 反对

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
冰凉的地板
 楼主| 发表于 2022-10-26 19:22 | 只看该作者
19611024 发表于 2022-10-26 19:10
自动丢盐的脱盐器呢?

DesalinatorConfig2 这些新的不是原始基础上改\滑稽


回复 支持 反对

使用道具 举报

10

主题

1035

帖子

2066

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
51
金元
18622
积分
2066
精华
0
注册时间
2011-2-15

G胖の微笑

5#
发表于 2022-10-27 23:47 | 只看该作者
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;
}



这个不能用了

回复 支持 反对

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
6#
 楼主| 发表于 2022-10-28 15:51 | 只看该作者
19611024 发表于 2022-10-27 23:47
using System;
using TUNING;
using UnityEngine;

v525812级以上的版本参考更新后的代码
回复 支持 反对

使用道具 举报

1

主题

50

帖子

60

积分

初级玩家

Rank: 2

贡献度
0
金元
600
积分
60
精华
0
注册时间
2019-11-4
7#
发表于 2022-11-15 22:45 | 只看该作者
自动炼油的脱盐器 马克一下 回头来取 感谢大佬
回复 支持 反对

使用道具 举报

0

主题

367

帖子

885

积分

超级玩家

Rank: 5Rank: 5

贡献度
0
金元
8853
积分
885
精华
0
注册时间
2015-8-31
8#
发表于 2024-4-5 12:49 | 只看该作者
大佬,怎么看不到代码了?只显示汉字,英文几乎都没了
回复 支持 反对

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
9#
 楼主| 发表于 2024-4-5 20:34 | 只看该作者
1224487158 发表于 2024-4-5 12:49
大佬,怎么看不到代码了?只显示汉字,英文几乎都没了

luntande yuanyin,yijinggenggaixianshi
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-3-27 19:42 , Processed in 0.033531 second(s), 18 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表