一只双眼皮 发表于 2020-4-23 22:08

【控制台复活计划】-有请众大佬共同参与x

本帖最后由 leeahngi 于 2023-12-7 02:08 编辑

圣火令最近工作挺忙。都快忙成圣焱令了。
恰巧greenhell取消了debug控制台,导致很多依赖控制台的功能失效。
因为时间不定,所以每天抽出一点点,来尝试复活部分功能。
【为避免重复劳动,欢迎各位大佬认领感兴趣的部分】本贴将持续更新。
Page1为已过测功能,Page2是在制作过程中走过的弯路(非强动手能力玩家不必看Page2)

已修复功能:【F8秒建筑】
修改原理:调整验证顺序,将Ready状态(完工)前置。并加入控制键F8
其他大佬可参考:控制键的代码实现。
需要在 ConstructionGhost.UpdateState 中修改
改后的代码:
public void UpdateState()
    {
      if (this.IsReady() || Input.GetKeyDown(KeyCode.F8))
      {
            this.SetState(ConstructionGhost.GhostState.Ready);
      }
      ConstructionGhost.GhostState state = this.m_State;
      if (state == ConstructionGhost.GhostState.Dragging)
      {
            this.UpdateRotation();
            this.UpdateTransform();
            this.UpdateColor();
            this.UpdateShaderProps();
            return;
      }
      if (state != ConstructionGhost.GhostState.Building)
      {
            return;
      }
      this.UpdateShaderProps();
    }
已修复功能:【Ctrl+0 1 2 3 】无敌、给壶、给锅、给铁斧
已修复功能:【Ctrl+U】解锁所有图纸
1、都在MainLevel.UpdateInputsDebug
2、利用 Get() 实现Instance
3、需要更改部分函数的访问权限为Public (我就不去麻烦用托管或指针了,反正这是个人性质的改动)
需要公开的函数为
UnloackAllConsumed();
UnlockAllCrafted();
UnlockAllBoiledData();
UnlockAllCollected();
改公开方法:右键点:函数名-选择:编辑方法-弹出个窗口,左下角有访问权限:下拉菜单,点选把私有改为公共。
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using AdvancedTerrainGrass;
using Enums;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.SceneManagement;

public partial class MainLevel : MonoBehaviour, ISaveLoad
{
      private void UpdateInputsDebug()
      {
                if (Input.GetKey(KeyCode.LeftControl))
                {
                        if (Input.GetKeyDown(KeyCode.Keypad0))
                        {
                              Cheats.m_GodMode = !Cheats.m_GodMode;
                              return;
                        }
                        if (Input.GetKeyUp(KeyCode.Keypad3))
                        {
                              Player.Get().AddItemToInventory("Axe_professional");
                              return;
                        }
                        if (Input.GetKeyUp(KeyCode.Keypad1))
                        {
                              Player.Get().AddItemToInventory("Bidon");
                              return;
                        }
                        if (Input.GetKeyUp(KeyCode.Keypad2))
                        {
                              Player.Get().AddItemToInventory("Pot");
                        }
                        if (Input.GetKey(KeyCode.U))
                        {
                              ItemsManager.Get().UnlockAllItemsInNotepad();
                              PlayerDiseasesModule.Get().UnlockAllDiseasesInNotepad();
                              PlayerDiseasesModule.Get().UnlockAllDiseasesTratmentInNotepad();
                              PlayerDiseasesModule.Get().UnlockAllSymptomsInNotepad();
                              PlayerDiseasesModule.Get().UnlockAllSymptomTreatmentsInNotepad();
                              PlayerInjuryModule.Get().UnlockAllInjuryState();
                              PlayerInjuryModule.Get().UnlockAllInjuryStateTreatment();
                              PlayerInjuryModule.Get().UnlockAllKnownInjuries();
                              ItemsManager.Get().UnloackAllConsumed();
                              ItemsManager.Get().UnlockAllCrafted();
                              ItemsManager.Get().UnlockAllBoiledData();
                              ItemsManager.Get().UnlockAllCollected();
                              ItemsManager.Get().UnlockAllItemInfos();
                              MapTab mapTab = (MapTab)MenuNotepad.Get().m_Tabs;
                              if (mapTab == null)
                              {
                                        return;
                              }
                              mapTab.UnlockAll();
                        }
                }
      }
}
【2020.04.23 PM 10:00 开始尝试 Ctrl+U 打开制造列表】
进展:22:22 复制原代码进入游戏后,无效。游戏不报错。开始排查
进展:22:40 移动代码到Update下,仍无效。排除某处有禁止debug运行可能。回到进展1
进展:22:53 尝试直接将旧版代码整体移植(包括刷物品列表),游戏报错退出。(有新建UIList类型字段m_List 于ItemsManager
进展:23:06 最次尝试将UnlockAllCrafted中的代码直接植入UpdateDebug,仍然无效。可能需要换一种解决思路~
因怀疑是整个ItemsManager的Update未生效,先复活 无敌等位于 MainLevel.UpdateInputsDebug的功能。已成功。
明天如有时间,尝试直接在这个方法下制作其他功能。
今晚收工
【2020.04.25 PM 20:17 继续 Ctrl+U 打开制造列表】
过测。本项结束。
可能是 ItemManager.Update及 UpdateDebug没有被加载?同样的代码放进MainLevel就可以了。这太神奇了
【2020.04.25 PM 21:18在参考了@mrh121 大佬的帖子https://bbs.3dmgame.com/thread-6037334-1-1.html后,开始尝试直接在MainLevel中复活 Ctrl+Art (打开刷物品列表)和 Ctrl+i(刷物品)】
昨晚失败。莫名错误,甚至连时间+ - 和存档9 都不能往里放,今晚如果有时间再操作。





内是啥啊 发表于 2020-4-23 22:54

6666666666666666666666666666666666666666

内是啥啊 发表于 2020-4-23 22:55

F8我刚试完 完全可以用

Murphy01 发表于 2020-4-23 23:32

楼主你好,我在1.5.3刚更新的时候就发现没法用debug模式了,然后就去Twitter,reddit,YouTube上找一些路子,想看看有没有方法开启debug,然后在YouTube上找到了,在一个叫modapi的网站提供一个软件,借助那个软件开启游戏就可以再次使用debug了,不过目前那个debug mod是1.5.2版本的,作者还没更新1.5.3版本,他现在那个还未更新的版本的mod还是能用在1.5.3上面的,只不过相当于原来的debug,他的f8一键建筑的功能无法使用,其他全都可以在1.5.3里正常使用

一只双眼皮 发表于 2020-4-23 23:42

本帖最后由 一只双眼皮 于 2020-4-23 23:47 编辑

Murphy01 发表于 2020-4-23 23:32
楼主你好,我在1.5.3刚更新的时候就发现没法用debug模式了,然后就去Twitter,reddit,YouTube上找一些路子 ...
既然有梯子,看懂代码应该不难。
看一下本贴主贴在1.5.3的修改位置,对比一下带debug的1.5.2 mod同样位置有代码还是没代码。
如果有代码,可能是向上兼容导致的。
某些版本存在向上兼容:例1.3.0制作的mod适用1.3.2
但因官方版在1.5.3删除了debug代码,以后不一定能适用。
所以求人不如求己。
如果那个modapi上的作者是通过软件注入开关(api 接口)以打开原有debug功能,以后会失效。
而当我们吃透了所有debug的代码实现机制,那就无论怎么变都可以继续制作。
当然最好那个作者是通过注入代码方式实现的debug。若如此,我就把不多的时间放在开发新功能上
(可参看https://bbs.3dmgame.com/thread-6034155-1-1.html)
这位大佬就是不借助debug实现功能。

3dm_15299031 发表于 2020-4-24 09:46

大佬牛逼

楠箐丶 发表于 2020-4-24 21:06

大佬,控制台汉化咋做。

一只双眼皮 发表于 2020-4-24 22:44

楠箐丶 发表于 2020-4-24 21:06
大佬,控制台汉化咋做。

控制台汉化? 以前的老版本不存的这个问题吧。就一个刷物品,那对照着表就可以了啊。

页: [1]
查看完整版本: 【控制台复活计划】-有请众大佬共同参与x