import os from pymxs import runtime as rt def install_vr4life_babylon_style(): try: # 1. PEGAR CAMINHOS plugin_dir = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/") startup_dir = rt.getDir(rt.name("userStartupScripts")) loader_ms = os.path.join(startup_dir, "VR4Life_Menu_Loader.ms") # 2. CRIAR O SCRIPT DE INICIALIZAÇÃO (O "Segredo" do Babylon) # Este arquivo ficará na pasta Startup e rodará sempre que o Max abrir ms_code = f""" ( fn setupVR4LifeMenu = ( if menuMan != undefined and menuMan.getMainMenuBar() != undefined then ( local mainBar = menuMan.getMainMenuBar() local existing = menuMan.findMenu "VR4Life" if existing != undefined do menuMan.unRegisterMenu existing local vMenu = menuMan.createMenu "VR4Life" -- Usamos os IDs e Nomes que estao no seu arquivo .mnx local item1 = menuMan.createActionItem "VR4Life_Launcher" "Immerse Games" local item2 = menuMan.createActionItem "VR4Life_Update" "Immerse Games" vMenu.addItem item1 -1 vMenu.addItem item2 -1 local subM = menuMan.createSubMenuItem "VR4Life" vMenu mainBar.addItem subM (mainBar.numItems()) menuMan.updateMenuBar() return true ) return false ) -- Tenta executar agora e deixa um gatilho para o startup setupVR4LifeMenu() callbacks.addScript #systemStartup "setupVR4LifeMenu()" id:#VR4LifeMenu ) """ with open(loader_ms, "w", encoding="utf-8") as f: f.write(ms_code) # 3. REGISTRAR AS MACROS (Para os botões funcionarem) macro_cmd = f""" macroScript VR4Life_Launcher category:"Immerse Games" internalId:647394 ( on execute do python.executeFile "{plugin_dir}/run_vr4life.py" ) macroScript VR4Life_Update category:"Immerse Games" internalId:647394 ( on execute do python.executeFile "{plugin_dir}/vr4life_updater.py" ) """ rt.execute(macro_cmd) # Executa o loader agora mesmo para tentar criar o menu sem reiniciar rt.fileIn(loader_ms) print(f">> VR4Life: Loader criado em {loader_ms}. Verifique o menu no topo.") return True except Exception as e: print(f"Erro na instalacao: {str(e)}") return False if __name__ == "__main__": install_vr4life_babylon_style()