SSE Hooks
A framework for hooking skyrim process functionality. Supports shared storage between users.
Screenshots 1 screenshots
About this mod Machine translation
A framework for hooking skyrim process functionality. Supports shared storage between users.
motivation
I've seen many times due to SSE/SKSE upgrades and my and other people's patch mods broken, waiting for someone to rebuild them with the appropriate "magic" numbers so they can be used again. There are cases where the number is even known, but it's left in the dust due to the closed source nature of the project or the complexity of its build/fix.
So I came up with my own solution which I share here and someone can use it too. The concept is simple: provide a common basis for connecting functions or variables in memory. Sometimes these can be found automatically, sometimes these have to be fixed manually. To avoid rebuilding the binary, you can use a file that maps names to addresses. When the binary wants to patch a given function, it will just read the file and look at the numbers in it and continue. If it changes at runtime, update the file and that's all.
feature
Supports JSON-based files that map unique names to addresses (runtime updates can also be performed).
Reassign the same functionality using user profiles.
Standalone SKSE version
Flexible operation of internal JSON database, allowing custom settings and updates
Believe it is convenient and can be used in other languages besides C/C++ and even in other applications besides Skyrim.
More full-featured documentation and API specifications are available on the source code repository:
Remark
I think this mod is still in beta, although I've used it with other mods and it does a pretty good job.
Of course, developing code for this plugin should use the C/C++ header files available on GitHub.
Thanks
Powerful MinHook library, it is widely used.
A lightweight JSON library from nlohmann.
——————————————————————————————————————————————
Motivation
I have seen many times patch mods breaking due to SSE / SKSE upgrade and me, and others, waiting for somebody to rebuild them with the proper "magic" numbers so they can be used again. There were cases when the numbers are even known, but due to the closed source nature of the project or its complexity to build/fix it was left to dust.
So I came up with my own solution, which is shared here, with the idea that somebody may use it too. The concept is simple: provide common base for hooking upon functions or variables in the memory. Sometimes these can be automatically found, sometimes these have to be fixed manually. In order to avoid rebuilding the binary, a file which maps name to an address can be used. When a binary wants to patch given function it will just read that file and see the number inside and go on. If the runtime change, update the file and thats all.
Features
Support JSON based file which maps unique names to address (runtime updates can be done too).
Overpatching the same function using user profiles.
Independant of SKSE version
Flexible manipulation of the internal JSON database, allowing custom settings and updates
Believe it is convenient enough to be used from other languages other than C/C++ and even for other application other than Skyrim.
There is more full-featured documentation and API specification on the source repo:
Remarks
I consider this mod still in test phase, though I have been using it already for other mods and it does great job.
Of course, developing code for that plugin should use the C/C++ header files available on GitHub.
Thanks
The mighty MinHook library which is used a lot around.
The lightweight JSON library from nlohmann.
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- There is no universal mod manager for this game: some mods replace game files directly, some go into a game-specific Mods folder, and some need a game-specific community loader or tool first — follow the bundled readme.
- Place the files exactly as the readme says; mods with listed dependencies need those installed too.
- Launch the game to confirm it loaded; some games require enabling mods in settings or an in-game mod menu.
Install locations vary a lot between games and mods — the bundled readme is the most reliable guide.