回到目录 | 工具配置 | 脚本说明 | 快速入门 | 插件基础 | 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

