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

注册 登录

QQ登录

只需一步,快速开始

查看: 957|回复: 4
打印 上一主题 下一主题

[原创] 【盐和避难所】一些细微提升游戏体验的修改❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤

[复制链接]

326

主题

3073

帖子

7772

积分

3DM创意工坊 原创组

Rank: 12Rank: 12Rank: 12

贡献度
963
金元
38804
积分
7772
精华
4
注册时间
2009-7-13
跳转到指定楼层
主题
发表于 2022-8-28 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tempa 于 2022-9-5 13:37 编辑

最近重玩这个游戏,简单看了下源码,版里修改器不少就不发修改好的了,说说dnSpy里改的函数和位置,感兴趣的可以自己动手改改。


本贴只提供了直接修改方法,有经验的可以自己实现按需开关对应功能,比如去掉Bloom黑边,自己加个变量判断,实现原版画面和去黑边版画面一键切换,其他功能同理,只提供最简思路。


1.跳过开头Logo,加快菜单显示速度
2.击杀Boss后无全屏Vanquish Logo
3.Boss过场时间变快
4.占据圣所速度变快
5.玩家攻击速度变快
6.使用Buf道具速度变快
7.铁匠升级速度变快
8.存档时重置Boss
9.伤害数值弹起高度
10.禁止添加重名钥匙
11.去除Bloom黑边特效
12.手动刷新怪物
13.显示鼠标,设置窗口坐标
14.暂停游戏

================================================================================
1.跳过开头Logo,加快菜单显示速度

ProjectTower.gamestate.Loader

private static int loadScreen = 0;
改成
private static int loadScreen = 4;





ProjectTower.menu.MenuMgr.Init

this.transMode = 2;
改成
this.transMode = 0;





ProjectTower.menu.MenuMgr.Update

函数最开始加入
transFrame = 2;
================================================================================
2.击杀Boss后无全屏Vanquish Logo

ProjectTower.gamestate.GameStateManager.Vanquish

GameStateManager.vanquishedFrame = 2f;
改成
GameStateManager.vanquishedFrame = 0;
================================================================================
3.Boss过场时间变快

ProjectTower.gamestate.BossToast.Update

BossToast.frame -= Game1.frameTime * 0.615f;
改成
BossToast.frame -= Game1.frameTime * 3;
================================================================================
4.占据圣所速度变快

ProjectTower.character.CharAnim.Update

  1. if (key < 0 || key >= animation.keyFrame.Length)
  2. {
  3.         key = 0;
  4. }
复制代码

这句下面写入
  1. if (c.playerIdx > -1)
  2. {
  3.         if (animation.name == "icon" || animation.name == "candle" || animation.name == "shrine")
  4.         {
  5.                 animation.keyFrame[key].duration = 1;
  6.         }
  7. }
复制代码

================================================================================
5.攻击速度变快

和上面相同的位置

  1. if (c.playerIdx > -1)
  2. {
  3.         if(GetAttackingAnim())
  4.         {
  5.                 animation.keyFrame[key].duration = 1;
  6.         }
  7.         else if(animName.Contains("attack") || animName.Contains("strong"))
  8.         {
  9.                 animation.keyFrame[key].duration = 1;
  10.         }
  11. }
复制代码


如果2个都用的话,可以写到一起
  1. if (c.playerIdx > -1)
  2. {
  3.         if (animation.name == "icon" || animation.name == "candle" || animation.name == "shrine")
  4.         {
  5.                 animation.keyFrame[key].duration = 1;
  6.         }

  7.         if(GetAttackingAnim())
  8.         {
  9.                 animation.keyFrame[key].duration = 1;
  10.         }
  11.         else if(animName.Contains("attack") || animName.Contains("strong"))
  12.         {
  13.                 animation.keyFrame[key].duration = 1;
  14.         }
  15. }
复制代码


================================================================================
6.使用Buf道具速度变快

和上面相同的位置

3个分别是
buff(祝福书页等),药水,裹布

  1. if (c.playerIdx > -1)
  2. {
  3.         if (animation.name == "buff" || animation.name == "potion" || animation.name == "rub")
  4.         {
  5.                 animation.keyFrame[key].duration = 1;
  6.         }
  7. }
复制代码


如果3个都用的话,可以写到一起

  1. if (c.playerIdx > -1)
  2. {
  3.         if (animation.name == "icon" || animation.name == "candle" || animation.name == "shrine")
  4.         {
  5.                 animation.keyFrame[key].duration = 1;
  6.         }

  7.         if(GetAttackingAnim())
  8.         {
  9.                 animation.keyFrame[key].duration = 1;
  10.         }
  11.         else if(animName.Contains("attack") || animName.Contains("strong"))
  12.         {
  13.                 animation.keyFrame[key].duration = 1;
  14.         }
  15.         
  16.         if (animation.name == "buff" || animation.name == "potion" || animation.name == "rub")
  17.         {
  18.                 animation.keyFrame[key].duration = 1;
  19.         }
  20. }
复制代码

================================================================================
7.铁匠升级速度变快

ProjectTower.player.PlayerDraw.InitUpgradeGlow


this.upgradeFrame = 6f;
改成
this.upgradeFrame = 1;
================================================================================
8.存档时重置Boss

ProjectTower.map.triggers.TriggerMgr.VanquishBoss

删除以下代码

  1. PlayerMgr.SetMainPlayerFlag(arena[i].bossFlag[k]);
复制代码



注意,此修改需要在打过序章Boss无言深渊,上岸后存档,再修改,读档,否则会导致打完Boss重复剧情字幕问题
另外此修改似乎也影响NPC位置判断,只适合自娱自乐使用

================================================================================
9.伤害数值弹起高度

ProjectTower.particles.particles.hit.HitNumber.Init



p.traj = Rand.GetRandomVec2(-10f, 10f, -100f, -80f);
改成
p.traj = new Vector2(0, -1000);
================================================================================
10.禁止添加重名钥匙

ProjectTower.map.pickups.Pickup.AddToInv


  1. if (p.pickup == null)
  2. {
  3.         p.pickupFrame = 3f;
  4.         p.pickup = new List<Player.PlayerPickup>();
  5. }
复制代码

这句下面加入
  1. bool bIgnorSameKey = false;
  2. if (loot[i].name != null)
  3. {
  4.         if (loot[i].category == 6)
  5.         {
  6.                 for (int j = 0; j < p.playerInv.inventory.Length; j++)
  7.                 {
  8.                         if (p.playerInv.inventory[j] != null && p.playerInv.inventory[j].category == 6 && p.playerInv.inventory[j].name != null)
  9.                         {
  10.                                 if (p.playerInv.inventory[j].name == loot[i].name)
  11.                                 {
  12.                                         bIgnorSameKey = true;
  13.                                         break;
  14.                                 }
  15.                         }

  16.                 }
  17.         }
  18. }
  19. if (bIgnorSameKey)
  20. {
  21.         continue;
  22. }
复制代码



================================================================================
11.去除Bloom黑边特效

ProjectTower.game.GameDraw.DrawGame


BloomComponent.Draw(goalTarg, GameDraw.sceneTarg, GameDraw.lightTarg);
改成
BloomComponent.Draw(goalTarg, GameDraw.mainTarg, GameDraw.lightTarg);




ProjectTower.director.bloom.BloomComponent.Draw


parameters["BloomIntensity"].SetValue(BloomComponent.bloomIntensity);

这句上面加入

bloomIntensity = 0;
darkBlur = 0;

防止暴风城堡地面太亮过曝





原版图 对 修改后效果图

















================================================================================
12.手动刷新怪物

MapMgr.SanctuaryRefresh();


可以自己设个快捷键

if (GetKeyDown(Keys.OemTilde))
{
        MapMgr.SanctuaryRefresh();
}

配合 6.存档时重置Boss

可以刷 Boss Rush
================================================================================
13.显示鼠标,设置窗口坐标

ProjectTower.Game1.Initialize

函数末尾加入

  1. IsMouseVisible = true;
  2. System.Windows.Forms.Form form = (System.Windows.Forms.Form)System.Windows.Forms.Control.FromHandle(Window.Handle);
  3. form.SetDesktopLocation(0, 0);
复制代码

================================================================================
14.暂停游戏

紧急事件发生,接电话,上厕所等,不用傻傻的放弃游戏挨揍

ProjectTower.character.Character.Update

函数最开始写入

  1. if (PauseGame)
  2. {
  3.         return;
  4. }
复制代码


自己写个控制键

  1. if (GetKeyDown(Keys.P))
  2. {
  3.         PauseGame = !PauseGame;
  4. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

1

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

319

主题

5268

帖子

5188

积分

游戏精英

Rank: 8Rank: 8

贡献度
336
金元
38441
积分
5188
精华
0
注册时间
2008-1-22
舒服的沙发
发表于 2022-11-30 18:37 | 只看该作者
完全不懂,怎么弄。。。
回复 支持 反对

使用道具 举报

4

主题

990

帖子

1091

积分

游戏狂人

Rank: 6Rank: 6

贡献度
0
金元
10913
积分
1091
精华
0
注册时间
2016-5-23
硬硬的板凳
发表于 2022-12-17 11:42 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

326

主题

3073

帖子

7772

积分

3DM创意工坊 原创组

Rank: 12Rank: 12Rank: 12

贡献度
963
金元
38804
积分
7772
精华
4
注册时间
2009-7-13
冰凉的地板
 楼主| 发表于 2023-2-8 20:56 | 只看该作者
居然有人回复啊,我以为没人看,贴子发很久都没人回过。

这是纯代码片断,需要有一定C#编程经验才能看懂,主要是给一些有修改或者Mod制作的人提供一个思路。
回复 支持 反对

使用道具 举报

0

主题

286

帖子

168

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1684
积分
168
精华
0
注册时间
2021-2-8
5#
发表于 2023-5-2 20:55 | 只看该作者
虽然不太懂,但是谢谢你
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2023-10-8 07:26 , Processed in 0.120155 second(s), 23 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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