millennia吧 关注:916贴子:4,076

【百度网盘】做了第一版修改器,大家可以下载使用

只看楼主收藏回复

链接:https://pan.baidu.com/s/1LS487ZSTShSVvDrxQ1J8Eg?pwd=5tvc
提取码:5tvc
首先说明下这版修改器的功能
1、加钱,加革新进度,加文化和领域经验
2、选中城市后加人口
3、修改地形(注:修改资源有bug,我没研究出来,所以没加这个功能)
**提醒**
1、一定要开启对局后按F5呼出修改菜单,再按一次F5关闭菜单,菜单固定在左上角,字和颜色我没时间调,如果看不清的话可以进入城市建造页面,深色背景看的清楚些。
2、这个修改器是调用游戏自身方法达到的效果,所以版本没有大更新或是其他原因,理论是一直生效的
使用说明:
把BepInEx文件夹以及其余3个文件直接丢到有millnnia.exe文件的目录下,可以参考下图。
下面是使用效果说明

F5呼出菜单后,除科技外都是点一下按钮就加点数,钱是加一百万,领域经验是全部加一百。
金钱修改完UI不会及时更新,可以进入城市建造页面或者科技页面后再退出,就会刷新了。
科技是单选,开启后去科技页面,按Shift+鼠标左键点击想要解锁的科技,进入时代的科技还是要过回合研发的。
领域经验增加的同时,也会解锁,但要到下回合才能看见

城市一定要进入建造或者下图这个工人界面,才会出现+人口的选项

修改地形也是,要选中地形后,再选择你想变成的地形,如下两图所示,我把草原修改成了沙漠


城市人口修改是可以超上限的

下图可以看到第一回合我就全解锁科技,进入青铜时代,但是时代还是要过回合的


第一回合领域经验修改后,需要过回合才可以显示其他领域。

这是我尝试修改资源,但是有问题,相应的改进设施没有出现,所以还需要研究


IP属地:浙江1楼2024-03-31 09:08回复
    二楼说明下我使用的工具BepInEx,这是专用于开发unity插件的东西
    下面贴代码,后续可以在此基础上继续开发新功能
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data.SqlTypes;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using BepInEx;
    using BepInEx.Configuration;
    using CPrompt;
    using HarmonyLib;
    using Steamworks.Ugc;
    using UnityEngine;
    namespace Millennia_Cheat {
    [BepInPlugin("aoe.top.plugins.Millennia_Cheat", "千年作弊", "1.0.0.0")]
    public class Main : BaseUnityPlugin {
    public static bool switchDisplayingWindow = false; // gui作弊窗口开关
    public Dictionary<KeyCode, KeyboardShortcut> keyMapping = new Dictionary<KeyCode, KeyboardShortcut> ();
    public APlayer player = null;
    public ADomainManager domainManager = null;
    public AGameData data = null;
    public ALocation aLocation = null;
    // 在插件启动时会直接调用Awake()方法
    void Awake() {
    }
    // 在所有插件全部启动完成后会调用Start()方法,执行顺序在Awake()后面;
    void Start() {
    this.regKey(KeyCode.F5);
    terrainList.Add("草地", "TT_GRASSLAND");
    terrainList.Add("灌木丛林地", "TT_SCRUBLAND");
    terrainList.Add("沙漠", "TT_DESERT");
    terrainList.Add("冰川", "TT_GLACIER");
    terrainList.Add("沼泽", "TT_SWAMP");
    terrainList.Add("热带丛林", "TT_JUNGLE");
    terrainList.Add("苔原", "TT_TUNDRA");
    terrainList.Add("密林", "TT_DEEPFOREST");
    terrainList.Add("森林", "TT_FOREST");
    terrainList.Add("近海", "TT_WATER");
    terrainList.Add("深海", "TT_DEEPWATER");
    terrainList.Add("山地", "TT_MOUNTAIN");
    terrainList.Add("丘陵", "TT_HILLS");
    //MT_RICE "稻米"
    terrainText = terrainList.Keys.ToArray();
    }
    // 插件启动后会一直循环执行Update()方法,可用于监听事件或判断键盘按键,执行顺序在Start()后面
    void Update() {
    if (AGame.Instance.CurrPlayer == null) return;
    if (this.keyMapping[KeyCode.F5].IsDown()) {
    switchDisplayingWindow = !switchDisplayingWindow;
    player = AGame.Instance.CurrPlayer;
    data = player.GetComponent<AGameData>();
    domainManager = player.GetComponent<ADomainManager>();
    }
    aEntityTile = AInputHandler.Instance.SelectedCity;
    aLocation = AInputHandler.Instance.SelectedLocation;
    //aLocation.AddEntity(AEntity.CreateEntity(), false);
    }
    // 在插件关闭时会调用OnDestroy()方法
    void OnDestroy() { }
    private Rect windowRect = new Rect(0, 0, 500, 500);
    private void OnGUI() {
    if (Main.switchDisplayingWindow) {
    // 定义窗口位置 x y 宽 高
    // 创建一个新窗口
    // 注意:第一个参数(20210218)为窗口ID,ID尽量设置的与众不同,若与其他Mod的窗口ID相同,将会导致窗口冲突
    if(Time.time % 0.2 < 1) windowRect = GUI.Window(20210218, windowRect, CheatWindow, "千年Millennia 辅助功能窗口");
    }
    }
    private int currentGridIndex = 0;
    private string[] gridText = { "基础", "城市", "地块" };
    private bool toggleTechShiftClick = false;
    private Dictionary<string, string> terrainList = new Dictionary<string, string>();
    private string[] terrainText = { };
    private int currentTerrainIndex = 0;
    private AEntityTile aEntityTile = null;
    public void CheatWindow(int winId) {
    GUILayout.BeginArea(new Rect(10, 20, 480, 450)); {
    currentGridIndex = GUILayout.Toolbar(currentGridIndex, gridText);
    switch(currentGridIndex) {
    case 0:
    {
    GUILayout.Label("金钱");
    if (GUILayout.Button("+1000k")) data.AdjustBaseValue(APlayer.cResCoin, 1000000); // 金钱
    GUILayout.Label("文化");
    if (GUILayout.Button("+100")) data.AdjustBaseValue(APlayer.cResCulture, 100); // 文化
    GUILayout.Label("革新");
    if (GUILayout.Button("+100")) data.AdjustBaseValue(APlayer.cResInnovation, 100); // 革新
    GUILayout.Label("领域经验");
    if (GUILayout.Button("全+100"))
    {
    data.AdjustBaseValue("ResDomainArts", 100); // 艺术领域
    data.AdjustBaseValue("ResDomainDiplomacy", 100); // 外交领域
    data.AdjustBaseValue("ResDomainEngineering", 100); // 工程领域
    data.AdjustBaseValue("ResDomainExploration", 100); // 探索领域
    data.AdjustBaseValue("ResDomainGovernment", 100); // 政府领域
    data.AdjustBaseValue("ResDomainWarfare", 100); // 战争领域
    data.AdjustBaseValue("DomainUnlock-DomainArts", 0); // 艺术领域
    data.AdjustBaseValue("DomainUnlock-DomainDiplomacy", 0); // 外交领域
    data.AdjustBaseValue("DomainUnlock-DomainEngineering", 0); // 工程领域
    data.AdjustBaseValue("DomainUnlock-DomainExploration", 0); // 探索领域
    data.AdjustBaseValue("DomainUnlock-DomainWarfare", 0); // 政府领域
    }
    toggleTechShiftClick = GUILayout.Toggle(toggleTechShiftClick, "Shift+单击 解锁科技");
    GUILayout.Label("在科技界面,按住Shift+鼠标左键点击想要解锁的科技!注:进入新时代的科技仍需研发");
    if (GUI.changed) ADevConfig.EnableTechShiftClick = toggleTechShiftClick;
    } break;
    case 1:
    {
    GUILayout.Label("当前选择的城市:" + (aEntityTile != null && aEntityTile.IsCity(false) ? aEntityTile.GetDisplayName() : "无"));
    GUILayout.Label("注:进入城市建造与工人页面才算选中城市!");
    if (aEntityTile != null && aEntityTile.IsCity(false))
    {
    ACity city = aEntityTile.GetCity();
    GUILayout.BeginHorizontal();
    if (GUILayout.Button("人口+5")) city.AddPopulation(5);
    if (GUILayout.Button("人口+1")) city.AddPopulation(1);
    GUILayout.EndHorizontal();
    }
    } break;
    case 2:
    {
    if (aLocation != null)
    {
    GUILayout.Label("当前选中的:" + aLocation.ID);
    currentTerrainIndex = GUILayout.SelectionGrid(currentTerrainIndex, terrainText, 5);
    if (GUI.changed)
    {
    if (terrainList.GetValueSafe(terrainText[currentTerrainIndex]) != "")
    aLocation.ChangeTerrain(terrainList.GetValueSafe(terrainText[currentTerrainIndex]));
    }
    }
    } break;
    default: break;
    }
    }
    GUILayout.EndArea();
    }
    private void regKey(KeyCode keyCode) {
    this.keyMapping.Add(keyCode, new BepInEx.Configuration.KeyboardShortcut(keyCode));
    }
    }
    }


    IP属地:浙江2楼2024-03-31 09:14
    收起回复
      前天跟昨天白天我去俄罗斯的几个论坛翻了,还是小众了点,都只有正式版资源。
      翻代码的时候,官方是把地图编辑器类跟控制台类的代码全清空了,挺可惜,有地图编辑器其实更好玩,不知道官方为啥删了


      IP属地:浙江3楼2024-03-31 09:26
      收起回复
        牛逼


        IP属地:广西4楼2024-03-31 09:29
        收起回复
          真的牛逼,感谢大佬!


          IP属地:广西5楼2024-03-31 09:38
          回复
            真正的互联网大佬!


            IP属地:四川6楼2024-03-31 09:55
            回复
              但是佬,小小建议一下
              游戏本身的ui就很屎了,能不能把修改器的ui调整到屏幕的左下角,这样互不干扰
              然后颜色对比相对更显眼一些
              4k看着字太小了
              再次感谢


              IP属地:四川7楼2024-03-31 10:03
              回复
                大佬你好,能不能加个功能可以拖拉修改器的UI,这个左上角的UI真的是又小又看不见,我是2k的屏幕。主要是字有点小,而且很淡,有点看不清楚。我觉得楼上说的挺好的,在左下角确实不错。3dm看见的特地来贴吧回复


                IP属地:浙江8楼2024-03-31 10:25
                回复
                  感谢您!!!!!


                  IP属地:四川9楼2024-03-31 10:32
                  回复
                    大佬牛逼,多谢大佬


                    IP属地:广东来自Android客户端11楼2024-03-31 12:26
                    回复
                      谢谢大佬!


                      IP属地:辽宁来自Android客户端12楼2024-03-31 12:29
                      回复
                        真大佬!厉害


                        IP属地:上海来自Android客户端13楼2024-03-31 12:38
                        回复
                          wc大佬牛逼这才发售几天就让大佬研究明白了
                          顺便问一下这游戏不像其他4X,后期莫名其妙非常卡就是什么操作不做原地挂机帧数都会很低(其他4X至少是走时间的时候才会卡)不知道大聪明制作组设置了什么奇妙的运算,我看了一下硬件占用都不高CPU内存显卡都没超过50%,也没有祖传的单核,感觉就像是故意把后期做的很卡的一样


                          IP属地:四川14楼2024-03-31 12:49
                          收起回复

                            大神,受我一拜


                            IP属地:广西15楼2024-03-31 12:54
                            回复
                              感谢大佬
                              求大佬添加改良工具的点数和分来各类领域经验


                              IP属地:辽宁来自Android客户端16楼2024-03-31 14:44
                              回复