I plan on adding documentation later when I get home. This is currently for the game settings that come from construction set but are handled by unreal engine. Lmk what other unreal settings I should include below!
Hey, please update your main.lua so it can use [/Script/Engine.PhysicsSettings] that usually run in the Engine.ini. Here is what works for me.
local gameSettingsMap = require "Construction64_To_Unreal_GameSettings" local unrealGameSettings = StaticFindObject("/Script/UE5AltarPairing.Default__VOblivionInitialSettings") local physicsSettings = StaticFindObject("/Script/Engine.Default__PhysicsSettings") local loadedGameSettings = {} local luaIniParser = require "LIP"
local function loadInis() for ini in io.popen([[dir "OBSE\Plugins\GameSettings" /b]]):lines() do if ini:sub(-4):lower() == ".ini" then print("[BB's Game Settings Loader] Loading OBSE\\Plugins\\GameSettings\\" .. ini .. "... \n") local loadedIni = luaIniParser.load("OBSE\\Plugins\\GameSettings\\"..ini) if loadedIni.GameSettings ~= nil then for setting, value in pairs(loadedIni.GameSettings) do if gameSettingsMap[setting] ~= nil then print("[BB's Game Settings Loader] " .. setting .. " -> " .. gameSettingsMap[setting] .. ": " .. tostring(value) .. "\n") loadedGameSettings[gameSettingsMap[setting]] = value end end end end end for ini in io.popen([[dir "GameSettings" /b]]):lines() do if ini:sub(-4):lower() == ".ini" then print("[BB's Game Settings Loader] Loading GameSettings\\" .. ini .. "... \n") local loadedIni = luaIniParser.load("GameSettings\\"..ini) if loadedIni.GameSettings ~= nil then for setting, value in pairs(loadedIni.GameSettings) do if gameSettingsMap[setting] ~= nil then print("[BB's Game Settings Loader] " .. setting .. " -> " .. gameSettingsMap[setting] .. ": " .. tostring(value) .. "\n") loadedGameSettings[gameSettingsMap[setting]] = value else print("[BB's Game Settings Loader] " .. setting .. ": " .. tostring(value) .. "\n") loadedGameSettings[setting] = value end end end end end end
local function applyInis() for setting, value in pairs(loadedGameSettings) do if unrealGameSettings and unrealGameSettings:IsValid() and unrealGameSettings[setting] and not string.find(tostring(unrealGameSettings[setting]), "UObject") then unrealGameSettings[setting] = value elseif physicsSettings and physicsSettings:IsValid() and physicsSettings[setting] and not string.find(tostring(physicsSettings[setting]), "UObject") then physicsSettings[setting] = value end end end
if unrealGameSettings and unrealGameSettings:IsValid() then print("[BB's Game Settings Loader] --[[ Got Oblivion's Unreal game settings! ]]--\n") loadInis() print("[BB's Game Settings Loader] --[[ Applying loaded settings, pray to Todd! ]]--\n") applyInis() loadedGameSettings = nil end You can use this or do your own implementation.
For people who want to do it themselves, just open the main.lua from this mod with notepad. Delete all text, copy and paste from this post and save.
Will examine later see if I can make any improvements, my focus kinda got lost onto the TesSyncMapInjector. I plan to make this able to apply internal game settings on save load too
[BUGFIX] Fix issue with getting tabbed out on load (probably the mouse / main menu lag too) Note: I tried to post this under bugs but nexus wouldn't cooperate (kept getting error 500 so comments it is...)
Using MO2 I was noticing a console window flash open for a split second that was causing the issues mentioned, the problem stems from using io.popen(...), I have made a couple changes to main.lua that fixes this
I would have never of guessed popen would cause the issue, I will rewrite a new update to address this. Thank you.
Edit: made a simple function to replace io.popen and can confirm this should fix the weird behavior as this fixed the nvidia intro overlay thingy from glitching out like it has been for me >-> local function getFilesInDirectory(path) local files = {} local folders = path:gmatch("([^\\]+)") local currentPath = IterateGameDirectories().Game.Binaries if currentPath.Win64 ~= nil then currentPath = currentPath.Win64 else currentPath = currentPath.WinGDK end for fold in folders do if currentPath[fold] ~= nil then currentPath = currentPath[fold] else return pairs(files) end end for _,fileobject in pairs(currentPath.__files) do table.insert(files,fileobject.__name) end return pairs(files) end
new update looks good, i did see you have a small mistake on line 44 when checking for the Gamepass exe you have accidentally reused the Win64 dir in the for loopfor _,file in pairs(BinariesFolder.Win64.__files) do should be for _,file in pairs(BinariesFolder.WinGDK.__files) do
Hey there. I wanted to bring to your attention that, for whatever reason, the newer versions seem to be causing massive compatibility issues (Crashes) with nearly every other UE4SS mod.
These crashes can occur on startup or randomly while playing (strangely, sometimes when you hit an NPC in combat), but they are very consistent. I believe the cause to be something added in one of the more recent updates. On 0.0.6, I experience no crashes, but any in other version the crashes are very consistent and repeatable.
+1 Ty for posting this. Yeah this game settings stuff and ue4ss stuff is extremely jank and causes crashes. Ive been hearing reports of the same. And majority of my crashes have been ue4ss related
This mod is also incompatible with my Smithing - Reforged, as well as my newest unreleased project which uses a custom Unreal Engine blueprint and Lua script trigger.
I was having the same issues many are posting on here and other places regarding this mod conflicting and CTD in combo with other UE4SS mods.
I figured out the solution for my configuration and it all came down to this: I was using both UE4SS Game Settings Loader and Game Settings Loader by powerofthree at the same time.
I had overlooked the Note on the description page of this mod that explains: "This mod does change game settings on the construction set side if setInternalGameSettings is true in config.lua, this might cause conflicts with Game Settings Loader by powerofthree and any esp files changing game settings too."
So I actually found 2 ways to solve my issue:
Set "setInternalGameSettings = false" in this mods config.lua, and continue to use Game Settings Loader by powerofthree to load game settings on the original “construction set side”.
[OR]
Use only this mod with “setInternalGameSettings = true” (default) and disabling Game Settings Loader by powerofthree
Still testing, but this has eliminated my CTDs on startup and on save load.
I think the problem is how it initializes. It's new method of reading ini files breaks mods that load after it causing CTDs. It needs to be reverted to use io.popen again.
Is 0.0.6 compatible for latest game patch? The crash you described of literally just running up to an enemy then crashing instantly is whats happening to me
0.0.6 should work on latest. but I'm hesitant to suggest using this mod. So far the authod has not recognized any of the the issues present so if something goes wrong, you won't have any support.
Also @shaggymonster, the instability is not from the use of console commands.
I note your embedded version of the "Console Framework UE4SS" OBRConsole.lua Script has not had the latest fixes applied to remove the ExecuteInGameThread which is reported to cause crashes:-
local C = {} function C.ExecuteConsole(command) local UEHelpers = require("UEHelpers") local playerController = UEHelpers.GetPlayerController() local KismetSystemLibrary = StaticFindObject('/Script/Engine.Default__KismetSystemLibrary') ExecuteInGameThread(function() << Remove this Line if command ~= '' then if playerController:IsValid() then KismetSystemLibrary:ExecuteConsoleCommand(playerController.player, command, playerController, true) << Add ", true" else print("[LuaConsoleMod]playerController invalid") end else print("[LuaConsoleMod]command is null") end end) << Remove this Line end return C
I managed to dramatically increase the stability of "UE4SS Game Settings Loader" by tweaking to a few LUA & ini files, however, my changes also require you to use powerofthree's "Game Settings Loader" alongside "UE4SS Game Settings Loader". What I did in the steps below has so far seemingly fixed the current stability issues of this mod, which let me use this mod and the mods that require it without having a single crash as of posting this, which was after about 10 hours of play time.
This was done on the Steam version of Oblivion Remastered, using Vortex, tested with the following mod versions... "UE4SS" version 3.0.1.a ; "UE4SS Game Settings Loader Steam" version 0.1.1 ; "OBSE64" (Oblivion Remastered Script Extender) version 0.2.1 ; powerofthree's "Game Settings Loader" version 1.1.0
I also use Turpentine, but I don't believe that changes much in regards to these specific fixes.
Almost all of these fixes/steps I pieced together from what others had work properly, split amongst multiple Nexus mod pages, and I'm working in reverse from memory; Hopefully it works for anyone who wants to see if it works for their game like it does mine. (Hopefully this is not too confusing to follow, I'm autistic and haven't slept in at least 28 hours.)
(See addendums (Example, "(Add. #1)" for "Addendum #1") in my reply to this post for additional comments I give on steps that include the abbreviation.)
REMINDER! IT IS ALWAYS SUGGESTED TO MAKE BACKUPS OF THE FILES PRIOR TO YOU EDITING THEM, JUST IN CASE!
Step 1 : After installing both Game Settings Loaders, navigate to "OblivionRemastered\Binaries\Win64\ue4ss\Mods\GameSettingsLoader\Scripts" and open the "config.lua" file in a text editor. (Add. #1)
Step 2 : The "config.lua" file opened in the previous step will look something like this inside...
return { setInternalGameSettings = false }
Simply change "true" to "false" and save the file.
Step 3 : (Add. #2) Now open up the "main.lua" file in the same directory as the previous "config.lua" file, then, locate and replace ALL THREE instances of "Plugins" with "plugins" on lines 77, 79, and 80, and save the file.
Step 4 : Next, open "OBRConsole.lua" in the same directory. If you are on a Windows PC, hold CTRL and press A to select all, otherwise, select all the old fashioned way. You can now paste in the following to replace everything in that file.
local C = {}
function C.ExecuteConsole(command) local UEHelpers = require("UEHelpers") local playerController = UEHelpers.GetPlayerController() local KismetSystemLibrary = StaticFindObject('/Script/Engine.Default__KismetSystemLibrary') if command ~= '' then if playerController:IsValid() then KismetSystemLibrary:ExecuteConsoleCommand(playerController.player, command, playerController, true) else print("[LuaConsoleMod]playerController invalid") end else print("[LuaConsoleMod]command is null") end end
return C
Now that you pasted that in, save the file.
Step 5 : (Add. #3) Navigate to the "OblivionRemastered\Binaries\Win64\ue4ss\Mods" folder and open the "mods.txt" file. Then add the following to the bottom of the (probably very short) list...
Step 6 : It's time to make sure that the different "GameSettings" .ini files are in both GameSettings folders, as some get installed in the folder used by one mod or the other. It's quite simple really. I'd suggest you open up another File Explorer window, have one opened to the "OblivionRemastered\Binaries\Win64\GameSettings" folder, and the other opened to the "OblivionRemastered\Binaries\Win64\OBSE\plugins\GameSettings" folder.
Step 7 : (Add. #4) Now that preferably both folders are open and side-by-side, compare them, and copy any .ini files to the other folder if it isn't already in that folder. FOR EXAMPLE, if in the "Win64\GameSettings" folder, there is a file named "RealisticArrowSpeed.ini", and it isn't already in the "\Win64\OBSE\plugins\GameSettings" folder, then simply copy it over!Make sure to do it the other direction too if needed.
Step 8 : UE4SS Game Settings Loader should hopefully work better for you now.
(Addendum #1 - I personally use and suggest Notepad++, as it tells you numbers for each text line, and shows which lines you edited just-in-case.)
(Addendum #2 - I am not entirely sure if this step is actually required or not, but some people said that they were having problems with it being case-sensitive, so I included it when I fixed the UE4SS Game Settings Loader on my game, just to be safe.)
(Addendum #3 - I'll be honest. I don't exactly know if this does anything, but it didn't seem to harm anything when I did it on my own game. Deleting the "enabled.txt" file from the "OblivionRemastered\Binaries\Win64\ue4ss\Mods\GameSettingsLoader" folder might also need to be done for this to function, although not doing so didn't cause me any crashes, at the very least.)
(Addendum #4 - You might not have ANYTHING in BOTH these GameSettings folders, if you don't, good for you, this step can be skipped, if not, MAKE SURE TO FOLLOW THIS STEP. This step is CRITICAL now that we disabled "UE4SS Game Settings Loader"'s InternalGameSettings toggle!)
I found out that 'OBSE Custom Game Settings.ini' file was not being loaded by UE4SS Game Settings Loader. After digging around, I found out the reason was that my directories were not named in the expected manner.
This mod is expecting 'OBSE Custom Game Settings.ini' to be under 'OBSE\Plugins\GameSettings'.
Although the directories and file are indeed there in my system, Vortex deployed the mod under the directory 'obse\plugins\GameSettings'. Notice the lowercase directories.
Because of this, the 'getFilesInDirectory' function in 'main.lua' of the mod was not picking up that the directories are existing in the file system.
The quick fix is to make sure the directories in your game files are named with the correct case 'OBSE\Plugins\GameSettings' as expected by the mod and it should work.
It would be better to have the function 'getFilesInDirectory' be case-insensitive since Windows is also case-insensitive, but I'm not familiar enough with Lua to propose a code change.
Hi all, After the new Patch v1.511... In my UE4SS Debugging Tools i'm getting this In Red :
[21:28:48.1590113] Error: [Lua::call_function] lua_pcall returned [UFunction::setup_metamethods -> __call] UFunction expected 4 parameters, received 3 stack traceback: [C]: in method 'ExecuteConsoleCommand' ...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:10: in function <...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:7> [21:28:48.1597223] Error: [Lua::call_function] lua_pcall returned [UFunction::setup_metamethods -> __call] UFunction expected 4 parameters, received 3 stack traceback: [C]: in method 'ExecuteConsoleCommand' ...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:10: in function <...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:7> [21:28:48.1600920] Error: [Lua::call_function] lua_pcall returned [UFunction::setup_metamethods -> __call] UFunction expected 4 parameters, received 3 stack traceback: [C]: in method 'ExecuteConsoleCommand' ...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:10: in function <...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:7> do you have the same ? i have tried to reinstall UE4SS Game Settings Loader but it didn't fixed
Appreciate the edit and tip to fix it. I was able to find the line of code you're referencing and change it. Now I don't see the 'ExecuteConsoleCommand' errors in UE4SS log file.
Any idea on why this works?
I see the same error with 'ExecuteConsoleCommand' in other mods. Specifically, AccurateReflections and ShadowsReworked. I'm thinking of doing the same to those.
There is a code error on line 44 of the main.lua and line 10 of OBRConsole.lua. The error in the main.lua made it so that no mods requiring this one worked for me. Should be a quick fix.
Hey, I am trying to use Realistic Arrow Speeds (Faster). The author says I need to see [00:54:16.4800424] Mod 'GameSettingsLoader' has enabled.txt, starting mod. [00:54:16.6420054] [Lua] [BB's Game Settings Loader] --[[ Got Oblivion's Unreal game settings! ]]--in the debug console. But I don't. What exactly is the problem? I can't seem to work your mod. I am a game pass player.
Here's my debug console,
https://imgur.com/a/9f2V9IO
SOLVED! After tremendous amount of trial and error, I realized the UE4SS GSL is deployed to the wrong directory, it is not adapted to the Game Pass enviroment. Game Pass used WinGDK, while Steam uses Win64 I guess. BB's GSL loaded into the Win64, so when you change the folder to WinGDK, the problem solved for me. Realistic Arrow Speeds (Faster) The mod works!
"Just a few hours ago, on the OMRC Discord, user Dicene discovered removing the "ExecuteInGameThread" line of code from OBRConsole.lua fixed most of the stability issues with console commands.
I had a 100% consistent crash in my "Dispel Bound Weapons" mod when you used it alongside "Lock On". Removing ExecuteInGameThread fixed it.
Dicene took it further and stress tested console commands by having them go off in the hook ReciveTick. I also tried this too. No crashes even after minutes and thousands of console commands ran.
Even with this fix, there are some limitations, but if you run them in a hook itself (not a an async loop) and don't use ExecuteInGameThread, I have not experienced any crashes."
"Commenting this here for visibility. More details are available under the bug report. @odashikonbu (and mod developers) You should consider removing "ExecuteInGameThread(function()" and its closing tag "end)" from OBRConsole.lua. On the ORMC Discord, we found that calling console commands under this function causes very repeatable crashes. Simply removing it fixes the stability issues. With that fix, console commands via lua become safe to use."
This was posted over in the comment section of: https://www.nexusmods.com/oblivionremastered/mods/2205
180 comments
Here is what works for me.
local gameSettingsMap = require "Construction64_To_Unreal_GameSettings"
local unrealGameSettings = StaticFindObject("/Script/UE5AltarPairing.Default__VOblivionInitialSettings")
local physicsSettings = StaticFindObject("/Script/Engine.Default__PhysicsSettings")
local loadedGameSettings = {}
local luaIniParser = require "LIP"
local function loadInis()
for ini in io.popen([[dir "OBSE\Plugins\GameSettings" /b]]):lines() do
if ini:sub(-4):lower() == ".ini" then
print("[BB's Game Settings Loader] Loading OBSE\\Plugins\\GameSettings\\" .. ini .. "... \n")
local loadedIni = luaIniParser.load("OBSE\\Plugins\\GameSettings\\"..ini)
if loadedIni.GameSettings ~= nil then
for setting, value in pairs(loadedIni.GameSettings) do
if gameSettingsMap[setting] ~= nil then
print("[BB's Game Settings Loader] " .. setting .. " -> " .. gameSettingsMap[setting] .. ": " .. tostring(value) .. "\n")
loadedGameSettings[gameSettingsMap[setting]] = value
end
end
end
end
end
for ini in io.popen([[dir "GameSettings" /b]]):lines() do
if ini:sub(-4):lower() == ".ini" then
print("[BB's Game Settings Loader] Loading GameSettings\\" .. ini .. "... \n")
local loadedIni = luaIniParser.load("GameSettings\\"..ini)
if loadedIni.GameSettings ~= nil then
for setting, value in pairs(loadedIni.GameSettings) do
if gameSettingsMap[setting] ~= nil then
print("[BB's Game Settings Loader] " .. setting .. " -> " .. gameSettingsMap[setting] .. ": " .. tostring(value) .. "\n")
loadedGameSettings[gameSettingsMap[setting]] = value
else
print("[BB's Game Settings Loader] " .. setting .. ": " .. tostring(value) .. "\n")
loadedGameSettings[setting] = value
end
end
end
end
end
end
local function applyInis()
for setting, value in pairs(loadedGameSettings) do
if unrealGameSettings and unrealGameSettings:IsValid() and unrealGameSettings[setting] and not string.find(tostring(unrealGameSettings[setting]), "UObject") then
unrealGameSettings[setting] = value
elseif physicsSettings and physicsSettings:IsValid() and physicsSettings[setting] and not string.find(tostring(physicsSettings[setting]), "UObject") then
physicsSettings[setting] = value
end
end
end
if unrealGameSettings and unrealGameSettings:IsValid() then
print("[BB's Game Settings Loader] --[[ Got Oblivion's Unreal game settings! ]]--\n")
loadInis()
print("[BB's Game Settings Loader] --[[ Applying loaded settings, pray to Todd! ]]--\n")
applyInis()
loadedGameSettings = nil
end
You can use this or do your own implementation.
For people who want to do it themselves, just open the main.lua from this mod with notepad. Delete all text, copy and paste from this post and save.
Now settings like "DefaultGravityZ" will work.
So people are aware. You now need to separate [GameSettings] and [PhysicsSettings] in your .ini files.
example:
[GameSettings]
ArrowInitialSpeedMultiplier=7500.000000
[PhysicsSettings]
DefaultGravityZ=-2250
Note: I tried to post this under bugs but nexus wouldn't cooperate (kept getting error 500 so comments it is...)
Using MO2 I was noticing a console window flash open for a split second that was causing the issues mentioned, the problem stems from
using io.popen(...), I have made a couple changes to main.lua that fixes this
here is the full main.lua with the changes added
https://gist.github.com/cmd430/25bc3551c3d11ad18cfb3d936ad6546b
and here are the two sections with the changes, it should work in both the steam and gamepass versions without issues (thanks to a couple nil checks for if dirs exist 👍)
https://gist.github.com/cmd430/25bc3551c3d11ad18cfb3d936ad6546b#file-main-lua-L33-L40
https://gist.github.com/cmd430/25bc3551c3d11ad18cfb3d936ad6546b#file-main-lua-L59-L68
Edit: made a simple function to replace io.popen and can confirm this should fix the weird behavior as this fixed the nvidia intro overlay thingy from glitching out like it has been for me >->
local function getFilesInDirectory(path)
local files = {}
local folders = path:gmatch("([^\\]+)")
local currentPath = IterateGameDirectories().Game.Binaries
if currentPath.Win64 ~= nil then
currentPath = currentPath.Win64
else
currentPath = currentPath.WinGDK
end
for fold in folders do
if currentPath[fold] ~= nil then
currentPath = currentPath[fold]
else
return pairs(files)
end
end
for _,fileobject in pairs(currentPath.__files) do
table.insert(files,fileobject.__name)
end
return pairs(files)
end
for _,file in pairs(BinariesFolder.Win64.__files) do
should befor _,file in pairs(BinariesFolder.WinGDK.__files) do
Through troubleshooting crashes with my users, I have confirmed crashes when you use GSL alongside these mods of mine:
Slower Kiting - UE4SS
Silent Notification Framework - UE4SS
Spell and Arrow Stagger Chance - UE4SS
Simple Critical Hit Chance - UE4SS
Bloodlust - Blunt Perk Addon
Engaging Combat - Oblivion
Dynamic Multiple Summons - UE4SS
Then, for mods that are not my own. GSL is causing confirmed crashes for:
Camera Noise (has post sticked about it as well)
Spell Hotkeys
Bow Headshot UE4SS
Magic Skill Leveling Fixed
Nascent - Archery Overhaul
Harder Stealth
Change Appearance Anytime
The list goes on, but I'll stop there for now. Seemingly every UE4SS mod has a comment/report about it.
These crashes can occur on startup or randomly while playing (strangely, sometimes when you hit an NPC in combat), but they are very consistent.
I believe the cause to be something added in one of the more recent updates.
On 0.0.6, I experience no crashes, but any in other version the crashes are very consistent and repeatable.
This mod causes them to crash if it is installed.
I figured out the solution for my configuration and it all came down to this:
I was using both UE4SS Game Settings Loader and Game Settings Loader by powerofthree at the same time.
I had overlooked the Note on the description page of this mod that explains:
"This mod does change game settings on the construction set side if setInternalGameSettings is true in config.lua, this might cause conflicts with Game Settings Loader by powerofthree and any esp files changing game settings too."
So I actually found 2 ways to solve my issue:
Set "setInternalGameSettings = false" in this mods config.lua, and continue to use Game Settings Loader by powerofthree to load game settings on the original “construction set side”.
[OR]
Use only this mod with “setInternalGameSettings = true” (default) and disabling Game Settings Loader by powerofthree
Still testing, but this has eliminated my CTDs on startup and on save load.
Also @shaggymonster, the instability is not from the use of console commands.
Game CTD frequently.
KismetSystemLibrary:ExecuteConsoleCommand(playerController.player, command, playerController, true)
But the game is still crashing sometimes
I note your embedded version of the "Console Framework UE4SS" OBRConsole.lua Script has not had the latest fixes applied to remove the ExecuteInGameThread which is reported to cause crashes:-
local C = {}
function C.ExecuteConsole(command)
local UEHelpers = require("UEHelpers")
local playerController = UEHelpers.GetPlayerController()
local KismetSystemLibrary = StaticFindObject('/Script/Engine.Default__KismetSystemLibrary')
ExecuteInGameThread(function() << Remove this Line
if command ~= '' then
if playerController:IsValid() then
KismetSystemLibrary:ExecuteConsoleCommand(playerController.player, command, playerController, true) << Add ", true"
else
print("[LuaConsoleMod]playerController invalid")
end
else
print("[LuaConsoleMod]command is null")
end
end) << Remove this Line
end
return C
Thank you for all your efforts.....
Cheers
Shaggy
This was done on the Steam version of Oblivion Remastered, using Vortex, tested with the following mod versions...
"UE4SS" version 3.0.1.a ;
"UE4SS Game Settings Loader Steam" version 0.1.1 ;
"OBSE64" (Oblivion Remastered Script Extender) version 0.2.1 ;
powerofthree's "Game Settings Loader" version 1.1.0
I also use Turpentine, but I don't believe that changes much in regards to these specific fixes.
Almost all of these fixes/steps I pieced together from what others had work properly, split amongst multiple Nexus mod pages, and I'm working in reverse from memory; Hopefully it works for anyone who wants to see if it works for their game like it does mine. (Hopefully this is not too confusing to follow, I'm autistic and haven't slept in at least 28 hours.)
(See addendums (Example, "(Add. #1)" for "Addendum #1") in my reply to this post for additional comments I give on steps that include the abbreviation.)
----------------------------------------------------------------------
REMINDER! IT IS ALWAYS SUGGESTED TO MAKE BACKUPS OF THE FILES PRIOR TO YOU EDITING THEM, JUST IN CASE!
Step 1 : After installing both Game Settings Loaders, navigate to
"OblivionRemastered\Binaries\Win64\ue4ss\Mods\GameSettingsLoader\Scripts"
and open the "config.lua" file in a text editor. (Add. #1)
Step 2 : The "config.lua" file opened in the previous step will look something like this inside...
return {
setInternalGameSettings = false
}
Simply change "true" to "false" and save the file.
Step 3 : (Add. #2) Now open up the "main.lua" file in the same directory as the previous "config.lua" file, then, locate and replace ALL THREE instances of "Plugins" with "plugins" on lines 77, 79, and 80, and save the file.
Step 4 : Next, open "OBRConsole.lua" in the same directory. If you are on a Windows PC, hold CTRL and press A to select all, otherwise, select all the old fashioned way. You can now paste in the following to replace everything in that file.
local C = {}
function C.ExecuteConsole(command)
local UEHelpers = require("UEHelpers")
local playerController = UEHelpers.GetPlayerController()
local KismetSystemLibrary = StaticFindObject('/Script/Engine.Default__KismetSystemLibrary')
if command ~= '' then
if playerController:IsValid() then
KismetSystemLibrary:ExecuteConsoleCommand(playerController.player, command, playerController, true)
else
print("[LuaConsoleMod]playerController invalid")
end
else
print("[LuaConsoleMod]command is null")
end
end
return C
Now that you pasted that in, save the file.
Step 5 : (Add. #3) Navigate to the "OblivionRemastered\Binaries\Win64\ue4ss\Mods" folder and open the "mods.txt" file. Then add the following to the bottom of the (probably very short) list...
GameSettingsLoader : 1
It should now look roughly like the following...
BPML_GenericFunctions : 1
BPModLoaderMod : 1
GameSettingsLoader : 1
Now save the file.
Step 6 : It's time to make sure that the different "GameSettings" .ini files are in both GameSettings folders, as some get installed in the folder used by one mod or the other. It's quite simple really. I'd suggest you open up another File Explorer window, have one opened to the "OblivionRemastered\Binaries\Win64\GameSettings" folder, and the other opened to the "OblivionRemastered\Binaries\Win64\OBSE\plugins\GameSettings" folder.
Step 7 : (Add. #4) Now that preferably both folders are open and side-by-side, compare them, and copy any .ini files to the other folder if it isn't already in that folder. FOR EXAMPLE, if in the "Win64\GameSettings" folder, there is a file named "RealisticArrowSpeed.ini", and it isn't already in the "\Win64\OBSE\plugins\GameSettings" folder, then simply copy it over! Make sure to do it the other direction too if needed.
Step 8 : UE4SS Game Settings Loader should hopefully work better for you now.
----------------------------------------------------------------------
Ran out of room on this post, Addendums are in my reply!
(Addendum #1 - I personally use and suggest Notepad++, as it tells you numbers for each text line, and shows which lines you edited just-in-case.)
(Addendum #2 - I am not entirely sure if this step is actually required or not, but some people said that they were having problems with it being case-sensitive, so I included it when I fixed the UE4SS Game Settings Loader on my game, just to be safe.)
(Addendum #3 - I'll be honest. I don't exactly know if this does anything, but it didn't seem to harm anything when I did it on my own game. Deleting the "enabled.txt" file from the "OblivionRemastered\Binaries\Win64\ue4ss\Mods\GameSettingsLoader" folder might also need to be done for this to function, although not doing so didn't cause me any crashes, at the very least.)
(Addendum #4 - You might not have ANYTHING in BOTH these GameSettings folders, if you don't, good for you, this step can be skipped, if not, MAKE SURE TO FOLLOW THIS STEP. This step is CRITICAL now that we disabled "UE4SS Game Settings Loader"'s InternalGameSettings toggle!)
I found out that 'OBSE Custom Game Settings.ini' file was not being loaded by UE4SS Game Settings Loader. After digging around, I found out the reason was that my directories were not named in the expected manner.
This mod is expecting 'OBSE Custom Game Settings.ini' to be under 'OBSE\Plugins\GameSettings'.
Although the directories and file are indeed there in my system, Vortex deployed the mod under the directory 'obse\plugins\GameSettings'. Notice the lowercase directories.
Because of this, the 'getFilesInDirectory' function in 'main.lua' of the mod was not picking up that the directories are existing in the file system.
The quick fix is to make sure the directories in your game files are named with the correct case 'OBSE\Plugins\GameSettings' as expected by the mod and it should work.
It would be better to have the function 'getFilesInDirectory' be case-insensitive since Windows is also case-insensitive, but I'm not familiar enough with Lua to propose a code change.
Hope this helps.
After the new Patch v1.511...
In my UE4SS Debugging Tools i'm getting this In Red :
[21:28:48.1590113] Error: [Lua::call_function] lua_pcall returned [UFunction::setup_metamethods -> __call] UFunction expected 4 parameters, received 3
stack traceback:
[C]: in method 'ExecuteConsoleCommand'
...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:10: in function <...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:7>
[21:28:48.1597223] Error: [Lua::call_function] lua_pcall returned [UFunction::setup_metamethods -> __call] UFunction expected 4 parameters, received 3
stack traceback:
[C]: in method 'ExecuteConsoleCommand'
...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:10: in function <...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:7>
[21:28:48.1600920] Error: [Lua::call_function] lua_pcall returned [UFunction::setup_metamethods -> __call] UFunction expected 4 parameters, received 3
stack traceback:
[C]: in method 'ExecuteConsoleCommand'
...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:10: in function <...n64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua:7>
do you have the same ?
i have tried to reinstall UE4SS Game Settings Loader but it didn't fixed
Any Clue ? Help ?
Edit :
go to :
\Oblivion Remastered\OblivionRemastered\Binaries\Win64\ue4ss\Mods\GameSettingsLoader\Scripts\OBRConsole.lua
set:KismetSystemLibrary:ExecuteConsoleCommand(playerController.player, command, playerController)
to:KismetSystemLibrary:ExecuteConsoleCommand(playerController.player, command, playerController, true)
Thanks to @sanjiz
Any idea on why this works?
I see the same error with 'ExecuteConsoleCommand' in other mods. Specifically, AccurateReflections and ShadowsReworked. I'm thinking of doing the same to those.
[00:54:16.4800424] Mod 'GameSettingsLoader' has enabled.txt, starting mod.
in the debug console. But I don't. What exactly is the problem? I can't seem to work your mod. I am a game pass player.[00:54:16.6420054] [Lua] [BB's Game Settings Loader] --[[ Got Oblivion's Unreal game settings! ]]--
Here's my debug console,
https://imgur.com/a/9f2V9IO
SOLVED! After tremendous amount of trial and error, I realized the UE4SS GSL is deployed to the wrong directory, it is not adapted to the Game Pass enviroment. Game Pass used WinGDK, while Steam uses Win64 I guess. BB's GSL loaded into the Win64, so when you change the folder to WinGDK, the problem solved for me. Realistic Arrow Speeds (Faster) The mod works!
I had a 100% consistent crash in my "Dispel Bound Weapons" mod when you used it alongside "Lock On".
Removing ExecuteInGameThread fixed it.
Dicene took it further and stress tested console commands by having them go off in the hook ReciveTick. I also tried this too. No crashes even after minutes and thousands of console commands ran.
Even with this fix, there are some limitations, but if you run them in a hook itself (not a an async loop) and don't use ExecuteInGameThread, I have not experienced any crashes."
If I do this, will it break the mod?
This was posted over in the comment section of: https://www.nexusmods.com/oblivionremastered/mods/2205