File information

Last updated

Original upload

Created by

MaskedRPGFan

Uploaded by

MaskedRPGFan

Virus scan

Safe to use

About this mod

Hide, rename and reorder any of the unlimited mod configuration menus you can have with this manager.

Requirements
Permissions and credits
Translations
  • Portuguese
  • Mandarin
  • French
Changelogs
Donations
Menu Maid 2 - MCM Manager
Menu Maid 2 is an MCM manager and the successor to MenuMaid. Completely written using SKSE and CommonLibSSE-NG, all logic and data is in the SKSE plugin, scripts are not used to manage MCMs. Written with the SE version in mind, but also works with the AE and VR (Thank you Telstarado for confirmation!).

Disclaimer
This is my first mod written using SKSE. Although I have tried to make it bug free, unfortunately bugs can occur. Please be understanding and report them.


How it works?

MenuMaid2 manages the mod configuration menu display. The display of mods is as similar as possible to the original one. If the number of mods displayed (hidden menus are not counted) is less than or equal to the specified maximum value of mods per page, the appearance of the list will not change. If the number of mods per page exceeds this number, there will be "Next Page" and "Previous Page" buttons to navigate through the mods divided into pages. 

Unlimited amount of MCM
This mod supports unlimited MCMs by using SKSE plugin. No additional steps are needed to do this. 

Hiding
To hide a mod's menu, simply uncheck it on the Visibility tab. Selecting the menu again will make it visible again. 


Renaming
To rename a mod's menu, go to the Rename tab and select the mod you want to rename. To revert to the original name, simply rename to blank.



Reordering
Menus in SkYUI are always sorted alphabetically. For this reason, reordering is done by adding a number to the name. Allowed values are 0-99. The number -1 disables this functionality.


Features
  • unlimited MCMs (you are only limited by the amount of your ram),
  • hiding MCMs,
  • renaming MCMs (blank disables this functionality, reverting to the original name),
  • changing the order of MCMs ,
  • remote MCMs registration,
  • ability to set the number of mods per page (10-125),
  • Menu Maid 2 mcm name change (from 2.0.0)
  • automatic detection and registration of missing MCMs (from 2.0.0)
  • persist settings across game saves (from 2.0.0)
  • build-in support for installing in existing game (from 2.0.0)
  • ability to start in dismiss mode (from 2.0.0)
  • localization support, automatically loads and use MCM name translations.
  • automatically saves all settings to an INI file and uses them, both for a new game and for menu registration, settings path: "SKSE\Plugins\MenuMaid2.ini"
  • all logic and data is in SKSE plugin, no scripts are used to manage MCMs,
  • intuitive MCM to change settings,
  • ability to completely disable and enable this mod in MCM,
  • it does not use Trampoline, so it does not count towards the plugin limit.



Settings
All settings are saved to the INI file and automatically used when starting a new game or registering a menu whose settings have been saved to the INI file. You can modify this file yourself.

Its structure is as follows (change [Untranslated Menu Name] to something like $CCOR_CompleteCrafting):
Spoiler:  
Show
[General]
iMaxConfigsPerPage = Numer from 10 to 125

[Visible]
b[Untranslated Menu Name] = true or false

[Rename]
s[Untranslated Menu Name] = New name

[Reorder]
i[Untranslated Menu Name] = Numer from 0 to 99

[Maintenance]
bDebug = true or false


Settings location: "SKSE\Plugins\MenuMaid2.ini".



Compatibility

Available for AE, SE and VR but only SE version was tested, AE and VR versions not.

Incompatible with mods that change the SKI_ConfigManager.pex file.

SkyUI Resort
This mod has support for unlimited MCM, so there is no need to use SkyUI Resort.

MCM Recorder
Works out of the box. Remember to enter "Dismiss" mode if you record or playback settings with MCM Recorder.


FAQ:
Installing, updating and uninstalling?
Whenever.


Is it compatible with mods that reskin the MCM Menu like Dear Diary?
Yes (Nordic UI in ss).


Can you add XYZ?
I would be happy to take suggestions for new features. Since this is my first SKSE plugin I can't promise to make them. 

I don't see the XYZ mod configuration menu!
Detection of configuration menus is now automatic and you don't have to do anything. 
But if you have trouble with this, here is instruction:
Spoiler:  
Show
For various reasons, when registering mods, some script may delay the registration of the mod. To hasten/refresh it, you can use the "Refresh MCMs" button in the Maintenance tab, which will restart the mod registration. The second, way is to save the game and load it (this method always works!).


I found a bug!
To report bug, please: 
Spoiler:  
Show
  • Create a report using the "BUGS" tab on this mod's page.
  • Describe the next steps I need to take to reproduce the bug (this means you must know how to reproduce the error and be able to reproduce it yourself).
  • Before reproducing the bug, enable "Debug Mode" on the Maintenance tab.
  • Before reproducing the bug, enable logging by changing the Skyrim.ini file:
    [Papyrus].
    bEnableLogging=1
  • Reproduce the bug.
  • Attach the files to the report: 
    "[PATH TO MY DOCUMENTS]\My Games\Skyrim Special Edition\SKSE\MenuMaid2.log",  
    "[PATH TO MY DOCUMENTS]\My Games\Skyrim Special Edition\Logs\Script\Papyrus.0.log".


Is it possible to make this mod compatible with another mod that modifies the SKI_ConfigManager.pex file?
Yes, you only need to change 4 functions (RegisterMod, UnregisterMod, OnMenuOpen, OnModSelect
) as in the listings below.


Spoiler:  
Show
MenuMaid2 script for compilation
Spoiler:  
Show

ScriptName MenuMaid2 extends Quest Hidden

Bool Function Hired() Global Native
Bool Function RegisterMod(Form a_menu, String a_modName) Global Native
Int Function UnregisterMod(Form a_menu) Global Native
Function MenuOpen() Global Native
Form Function ModSelect(Int id) Global Native


RegisterMod
Spoiler:  
Show

Int function RegisterMod(SKI_ConfigBase a_menu, String a_modName)

    self.GotoState("BUSY")

    if MenuMaid2.Hired()
        If !MenuMaid2.RegisterMod(a_menu as Form, a_modName)
            GotoState("")
            return -1
        EndIf
    EndIf

    if _configCount >= 128
        self.GotoState("")
        return -1
    endIf
    Int i = 0
    while i < _modConfigs.length
        if _modConfigs[i] == a_menu
            self.GotoState("")
            return i
        endIf
        i += 1
    endWhile
    Int configID = self.NextID()
    if configID == -1
        self.GotoState("")
        return -1
    endIf
    _modConfigs[configID] = a_menu
    _modNames[configID] = a_modName
    _configCount += 1
    _addCounter += 1
    self.GotoState("")
    return configID
endFunction


UnregisterMod
Spoiler:  
Show

Int function UnregisterMod(SKI_ConfigBase a_menu)

self.GotoState("BUSY")

If MenuMaid2.Hired()
Int i = MenuMaid2.UnregisterMod(a_menu as Form)
GotoState("")
return i
EndIf

Int i = 0
while i < _modConfigs.length
if _modConfigs[i] == a_menu
_modConfigs[i] = none
_modNames[i] = ""
_configCount -= 1
self.GotoState("")
return i
endIf
i += 1
endWhile
self.GotoState("")
return -1
endFunction


OnMenuOpen
Spoiler:  
Show

function OnMenuOpen(String a_menuName)

self.GotoState("BUSY")
_activeConfig = none

if MenuMaid2.Hired()
MenuMaid2.MenuOpen();
return
EndIf

ui.InvokeStringA(self.JOURNAL_MENU, self.MENU_ROOT + ".setModNames", _modNames)
endFunction


OnModSelect
Spoiler:  
Show

function OnModSelect(String a_eventName, String a_strArg, Float a_numArg, Form a_sender)
If MenuMaid2.Hired()
if (_activeConfig)
_activeConfig.CloseConfig()
endIf

_activeConfig = MenuMaid2.ModSelect(a_numArg as Int) as SKI_ConfigBase
if (_activeConfig)
_activeConfig.OpenConfig()
EndIf
return
EndIf


Int configIndex = a_numArg as Int
if configIndex > -1
if _activeConfig
_activeConfig.CloseConfig()
endIf
_activeConfig = _modConfigs[configIndex]
_activeConfig.OpenConfig()
endIf
ui.InvokeBool(self.JOURNAL_MENU, self.MENU_ROOT + ".unlock", true)
endFunction




MODS
LE|SE Configurable Notification Messages      LE|SE BSBruma Growable Plants  LE|SE Shout Organizer  
LE|SE Improved Alternate Conversation Camera  LE|SE Configurable Bribery     LE|SE Spell Organizer  
LE|SE Menu Maid 2 - MCM manager               LE|SE Custom HUD Presets       
LE|SE Waterview in Skyrim - Plants            LE|SE More plants and recipes  



Settings Loader Series
[Automatically save and load user settings]
Spoiler:  
Show
LE|SE Adventurers and Travelers - RE     LE|SE A Matter Of Time      LE|SE A Closer Look   LE|SE 3PCO       
LE|SE Animated Eating Redux              LE|SE Atlas Map Markers     LE|SE Apocalypse      LE|SE AGO        
LE|SE Animated Wings Ultimate            LE|SE Better FaceLight      LE|SE BFL Redux       LE|SE AllGUD     
LE|SE Armor and Clothing Extension       LE|SE Better Hunters        LE|SE BlockSteal      LE|SE BHUNP      
LE|SE Cathedral Weathers MCM             LE|SE CBBE 3BA (3BBB)       LE|SE Bounty Gold     LE|SE CACO       
LE|SE Combat Difficulty Customizer       LE|SE Conditional Idles     LE|SE Clockwork       LE|SE CCOR       
LE|SE Conditional Expressions            LE|SE Customizable Camera   LE|SE Deadly Dragons  LE|SE CGO        
LE|SE Destructible Display Cases         LE|SE Dual Wield Parrying   LE|SE Deadly Wenches  LE|SE Draw 2     
LE|SE Dynamic Things Alternative BOS     LE|SE Extended Encounters   LE|SE Dirt and Blood  LE|SE GIST       
LE|SE Enhanced Blood Textures            LE|SE Farmhouse Chimneys    LE|SE Easy Wheelmenu  LE|SE Growl      
LE|SE Fine-Tuned Challenge               LE|SE Forgotten Wenches     LE|SE Exhaustion      LE|SE iEquip     
LE|SE Frozen Electrocuted Combustion     LE|SE Hateful Wenches       LE|SE Extended UI     LE|SE IHarvest   
LE|SE Immersive Amazing Follower Tweaks  LE|SE Immersive Armors      LE|SE Go to bed       LE|SE iNeed      
LE|SE Immersive Interactions             LE|SE Immersive Wenches     LE|SE Honed Metal     LE|SE Missives   
LE|SE Immersive Spell Learning           LE|SE iNeed Continued       LE|SE Immersive HUD   LE|SE moreHUD    
LE|SE Immersive World Encounters         LE|SE Inpa Sekiro Combat    LE|SE Imperious       LE|SE OBIS       
LE|SE Knockout and Surrender             LE|SE JS Emissive Eyes      LE|SE Morning Fogs    XX|SE Ostim      
LE|SE Lanterns Of Skyrim II              LE|SE Judgment Wenches      LE|SE Ordinator       LE|SE PACE       
LE|SE Legacy of the Dragonborn           LE|SE Party Damage Control  LE|SE Quick Light     LE|SE R.A.S.S.   
LE|SE Less Intrusive HUD II              LE|SE Predator Vision       LE|SE QuickLoot EE    LE|SE RDO        
LE|SE Melee Power Knockback              LE|SE Realistic Water Two   LE|SE Sacrosanct      LE|SE Requiem    
LE|SE More Interesting Loot Reborn       LE|SE Shovels Bury Bodies   LE|SE Simple Horse    LE|SE Sacrilege  
LE|SE Nether's Follower Framework        LE|SE Sidequests of Skyrim  LE|SE SkyRem - Mia    LE|SE Sky Idles  
LE|SE Obsidian Weathers and Seasons      LE|SE Signature Equipment   LE|SE Sleep Tight     LE|SE Smilodon   
LE|SE Optimal Potion Hotkey              LE|SE Skysa Grip Switch     LE|SE Sneak Tools     LE|SE Sofia      
LE|SE Passive Weapon Recharging          LE|SE Sleep to Level Up     LE|SE SoS Complete    LE|SE SSSO       
LE|SE Simple Offence Suppression         LE|SE Smart NPC Potions     LE|SE Spellforge      LE|SE TCBM       
LE|SE Skyrim Immersive Creatures         LE|SE Souls Quick Menu      LE|SE Summermyst      LE|SE TK Dodge   
LE|SE SOT Sleeping Encounters            LE|SE Stealth Meter Tweak   LE|SE Take A Peek     LE|SE Unslaad    
LE|SE Stances-Dynamic Animation Sets     LE|SE Stendarr Rising       LE|SE TK HitStop      LE|SE VIGILANT   
LE|SE The Ultimate Dodge Mod             LE|SE Storm Lightning       LE|SE Unarmed Hotkey  LE|SE VioLens    
LE|SE Thieves Guild Requirements         LE|SE The Wheels of Lull    LE|SE Unlucky Loot    LE|SE Wildcat    
LE|SE Unlimited Fast Travel              LE|SE Timing is Everything  LE|SE Vivid Weathers  LE|SE Wintersun  
LE|SE Wards Functionalities Extended     LE|SE Trade and Barter      LE|SE Wet and Cold    LE|SE Wounds     
LE|SE Werewolf Favourite Howls Menu      LE|SE Ultimate Combat       LE|SE Widget Addon    LE|SE XPMSSE     
LE|SE Werewolf Transformation Timer      LE|SE Ultimate Dragons      LE|SE Widget Mod      
LE|SE Witcher Style Meditate Waiting     LE|SE Unread Books Glow     XX|SE Widget Mod SEE  
LE|SE Your Choices Matter - DB           LE|SE Wonders of Weather    LE|SE Wyrmstooth      


SE Only
               Notification Log|Reverb and Ambiance Overhaul|No Edge Glow|Realistic Death Physics
               Dog Followers are Huskies|Random Emotions|Sensual Hagraven ESPFE|Ambriel Custom Delayed Start
               More Plantable Plants for Creation Club|Slip Off Slopes MCM
Followers      Cristina|Bridget -Orphan Girl-|Bridget|Ersilia|Fredrika|Hana|Ina|Miqo'te|Horora
NPC Replacers  SeraNya
Clothes        GZ Onepiece 4
Tweaks         Fullscreen Book and Item Zoom|Bethesda.net Mods Manager Menu Disable|Skyrim Always Active
               Delay The Forsworn Conspiracy|Falskaar - Addons and Patches - Fast Travel fix|SPID for Footprints fix
               No NPC names in subtitles
Tools          ESPFE Follower - Eslify facegen and voices


Hope my mods made your game more enjoyable and less cumbersome to configure.
If you appreciate my work please give me Kudos and Endorse my mods. For me, they are a source of motivation to work.
Paypal or Ko-fi donation is also a good way to say thank you. You can be my Patron on Patreon.