This.
I was asking if there was a way to avoid this.
I would love to see that re energised if you get round to it 
Install a Maya3 is not that hard… well, if people won’t blame me for putting a download link of a cracked version here…
I probably will, since we could definitely use it in our mod. 
We can use an alternative dlc, so the stock campaigns are preserved, but it comes to the same thing - to change campaign you would have to relaunch the game, just like switching between HW1RM campaign and HW2RM campaign requires relaunching.
yes, exacly this I’m afraid :’(
It looks like the campaign button is a hard-coded Lua to C(++) function [“CampainButton()”].
the CampaignButton() function is not hardcoded itself, you can find it in exbutons.lua. It calls another function, NoButton(_name), where _name is “btnCampaign”. The thing is that it doesn’t link to anything after that, so I think the code running behind it is hardcoded.
From experience, as soon as a screen as a defined type in uisettings.lua (type=“SPMissionSelect” in our case), you can be sure that there is harcoded things running into it (or hardcoded linked informations between screen, like for the badge screen which I couldn’t reuse in my rainbow mod)
Actually, I beg to differ. (Edit: I think you might have edited your post before I got finished with mine, or I didn’t read through yours all the way.) The way the Lua bindings work, you can bind a C function to a Lua global “name,” so that Lua can call a C function.
I’d imagine that the “-campaign” flag in the command line basically creates that CampaignButton function in the C side of the program. (I just confirmed that the HW2 Ascension campaign is only accessible via (Update)HW2Campaign.big, and that the only way to load that big file is through the “-campaign ascension” flag.)
Since in normal operation, that function is never bound on the C side of the program into the Lua global namespace, that call in “exbuttons.lua” returns a nil value (as expected), which then binds a function called “CampainButton” into the Lua global namespace from the Lua side.
This is mostly just speculation, but I feel pretty confident in my assumptions. I’m sure @BitVenom (or another dev) could confirm.
Edit: I’m doing quite a bit of C-Lua binding research in my work of creating an updated FXTool; hence my confidence.
don’t know, you’re perhaps right, I’m not a C expert at all ^^
But I’m not so sure because there is clearly a dofilepath(“data:ui/newui/Main/ExButtons.lua”) in the beggining of the file containing the call to CampaignButton(), so the code should look there beforehand. Wherever the hardcoding is, it’s a bad news for us anyway ^^
Yeah, I went all the way up the dofilepath chain and into all referenced files, even did a file content search for “CampainButton” and, other than in the exbuttons.lua file, CampainButton is never defined anywhere else.
Although in the campaign’s override of exbuttons.lua, there is this:
function CampainButton()
return NewMenuButton("btnCampaign", "$2603", nil, 0, LAYOUT_MENU_BUTTONS, "FEButtonStyle1", nil)
end
I can guarantee you “NewMenuButton” is a hard-coded function just like “addWeaponConfig” is, so I wonder if some of the magic is taking place in the C-side of that “NewMenuButton” function…?
Edit:
NewMenuButton is also defined in ui\newui\styles\hwrm_style\controlconstructors.lua, but even then, the “onMouseClick” function for the CampaignButton is assigned a “nil” value, which tells me there’s some hardcoding funkery going on.
In which file did you find this version of the CampaignButton() ?
There is too many versions of the same files at the moment ! Between all the big file (I’ve looked in dataUpdate), it’s a mess ! :’(
HW2Campaign.big\ui\newui\main\exbuttons.lua
I really need to re-extract all the files in the correct order. I had only done the “core” files before, not the campaign ones, didn’t think there would be UI related stuff in there
I have them all extracted into separate locations… 
… or rather, I extracted lists of the files in each, then extract specific files as needed. 
I know what was my problem… the DataMP.big file in the dataUpdate folder
function CampainButton()
return NoButton("btnCampaign")
end is actually the default behavior in “exbuttons.lua”
Yep, that’s what I had before my “revelation” ^^
NewMenuButton is never a hard coded function. It’s in ui\newui\styles\hwrm_style\controlconstructors.lua
function NewMenuButton(_name, _text, _helptip, _hotkeyID, _layout, _style, _mouseclicked, _visible )
local _buttonLayout
local _buttonStyle
local _buttonvisible
--------------------- Setup Defaults ---------------------
if(_layout == nil) then
_buttonLayout = {
min_WH = { w = INGAMEMENU_BUTTON_WIDTH, h = STD_BUTTON_HEIGHT, wr = "scr", hr = "scr" },
}
else
_buttonLayout = _layout
end
if(_style == nil) then
_buttonStyle = "FEButtonStyle1"
else
_buttonStyle = _style
end
if(_visible == nil) then
_buttonvisible = 1
else
_buttonvisible = _visible
end
--------------------- The actual button constructor ---------------------
local MenuButton = {
type = "TextButton",
name = _name,
buttonStyle = _buttonStyle,
ignored = 1,
helpTip = _helptip,
hotKeyID = _hotkeyID,
visible = _buttonvisible,
Layout = _buttonLayout,
autosize=1,
Text = {
text = _text,
--pixels = (16),
--rel = 500,
},
backgroundColor = { 255, 0, 0, 255 },
onMouseClicked =_mouseclicked,
}
return MenuButton
end