海贼008 发表于 2019-5-29 05:16

分享一下如何正确修改《人类黎明》游戏数据,按我说的修改,你要是报错,我跪键盘!!!

最近很多萌新下了论坛的NOD发现进游戏就报错,1,可能版本不匹配 2,可能提供的NOD只有resources.assets文件 3,自己修改的就是错误方法

                                           言归正传,如何正确修改游戏数据:首先你要准备两个工具
一,AssetsBundleExtractor中文汉化版2.2 ,论坛有你自己去下载,怎么修改论坛也有(只要无视utf-8格式,其他都是对的步骤)

二,DNSPY 俗称--- 反编译修改器,我的存盘有地址:链接:https://pan.baidu.com/s/1V3fsYBUtIlX3wZo0lEKEZw
提取码:4vxc

第一个工具我不多说,论坛有说明使用,注意最后一步保存你修改的文本,例如:terrain-resources.assets-4172 文本,修改完后直接保存,不要以utf-8格式储存,然后就是将生成的resources.assets,单独放一个空文件夹里。替换游戏目录文件时,不能直接复制替换
,要先把游戏目录的删除掉,把修改的文件放进游戏根目录,这样才有效·····是不是醍醐灌顶呢!!(红色字都是重点,仔细看!!)

第二个工具,我重点说DNSPY,(我是缺氧玩家,这个修改已经不要不要的了),首先点击DNSPY,选择--打开 --目录 DawnOfMan\DawnOfMan_Data\Managed 下的Assembly-CSharp.dll 文件,出现如下:

我重点说几个论坛没有的改法:(以下只能用DNSPY修改,第一个工具修改进游戏就报错!!)

(一)所有储存的格子上限和堆叠上限 (包括木头堆,干草堆,石头堆,建筑等等格子的上限,这里不是修改大小,而是修改变量限制)
搜索 updateVisibleStorage,如图


出现的数据如下: 红色的部分为我添加的部分

      // Token: 0x06000603 RID: 1539 RVA: 0x0002D548 File Offset: 0x0002B748
      private void updateVisibleStorage()
      {
            if (base.isBuilt() && base.hasAnyFlag(EntityFlags.VisibleStorage))
            {
                MadrugaShared.RandomGenerator randomGenerator = new MadrugaShared.RandomGenerator(base.getId());
                int num = 0;
                int num2 = 0;
                UnityEngine.Object.Destroy(this.mStorageProps);
                this.mStorageProps = new GameObject();
                this.mStorageProps.name = "Storage props";
                this.mStorageProps.transform.SetParent(this.mObject.transform, false);
                int slotCount = base.getSlotCount();
                for (int i = 0; i < slotCount; i++)
                {
                  Slot slot = base.getSlot(i);
                  int amount = slot.getAmount();
                  for (int j = 0; j < amount; j++)
                  {
                        if (num % Structure.StorageLayerSkip[num2 == 0)
                        {
                            GameObject expr_BC = UnityEngine.Object.Instantiate<GameObject>((slot.getEntityType() as ResourceType).getModelStorage());
                            expr_BC.transform.SetParent(this.mStorageProps.transform, false);
                            Vector3 vector = MadrugaShared.Constants.Vector3Zero;
                            if (num > 0)
                            {
                              float num3 = Structure.StorageLayerRadius[num2 * this.getStructureType().getStorageRadius();
                              vector = randomGenerator.rangeFlatVector(num3 * 0.5f);
                              if (vector.sqrMagnitude > 0.05f)
                              {
                                    vector += vector.normalized * 0.5f;
                              }
                            }
                            expr_BC.transform.position = base.getPosition() + vector + (float)num2 * MadrugaShared.Constants.Vector3Up * 0.333f;
                            expr_BC.transform.rotation = Quaternion.Euler(0f, randomGenerator.range(-20f, 20f), 0f);
                        }
                        num++;
                        if (num2 < Structure.StorageLayers.Length && num > Structure.StorageLayers[num2])
                        {
                            num2++;
                        }                         (如何添加:右键鼠标点这行,选择Edit Medthod(C#)反编译,按照下面的格式添加数据,完成后点击右下角的Compile,然后保存点DNSPY上的保存模块或者全部保存)
                        if (num2 > 3)      (注意是这里的红色数据,就是我添加的)
                        {
                            num2 = 3;
                        }
                  }
                }
                MadrugaShared.Util.setLayerRecursive(this.mStorageProps, GameConstants.StructurePropsLayerIndex);
            }
      }

(二)修改树木的生长时间(求人不如求自己),摸索了一个小时自己改出来了

搜索 TreeRegrowthData 翻倒数据如下位置:


      // Token: 0x06001769 RID: 5993 RVA: 0x0001246B File Offset: 0x0001066B
      public void resetGrowthData()
      {
            this.mState.Timer = 14400f; (这个是数据重置时间,不用管)
            this.mState.YoungTreeRef = null;
      }

      // Token: 0x0600176A RID: 5994 RVA: 0x00012489 File Offset: 0x00010689
      public bool update(float timeStep)
      {
          timeStep *= 5f;      (这是我添加的数据,即5倍成长时间)
            this.mState.Timer -= timeStep;   (其实还有一种改法,直接改成{我试过,效果都一样}: this.mState.Timer -=timeStep* 5f;意思就是乘以5倍)
            return this.mState.Timer <= 0f;
      }

(三)鱼塘和泥土的刷新时间
搜索 BankManager翻倒数据位置 如下:


      // Token: 0x06000BE1 RID: 3041 RVA: 0x00040CAC File Offset: 0x0003EEAC
      public void tick(float timeStep)
      {
            int count = this.mBanks.Count;
            for (int i = 0; i < count; i++)
            {
                Bank bank = this.mBanks[i];
                bank.increaseFishAmount(timeStep / 7400f);   (将7400改为150,等于1秒刷新1%鱼儿进度,这样修改很变了,基本还没改完,就100%满了)
                bank.increaseMudAmount(timeStep / 2400f);   (将2400改为150,等于1秒刷新3%泥土进度)

继续往下翻倒:如下数据

      // Token: 0x06000BE9 RID: 3049 RVA: 0x0000AFA4 File Offset: 0x000091A4
      private bool bankHasFish(Bank bank)
      {
            return bank.getFishAmount() > 0.332f;            (这个是指一次弄一条鱼就离开的数据,我改为 return bank.getFishAmount() > 0.996f;意思就是钓完3条鱼就离开,当然只有两个空间的小人,满了也会离开)
      }

      // Token: 0x06000BEA RID: 3050 RVA: 0x0000AFB3 File Offset: 0x000091B3
      private bool bankHasMud(Bank bank)
      {
            return bank.getMudAmount() > 0.332f;            (这个是指一次弄一泥土就离开的数据)
      }

            }
      }

四,贸易商人交易数量和停留时间搜索 trader
      // Token: 0x06000841 RID: 2113 RVA: 0x00036008 File Offset: 0x00034208
      public override void tick(float timeStep)
      {
            base.tick(timeStep);
            if (base.isIdle())
            {
                this.mTraderSaveState.IdleTime += timeStep;
                if (this.mTraderSaveState.IdleTime > 240f)       (这是贸易商人停留时间,改为2倍=480f)    
                {
                  this.done();
                }
            }
      }


继续往下翻到,看我的标注,就是修改的地方(这里是修改贸易商人携带东西的数量)
      // Token: 0x06000848 RID: 2120 RVA: 0x00036218 File Offset: 0x00034418
      private void addResourceProducts(EntityAmounts amounts)
      {
            MadrugaShared.RandomGenerator instance = MadrugaShared.Singleton<MadrugaShared.RandomGenerator>.Instance;
            Era era = MadrugaShared.TransientSingleton<KnowledgeManager>.CurrentInstance.getEra();
            List<EntityType> typeEntities = MadrugaShared.TransientSingleton<EntityTypeManager>.CurrentInstance.getTypeEntities<ResourceType>();
            List<ResourceType> list = new List<ResourceType>();
            for (int i = 0; i < typeEntities.Count; i++)
            {
                ResourceType resourceType = (ResourceType)typeEntities[i];
                if (this.canTrade(resourceType))
                {
                  list.Add(resourceType);
                }
            }
            int num = instance.range(5, 10);   (随机携带(5,10) 个种类物品修改为range(10, 20);这个数值比较适中,亲测)
            for (int j = 0; j < num; j++)
            {
                ResourceType entityType = list[instance.range(0, list.Count)];
                amounts.add(entityType, this.getRandomResourceAmount());
            }
            for (int k = 0; k < typeEntities.Count; k++)
            {
                ResourceType resourceType2 = (ResourceType)typeEntities[k];
                if (resourceType2.getForceTraderEra() == era)
                {
                  amounts.add(resourceType2, this.getRandomResourceAmount());
                }
            }
      }

      // Token: 0x06000849 RID: 2121 RVA: 0x00036314 File Offset: 0x00034514
      private int getRandomResourceAmount()
      {
            MadrugaShared.RandomGenerator instance = MadrugaShared.Singleton<MadrugaShared.RandomGenerator>.Instance;
            return instance.range(1, (int)(6 + MadrugaShared.TransientSingleton<KnowledgeManager>.CurrentInstance.getEra())); (将这句话中的数值(1,6)改为(10,60)即是10倍和60倍最小和最大值,亲测基本在10--100多个不等物品,接着改最下面的数值)
      }
                        {
                            list.Add(domesticatedVariant);
                        }
                  }
                }
                if (list.Count > 0)
                {
                  int index = instance.range(0, list.Count);
                  amounts.add(list[index], instance.range(1, 6));       (如上对应数值,将1和6改为10和60,也就是对应数值,你上面改多少,下面就是多少,你要是改99999数值,电脑炸了,别找我)
                }
            }
另外附上我自己修改的数据,不变态的修改,主要修改内容如下: (对应游戏版本是,3DM内未加密版本1.11,其他版本无效)
1.石头堆8格X10=80,干草堆8格X10=80,木头堆 8格X10=80 (三种建筑储存东西的耐久增加2倍)
2.野外树果树成长速度5倍,贸易商人携带物品数量增加10倍
3.鱼塘刷新材料速度增加
4.野外生物掉落肉,骨头,皮 增加2倍
5.制作面粉(小火炉:1小麦=1面粉--产出1稻草,水磨坊:3小麦=3面粉--产出3稻草)
6.制作亚麻布(1亚麻=2亚麻布--产出1稻草)
7.制作啤酒(2啤酒=1小麦--产出1稻草)
8.牛产奶2个,羊产毛2个,山羊产奶2个
9.各种材料,衣服,食物,例如干皮,干肉,干鱼,干草等等腐败时间增加2倍
10.人物移动速度改为2.5,血量改为300(成年人)
11.成年狗的血量增加为300,攻击增加为200,索敌范围增加为2500
12,4种矿场(铜矿,火石矿,锡矿,铁矿)的上限改为150(总值是165,如果你觉得少,自己用第一个工具修改,感觉矿石用不完)

其余没改,什么1肉变9肉,1皮变9皮,那样改就没法玩下去了!!(题外话,不喜勿喷)
下载地址:https://pan.baidu.com/s/1vbPu46zQuz0mRwdKv9B-_A   提取码:**** Hidden Message *****
使用方法:解压缩文件 Assembly-CSharp中的文件 放在 \DawnOfMan\DawnOfMan_Data\Managed下 ,注意备份你自己的文件,防止版本不对


               解压缩文件 resources            中的文件放在DawnOfMan\DawnOfMan_Data                     下,注意不要直接替换,先备份你的游戏文件,然后删除掉根目录中的resources.assets文件,然后将下载的resources.assets丢进去,不按步骤则无效!!!


海贼008 发表于 2019-6-3 23:47

本帖最后由 海贼008 于 2019-6-9 12:52 编辑

zscxxxxx 发表于 2019-6-3 23:21
整了一晚上,按楼主DNSPY修改第二步没有问题,第一步AssetsBundleExtractor修改格子上限也成功,但是败在堆 ...
堆叠上限和格子上限不是同一个概念:上面讲的是格子上限
                                                       堆叠上限改法:(红色代码为添加。论坛有修改方法,只是这个改法太BT,所以我没写)

               {
                  Slot slot = base.getSlot(i);
                  int amount = slot.getAmount();
                  if(amount>10)
                  {
                        amount=10;
                  }
                  for (int j = 0; j < amount; j++)
                  {                              

注意:此版本内涵1.0免费 番茄修改器,有收费版修改器的就别下载了,自己看流程修改数据很快的

guotengyun09 发表于 2019-5-29 14:45

树木生长那个还可以该terrain 里的spread 那样也会树很多

magget 发表于 2019-5-29 22:12

我下的3DM内未加密版本1.11,用你的Assembly-CSharp,一下就出错了

马克西斯 发表于 2019-5-29 23:38

我擦 用了这个出错 然后 还原还是出错 从新解压也出错

马克西斯 发表于 2019-5-29 23:43

马克西斯 发表于 2019-5-29 23:38
我擦 用了这个出错 然后 还原还是出错 从新解压也出错

开始新游戏就出错

海贼008 发表于 2019-5-30 17:16

各位要厚道啊!!!,我这个基本都没改什么,而且我发的是教程,你要是出错,那是见鬼了!!

∴我爱王小贝 发表于 2019-5-30 21:06

的尽可能SVN垃圾啊玛琳菲森骂了每次离开你卡不成绩不好XHGuy藏猪不

sertyeyy 发表于 2019-5-31 00:20

感谢楼主分享

茶香悠然 发表于 2019-5-31 10:28

谢谢分享

地狱狂神 发表于 2019-5-31 12:11

111111111111111111

随~~风 发表于 2019-5-31 18:44

666666666,多谢分享

love7251 发表于 2019-5-31 20:51

66666666666666666666666666666666666666666

linda606 发表于 2019-6-1 10:18

哒哒哒哒哒哒多多多多多多多多多多多多多多多多多

爱你等于浪费 发表于 2019-6-1 14:20

感谢分享

coyy1030 发表于 2019-6-1 17:01

https://pan.baidu.com/share/init?surl=NRg6YbDwmnNTj9z90HhBMQhttps://pan.baidu.com/share/init?surl=NRg6YbDwmnNTj9z90HhBMQ

ljsjc 发表于 2019-6-1 21:32

感谢分享

zemla 发表于 2019-6-2 00:10

1111111111111111111111111

shiyunmiyu 发表于 2019-6-2 07:17

阿斯达四大

i030303 发表于 2019-6-3 01:31

6666666666666666

a3283465 发表于 2019-6-3 04:17

很实用!!

zscxxxxx 发表于 2019-6-3 21:47

感谢分享

zscxxxxx 发表于 2019-6-3 23:21

整了一晚上,按楼主DNSPY修改第二步没有问题,第一步AssetsBundleExtractor修改格子上限也成功,但是败在堆叠上限了,改99就报错

你蓝一米五 发表于 2019-6-4 06:31

RE: 分享一下如何正确修改《人类黎明》游戏数据,按我说的修改,你要是报错,我跪键盘!!! [修改]








fanbo88660 发表于 2019-6-5 00:31

看看呢~~~~~

nyylx 发表于 2019-6-5 10:40

这个游戏是真的好!

lovebaby123 发表于 2019-6-5 21:15

111111111111111111111111111111

57812520 发表于 2019-6-6 01:33

66666666666666666666

xiu1218 发表于 2019-6-7 15:42

666666666666666

╮左手、~不离~ 发表于 2019-6-8 12:52

工工工工工工工
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 分享一下如何正确修改《人类黎明》游戏数据,按我说的修改,你要是报错,我跪键盘!!!