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

注册 登录

QQ登录

只需一步,快速开始

查看: 5992|回复: 18
打印 上一主题 下一主题

[原创] 放大招了,范围接种疫苗,凋萎顿关卡克星

[复制链接]

11

主题

55

帖子

86

积分

初级玩家

Rank: 2

贡献度
6
金元
621
积分
86
精华
0
注册时间
2021-10-1
跳转到指定楼层
主题
发表于 2021-11-1 18:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lowieliang 于 2021-11-1 18:23 编辑

    根据论坛的疫苗改法,不管是修改初始疫苗数量还是疫苗不减反增都很有作用。
    但是,想过没有,医院大了病人多了,一个一个点过去,手酸不?
    这就来了,直接上修改方法
   
    有朋友提醒我得从根子上教,好吧,先上个关于 dnSpy 的传送门 https://bbs.3dmgame.com/thread-5782890-1-1.html

    打开 dnSpy 我们要修改的是 安装目录\TPH_Data\Managed\Assembly-CSharp.dll 这个文件
    修改的是 TH20.ChallengeEpidemic 这个类
    先在 VaccinateCharacter 这个函数附近添加如下私有函数
    private bool vaccinateSingleCharacter(Character character)
    {
        if (ChallengeEpidemic.CharacterCantBeVaccinated(character))
        {
            return false;
        }
        if (this.IsVaccinated(character))
        {
            return false;
        }
        this._vaccinated.Add(character);
        bool flag = this.IsInfected(character);
        if (flag)
        {
            this._numberCured++;
            if (character.ModifiersComponent != null)
            {
                character.ModifiersComponent.RemoveStatusEffect(this._config.InfectionStatusEffect.Instance);
            }
            base.Level.CharacterEvents.OnCharacterVaccinated.InvokeSafe();
        }
        ChallengeEpidemic.PlayCuredEffect(character, flag);
        if (this._subGoal != null)
        {
            this._subGoal.UpdateProgress();
        }
        base.Level.StatusIconManager.ShowStatusIcon(character, StatusIcon.Type.Vaccinated);


        return flag;
    }


    然后修改原来的 VaccinateCharacter 函数如下
    public void VaccinateCharacter(Character character)
    {
        if (ChallengeEpidemic.CharacterCantBeVaccinated(character))
        {
            return;
        }
        if (this.IsVaccinated(character))
        {
            return;
        }
        List<Character> list = new List<Character>();
        float radius = 4f;    // 4×4 范围喷洒疫苗,请根据自己的喜好修改,不建议改的太大,影响游戏体验
        base.Level.CharacterManager.GetCharactersWithinDistance(character.Position, radius, null, list);
        bool cured = false;
        foreach (Character target in list)
        {
            if (this.vaccinateSingleCharacter(target))
            {
                cured = true;
            }
        }
        if (cured)
        {
            this._numberOfVaccines--;
            if (this._subGoal != null)
            {
                this._subGoal.UpdateProgress();
            }
        }
    }


    修改后的效果,随便找个没接种过疫苗的病人(员工也可以),点击给他接种,一定范围内的人都会接种疫苗。而且只有治愈了感染的人,疫苗数量才会减 1(注意,不是治愈几人减几剂疫苗,而是点击一次只要有治愈的才减 1)
回复

使用道具 举报

1

主题

272

帖子

370

积分

高级玩家

Rank: 4

贡献度
1
金元
3663
积分
370
精华
0
注册时间
2013-9-3
舒服的沙发
发表于 2021-11-2 12:32 | 只看该作者
本帖最后由 david4801 于 2021-11-2 12:48 编辑


这个challenge里面没有看到List<Character> list = new List<Character>();        float radius = 4f是我开错位置了么?

回复 支持 反对

使用道具 举报

11

主题

55

帖子

86

积分

初级玩家

Rank: 2

贡献度
6
金元
621
积分
86
精华
0
注册时间
2021-10-1
硬硬的板凳
 楼主| 发表于 2021-11-2 13:18 | 只看该作者
david4801 发表于 2021-11-2 12:32
这个challenge里面没有看到List list = new List();        float radius = 4f是我开错位置了么?

...

    你没看错,原来是没有,这些都是我写的,请把整个函数的内容替换成我写的代码。红字注释的那行是方便调参数的,不是只改这行。
    前面那个私有函数 private bool vaccinateSingleCharacter(Character character) 是新添加的哦,别忘了加上。


    祝你玩的开心。

回复 支持 反对

使用道具 举报

1

主题

272

帖子

370

积分

高级玩家

Rank: 4

贡献度
1
金元
3663
积分
370
精华
0
注册时间
2013-9-3
冰凉的地板
发表于 2021-11-2 13:21 | 只看该作者
lowieliang 发表于 2021-11-2 13:18
你没看错,原来是没有,这些都是我写的,请把整个函数的内容替换成我写的代码。红字注释的那行是方 ...

请问大佬,我应该怎么替换原本的代码?右键原本的代码选编辑类?萌新不大懂
回复 支持 反对

使用道具 举报

11

主题

55

帖子

86

积分

初级玩家

Rank: 2

贡献度
6
金元
621
积分
86
精华
0
注册时间
2021-10-1
5#
 楼主| 发表于 2021-11-2 13:34 | 只看该作者
david4801 发表于 2021-11-2 13:21
请问大佬,我应该怎么替换原本的代码?右键原本的代码选编辑类?萌新不大懂 ...

    在左边那栏里右键点击 ChallengeEpidemic 类,会弹出一个菜单

    左键点击 "C# 编辑类(C#)(C)..."  这个菜单项


    会弹出一个新的窗体,这里面的代码就可以编辑了


    编辑完之后,点击下面的“编译”按钮,没报错的话,编译成功窗体关闭。


    最后,顶上的菜单里点击 “文件”-“保存模块”,然后确定就可以退出去进游戏试试了。

回复 支持 反对

使用道具 举报

11

主题

55

帖子

86

积分

初级玩家

Rank: 2

贡献度
6
金元
621
积分
86
精华
0
注册时间
2021-10-1
6#
 楼主| 发表于 2021-11-2 13:37 | 只看该作者
    帖子里那个传送门,你也可以参考着看看
回复 支持 反对

使用道具 举报

1

主题

272

帖子

370

积分

高级玩家

Rank: 4

贡献度
1
金元
3663
积分
370
精华
0
注册时间
2013-9-3
7#
发表于 2021-11-2 23:38 | 只看该作者
lowieliang 发表于 2021-11-2 13:34
在左边那栏里右键点击 ChallengeEpidemic 类,会弹出一个菜单

    左键点击 "C# 编辑类(C#)(C)..."  ...

操我作之后出现错误,完全无法编译。哪怕是我什么都不改,直接点编译,也出现下面图里的错误


回复 支持 反对

使用道具 举报

11

主题

55

帖子

86

积分

初级玩家

Rank: 2

贡献度
6
金元
621
积分
86
精华
0
注册时间
2021-10-1
8#
 楼主| 发表于 2021-11-3 17:42 | 只看该作者
david4801 发表于 2021-11-2 23:38
操我作之后出现错误,完全无法编译。哪怕是我什么都不改,直接点编译,也出现下面图里的错误

    从你报错的情况来看,是相关的类库没有引用进来。

    你试下这么操作:


    “文件”-“打开”, 然后选择 安装目录\TPH_Data\Managed 目录下所有 dll 文件,打开。


    然后再按照前面说的操作下看看

回复 支持 反对

使用道具 举报

1

主题

272

帖子

370

积分

高级玩家

Rank: 4

贡献度
1
金元
3663
积分
370
精华
0
注册时间
2013-9-3
9#
发表于 2021-11-4 02:18 | 只看该作者
lowieliang 发表于 2021-11-3 17:42
从你报错的情况来看,是相关的类库没有引用进来。

    你试下这么操作:

多谢大佬,已经可以了, 看来是因为我打开的是备份的dll,所以位置不在游戏目录里。可能这样就读取不到别的dll了
回复 支持 反对

使用道具 举报

2

主题

118

帖子

307

积分

高级玩家

Rank: 4

贡献度
0
金元
3069
积分
307
精华
0
注册时间
2015-7-3
10#
发表于 2021-12-31 20:04 | 只看该作者
有点懵~lz能上传修改过的截图吗?
回复 支持 反对

使用道具 举报

34

主题

1197

帖子

1586

积分

游戏狂人

Rank: 6Rank: 6

贡献度
85
金元
12456
积分
1586
精华
0
注册时间
2011-2-10
11#
发表于 2022-7-27 16:45 | 只看该作者
咋回事

QQ截图20220727164443.png (55.12 KB, 下载次数: 0)

QQ截图20220727164443.png
回复 支持 反对

使用道具 举报

0

主题

507

帖子

597

积分

高级玩家

Rank: 4

贡献度
0
金元
5969
积分
597
精华
0
注册时间
2015-1-6
12#
发表于 2022-8-25 01:25 | 只看该作者
怎么添加私有函数
回复 支持 反对

使用道具 举报

0

主题

11

帖子

72

积分

初级玩家

Rank: 2

贡献度
0
金元
715
积分
72
精华
0
注册时间
2017-1-13
13#
发表于 2022-9-15 01:30 | 只看该作者
david4801 发表于 2021-11-2 12:32
这个challenge里面没有看到List list = new List();        float radius = 4f是我开错位置了么?

...

请问下你是怎么改的 添加私有函数是什么...
回复 支持 反对

使用道具 举报

0

主题

11

帖子

72

积分

初级玩家

Rank: 2

贡献度
0
金元
715
积分
72
精华
0
注册时间
2017-1-13
14#
发表于 2022-9-17 01:46 | 只看该作者
cyz2000 发表于 2021-12-31 20:04
有点懵~lz能上传修改过的截图吗?

完整代码 试过能用 直接把原代码全部覆盖就行
using System;
using System.Collections.Generic;

namespace TH20
{
   
// Token: 0x02000348 RID: 840
   
public partial class ChallengeEpidemic : Challenge
   
{
        
// Token: 0x06000FD2 RID: 4050 RVA: 0x0007AA1C File Offset: 0x00078C1C
        
public void VaccinateCharacter(Character character)
        
{
            
if (ChallengeEpidemic.CharacterCantBeVaccinated(character))
            
{
               
return;
            
}
            
if (this.IsVaccinated(character))
            
{
               
return;
            
}
            
List<Character> list = new List<Character>();
            
float radius = 4f;
            
base.Level.CharacterManager.GetCharactersWithinDistance(character.Position, radius, null, list);
            
bool flag = false;
            
foreach (Character character2 in list)
            
{
               
if (this.vaccinateSingleCharacter(character2))
               
{
                    
flag = true;
               
}
            
}
            
if (flag)
            
{
               
this._numberOfVaccines--;
               
if (this._subGoal != null)
               
{
                    
this._subGoal.UpdateProgress();
               
}
            
}
        
}
   
}
}


回复 支持 反对

使用道具 举报

0

主题

11

帖子

72

积分

初级玩家

Rank: 2

贡献度
0
金元
715
积分
72
精华
0
注册时间
2017-1-13
15#
发表于 2022-9-17 01:47 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

11

帖子

72

积分

初级玩家

Rank: 2

贡献度
0
金元
715
积分
72
精华
0
注册时间
2017-1-13
16#
发表于 2022-9-17 01:47 | 只看该作者

看下面
回复 支持 反对

使用道具 举报

0

主题

11

帖子

72

积分

初级玩家

Rank: 2

贡献度
0
金元
715
积分
72
精华
0
注册时间
2017-1-13
17#
发表于 2022-9-17 01:48 | 只看该作者
cyz2000 发表于 2021-12-31 20:04
有点懵~lz能上传修改过的截图吗?

看下面
回复 支持 反对

使用道具 举报

3

主题

941

帖子

994

积分

超级玩家

Rank: 5Rank: 5

贡献度
6
金元
9702
积分
994
精华
0
注册时间
2009-9-28
18#
发表于 2024-6-4 11:13 | 只看该作者
看下面????
回复 支持 反对

使用道具 举报

0

主题

2

帖子

63

积分

初级玩家

Rank: 2

贡献度
0
金元
626
积分
63
精华
0
注册时间
2011-2-2
19#
发表于 2025-5-3 21:39 | 只看该作者
感谢大佬分享  研究中!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-31 03:42 , Processed in 0.032899 second(s), 18 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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