I'd love to see a Hotkey to console command DLL similar to the structure used for the camera one. E.g add a console command to ini and bind it to a key set in the same INI.
Is anyone else not able to use the Creation Kit with the x3audio1_7.dll version?I have not tried the other dll as I use ReShade. I get a CK ctd when even just loading skyrim.esm. Very minimal testing thus far, but just renaming the dll seems to allow me to use CK again.
Hi! Can you possibly provide an optional file with the old x3audio name? I think there are more people that use reshade than ones that use headphones mod out there. But you could cover both of two groups..
Good point. I uploaded versions 1.2 which has a ZIP file containing both so people can choose either one or the other. Will be nice when SKSE is available so mod developers don't have to compete over DLL names that can be wrapped.
Are there any good resources on creating a plugin dll? I'm interesting in understanding what you can achieve with this, especially since the vanilla scripting capabilities seem extremely limited to me. What kinds of things are plugins for?
I've tried to install and get this working with Mod Organizer a couple times now and am totally baffled. I don't have a Data\SSEPlugins folder, so I make one and unpack x3daudio1_7.dll into it. When I go to install A Little Better Free Camera MO complains about there being "no data on top level" and naturally doesn't work when SSE is fired up.
If you read the instructions on the description page you will see that you are supposed to put the DLL file into the same folder as SkyrimSE.exe is installed into. This is not something that is done inside Mod Organizer and has to be done manually in Windows Explorer.
Your reply was was something I'd considered and had placed the .dll in the dir where my Sky*.exe is located as well. My only way of knowing whether it's working or not is in conjunction with your A Little Better Free Camera and try as I might I just cannot get that to work for me. I've installed the latter with MO and told it to disregard its error message, and I've manually installed ALBFC as well.
I'm wondering if my real problem is doing this on a laptop with a gtx970 M chip? I could never get ENBoost to work unless I was using the injector (.exe) and wrappers never worked for me.
In that same folder you should see a file named PluginLoader.log that should tell you more about what is going on if you are having problems. Hopefully that will shed some light on the problem.
The PluginLoader.log reads on one line that it's reading LittleBetterFreeCamera.dll and the next that it's initializing it.
A LBFC log reads simply "A Little Better Free Camera has started." It doesn't work though. I thought perhaps it's because my num pad is on a laptop, so I changed the TFC_KEY to =0x4C (the L key), and still no free-cam.
I'm starting to think your fabulous free cam might have to wait for the SKSE64 before I'll be enjoying it. Thanks for your help meanwhile.
So I just took a closer look at the code for A Little Better Free Camera thinking it might not be reading the INI file which configures the keys, but apparently I have a log message for that which you should have seen if that was the case. Not sure what to recommend at this point. I am definitely looking forward to SKSE64 as well since it will make mods like this a lot easier, what I currently have now can be hard to make work for everyone.
I've already got x3daudio1_7.dll installed from http://www.nexusmods.com/skyrimspecialedition/mods/1897/? True 3D Sound for Headphones by kosumosu and it has a different file size than yours. Are they the same, is yours different from what I've already installed. Guidance would be appreciated.
Unfortunately that mod is not compatible with this one as we both wrap the same DLL file. Until SKSE is available this will be a problem for various mod authors who want to do code injection. If the author of that wants to utilize this plugin system so my other plugins and his mod can work together he is free to follow my API. In the mean time I will add something to the page description describing the incompatibility.
Actually looking more closely at that mod he wouldn't be able to use my plugin API as he is actually manipulating audio passed through x3daudio1_7.dll while I just used it because it was the simplest DLL to create a wrapper for. I may look into some other way to make both work at the same time. With luck SKSE will be available sooner rather than later which will make the need for this go away.
Well I didn't know that existed which might have saved me some trouble had I known. Looking more closely at the API it provides though it doesn't do version checking which can cause problems when Skyrim is updated.
Plugin DLLs are written against a specific version of Skyrim since they execute and manipulate specific areas of memory for that version. Currently Skyrim Special Edition is at version 1.3.9.0, but Bethesda may someday release 1.4.17.0 or some other higher version number where the memory locations used by an existing plugin DLL don't line up anymore. This can lead to crashing or other weird behavior in the game which can be rather annoying since Steam will automatically update the game. My loader will check the required version of Skyrim for each plugin it tries to load and prevent it from being loaded if the version doesn't match to avoid causing potential problems in the game. The plugin may not work after Skyrim is updated by Steam because of this, but it wouldn't have worked anyway and will at least not cause the game to crash.
So I think I will stick with using my loader to load plugin DLLs. This will all go away once SKSE is available for Skyrim Special Edition since everyone can use a unified platform.
Thanks for the reply - I agree with what you say about version checking. Very important to have while Bethesda are still updating things.
Perhaps you and that mod author should get together and work on a single mod? Their mod seems to be using a different DLL file, which makes it compatible with True 3D Sound. They're also the author of Achievement Mod Enabler, so most modders will have their DLL mod installed anyway.
Yeah, I use regular computer speakers and I don't care about achievements so I was unaware and made the wrong choice of DLL to wrap. I used x3daudio1_7.dll because frankly it was the easiest to create a wrapper for with only two exposed functions. I may see about wrapping some other DLL which hopefully won't conflict, but depending on how soon SKSE becomes available for Skyrim SE that may become a moot point anyway.
As mentioned in the description I am wrapping x3daudio1_7.dll which is used by Skyrim Special Edition and when my version of it gets loaded I then look for any DLL files under the " Data\SSEPlugins" folder which implement the API I described to execute the code of those plugins. The two plugins I have developed so far are done in C/C++, but other mod authors can use assembly code for what they do just as long as they use the same API.
31 comments
I think there are more people that use reshade than ones that use headphones mod out there.
But you could cover both of two groups..
You are awesome!!!
Thanks.
Any ideas?
I'm wondering if my real problem is doing this on a laptop with a gtx970 M chip? I could never get ENBoost to work unless I was using the injector (.exe) and wrappers never worked for me.
The PluginLoader.log reads on one line that it's reading LittleBetterFreeCamera.dll and the next that it's initializing it.
A LBFC log reads simply "A Little Better Free Camera has started." It doesn't work though. I thought perhaps it's because my num pad is on a laptop, so I changed the TFC_KEY to =0x4C (the L key), and still no free-cam.
I'm starting to think your fabulous free cam might have to wait for the SKSE64 before I'll be enjoying it. Thanks for your help meanwhile.
http://www.nexusmods.com/skyrim/mods/52717/?
I pretty desperately need this one.
Plugin DLLs are written against a specific version of Skyrim since they execute and manipulate specific areas of memory for that version. Currently Skyrim Special Edition is at version 1.3.9.0, but Bethesda may someday release 1.4.17.0 or some other higher version number where the memory locations used by an existing plugin DLL don't line up anymore. This can lead to crashing or other weird behavior in the game which can be rather annoying since Steam will automatically update the game. My loader will check the required version of Skyrim for each plugin it tries to load and prevent it from being loaded if the version doesn't match to avoid causing potential problems in the game. The plugin may not work after Skyrim is updated by Steam because of this, but it wouldn't have worked anyway and will at least not cause the game to crash.
So I think I will stick with using my loader to load plugin DLLs. This will all go away once SKSE is available for Skyrim Special Edition since everyone can use a unified platform.
Perhaps you and that mod author should get together and work on a single mod? Their mod seems to be using a different DLL file, which makes it compatible with True 3D Sound. They're also the author of Achievement Mod Enabler, so most modders will have their DLL mod installed anyway.