暧昧√ 发表于 2023-9-18 16:36

『木筏求生』DLL文件修改

首先修改前,自行下载软件dnspy接下来打开游戏目录选择文件   Assembly-CSharp.dll
文件路径:这是我自己的路径,D:\Games\Raft\Raft_Data\Managed
具体路径看你们自己下在哪个盘里面X:\XXXX\Raft\Raft_Data\Managed

DLL文件读取及展开,这应该不用过多解释了吧,修改过游戏的大部分人都应该懂得。

1.修改物品叠加
ItemInstance_Inventory 文件找到如下代码
public int StackSize
    {
      get
      {
            return this.stackSize * 500;此处*500修改物品叠加倍数,500就是500倍,原文件显示:return this.stackSize ;
      }
    }
2.修改近战武器攻击伤害,适应武器:矛
MeleeWeapon 文件找到如下代码
// Token: 0x06002316 RID: 8982 RVA: 0x000BACA4 File Offset: 0x000B8EA4
    public virtual void OnHitEntity(RaycastHit hit, Network_Entity entity)
    {
      if (entity != null)
      {
            if (this.goThroughInvurnability && entity.IsInvurnerable)
            {
                entity.IsInvurnerable = false;
            }
            this.hostNetwork.DamageEntity(entity, hit.transform, (float)this.damage * 10f, hit.point, hit.normal, EntityType.Player, null);
此处*10修改近战武器伤害倍数,原文件显示:this.hostNetwork.DamageEntity(entity, hit.transform, (float)this.damage, hit.point, hit.normal, EntityType.Player, null);
      }
            if (!entity.IsInvurnerable && entity.removesDurabilityWhenHit)
            {
                this.playerNetwork.Inventory.RemoveDurabillityFromHotSlot(1);将此处数字1修改成0,则武器耐久不会损失。后面的武器我就不再次标注了,耐久都是统一的代码。
            }
      }
    }
3.修改远程武器攻击伤害,适应武器:弓箭【此处修改只需要修改箭矢就行】
arrow 文件找到如下代码
// Token: 0x060022CF RID: 8911 RVA: 0x000B9E0C File Offset: 0x000B800C
    protected override void OnCollisionEvent(Collision collision, Network_Entity entity)
    {
      if (this.isExpended)
      {
            return;
      }
      base.OnCollisionEvent(collision, entity);
      if (!this.throwableComponent.playerNetwork.IsLocalPlayer)
      {
            return;
      }
      if (entity != null && !entity.IsInvurnerable)
      {
            ComponentManager<Network_Host>.Value.DamageEntity(entity, collision.transform, this.damage * 10f, collision.contacts[0.point, collision.contacts[0.normal, EntityType.Player, null);
此处*10修改箭矢伤害倍数,原文件显示:ComponentManager<Network_Host>.Value.DamageEntity(entity, collision.transform, this.damage , collision.contacts.point, collision.contacts.normal, EntityType.Player, null);
            this.isExpended = true;
      }
    }
修改耐久请在ThrowableComponent_Bow文件内修改,代码如下
protected override void CallThrowEvent(Vector3 position, Vector3 force)
    {
      base.CallThrowEvent(position, force);
      if (this.playerNetwork.IsLocalPlayer)
      {
            this.playerNetwork.Inventory.RemoveDurabillityFromHotSlot(1);
      }
    }
4.燃料,也就是木材的燃烧时间。
fuel 文件找到如下代码
    // Token: 0x040008E6 RID: 2278
    private float burnTimePerFuel = 500f; 修改此处的数据
5.钩子修改,增加在水下的采集速度。
Hook 文件找到如下代码
// Token: 0x06002268 RID: 8808 RVA: 0x000B80C8 File Offset: 0x000B62C8
    private void HandleGathering()
    {
      if (!this.playerNetwork.IsLocalPlayer)
      {
            return;
      }
      if (this.personController.SubmersionState != SubmersionState.None || this.personController.controllerType == ControllerType.Water)
      {
            if (MyInput.GetButton("LMB"))
            {
                this.canvas.SetAimSprite(AimSprite.Default);
                PickupItem mineableItemAtCursor = this.playerNetwork.GetMineableItemAtCursor();
                this.playerNetwork.Animator.anim.SetBool("ItemHit", true);
                if (mineableItemAtCursor != null)
                {
                  if (mineableItemAtCursor != this.currentGatherItem)
                  {
                        this.StartCollecting(mineableItemAtCursor);
                  }
                  this.gatherTimer += Time.deltaTime * 10f;此处修改数值越大,采集速度越快,建议10就足够快了,再高没试过。
                  float num = this.gatherTimer / this.gatherTime;
                  if (num < 1f)
                  {
                        this.canvas.SetLoadCircle(num);
                        return;
                  }
                  this.playerNetwork.PickupScript.PickupItem(mineableItemAtCursor, true, true);
                  this.StopCollecting();
                  this.playerNetwork.Inventory.RemoveDurabillityFromHotSlot(0);修改耐久处1改0不掉耐久,
                  if (this.eventEmitter_gather != null)
                  {
                        this.eventEmitter_gather.TriggerQue();
                        return;
                  }
                }
                else
                {
                  this.StopCollecting();
                  if (this.eventEmitter_gather != null)
                  {
                        this.eventEmitter_gather.Stop();
                        return;
                  }
                }
            }
            else if (MyInput.GetButtonUp("LMB"))
            {
                this.FinishGathering();
                return;
            }
      }
      else
      {
            this.FinishGathering();
      }
    }
此层代码上面,是修改钩子抛出的数据,没必要修改,有拦截网,根本不缺基础资源。


好了,此次教程就修改这么多,这些修改已经失去游戏体验意义了,其他的就不一一列出来了。
页: [1]
查看完整版本: 『木筏求生』DLL文件修改