I have found a workaround to fix both the 9k113 sight as well as the Petrovich crosshair.
I use a stacked monitor setup with the top being my main and then a smaller screen below that for MFD outputs and things like the control indicators. I was having the same issues with Petrovich's crosshair from the pilot seat (it would put it right between the two monitors) as well as the 9k113 when sighted in (it would split the resolution between both screens and be completely useless. I managed to fix both with some tinkering (and help from a clever friend).
The solution for both just require a couple of small .lua tweaks. @jonsky7was on track for the 9k113 and the solution lies in the 9K113_CAM_base_page.lua. The file first pulls your viewport that is defined in the monitors .lua and sets the width and height as SZX and SZY
ULX,ULY,SZX,SZY,GUI_scale = get_UIMainView()
local v = find_viewport ("GU_MAIN_VIEWPORT", "CENTER")
if v ~= nil then
ULX = v.x
ULY = v.y
SZX = v.width
SZY = v.height
However, the lines below this then ignore that and define the hud-size as your entire screen resolution, instead of using the SZX and SZY it defined.
HUD_OnlyX = LockOn_Options.screen.width / 100.0 -- 6.0
HUD_OnlyY = LockOn_Options.screen.height / 100.0 --6.0
To fix the 9k113 view not showing up on your main (and only main) screen, you just have to change the Hud_OnlyX and Hud_OnlyY to reflect the SZX and SZY coordinates instead:
HUD_OnlyX = SZX / 100.0 -- 6.0
HUD_OnlyY = SZY / 100.0 --6.0
so just change LockOn_Options.screen.width to SZX and LockOn_Options.screen.height to SZY and you're good to go.
To change the location of the crosshair use it like a helmet sight as intended, you'll need to find the HelperAI_page_common.lua file in \dcsworld\mods\aircraft\mi-24p\cockpit\scripts\HelperAI. Open the file and scroll to line 88 which should be where the crosshair is defined. You will then insert a new line under crosshair.vertices as seen here:
local crosshair = CreateElement "ceTexPoly"
crosshair.name = "crosshair"
crosshair.material = MakeMaterial("Mods/aircraft/Mi-24P/Textures/ai_crosshair.dds",{255,255,255,255})
crosshair.vertices = simple_square(cross_size / 2.2)
crosshair.init_pos = {0.01 * aspect, 0.5} ------ add this line to define the position of the crosshair
crosshair.tex_coords = default_tex_coords
crosshair.indices = default_box_indices
if not is_vr then
crosshair.controllers = {{"show_crosshair"}}
else
crosshair.controllers = {{"show_crosshair_VR"}}
end
crosshair.h_clip_relation = h_clip_relations.REWRITE_LEVEL
crosshair.level = DEFAULT_LEVEL
if not is_vr then
crosshair.screenspace = ScreenType.SCREENSPACE_TRUE
end
crosshair.use_mipfilter = true
Add(crosshair)
Once you have added the line, the two numbers will define where in your screen space you want to have it located. On my setup, 0.01 and 0.5 puts it right in the middle of my main monitor. You may have to make small adjustments to those numbers to tweak it to where you want it. Save the file, do a backup and you're done.
*bonus tip -> i also moved the Petrovich compass a handier position on my bottom screen to save real estate on my main (i also do this with the controls indicator and AP readouts). In the same file (HelperAI_page_common.lua) that you adjusted the crosshair, you can find the coordinates to move the compass:
if not is_vr then
compass_pos = {-0.10 * aspect, -0.5} --relative to screen center, 1 equals screen height afaik
else
compass_pos = {0, -0.2}
Just change the 2 coordinate numbers (-0.10 and -0.5 in this case) and adjust until the compass sits where you want. In this example, the compass is placed in the center of my bottom monitor. I then have controls indicator to the left and the AP to the right.
Hope that helps. Happy Hinding.