Hearthstone Modify Based on BepInEx 基于BepInEx的炉石修改,插件源代码位于github.com/Pik-4/HsMod,插件不会收集您的任何信息;项目遵循AGPL-3.0
,仅用作学习研究。
新!
(需要开启快捷键,可能需要重新进入收藏,佣兵可能重启后失效)HsSkins.cfg
,或在设置中修改,对局中更新需要在按下F4
保存后,模拟拔线)Hearthstone\website
作为根目录。编译HsMod
或从Releases
下载HsMod.dll
。
配置BepInEx
。
2.1. 下载BepInEx_x86,并将其解压到炉石根目录Hearthstone\
下。
2.2. 创建一个目录Hearthstone\BepInEx\unstripped_corlib\
;下载Mono和Unity,并将其解压在该目录;。将项目目录HsMod/LibUnityMono下所有dll复制到unstripped_corlib目录下。
2.3. 修改Hearthstone\doorstop_config.ini
,将dllSearchPathOverride=
替换成dllSearchPathOverride=BepInEx\unstripped_corlib
注:BepInEx 5.4.23.2中, 修改Hearthstone\doorstop_config.ini
,将dll_search_path_override =
替换成dll_search_path_override = BepInEx\unstripped_corlib
将HsMod.dll
存放在Hearthstone\BepInEx\plugins
。
安装BepInEx配置管理BepInExConfigManager.Mono,解压到Hearthstone\BepInEx\
即可;进入游戏后F5
进行相关控制。
注:Windows的unity和mono,从unity editor中提取,unity位于.\Unity 2021.3.40f1\Editor\Data\PlaybackEngines\windowsstandalonesupport\Variations\win32_player_development_mono\Data\Managed
,mono位于.\Unity 2021.3.40f1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit-win32
,部分文件位于unityjit-win32\Facades
)
Download the latest version of BepInEx_unix and extract it to Hearthstone/
Download original Mono and Unity libraries and unpack to Hearthstone/BepInEx/unstripped_corlib. Copy all dll
which under the project folder HsMod/LibUnityMonoUnix
(cp HsMod/LibUnityMonoUnix/* Hearthstone/BepInEx/unstripped_corlib/
). ( PS. Mono and Unity version must same as Hearthstone ).
Edit the run_bepinex.sh
file replacing the line export DOORSTOP_CORLIB_OVERRIDE_PATH=""
with DOORSTOP_CORLIB_OVERRIDE_PATH="$BASEDIR/BepInEx/unstripped_corlib"
Edit the file run_bepinex.sh
replacing the line executable_name=""
with executable_name="Hearthstone.app"
Run command in console chmod u+x run_bepinex.sh
Get the token here and copy after http://localhost:0/?ST=
and before &accountId=
# Some verify url
https://www.battlenet.com.cn/login/zh-cn/?app=wtcg
https://us.battle.net/login/en/?app=wtcg
https://tw.battle.net/login/zh/?app=wtcg
https://kr.battle.net/login/zh/?app=wtcg
https://eu.battle.net/login/zh/?app=wtcg
...
Create a client.config
file with the following content, instead of token
- insert the token obtained in the previous step. Env value xx.actual.battle.net
; xx
same as the token first two characters. E.g
[Config]
Version = 3
[Aurora]
VerifyWebCredentials = "token"
ClientCheck = 0
Env.Override = 1
Env = cn.actual.battle.net
Download the HsMod Releases and unzip to Hearthstone/BepInEx/plugins
Download the BepInExConfigManager.Mono and unzip to Hearthstone/BepInEx
After entering the game, press F5
to control HsMod.
Now the game needs to be launched only through ./run_bepinex.sh
If the token becomes obsolete and the game stops opening, then you just need to update it in the client.config
.
Mac上首次运行可能会提示战网登录错误,请找到HsMod.cfg,修改激活插件即可,详细可参考 #8。
编译HsMod
或从Releases
下载HsMod.dll
。
参考0xf4b1/hearthstone-linux安装Linux版Hearthstone。(理论上此时会配置好client.config)
下载 BepInEx_unix(注:目前采用BepInEx5)并将其解压到炉石根目录hearthstone/
下。
创建一个目录hearthstone/BepInEx/unstripped_corlib/
;
将项目目录HsMod/LibUnityMonoUnix
下所有UniTask
开头的.dll复制到该目录下
cp HsMod/LibUnityMonoUnix/UniTask* hearthstone/BepInEx/unstripped_corlib/
注:也可直接将项目目录HsMod/LibUnityMonoUnix
下所有.dll
复制到该目录下
修改unix_bepinex.sh
export DOORSTOP_CORLIB_OVERRIDE_PATH=""
为 DOORSTOP_CORLIB_OVERRIDE_PATH="$BASEDIR/BepInEx/unstripped_corlib"
executable_name=""
为 executable_name="Bin/Hearthstone.x86_64"
sed -i "s/\r/ /g" ./run_bepinex.sh
修改文件结尾换行符,以匹配Linux文件系统。如果配置正确,此时目录结构应该如下。
hsmod@hsmod:~/hearthstone-linux/hearthstone$ ls -alh
drwxrwxr-x 9 a a 4.0K Jan 12 12:07 .
drwxrwxr-x 9 a a 4.0K Jan 12 09:27 ..
drwxrwxr-x 4 a a 4.0K Jan 12 11:52 BepInEx
drwxrwxr-x 3 a a 4.0K Jan 12 12:07 Bin
-rw-rw-r-- 1 a a 1.4K Aug 30 02:53 changelog.txt
-rw-rw-r-- 1 a a 103 Jan 12 11:16 client.config
drwxrwxr-x 3 a a 4.0K Jan 12 10:46 Data
drwxrwxr-x 2 a a 4.0K Jan 12 11:46 doorstop_libs
-rw-rw-r-- 1 a a 5 Jan 12 09:27 .locale
-rwxrwxr-x 1 a a 295K Jan 12 11:16 login
drwxrwxr-x 7 a a 4.0K Jan 12 12:07 Logs
drwxrwxr-x 5 a a 4.0K Jan 12 09:27 .ngdp
-rw-rw-r-- 1 a a 3 Jan 12 09:27 .region
-rwxrwxr-x 1 a a 4.8K Jan 12 12:07 run_bepinex.sh
drwxrwxr-x 3 a a 4.0K Jan 12 10:47 Strings
-rw-rw-r-- 1 a a 48 Jan 12 11:23 token
-rw-rw-r-- 1 a a 12 Jan 12 11:16 .unity
-rw-rw-r-- 1 a a 21 Jan 12 10:47 .version
如果未配置client.config
,参考MacOS安装说明中6-7步,配置client.config
将HsMod.dll
存放在hearthstone/BepInEx/plugins
目录下(如果plugins目录不存在,需要手动创建)。
安装BepInEx配置管理BepInExConfigManager.Mono,解压到hearthstone/BepInEx/
即可;进入游戏后F5
进行相关控制。
为run_bepinex.sh
赋予执行权限
chmod u+x run_bepinex.sh
执行./run_bepinex.sh
,享受炉石吧。
如HsMod版本3.0.0.0
:
第一位 3 => 炉石大版本。例如: 3 => 26
第二位 0 => 炉石在该版本更新次数,不与炉石小版本对应;此外,当炉石发生更新,但Assembly-CSharp.dll
等文件没有变化时,该数字不会更新。例如:0 => 26.x.y.z
第三位 0 => 当HsMod在该炉石版本有新功能时,此数字+1;当第二位发生变化时,此数字置零。
第四位 0 => 编译版本。主要记录修复bug次数,与第三位对应。
炉石版本更新不一定会导致HsMod失效,如果HsMod插件功能正常,可以不随Release更新。HsMod更新特性可参考commit记录。
Assembly-CSharp.dll
的修改冲突,修改Assembly-CSharp.dll
可能导致IL指令定位异常,进而造成相关Patch无法生效;还可能与其他BepInEx插件(例如佣兵、MixMod)冲突,原因是同一个方法可能在两个插件中都存在Patch,当有多个Patch时,运行结果可能会异常,本插件没有检测原方法是否被修改。Hearthstone\BepInEx\config\HsSkins.cfg
。若无,则在运行游戏后自动创建。F4
为固定快捷键,用于获取游戏内部分信息(相关信息存放在Hearthstone\BepInEx\
目录下)、更新皮肤配置、重启Web服务等。其余快捷键均可自定义配置。BepInEx\HsMatch.log
,可在设置中修改。(字段以,
分隔).cfg
配置文件(一般位于BepInEx\config\
),进行重新配置;如果依然存在问题,请带上HsMod.cfg
提交Issues,但不保证及时解答。GetHsLib.py
用于更新炉石自有运行库,install.bat
用于将编译好的HsMod.dll
复制到默认炉石目录(前提是BepInEx已经配置好)。此外,在push修改版本号后(PluginInfo.cs发生变化后),会自动生成release。HsSkins.cfg
,并尝试删除HsMod.cfg
重新进行配置。client.config
用于绕过战网启动炉石,该文件位于Hearthstone.exe所在文件夹,内容如下
[Config]
Version = 3
[Aurora]
VerifyWebCredentials = "VerifyWebCredentials"
ClientCheck = 0
Env.Override = 1
Env = us.actual.battle.net
一些token获取链接
https://account.battlenet.com.cn/login/zh-cn/?app=wtcg
https://tw.battle.net/login/zh/?app=wtcg
https://kr.battle.net/login/zh/?app=wtcg
https://us.battle.net/login/en/?app=wtcg
https://eu.battle.net/login/en/?app=wtcg
在启用插件后,支持./Hearthstone.exe VerifyWebCredentials
命令启动炉石(但需要有client.config文件,现在不需要了!)。
注意:中国的Env
参数为cn.actual.battlenet.com.cn
。