function createdivider(menu, text) local element = LUI.UIElement.new( { leftAnchor = true, rightAnchor = true, left = 0, right = 0, topAnchor = true, bottomAnchor = false, top = 0, bottom = 33.33 }) element.scrollingToNext = true element:addElement(LUI.MenuBuilder.BuildRegisteredType("h1_option_menu_titlebar", { title_bar_text = Engine.ToUpperCase(text) })) element.text = element:getFirstChild():getFirstChild():getNextSibling() menu.list:addElement(element) return element end function string:truncate(length) if (#self <= length) then return self end return self:sub(1, length - 3) .. "..." end function getmodname(path) local modinfo = mods.getinfo(path) if (not modinfo.isvalid) then local desc = Engine.Localize("LUA_MENU_MOD_DESC_DEFAULT", string.el(path)) return path, desc else local desc = Engine.Localize("@LUA_MENU_MOD_DESC", string.el(modinfo.description), string.el(modinfo.author), string.el(modinfo.version)) return modinfo.name, desc end end LUI.MenuBuilder.registerType("mods_menu", function(a1) local menu = LUI.MenuTemplate.new(a1, { menu_title = "@MENU_MODS", exclusiveController = 0, menu_width = 400, menu_top_indent = LUI.MenuTemplate.spMenuOffset, showTopRightSmallBar = true, uppercase_title = true }) local modfolder = game:getloadedmod() if (modfolder ~= "") then local name = getmodname(modfolder) createdivider(menu, Engine.Localize("@LUA_MENU_LOADED_MOD", string.el(name:truncate(24)))) menu:AddButton("@LUA_MENU_UNLOAD", function() Engine.Exec("unloadmod") end, nil, true, nil, { desc_text = Engine.Localize("@LUA_MENU_UNLOAD_DESC") }) end createdivider(menu, Engine.Localize("@LUA_MENU_AVAILABLE_MODS")) local contentpresent = false local mods = mods.getlist() for i = 1, #mods do contentpresent = true local name, desc = getmodname(mods[i]) if (mods[i] ~= modfolder) then menu:AddButton(string.el(name), function() Engine.Exec("loadmod " .. mods[i]) end, nil, true, nil, { desc_text = desc }) end end menu:AddBackButton(function(a1) Engine.PlaySound(CoD.SFX.MenuBack) LUI.FlowManager.RequestLeaveMenu(a1) end) LUI.Options.InitScrollingList(menu.list, nil) menu:CreateBottomDivider() if (contentpresent) then menu.optionTextInfo = LUI.Options.AddOptionTextInfo(menu) end return menu end)