# Hearthstone-bepInEx **Repository Path**: volcano22/hearthstone-bepInEx ## Basic Information - **Project Name**: Hearthstone-bepInEx - **Description**: 炉石传说,学习bepInEx,不可用于商业用途和非法牟利 - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-12-09 - **Last Updated**: 2022-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hearthstone-bepInEx ## 介绍 炉石传说,学习bepInEx,不可用于商业用途和非法牟利 ## 软件架构 软件架构说明 ## 安装教程 ### 1. BepInEx的安装和使用 #### BepInEx下载 BepInEx的Github链接 https://github.com/BepInEx/BepInEx/releases 下载32位版本 [BepInEx_x86_5.4.17.0.zip](https://github.com/BepInEx/BepInEx/releases/download/v5.4.17/BepInEx_x86_5.4.17.0.zip) #### BepInEx安装 前文提到过BepInEx的安装非常简单,只需要将BepInEx解压到游戏根目录即可。 解压后的文件结构应如下所示(带星号的为BepInEx的部分): ``` |-XXXGame |-BepInEx* |-core |-... |-XXXGame_Data |-doorstop_config.ini* |-UnityCrashHandler64.exe |-UnityPlayer.dll |-XXXGame.exe |-winhttp.dll* ``` 如果安装无误,启动游戏之后,在BepInEx文件夹下应该会生成几个文件夹,如下: ``` |-BepInEx |-cache //缓存文件夹 |-config //插件配置文件夹 |-core //框架核心文件夹 |-patchers //特殊插件文件夹 |-plugins //常规插件文件夹 |-LogPutput.log //BepInEx日志 ``` 如果没有生成这几个文件夹,请重新确认游戏使用的Unity版本、游戏路径是否有中文、安装位置是否正确。 你可能会疑惑,为什么我们没有运行任何程序,也没有什么注入dll的操作,BepInEx就加载成功了? 这其实是因为,应用程序总是会用系统目录的一些库文件,而程序加载的时候,是先从自己的文件夹内搜索库文件,如果找不到,再去系统目录查找。利用这个原理,UnityDoorStop将加载插件的逻辑嵌入到winhttp.dll这个库中,同时不动它原来的其他逻辑。这样,就在保证了原功能不变并且不需要破坏游戏程序的情况下,加载了我们的插件。 ### 插件的安装 本教程以常规插件的制作教程为主,所有的常规插件最后都是一个dll文件的形式,放入BepInEx/plugins文件夹下即可,它会自动读取这个文件夹下面的插件并加载。 #### 打开控制台 在普通玩家的使用过程中,大部分情况并不需要看到控制台,玩家不需要了解插件背后做了什么,但是对于作者来说,控制台的作用非常大,在这里可以看到游戏本身输出的日志,插件也可以输出日志,方便我们对错误进行排查。 BepInEx启动一次之后,会在BepInEx/config文件夹下生成一个叫BepInEx.cfg的文件,这个就是BepInEx的配置文件了。打开配置文件(推荐使用VSCode、Notepad++等高级文本编辑器),在[Logging.Console]条目下,我们将Enabled = false改为Enabled = true,这样就开启了控制台的显示,打开游戏,即可看到控制台。 ### 开发环境准备 #### 安装VisualStudio VisualStudio是我们开发插件最重要的工具,也许你习惯其他开发.net的工具,但是免费的VisualStudio已经足够好用。 首先我们打开VS的官网 https://visualstudio.microsoft.com/ 选择下载最新的社区版(Community),当前是VS2019社区版,社区版是完全免费并且满足开发需求的,所以不需要找别的版本。 下载好之后我们打开安装,这是一个安装器,因为VS可以开发的内容非常多,但是并不是所有内容都是开发者需要的,所以微软使用这种安装器的形式让开发者选择自己需要的模块,如果你不知道如何选择,那这里就跟着我选择 Net桌面开发 和 使用Unity的游戏开发,记得把它自动选中的UnityHub去掉,后面我们需要用到Unity的时候,再根据情况选择安装。 ![img](README.assets/616424b82dec1539bb1e0612277f2fba339d3236.png@942w_527h_progressive.webp) #### 反编译工具dnSpy (可选) 写插件的时候我们经常需要查看游戏的逻辑,dnSpy可以很好的帮助我们完成这部分工作。 下载地址: https://github.com/0xd4d/dnSpy/releases 这是一个绿色软件,不需要安装,我们下载好之后解压好,在文件夹中找到Dnspy.exe,创建一个快捷方式方便我们以后使用即可。 ### 创建项目 从现有代码中创建新项目 ![image-20211123203137639](README.assets/image-20211123203137639.png) 修改项目属性,目标框架为4.6 ![image-20211123203040806](README.assets/image-20211123203040806.png) ![image-20211123202940012](README.assets/image-20211123202940012.png) 接下来我们添加一下常用的引用 ``` # BepInEx\core 目录下 0Harmony.dll BepInEx.dll # Hearthstone_Data\Managed 目录下 Assembly-CSharp.dll blizzard.bgsclient.dll System.Drawing.dll System.Windows.Forms.dll UnityEngine.dll UnityEngine.CoreModule.dll UnityEngine.IMGUIModule.dll UnityEngine.InputLegacyModule.dll ``` ![image-20211123210943819](README.assets/image-20211123210943819.png) 小技巧: 全选所有引用,把 复制本地 属性改为否,如果我们不这样选择的话,回头编译的时候,就会把引用到的相关dll也一起复制到输出目录,可能会有一大堆文件,所以这样比较简洁。 ![image-20211123211022080](README.assets/image-20211123211022080.png) ### 导出插件 在顶部工具栏选择生成->生成 hearthstone_bepInEx,等生成完毕后,打开输出的目录(bin\Debug文件夹下),将生成的hearthstone_bepInEx.dll复制到我们的 BepInEx/plugins目录下。 运行游戏 查看结果 ## 使用说明 1. xxxx 2. xxxx 3. xxxx ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)