From 1e3e2943dd1e192512d9e89a34e2a5e02c4a82ad Mon Sep 17 00:00:00 2001 From: Alex Dcnh <140754794+Wishmaster117@users.noreply.github.com> Date: Sun, 3 May 2026 15:08:49 +0200 Subject: [PATCH] Added a method to toggle the 'Loot' and 'Disperse' buttons The main bar is now more compact. --- Core/MultiBotHandler.lua | 8 ++ Locales/MultiBotAceLocale-deDE.lua | 2 + Locales/MultiBotAceLocale-enGB.lua | 2 + Locales/MultiBotAceLocale-enUS.lua | 2 + Locales/MultiBotAceLocale-esES.lua | 2 + Locales/MultiBotAceLocale-frFR.lua | 2 + Locales/MultiBotAceLocale-koKR.lua | 2 + Locales/MultiBotAceLocale-ruRU.lua | 2 + Locales/MultiBotAceLocale-zhCN.lua | 2 + UI/MultiBotDisperseUI.lua | 2 +- UI/MultiBotLootUI.lua | 2 +- UI/MultiBotMainUI.lua | 144 ++++++++++++++++++++++------- 12 files changed, 137 insertions(+), 35 deletions(-) diff --git a/Core/MultiBotHandler.lua b/Core/MultiBotHandler.lua index 8544723..29be41f 100644 --- a/Core/MultiBotHandler.lua +++ b/Core/MultiBotHandler.lua @@ -889,6 +889,12 @@ local function restoreMainBarSavedStates() restoreEnableOnlyLeftToggle("Beast", function() return getMainBarButton("Beast") end) + restoreEnableOnlyLeftToggle("Disperse", function() + return getMainBarButton("Disperse") + end) + restoreEnableOnlyLeftToggle("Loot", function() + return getMainBarButton("Loot") + end) restoreEnableOnlyLeftToggle("Expand", function() return getMainBarButton("Expand") end) @@ -1337,6 +1343,8 @@ function MultiBot.HandleMultiBotEvent(event, ...) setSavedMainBarValue("Masters", MultiBot.IF(MultiBot.frames["MultiBar"].frames["Main"].buttons["Masters"].state, "true", "false")) setSavedMainBarValue("Creator", MultiBot.IF(MultiBot.frames["MultiBar"].frames["Main"].buttons["Creator"].state, "true", "false")) setSavedMainBarValue("Beast", MultiBot.IF(MultiBot.frames["MultiBar"].frames["Main"].buttons["Beast"].state, "true", "false")) + setSavedMainBarValue("Disperse", MultiBot.IF(MultiBot.frames["MultiBar"].frames["Main"].buttons["Disperse"].state, "true", "false")) + setSavedMainBarValue("Loot", MultiBot.IF(MultiBot.frames["MultiBar"].frames["Main"].buttons["Loot"].state, "true", "false")) setSavedMainBarValue("Expand", MultiBot.IF(MultiBot.frames["MultiBar"].frames["Main"].buttons["Expand"].state, "true", "false")) setSavedMainBarValue("RTSC", MultiBot.IF(MultiBot.frames["MultiBar"].frames["Main"].buttons["RTSC"].state, "true", "false")) diff --git a/Locales/MultiBotAceLocale-deDE.lua b/Locales/MultiBotAceLocale-deDE.lua index d61109a..3863b88 100644 --- a/Locales/MultiBotAceLocale-deDE.lua +++ b/Locales/MultiBotAceLocale-deDE.lua @@ -395,6 +395,8 @@ local deDEValues = { ["tips.main.raidus"] = "Raidus-Switch\n|cffffffffDieser Schalter öffnet oder schließt den Raid-Composer.|r\n\n|cffff0000Linksklicken um die Raid-Composer zu öffnen oder zu schließen|r\n|cff999999(Ausführreihenfolge: System)|r", ["tips.main.creator"] = "Creator-Switch\n|cffffffffDieser Schalter aktiviert oder deaktiviert die Creator-Control.|r\n\n|cffff0000Linksklicken um die Creator-Control ein- oder auszuschalten|r\n|cff999999(Ausführreihenfolge: System)|r", ["tips.main.beast"] = "Beastmaster-Switch\n|cffffffffDieser Schalter aktiviert oder deaktiviert die Beastmaster-Control.\nDie Beastmaster-Control ist für Mod-NPC-Beastmaster des Azerothcore.\nMod-NPC-Beastmaster erlaubt es jedem Character eine Bestie wie Jäger zu haben.\nDein Character kann die notwendigen Zauber bei 'White Fang' erlernen.\nDer GameMaster muss 'White Fang' in der Spielwelt platzieren.\n|cffff0000Linksklicken um die Beastmaster-Control ein- oder auszuschalten|r\n|cff999999(Ausführreihenfolge: System)|r", + ["tips.main.disperse"] = "Disperse-Switch\n|cffffffffDieser Schalter zeigt oder versteckt die Disperse-Control.|r\n\n|cffff0000Linksklicken um die Disperse-Control ein- oder auszuschalten|r\n|cff999999(Ausführreihenfolge: System)|r", + ["tips.main.loot"] = "Beuteregeln-Switch\n|cffffffffDieser Schalter zeigt oder versteckt die Beuteregeln-Control.|r\n\n|cffff0000Linksklicken um die Beuteregeln-Control ein- oder auszuschalten|r\n|cff999999(Ausführreihenfolge: System)|r", ["tips.main.expand"] = "Expand-Switch\n|cffffffffDiese Schaltfläche expandiert oder reduziert die Stay-Follow-Control.\n|cffff0000Linksklicken um die Stay-Follow-Control zu expandieren oder reduzieren|r\n|cff999999(Ausführreihenfolge: System)|r", ["tips.main.release"] = "Auto-Release\n|cffffffffDiese Erweiterung erkennt wenn ein Bot stirbt.\nTote Bots werden automatisch freigelassen und herbeigerufen.\nDadurch werden die Bots innerhalb von Sekunden wiederbelebt.|r\n\n|cffff0000Linksklicken um Auto-Release ein- oder auszuschalten|r\n|cff999999(Ausführreihenfolge: System)|r", ["tips.main.stats"] = "Auto-Stats\n|cffffffffDiese Erweiterung visualisiert die Werte vom Stats-Kommando.\nDie Stats-Werte aktualisieren sich alle 45 Sekunden.|r\n\n|cffff0000Linksklicken um Auto-Stats ein- oder auszuschalten|r\n|cff999999(Ausführreihenfolge: System)|r", diff --git a/Locales/MultiBotAceLocale-enGB.lua b/Locales/MultiBotAceLocale-enGB.lua index f7fb2f2..b71091b 100644 --- a/Locales/MultiBotAceLocale-enGB.lua +++ b/Locales/MultiBotAceLocale-enGB.lua @@ -397,6 +397,8 @@ local enGBValues = { ["tips.main.raidus"] = "Raidus Window\n|cffffffffOpens or closes the Raidus Raid Manager.|r\n\n|cffff0000Left-click to open or close|r\n|cff999999(Executed by: System)|r", ["tips.main.creator"] = "Creator Control Toggle \n|cffffffffEnables or disables the Creator control.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", ["tips.main.beast"] = "NPC-Beastmaster Main Menu\n|cffffffffEnables or disable the NPC-Beastmaster controls.\nThe NPC-Beastmaster module for Azerothcore allows every Character to have a Hunter Pet and give it Pet Commands.\nCharacters learn the necessary spells from the White Fang NPC, placed into the World by the GameMaster.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", + ["tips.main.disperse"] = "Switch Disperse\n|cffffffffShows or hides the Disperse control.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", + ["tips.main.loot"] = "Switch Loot Rules\n|cffffffffShows or hides the Loot Rules control.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", ["tips.main.expand"] = "Expand Stay/Follow Menu\n\n|cffff0000Left-click to activate|r\n|cff999999(Executed by: System)|r", ["tips.main.release"] = "Auto-Release\n|cffffffffDead Bots are automatically released and summoned.\nBots are revived immediately.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", ["tips.main.stats"] = "Auto-Stats\n|cffffffffDisplays Stats values, updated every 45 Seconds.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", diff --git a/Locales/MultiBotAceLocale-enUS.lua b/Locales/MultiBotAceLocale-enUS.lua index 3b0aeee..84aa617 100644 --- a/Locales/MultiBotAceLocale-enUS.lua +++ b/Locales/MultiBotAceLocale-enUS.lua @@ -397,6 +397,8 @@ local enUSValues = { ["tips.main.raidus"] = "Raidus Window\n|cffffffffOpens or closes the Raidus Raid Manager.|r\n\n|cffff0000Left-click to open or close|r\n|cff999999(Executed by: System)|r", ["tips.main.creator"] = "Creator Control Toggle \n|cffffffffEnables or disables the Creator control.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", ["tips.main.beast"] = "NPC-Beastmaster Main Menu\n|cffffffffEnables or disable the NPC-Beastmaster controls.\nThe NPC-Beastmaster module for Azerothcore allows every Character to have a Hunter Pet and give it Pet Commands.\nCharacters learn the necessary spells from the White Fang NPC, placed into the World by the GameMaster.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", + ["tips.main.disperse"] = "Switch Disperse\n|cffffffffShows or hides the Disperse control.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", + ["tips.main.loot"] = "Switch Loot Rules\n|cffffffffShows or hides the Loot Rules control.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", ["tips.main.expand"] = "Expand Stay/Follow Menu\n\n|cffff0000Left-click to activate|r\n|cff999999(Executed by: System)|r", ["tips.main.release"] = "Auto-Release\n|cffffffffDead Bots are automatically released and summoned.\nBots are revived immediately.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", ["tips.main.stats"] = "Auto-Stats\n|cffffffffDisplays Stats values, updated every 45 Seconds.|r\n\n|cffff0000Left-click to toggle|r\n|cff999999(Executed by: System)|r", diff --git a/Locales/MultiBotAceLocale-esES.lua b/Locales/MultiBotAceLocale-esES.lua index 767d284..49132c3 100644 --- a/Locales/MultiBotAceLocale-esES.lua +++ b/Locales/MultiBotAceLocale-esES.lua @@ -394,6 +394,8 @@ local esESValues = { ["tips.main.rtsc"] = "RTSC-Switch\n|cffffffffEste interruptor activa o desactiva el control RTSC.|r\n\n|cffff0000Clic izquierdo para activar o desactivar el control RTSC|r\n|cff999999(Orden de ejecución: Sistema)|r", ["tips.main.raidus"] = "Raidus-Switch\n|cffffffffEste interruptor abrirá o cerrará el Compositor de Banda.|r\n\n|cffff0000Clic izquierdo para abrir o cerrar el Compositor de Banda|r\n|cff999999(Orden de ejecución: Sistema)|r", ["tips.main.creator"] = "Creator-Switch\n|cffffffffEste interruptor activa o desactiva el control de creador.|r\n\n|cffff0000Clic izquierdo para activar o desactivar el control de creador|r\n|cff999999(Orden de ejecución: Sistema)|r", + ["tips.main.disperse"] = "Interruptor Disperse\n|cffffffffEste interruptor muestra u oculta el control Disperse.|r\n\n|cffff0000Clic izquierdo para activar o desactivar el control Disperse|r\n|cff999999(Orden de ejecución: Sistema)|r", + ["tips.main.loot"] = "Interruptor de reglas de botín\n|cffffffffEste interruptor muestra u oculta el control de reglas de botín.|r\n\n|cffff0000Clic izquierdo para activar o desactivar el control de reglas de botín|r\n|cff999999(Orden de ejecución: Sistema)|r", ["tips.main.beast"] = "Beastmaster-Switch\n|cffffffffEste interruptor activa o desactiva el control de domador de bestias.\nEl control Beastmaster es parte del Mod-NPC-Beastmaster de AzerothCore.\nEste módulo permite que cualquier personaje tenga una mascota como los cazadores.\nLos personajes pueden aprender los hechizos necesarios de White Fang.\nWhite Fang debe ser colocado en el mundo por un GameMaster.|r\n\n|cffff0000Clic izquierdo para activar o desactivar el control Beastmaster|r\n|cff999999(Orden de ejecución: Sistema)|r", ["tips.main.expand"] = "Expand-Switch\n|cffffffffEste interruptor expandirá o reducirá el control de Stay-Follow.\n|cffff0000Clic izquierdo para expandir o reducir el control Stay-Follow|r\n|cff999999(Orden de ejecución: Sistema)|r", ["tips.main.release"] = "Auto-Release\n|cffffffffEsta función detecta la muerte de los bots.\nLos bots muertos son liberados y convocados automáticamente.\nEsto los revivirá en cuestión de segundos.|r\n\n|cffff0000Clic izquierdo para activar o desactivar Auto-Release|r\n|cff999999(Orden de ejecución: Sistema)|r", diff --git a/Locales/MultiBotAceLocale-frFR.lua b/Locales/MultiBotAceLocale-frFR.lua index 22a6fab..f216735 100644 --- a/Locales/MultiBotAceLocale-frFR.lua +++ b/Locales/MultiBotAceLocale-frFR.lua @@ -395,6 +395,8 @@ local frFRValues = { ["tips.main.raidus"] = "Raidus-Switch\n|cffffffffCe bouton ouvrira ou fermera le compositeur de raid.|r\n\n|cffff0000Clic gauche pour ouvrir ou fermer le compositeur de raid|r\n|cff999999(Ordre d'exécution : Système)|r", ["tips.main.creator"] = "Switch Créateur\n|cffffffffCe switch activera ou désactivera le mode créateur de Bot.|r\n\n|cffff0000Cliquez-gauche pour activer ou désactiver le mode créateur de Bot|r\n|cff999999(Ordre d'exécution : Système)|r", ["tips.main.beast"] = "Switch Maître des Bêtes\n|cffffffffCe switch activera ou désactivera le contrôle Maître des Bêtes.\nLe contrôle Maître des Bêtes gère le Module Maître des Bêtes d'Azerothcore.\nLe Module Maître des Bêtes permet à chaque personnage d'avoir un familier comme les chasseurs.\nVos personnages peuvent apprendre les sorts nécessaires auprès de White Fang.\nWhite Fang doit être placé dans le monde par l'Admin.|r\n\n|cffff0000Cliquez-gauche pour activer ou désactiver le contrôle Maître des Bêtes|r\n|cff999999(Ordre d'exécution : Système)|r", + ["tips.main.disperse"] = "Switch Disperse\n|cffffffffCe switch affichera ou masquera le contrôle Disperse.|r\n\n|cffff0000Clic gauche pour activer ou désactiver le contrôle Disperse|r\n|cff999999(Ordre d'exécution : Système)|r", + ["tips.main.loot"] = "Switch Loot Rules\n|cffffffffCe switch affichera ou masquera le contrôle Règles de butin.|r\n\n|cffff0000Clic gauche pour activer ou désactiver le contrôle Règles de butin|r\n|cff999999(Ordre d'exécution : Système)|r", ["tips.main.expand"] = "Contrôle Rester-Suivre\n|cffffffffCe bouton développera ou réduira la fonction Rester-Suivre.\n|cffff0000Clic gauche pour développer ou réduire le Contrôle Rester-Suivre|r\n|cff999999(Ordre d'exécution : Système)|r", ["tips.main.release"] = "Auto-Réanimation\n|cffffffffCette fonctionnalité détecte la mort des Bots.\nLes Bots morts sont automatiquement réanimés et invoqués.\nCela va ressusciter les bots en quelques secondes.|r\n\n|cffff0000Clic gauche pour activer ou désactiver l'Auto-Réanimation|r\n|cff999999(Ordre d'exécution : Système)|r", ["tips.main.stats"] = "Auto-Statistiques\n|cffffffffCette fonctionnalité visualise les valeurs de la commande Stat.\nLes valeurs des statistiques sont mises à jour toutes les 45 secondes.|r\n\n|cffff0000Clic gauche pour activer ou désactiver les Auto-Statistiques|r\n|cff999999(Ordre d'exécution : Système)|r", diff --git a/Locales/MultiBotAceLocale-koKR.lua b/Locales/MultiBotAceLocale-koKR.lua index 7b34a01..667e9a2 100644 --- a/Locales/MultiBotAceLocale-koKR.lua +++ b/Locales/MultiBotAceLocale-koKR.lua @@ -394,6 +394,8 @@ local koKRValues = { ["tips.main.raidus"] = "공격대원 스위치\n|cffffffffRaid Composer를 열거나 닫습니다.|r\n\n|cffff0000좌클릭으로 Raid Composer 활성화 또는 비활성화|r\n|cff999999(명령 실행: 시스템)|r", ["tips.main.creator"] = "크리에이터 스위치\n|cffffffff이 토글 스위치는 Creator Control 기능을 활성화하거나 비활성화합니다.|r\n\n|cffff0000 왼쪽 클릭하여 Creator Controls를 활성화 또는 비활성화합니다.|r\n|cff999999(명령 실행: 시스템)|r", ["tips.main.beast"] = "비스트마스터 제어 스위치\n|cffffffff이 토글 스위치는 Beastmaster 제어 기능을 활성화하거나 비활성화합니다.\n비스트마스터 제어 기능은 아제로스코어 모듈 NPC 테이머를 위한 것입니다.\n모드 NPC 테이머는 사냥꾼처럼 모든 캐릭터가 애완동물을 키울 수 있도록 허용합니다.\n귀하의 캐릭터는 '화이트 팽'으로부터 필요한 주문을 배울 수 있습니다.\n'화이트 팽'은 게임 관리자가 게임 세계에 배치해야 합니다.|r\n\n|cffff0000Beastmaster 제어 기능을 활성화 또는 비활성화하려면 왼쪽 클릭|r\n|cff999999(명령 실행: 시스템)|r", + ["tips.main.disperse"] = "분산 전환\n|cffffffff분산 제어 버튼을 표시하거나 숨깁니다.|r\n\n|cffff0000왼쪽 클릭으로 전환|r\n|cff999999(명령 실행: 시스템)|r", + ["tips.main.loot"] = "전리품 규칙 전환\n|cffffffff전리품 규칙 제어 버튼을 표시하거나 숨깁니다.|r\n\n|cffff0000왼쪽 클릭으로 전환|r\n|cff999999(명령 실행: 시스템)|r", ["tips.main.expand"] = "확장 스위치\n|cffffffff이 스위치는 머물기l따르기 제어 버튼을 활성화 또는 비활성화 합니다.\n|cffff0000좌클릭으로 머물기l따르기 제어 등록|r\n|cff999999(명령 실행: 시스템)|r", ["tips.main.release"] = "자동 해제\n|cffffffff이 기능은 로봇의 죽음을 감지할 수 있습니다.\n죽은 로봇은 자동으로 풀려나 소환됩니다.|r\n\n그러면 몇 초 안에 로봇이 살아날 것입니다.\n|cffff0000자동 해제를 활성화 또는 비활성화하려면 왼쪽 클릭|r\n|cff999999(명령 실행: 시스템)|r", ["tips.main.stats"] = "자동 상태 데이터\n|cffffffff이 기능은 타겟 상태 데이터를 시각화합니다.\n통계는 45초마다 업데이트됩니다.|r\n\n|cffff0000왼쪽 클릭으로 자동 상태 데이터 활성화 또는 비활성화|r\n|cff999999(명령 실행: 시스템)|r", diff --git a/Locales/MultiBotAceLocale-ruRU.lua b/Locales/MultiBotAceLocale-ruRU.lua index 252818d..32d194e 100644 --- a/Locales/MultiBotAceLocale-ruRU.lua +++ b/Locales/MultiBotAceLocale-ruRU.lua @@ -395,6 +395,8 @@ local ruRUValues = { ["tips.main.raidus"] = "Raidus-Switch\n|cffffffffThis Switch will open or close the Raid-Composer.|r\n\n|cffff0000Left-Click to open or close the Raid-Composer|r\n|cff999999(Execution-Order: System)|r", ["tips.main.creator"] = "Переключатель создателя\n|cffffffffВключает/выключает панель создания.|r\n\n|cffff0000Левый клик - вкл/выкл панель создания|r\n|cff999999(Порядок выполнения: Система)|r", ["tips.main.beast"] = "Режим Повелителя зверей\n|cffffffffВключает или отключает управление Повелителем зверей.\nФункция предназначена для мода NPC-Повелитель зверей Azerothcore.\nЭтот мод позволяет любому персонажу иметь питомца, как у охотников.\nНеобходимые заклинания можно выучить у Белого Клыка.\nБелый Клык должен быть размещён в мире ГеймМастером.|r\n\n|cffff0000Левый клик – включить/отключить управление Повелителем зверей|r\n|cff999999(Порядок выполнения: Система)|r", + ["tips.main.disperse"] = "Переключатель рассредоточения\n|cffffffffПоказывает или скрывает панель рассредоточения.|r\n\n|cffff0000Левый клик - включить/выключить панель рассредоточения|r\n|cff999999(Порядок выполнения: Система)|r", + ["tips.main.loot"] = "Переключатель правил добычи\n|cffffffffПоказывает или скрывает панель правил добычи.|r\n\n|cffff0000Левый клик - включить/выключить панель правил добычи|r\n|cff999999(Порядок выполнения: Система)|r", ["tips.main.expand"] = "Переключатель расширения\n|cffffffffРасширяет/сворачивает панель Стоять/Следовать.\n|cffff0000Левый клик - расширить/свернуть панель|r\n|cff999999(Порядок выполнения: Система)|r", ["tips.main.release"] = "Авто-освобождение\n|cffffffffОбнаруживает смерть ботов.\nМёртвые боты автоматически освобождаются и призываются.\nЭто воскрешает ботов за несколько секунд.|r\n\n|cffff0000Левый клик - вкл/выкл авто-освобождение|r\n|cff999999(Порядок выполнения: Система)|r", ["tips.main.stats"] = "Авто-статы\n|cffffffffВизуализирует значения команды Stats.\nЗначения обновляются каждые 45 секунд.|r\n\n|cffff0000Левый клик - вкл/выкл авто-статы|r\n|cff999999(Порядок выполнения: Система)|r", diff --git a/Locales/MultiBotAceLocale-zhCN.lua b/Locales/MultiBotAceLocale-zhCN.lua index 04d9672..30c5290 100644 --- a/Locales/MultiBotAceLocale-zhCN.lua +++ b/Locales/MultiBotAceLocale-zhCN.lua @@ -395,6 +395,8 @@ local zhCNValues = { ["tips.main.raidus"] = "团队编排器开关\n|cffffffff此开关可打开或关闭团队编排器。|r\n\n|cffff0000左键单击可打开或关闭团队编排器|r\n|cff999999(执行命令: 系统)|r", ["tips.main.creator"] = "创造者切换\n|cffffffff这个切换开关将启用或禁用创造者控制功能。|r\n\n|cffff0000左键点击以启用或禁用创造者控制功能|r\n|cff999999(执行命令: 系统)|r", ["tips.main.beast"] = "兽王控制切换\n|cffffffff这个切换开关将启用或禁用兽王控制功能。\n兽王控制功能是针对艾泽拉斯核心(Azerothcore)的模组 NPC 驯兽师的。\n模组 NPC 驯兽师允许每个角色像猎人一样拥有宠物。\n你的角色可以从 “白牙” 那里学习必要的法术。\n白牙” 必须由游戏管理员放置到游戏世界中。|r\n\n|cffff0000左键点击以启用或禁用兽王控制功能|r\n|cff999999(执行命令: 系统)|r", + ["tips.main.disperse"] = "分散开关\n|cffffffff显示或隐藏分散控制按钮。|r\n\n|cffff0000左键点击以切换|r\n|cff999999(执行命令: 系统)|r", + ["tips.main.loot"] = "拾取规则开关\n|cffffffff显示或隐藏拾取规则控制按钮。|r\n\n|cffff0000左键点击以切换|r\n|cff999999(执行命令: 系统)|r", ["tips.main.expand"] = "展开 - 开关\n|cffffffff此开关将展开或缩小‘保持跟随控制’。\n|cffff0000左键单击以展开或缩小‘保持跟随控制’|r\n|cff999999(执行命令: 系统)|r", ["tips.main.release"] = "自动释放\n|cffffffff此功能可以检测机器人的死亡。\n死亡的机器人将自动释放并召唤。|r\n\n这样可以在几秒钟内使机器人复活。\n|cffff0000左键单击启用或禁用自动释放|r\n|cff999999(执行命令: 系统)|r", ["tips.main.stats"] = "自动状态数据\n|cffffffff此功能可视化目标状态数据。\n统计数据每45秒更新一次。|r\n\n|cffff0000左键单击启用或禁用自动状态数据|r\n|cff999999(执行命令: 系统)|r", diff --git a/UI/MultiBotDisperseUI.lua b/UI/MultiBotDisperseUI.lua index c4b5a9c..bf5b10c 100644 --- a/UI/MultiBotDisperseUI.lua +++ b/UI/MultiBotDisperseUI.lua @@ -146,7 +146,7 @@ function MultiBot.BuildDisperseUI(tLeft) MultiBot.frames.disperseMenu = menu - button = tLeft.addButton("Disperse", -34, 0, "spell_nature_wispsplode", L("tips.disperse.main", "Disperse")).setDisable() + button = tLeft.addButton("Disperse", -34, 0, "spell_nature_wispsplode", L("tips.disperse.main", "Disperse")).setDisable().doHide() button.doLeft = function() if menuOpen then hideDisperseMenu() diff --git a/UI/MultiBotLootUI.lua b/UI/MultiBotLootUI.lua index 77a4139..ccacbfb 100644 --- a/UI/MultiBotLootUI.lua +++ b/UI/MultiBotLootUI.lua @@ -158,7 +158,7 @@ function MultiBot.BuildLootUI(tLeft) MultiBot.frames.lootMenu = menu - button = tLeft.addButton("Loot", -68, 0, "inv_misc_bag_10", L("tips.loot.main", "Loot rules")).setDisable() + button = tLeft.addButton("Loot", -68, 0, "inv_misc_bag_10", L("tips.loot.main", "Loot rules")).setDisable().doHide() button.doLeft = function() if menuOpen then hideLootMenu() diff --git a/UI/MultiBotMainUI.lua b/UI/MultiBotMainUI.lua index 31cab65..ba43a5c 100644 --- a/UI/MultiBotMainUI.lua +++ b/UI/MultiBotMainUI.lua @@ -13,9 +13,11 @@ local MAINBAR_AUTOHIDE_HOTSPOT_SIZE = 42 local MAINBAR_AUTOHIDE_UPDATE_INTERVAL = 0.2 local LEFT_LAYOUT_NAMES = { - "BotRTI", + "Creator", + "Beast", "Disperse", "Loot", + "BotRTI", "Tanker", "Attack", "Mode", @@ -34,6 +36,16 @@ local LEFT_LAYOUT_FRAME_NAMES = { Loot = "LootMenu", } +local PRE_FORMAT_LEFT_TOGGLE_ORDER = { + "Creator", + "Beast", +} + +local POST_FORMAT_LEFT_TOGGLE_ORDER = { + "Disperse", + "Loot", +} + local leftLayoutBase = nil local function withLeftRoot(callback) @@ -110,6 +122,22 @@ local function getLeftBaseX(leftRoot, name) return 0 end +local function hideLeftControl(leftRoot, name) + local frameName = LEFT_LAYOUT_FRAME_NAMES[name] or name + local frame = leftRoot.frames and leftRoot.frames[frameName] + if frame then + frame:Hide() + if MultiBot.RequestClickBlockerUpdate then + MultiBot.RequestClickBlockerUpdate(frame) + end + end + + local button = leftRoot.buttons and leftRoot.buttons[name] + if button then + button:Hide() + end +end + local function refreshLeftLayout() withLeftRoot(function(leftRoot) captureLeftLayoutBase(leftRoot) @@ -118,18 +146,46 @@ local function refreshLeftLayout() return end - local creatorEnabled = getMainToggleState("Creator") - local beastEnabled = getMainToggleState("Beast") + local preShift = 0 + local postVisibleCount = 0 local expandEnabled = getMainToggleState("Expand") - local commonShift = 0 - if creatorEnabled then - commonShift = commonShift - LEFT_LAYOUT_SHIFT + for _, name in ipairs(PRE_FORMAT_LEFT_TOGGLE_ORDER) do + local button = leftRoot.buttons and leftRoot.buttons[name] + local enabled = getMainToggleState(name) + + if button then + if enabled then + setLeftElementX(leftRoot, name, -preShift) + button:Show() + preShift = preShift + LEFT_LAYOUT_SHIFT + else + hideLeftControl(leftRoot, name) + end + end end - if beastEnabled then - commonShift = commonShift - LEFT_LAYOUT_SHIFT + + local formatX = getLeftBaseX(leftRoot, "Format") - preShift + setLeftElementX(leftRoot, "Format", formatX) + + local postX = formatX - LEFT_LAYOUT_SHIFT + for _, name in ipairs(POST_FORMAT_LEFT_TOGGLE_ORDER) do + local button = leftRoot.buttons and leftRoot.buttons[name] + local enabled = getMainToggleState(name) + + if button then + if enabled then + setLeftElementX(leftRoot, name, postX) + button:Show() + postVisibleCount = postVisibleCount + 1 + postX = postX - LEFT_LAYOUT_SHIFT + else + hideLeftControl(leftRoot, name) + end + end end + local commonShift = -preShift + ((#POST_FORMAT_LEFT_TOGGLE_ORDER - postVisibleCount) * LEFT_LAYOUT_SHIFT) local heavyShift = commonShift if expandEnabled then heavyShift = heavyShift - LEFT_LAYOUT_SHIFT @@ -145,11 +201,6 @@ local function refreshLeftLayout() setLeftElementX(leftRoot, "ExpandStay", getLeftBaseX(leftRoot, "ExpandStay") + commonShift) setLeftElementX(leftRoot, "ExpandFollow", getLeftBaseX(leftRoot, "ExpandFollow") + commonShift) setLeftElementX(leftRoot, "Flee", getLeftBaseX(leftRoot, "Flee") + commonShift) - setLeftElementX(leftRoot, "Loot", getLeftBaseX(leftRoot, "Loot") + commonShift) - setLeftElementX(leftRoot, "Disperse", getLeftBaseX(leftRoot, "Disperse") + commonShift) - setLeftElementX(leftRoot, "Format", getLeftBaseX(leftRoot, "Format") + commonShift) - - setLeftElementX(leftRoot, "Beast", getLeftBaseX(leftRoot, "Beast") + (creatorEnabled and -LEFT_LAYOUT_SHIFT or 0)) if expandEnabled then leftRoot.buttons["ExpandFollow"]:Show() @@ -233,32 +284,33 @@ local function toggleRaidus(button) MultiBot.raidus:Hide() end -local function toggleCreator(button) +local function toggleLeftControl(button, controlName) withLeftRoot(function(leftRoot) - if MultiBot.OnOffSwitch(button) then - leftRoot.frames["Creator"]:Hide() - leftRoot.buttons["Creator"]:Show() - else - leftRoot.frames["Creator"]:Hide() - leftRoot.buttons["Creator"]:Hide() + local frameName = LEFT_LAYOUT_FRAME_NAMES[controlName] or controlName + local frame = leftRoot.frames and leftRoot.frames[frameName] + if frame then + frame:Hide() end + MultiBot.OnOffSwitch(button) refreshLeftLayout() end) end +local function toggleCreator(button) + toggleLeftControl(button, "Creator") +end + local function toggleBeast(button) - withLeftRoot(function(leftRoot) - if MultiBot.OnOffSwitch(button) then - leftRoot.frames["Beast"]:Hide() - leftRoot.buttons["Beast"]:Show() - else - leftRoot.frames["Beast"]:Hide() - leftRoot.buttons["Beast"]:Hide() - end + toggleLeftControl(button, "Beast") +end - refreshLeftLayout() - end) +local function toggleDisperse(button) + toggleLeftControl(button, "Disperse") +end + +local function toggleLoot(button) + toggleLeftControl(button, "Loot") end local function toggleExpand(button) @@ -1233,6 +1285,8 @@ function MultiBot.InitializeMainUI(tMultiBar) "Raidus", "Creator", "Beast", + "Disperse", + "Loot", "Expand", "Release", "Stats", @@ -1370,8 +1424,32 @@ function MultiBot.InitializeMainUI(tMultiBar) wireShiftRightSwap(mainFrame.buttons["Beast"], "Beast") createMainActionButton(mainFrame, { - name = "Expand", + name = "Disperse", y = 204, + icon = "spell_nature_wispsplode", + tip = "tips.main.disperse", + disabled = true, + doLeft = function(button) + toggleDisperse(button) + end, + }) + wireShiftRightSwap(mainFrame.buttons["Disperse"], "Disperse") + + createMainActionButton(mainFrame, { + name = "Loot", + y = 238, + icon = "inv_misc_bag_10", + tip = "tips.main.loot", + disabled = true, + doLeft = function(button) + toggleLoot(button) + end, + }) + wireShiftRightSwap(mainFrame.buttons["Loot"], "Loot") + + createMainActionButton(mainFrame, { + name = "Expand", + y = 272, icon = "Interface\\AddOns\\MultiBot\\Icons\\command_follow.blp", tip = "tips.main.expand", disabled = true, @@ -1383,7 +1461,7 @@ function MultiBot.InitializeMainUI(tMultiBar) createMainActionButton(mainFrame, { name = "Release", - y = 238, + y = 306, icon = "achievement_bg_xkills_avgraveyard", tip = "tips.main.release", disabled = true, @@ -1395,7 +1473,7 @@ function MultiBot.InitializeMainUI(tMultiBar) createMainActionButton(mainFrame, { name = "Stats", - y = 272, + y = 340, icon = "inv_scroll_08", tip = "tips.main.stats", disabled = true,