回到目录 | 工具配置 | 脚本说明 | 快速入门 | 插件基础 | Papyrus调用 | 事件响应 | 内存补丁 | 函数Hook
本教程会使用CMake管理插件项目,并用Visual Studio 2022进行开发和编译.
Steamless使用方法: 运行
Steamless.exe
并解包SkyrimSE.exe
. 运行完成后将SkyrimSE.exe
更名为SkyrimSE.Old.exe
, 并将SkyrimSE.unpacked.exe
更名为SkyrimSE.exe
即可解除Steam的反Debug保护.
使用CMake
保持外部编译的规范, 有助于管理插件项目和解决方案. 下载CMake后依说明安装.
Git
用于拉取/更新库. 下载Git后依说明安装.
vcpkg
用于获取和管理依赖项. 如果本地已安装vcpkg
, 则在系统环境变量添加变量VCPKG_ROOT
并为其赋值本地vcpkg
的安装目录.
如果本地未安装vcpkg
, 教程示例项目会自动安装vcpkg
.
本教程使用的IDE为VS2022. 下载Microsoft Visual Studio 2022预览版后依说明安装.
必需组件: 使用C++的桌面开发
- 确认游戏本体可以正常运行;
- 确认游戏可以从SKSE正常运行;
- 移除/禁用ENB和ReShade插件(会减缓启动速度, 妨碍调试);
可选: 使用BethINI工具或者手动配置游戏
SkyrimPrefs.ini
文件:[Display] bBorderLess=0 bFullScreen=0 iSize H=768 iSize W=1366 iVSyncPresentInterval=1
其中分辨率无需设置为
1366x768
, 这里只为使用一个比全屏幕分辨率低的窗口模式, 方便切出游戏和调试.
简称CLib
, CommonLib
, 是代替SKSE的插件开发库, 内容极为丰富, 实用性高, 并且社区一直进行维护和更新.
当前社区主流的有Ryan开发的CommonLibSSE
(原作者), po3更新的CommonLibSSE
(维护者), maxsu更新的CommonLibSSE
(维护者).
除Ryan的CLib
库外, 其他提到的库都支持NG
构建. NG
则是Next-Generation
的缩写, 由CharmedBaryon在po3的CLib
库基础上升级出的可同时支持AE/SE/VR版的多目标运行环境.
首次设立工作项目需要以管理员权限打开PowerShell
, 重定向至合适的工作目录, 运行以下命令:
git clone https://github.com/gottyduke/SKSEPlugins
Set-ExecutionPolicy Bypass -Scope Process
cd .\SKSEPlugins
.\!Rebuild -Bootstrap
在此过程中根据提示完善工程项目相关信息.
运行完成后重启PowerShell
或常用的命令行终端.
Bypass
执行策略仅应用于当前终端, 不必担心电脑安全.
命令!MakeNew <项目名称> [-install: mod名称] [-message: 项目说明] [-vcpkg: 额外依赖项]
用于快速新建符合此工作项目规格的插件项目.
打开PowerShell
或常用的命令行终端, 重定向SKSEPlugins
目录内. 运行以下命令:
.\!MakeNew MyNewPlugin -install "My New Mod" -message "Demo Plugin :)"
这样便新建了一个插件项目MyNewPlugin
, 该项目的mod名称为My New Mod
, 简易说明为Demo Plugin :)
.
!MakeNew
命令生成的插件项目非常基础, 若有第三方库依赖, 需要对CMakeLists.txt
和vcpkg.json
进行进一步的修改.
插件项目名称指整个项目及生成的dll文件的名称. mod名称指使用生成后控制工具时生成的mod名字.
命令!Rebuild <运行环境> [自定义CLib]
用于重新生成整个解决方案.
打开PowerShell
或常用的命令行终端, 重定向SKSEPlugins
目录内. 运行以下命令:
.\!Rebuild All
这样便生成了一个解决方案, 该方案的运行环境支持AE版+SE版+VR版, 使用的CommonLib
为CharmedBaryon的默认CLib-NG.
生成一个全版本支持+自定义CLib
的解决方案, 同时启用DKUtil
的测试工具:
.\!Rebuild -C -DBG DKUtil
在VS内正常右键新建文件即可, 新文件将会立即可用. 第一次编译后检测到的新文件会自动转移至该项目的根目录, 并在第二次编译后自动更新项目文件, 此时按照VS提示重新加载项目即可. 这两次编译并不需要立即接连执行, 对文件做出的所有更改在转移前, 两次编译之间, 编译后, 重新加载后都会保留.
!Update
脚本目前支持自动添加至CMake源文件表的文件类别为:*.c
*.cpp
*.cxx
*.h
*.hpp
*.hxx
使用REL::Module::IsAE() ::IsSE() ::IsVR()
来判断当前加载插件的运行环境是哪一个版本.
if (REL::Module::IsAE()) {
// AE code
} else if (REL::Module::IsSE()) {
// SE code
} else {
// VR code
}
!Rebuild
命令生成时使用CharmedBaryon的默认CLib-NG. 若要使用自定义CommonLib, 在BOOTSTRAP
步骤中设置合适的自定义CommonLib环境并在!Rebuild
命令启用参数-C
或-Custom
以启用自定义CommonLib.
回到目录 | 工具配置 | 脚本说明 | 快速入门 | 插件基础 | Papyrus调用 | 事件响应 | 内存补丁 | 函数Hook