缺氧吧 关注:166,327贴子:2,181,562

回复:缺氧mod制作教程

只看楼主收藏回复

顶顶顶,催更


IP属地:广东来自Android客户端34楼2023-03-17 00:28
回复
    求问,有的mod是一个bin格式的文件,这种用什么软件可以进行修改啊?


    IP属地:辽宁35楼2023-04-07 23:58
    回复
      等更多


      IP属地:广东来自Android客户端36楼2023-06-08 01:50
      回复
        插眼


        IP属地:浙江来自iPhone客户端37楼2023-06-08 11:39
        回复
          插眼,坐更


          IP属地:浙江38楼2023-07-18 11:45
          回复
            大佬,请问游戏机制是否允许制作一个mod,这个mod的作用是让飞船第一次进入时空裂口以后,能开启一张新的星图,并且新的星图里面能够解锁新的建筑,物质等等,然后后面的飞船飞到裂口也能直接穿越到新的星图中。


            IP属地:四川来自iPhone客户端39楼2023-07-20 01:20
            收起回复
              请问香料Database.Spices代码写在.ctor里面,怎么用HarmonyPatch修补?


              IP属地:河南40楼2023-07-29 15:38
              收起回复
                大佬更新


                IP属地:福建41楼2023-09-24 23:49
                回复


                  IP属地:浙江来自Android客户端42楼2023-12-14 07:47
                  回复
                    支持


                    IP属地:江西来自Android客户端43楼2023-12-14 13:03
                    回复
                      哪里有建筑贴图的教学啊,就比如想让画布变大


                      IP属地:河南44楼2024-01-02 21:00
                      收起回复
                        失踪人口回归,到时候更一个加新东西的,不过加新物品要会面向对象


                        IP属地:湖北来自Android客户端45楼2024-03-07 01:20
                        收起回复
                          催更催更!


                          IP属地:重庆来自Android客户端46楼2024-03-08 20:43
                          回复
                            先贴一个液冷代码的解析,加东西要继承IBuildingConfig,如果是在原有基础上修改,比如机械气闸加一个隔水的,就直接继承机械气闸然后重写DoPostConfigureComplete方法,把隔水的方法加进去
                            public class LiquidConditionerConfig : IBuildingConfig
                            {
                            // new建筑对象,设置建筑的基础信息
                            public override BuildingDef CreateBuildingDef()
                            {
                            // 名称
                            string id = "LiquidConditioner";
                            // 宽度
                            int width = 2;
                            // 高度
                            int height = 2;
                            // 动画
                            string anim = "liquidconditioner_kanim";
                            int hitpoints = 100;
                            // 建造时间,120s
                            float construction_time = 120f;
                            // 建筑质量,需要1200kg的材料
                            float[] tier = BUILDINGS.CONSTRUCTION_MASS_KG.TIER6;
                            // 材料是所有金属
                            string[] all_METALS = MATERIALS.ALL_METALS;
                            // 熔点
                            float melting_point = 1600f;
                            // 放地上
                            BuildLocationRule build_location_rule = BuildLocationRule.OnFloor;
                            // 噪音污染(装饰那个东西)
                            EffectorValues tier2 = NOISE_POLLUTION.NOISY.TIER2;
                            // 创建建筑对象
                            // 最后三个参数分别为:装饰度,污染,温度修正
                            BuildingDef buildingDef = BuildingTemplates.CreateBuildingDef(id, width, height, anim, hitpoints, construction_time, tier, all_METALS, melting_point, build_location_rule, BUILDINGS.DECOR.NONE, tier2, 0.2f);
                            // 将创建的建筑对象加到要耗电的建筑里
                            BuildingTemplates.CreateElectricalBuildingDef(buildingDef);
                            // 电力
                            buildingDef.EnergyConsumptionWhenActive = 1200f;
                            // 自热(热分为自产热和热交换,液冷只有热交换)
                            buildingDef.SelfHeatKilowattsWhenActive = 0f;
                            // 输入类型(液体)
                            buildingDef.InputConduitType = ConduitType.Liquid;
                            // 输出类型(液体)
                            buildingDef.OutputConduitType = ConduitType.Liquid;
                            // 是否可浸润,默认为true,即在水里无法工作
                            buildingDef.Floodable = false;
                            // 连电线的地方的坐标,左下角是(0,0)
                            buildingDef.PowerInputOffset = new CellOffset(1, 0);
                            // 连水管的地方的坐标
                            buildingDef.UtilityInputOffset = new CellOffset(0, 0);
                            // 旋转相关
                            buildingDef.PermittedRotations = PermittedRotations.FlipH;
                            // 视图的时候显示液体管道的设置
                            buildingDef.ViewMode = OverlayModes.LiquidConduits.ID;
                            // 过热温度,单位开尔文
                            buildingDef.OverheatTemperature = 398.15f;
                            // 逻辑信号的输入坐标
                            buildingDef.LogicInputPorts = LogicOperationalController.CreateSingleInputPortList(new CellOffset(1, 1));
                            // 不知道是啥
                            GeneratedBuildings.RegisterWithOverlay(OverlayScreen.LiquidVentIDs, "LiquidConditioner");
                            return buildingDef;
                            }
                            // 配置建筑模板
                            public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
                            {
                            // 循环工作
                            go.AddOrGet<LoopingSounds>();
                            AirConditioner airConditioner = go.AddOrGet<AirConditioner>();
                            // 降温幅度
                            airConditioner.temperatureDelta = -14f;
                            // 最大环境温差
                            airConditioner.maxEnvironmentDelta = -50f;
                            // 输入是否是液体
                            airConditioner.isLiquidConditioner = true;
                            // 工作速率的一些配置
                            ConduitConsumer conduitConsumer = go.AddOrGet<ConduitConsumer>();
                            // 需要接管道,并且是液体管道
                            conduitConsumer.conduitType = ConduitType.Liquid;
                            // 10kg运行一次
                            conduitConsumer.consumptionRate = 10f;
                            // 不知道是啥
                            Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);
                            storage.showInUI = true;
                            storage.capacityKg = 2f * conduitConsumer.consumptionRate;
                            // 修饰符,隔离、隐藏、密封、保存
                            storage.SetDefaultStoredItemModifiers(LiquidConditionerConfig.StoredItemModifiers);
                            }
                            // 完成降温后的配置
                            public override void DoPostConfigureComplete(GameObject go)
                            {
                            // 逻辑电路控制
                            go.AddOrGet<LogicOperationalController>();
                            // 电力控制
                            go.AddOrGetDef<PoweredActiveController.Def>();
                            // 管道的控制
                            go.GetComponent<KPrefabID>().AddTag(GameTags.OverlayBehindConduits, false);
                            }
                            // 名字
                            public const string ID = "LiquidConditioner";
                            // 一些状态修饰,隔离、隐藏、密封、保存
                            private static readonly List<Storage.StoredItemModifier> StoredItemModifiers = new List<Storage.StoredItemModifier>
                            {
                            Storage.StoredItemModifier.Hide,
                            Storage.StoredItemModifier.Insulate,
                            Storage.StoredItemModifier.Seal
                            };
                            }
                            从0开始搓一个全新的建筑后面再加,这个涉及到了游戏的底层


                            IP属地:湖北47楼2024-03-10 16:23
                            回复
                              然后定义建筑的名称,用途什么的,这就是显示的文本
                              namespace ShinseiSuperHeater
                              {
                              // Token: 0x02000003 RID: 3
                              [HarmonyPatch(typeof(GeneratedBuildings), "LoadGeneratedBuildings")]
                              public class AirAddToBuild
                              {
                              // Token: 0x06000003 RID: 3 RVA: 0x00002080 File Offset: 0x00000280
                              [HarmonyPostfix]
                              private static void Postfix()
                              {
                              Strings.Add(new string[]
                              {
                              "STRINGS.BUILDINGS.PREFABS.SHINSEIINDUSTRIALAIRHEATER.NAME",
                              "空间冷却器"
                              });
                              Strings.Add(new string[]
                              {
                              "STRINGS.BUILDINGS.PREFABS.SHINSEIINDUSTRIALAIRHEATER.DESC",
                              "可以降低空间温度"
                              });
                              Strings.Add(new string[]
                              {
                              "STRINGS.BUILDINGS.PREFABS.SHINSEIINDUSTRIALAIRHEATER.EFFECT",
                              "最低把空间温度降低到-200摄氏度"
                              });
                              ModUtil.AddBuildingToPlanScreen("Utilities", "ShinseiIndustrialAirHeater");
                              }
                              }
                              }


                              IP属地:湖北48楼2024-03-10 16:24
                              回复