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

注册 登录

QQ登录

只需一步,快速开始

查看: 1335|回复: 11
打印 上一主题 下一主题

[原创] 电池充满后转化能量棒,运到其他地方塞进电池充电(修正)

[复制链接]

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
跳转到指定楼层
主题
发表于 2023-4-15 20:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fanvalen 于 2024-7-7 21:55 编辑



先把能量棒做出来添加类复制粘贴编译
using System;
using System.Collections.Generic;
using UnityEngine;

public class PowerStickConfig : IEntityConfig
{
        public string[] GetDlcIds()
        {
                return DlcManager.AVAILABLE_ALL_VERSIONS;
        }

        public GameObject CreatePrefab()
        {
                return EntityTemplates.CreateLooseEntity("PowerStick", "能量棒", "能量棒中蕴含100千焦的能量可充入电池中使用", 5f, true, Assets.GetAnim("vacillator_charge_kanim"), "object", Grid.SceneLayer.Front, EntityTemplates.CollisionShape.RECTANGLE, 0.8f, 0.6f, true, 0, SimHashes.Creature, new List<Tag>
                {
                        GameTags.IndustrialIngredient
                });
        }

        public void OnPrefabInit(GameObject inst)
        {
        }

        public void OnSpawn(GameObject inst)
        {
        }

        public PowerStickConfig()
        {
        }

        static PowerStickConfig()
        {
        }

        public const string ID = "PowerStick";

        public static readonly Tag tag = TagManager.Create("GeneShufflerRecharge");

        public const float MASS = 5f;
}

然后我们要修改的是Battery类核心
编辑类添加两个变量
[MyCmpReq
    public Storage storage;

    public bool IsRechargeable;


public bool IsEmitStick;
添加一个方法
private void OnStorageChange()
    {
        int num = this.storage.items.Count - 1;
        if (num >= 0)
        {
            GameObject item_go = this.storage.items[num];
            if (this.joulesAvailable <= 100000f)
            {
                this.storage.ConsumeIgnoringDisease(item_go);
                this.joulesAvailable += 100000f;
                return;
            }
        }
    }
同时修改两个方法
AddEnergy和ConsumeEnergy
由于改动较大直接替换

public void AddEnergy(float joules)
        {
                this.joulesAvailable = Mathf.Min(this.capacity, this.JoulesAvailable + joules);
                this.joulesConsumed += joules;
                if (this.IsEmitStick && this.joulesAvailable >= 100002f)
                {
                        GameUtil.KInstantiate(Assets.GetPrefab("PowerStick"), base.transform.position, Grid.SceneLayer.Ore, null, 0).SetActive(true);
                        this.joulesAvailable -= 100000f;
                }
                this.ChargeCapacity -= joules;
                this.WattsUsed = this.joulesConsumed / this.dt;
        }


public void ConsumeEnergy(float joules, bool report = false)
        {
                if (report)
                {
                        float num = Mathf.Min(this.JoulesAvailable, joules);
                        ReportManager.Instance.ReportValue(ReportManager.ReportType.EnergyWasted, -num, StringFormatter.Replace(BUILDINGS.PREFABS.BATTERY.CHARGE_LOSS, "{Battery}", this.GetProperName()), null);
                }
                this.joulesAvailable = Mathf.Max(0f, this.JoulesAvailable - joules);
                if (this.IsRechargeable && this.joulesAvailable < 100000f)
                {
                        this.OnStorageChange();
                }
        }
完成上面操作后保存重新加载一下dll否则另外一个地方无法读取变量
然后就是创建充电电池添加类复制粘贴编译

using System;
using TUNING;
using UnityEngine;

public class BatteryMedium2Config : BaseBatteryConfig
{
        public override BuildingDef CreateBuildingDef()
        {
                string id = "BatteryMedium2";
                int width = 1;
                int height = 2;
                int hitpoints = 30;
                string anim = "batterysm_kanim";
                float construction_time = 6f;
                float[] tier = BUILDINGS.CONSTRUCTION_MASS_KG.TIER4;
                string[] all_METALS = MATERIALS.ALL_METALS;
                float melting_point = 800f;
                float exhaust_temperature_active = 0f;
                float self_heat_kilowatts_active = 0f;
                EffectorValues tier2 = NOISE_POLLUTION.NOISY.TIER1;
                BuildingDef result = base.CreateBuildingDef(id, width, height, hitpoints, anim, construction_time, tier, all_METALS, melting_point, exhaust_temperature_active, self_heat_kilowatts_active, BUILDINGS.DECOR.PENALTY.TIER2, tier2);
                SoundEventVolumeCache.instance.AddVolume("batterymed_kanim", "Battery_med_rattle", NOISE_POLLUTION.NOISY.TIER2);
                return result;
        }

        public override void DoPostConfigureComplete(GameObject go)
        {
                Battery battery = go.AddOrGet<Battery>();
                battery.capacity = 200000f;
                battery.joulesLostPerSecond = 0f;
                battery.IsRechargeable = true;
                base.DoPostConfigureComplete(go);
                Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);
                storage.showInUI = true;
                storage.capacityKg = 1f;
                storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
                ManualDeliveryKG manualDeliveryKG = go.AddComponent<ManualDeliveryKG>();
                manualDeliveryKG.SetStorage(storage);
                manualDeliveryKG.RequestedItemTag = new Tag("PowerStick");
                manualDeliveryKG.capacity = 2f;
                manualDeliveryKG.refillMass = 1f;
                manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash;
        }

        public BatteryMedium2Config()
        {
        }

        public const string ID = "BatteryMedium2";
}
最后一步吧这个充电电池添加到建造菜单
我一般喜欢把它添加到氧气菜单里因为比较少方便找
TUNING.BUILDINGS
new PlanScreen.PlanInfo(new HashedString("Oxygen"), false, new List<string>的末尾添加
"BatteryMedium2"


最后要修改一个电池的容量为150千焦作用是避开其他低端电池,不然每个电池都会产生能量棒导致卡顿
这里就把巨型电池作为产生能量棒的工具
BatteryMediumConfig
battery.capacity = 40000f;
改成
battery.capacity = 150000f;
添加一个
battery.IsEmitStick = true;//这句需要保存重新加载才能添加成功





回复

使用道具 举报

8

主题

90

帖子

101

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1014
积分
101
精华
0
注册时间
2021-10-31
舒服的沙发
发表于 2023-4-19 22:56 来自手机 | 只看该作者
6666666666
回复 支持 反对

使用道具 举报

8

主题

90

帖子

101

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1014
积分
101
精华
0
注册时间
2021-10-31
硬硬的板凳
发表于 2023-4-23 14:01 来自手机 | 只看该作者
大佬这个现在怎么样了?
回复 支持 反对

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
冰凉的地板
 楼主| 发表于 2023-4-24 00:10 | 只看该作者
喜欢的欢饮拿去用
回复 支持 反对

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
5#
 楼主| 发表于 2023-4-24 00:11 | 只看该作者
3dm_19530492 发表于 2023-4-23 14:01
大佬这个现在怎么样了?

成功实现了欢饮测试
回复 支持 反对

使用道具 举报

8

主题

90

帖子

101

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1014
积分
101
精华
0
注册时间
2021-10-31
6#
发表于 2023-4-24 21:44 来自手机 | 只看该作者
好的,有时间了试一下
回复 支持 反对

使用道具 举报

8

主题

90

帖子

101

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1014
积分
101
精华
0
注册时间
2021-10-31
7#
发表于 2023-4-30 15:47 | 只看该作者
小白一个源文件修改还是会一点点滴,像这种变量添加的咋搞
回复 支持 反对

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
8#
 楼主| 发表于 2023-4-30 21:12 | 只看该作者
3dm_19530492 发表于 2023-4-30 15:47
小白一个源文件修改还是会一点点滴,像这种变量添加的咋搞

找到battery最后编辑类在}之前添加
回复 支持 反对

使用道具 举报

8

主题

90

帖子

101

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1014
积分
101
精华
0
注册时间
2021-10-31
9#
发表于 2023-4-30 22:42 来自手机 | 只看该作者
添加能量棒懂了 第二搜索battery之后编辑添加复制了那四段英文但是添加位置都是红整不会了哭唧唧
回复 支持 反对

使用道具 举报

8

主题

90

帖子

101

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1014
积分
101
精华
0
注册时间
2021-10-31
10#
发表于 2023-4-30 23:00 来自手机 | 只看该作者
Battert   终于把四段代码编译进去了   添加一个方法,下面那些就不懂了
回复 支持 反对

使用道具 举报

8

主题

90

帖子

101

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1014
积分
101
精华
0
注册时间
2021-10-31
11#
发表于 2023-4-30 23:19 来自手机 | 只看该作者
呜呜呜终于摸索出来全部添加完了。大佬问你一个问题可不可以用这个做成一个模块单独的或者模组。我有时候会改错,改成别的之后,导致崩了之后复制,回去恢复来的结果又要重新改,所以想搞一个单独的文件或者mode
回复 支持 反对

使用道具 举报

141

主题

857

帖子

2871

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
270
金元
17914
积分
2871
精华
0
注册时间
2014-11-30
12#
 楼主| 发表于 2023-5-1 19:17 | 只看该作者
3dm_19530492 发表于 2023-4-30 23:19
呜呜呜终于摸索出来全部添加完了。大佬问你一个问题可不可以用这个做成一个模块单独的或者模组。我有时候会 ...

我比较懒你找@3dm_16917711他做mod
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-27 15:41 , Processed in 0.033060 second(s), 18 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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