Skip to content
This repository was archived by the owner on May 13, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .luacheckrc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ globals = {
"TooltipBackdropTemplateMixin", "NORMAL_FONT_COLOR", "HIGHLIGHT_FONT_COLOR", "GameTooltip_SetDefaultAnchor", "ChatFrame1", "UISpecialFrames", "GetMouseFocus", "ShowUIPanel", "tremove", "min", "max",
"GetMinimapShape", "GetMinimapShape", "PanelTemplates_TabResize", "GetGuildRosterShowOffline", "SetGuildRosterShowOffline", "IsInGuild", "GetGuildInfo", "SetGuildRosterShowOffline", "PLAYER", "INVENTORY_TOOLTIP",
"BAGSLOT", "UNKNOWN", "UnitIsDead", "ShowPrompt", "_MB_GetOrCreateShamanPos", "ensureHiddenTooltip", "MB_TAB_TITLE_DEFAULT", "SPELLBOOK", "MB_PAGE_DEFAULT", "SPELLBOOK_END_NON_SPELL_STREAK", "sendInventoryItemCommand",
"RAID_CLASS_COLORS", "INSPECT", "MB_INVENTORY_LABEL", "LOADING", "ITEM", "ITEMS", "SEARCH", "NO_QUESTS_LABEL", "QUESTS_LABEL", "QUEST_LOG"
"RAID_CLASS_COLORS", "INSPECT", "MB_INVENTORY_LABEL", "LOADING", "ITEM", "ITEMS", "SEARCH", "NO_QUESTS_LABEL", "QUESTS_LABEL", "QUEST_LOG", "UnitIsUnit"
}

read_globals = {
Expand Down
33 changes: 27 additions & 6 deletions Core/MultiBotHandler.lua
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ local POINT_FRAME_BINDINGS = {
{ saveKey = "InventoryPoint", getFrame = function() return MultiBot.inventory end },
{ saveKey = "SpellbookPoint", getFrame = function() return MultiBot.spellbook end },
{ saveKey = "ItemusPoint", getFrame = function() return MultiBot.itemus end },
{ saveKey = "IconosPoint", getFrame = function() return MultiBot.iconos and (MultiBot.iconos.frame or MultiBot.iconos) end },
{ saveKey = "IconosPoint", getFrame = function() return MultiBot.iconos or (MultiBot.iconos and MultiBot.iconos.frame) end },
{ saveKey = "StatsPoint", getFrame = function() return MultiBot.stats end },
{ saveKey = "RewardPoint", getFrame = function() return MultiBot.reward end },
{ saveKey = "TalentPoint", getFrame = function() return MultiBot.talent end },
Expand All @@ -562,9 +562,23 @@ local function getPortalButton(color)
end

local function saveBoundFramePoints()
local function canReadPoint(frame)
if not frame then
return false
end

local getRight = frame.GetRight or frame.getRight
local getBottom = frame.GetBottom or frame.getBottom
if type(getRight) ~= "function" or type(getBottom) ~= "function" then
return false
end

return getRight(frame) ~= nil and getBottom(frame) ~= nil
end

for _, binding in ipairs(POINT_FRAME_BINDINGS) do
local frame = binding.getFrame and binding.getFrame()
if frame then
if frame and canReadPoint(frame) then
local tX, tY = MultiBot.toPoint(frame)
setSavedLayoutValue(binding.saveKey, tX .. ", " .. tY)
end
Expand All @@ -576,8 +590,12 @@ local function restoreBoundFramePoints()
local pointValue = getSavedLayoutValue(binding.saveKey)
local frame = binding.getFrame and binding.getFrame()
if pointValue ~= nil and frame and frame.setPoint then
local tPoint = MultiBot.doSplit(pointValue, ", ")
frame.setPoint(tonumber(tPoint[1]), tonumber(tPoint[2]))
local pointX, pointY = string.match(tostring(pointValue), "^%s*(-?%d+)%s*,%s*(-?%d+)%s*$")
pointX = tonumber(pointX)
pointY = tonumber(pointY)
if pointX and pointY then
frame.setPoint(pointX, pointY)
end
end
end
end
Expand Down Expand Up @@ -1797,6 +1815,9 @@ function MultiBot.HandleMultiBotEvent(event, ...)
end

if(tButton.waitFor == "ITEM" and (MultiBot.beInside(arg1, "Bag,", "Dur") or MultiBot.beInside(arg1, "背包", "耐久度"))) then
if MultiBot.inventory and MultiBot.inventory.applySummaryLine then
MultiBot.inventory:applySummaryLine(arg1)
end
MultiBot.inventory:Show()
tButton.waitFor = ""
InspectUnit(arg2)
Expand All @@ -1822,13 +1843,13 @@ function MultiBot.HandleMultiBotEvent(event, ...)
-- EQUIPPING --

if(MultiBot.inventory:IsVisible()) then
if(MultiBot.isInside(arg1, "装备", "使用", "吃", "喝", "盛宴", "摧毁")) then
if(MultiBot.isInside(arg1, "装备", "卸下", "使用", "吃", "喝", "盛宴", "摧毁")) then
tButton.waitFor = "INVENTORY"
SendChatMessage("items", "WHISPER", nil, tButton.name)
return
end

if(MultiBot.isInside(string.lower(arg1), "equipping", "using", "eating", "drinking", "feasting", "destroyed")) then
if(MultiBot.isInside(string.lower(arg1), "equipping", "unequipping", "using", "eating", "drinking", "feasting", "destroyed", "removed", "taking off")) then
tButton.waitFor = "INVENTORY"
SendChatMessage("items", "WHISPER", nil, tButton.name)
return
Expand Down
2 changes: 2 additions & 0 deletions Locales/MultiBotAceLocale-deDE.lua
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ local deDEValues = {
["info.teleport"] = "wird dich zu 'MAP - ZONE' teleportieren",
["info.normal"] = "Frage NAME nach Nicht-Kampf-Strategien.",
["info.inventory"] = "Inventar von NAME",
["info.inventory.money_label"] = "Geld",
["info.inventory.bag_slots_label"] = "Taschenplätze",
["info.spellbook"] = "Zauberbuch von NAME",
["info.player"] = "Ich werde 'NAME' vom Playerbot-Roster nicht Auto-Initialisieren.",
["info.member"] = "Ich werde 'NAME' vom Gilden-Roster nicht Auto-Initialisieren.",
Expand Down
2 changes: 2 additions & 0 deletions Locales/MultiBotAceLocale-enGB.lua
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ local enGBValues = {
["info.teleport"] = "will teleport you to 'MAP - ZONE'",
["info.normal"] = "I'm querying NAME for their non-combat directives...",
["info.inventory"] = "NAME's Inventory",
["info.inventory.money_label"] = "Money",
["info.inventory.bag_slots_label"] = "Bag Slots",
["info.spellbook"] = "NAME's Spellbook",
["info.player"] = "I couldn't auto-initialise NAME from the Playerbot Roster.",
["info.member"] = "I couldn't auto-initialise NAME from the Guild Roster.",
Expand Down
2 changes: 2 additions & 0 deletions Locales/MultiBotAceLocale-enUS.lua
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ local enUSValues = {
["info.teleport"] = "will teleport you to 'MAP - ZONE'",
["info.normal"] = "I'm querying NAME for their non-combat directives...",
["info.inventory"] = "NAME's Inventory",
["info.inventory.money_label"] = "Money",
["info.inventory.bag_slots_label"] = "Bag Slots",
["info.spellbook"] = "NAME's Spellbook",
["info.player"] = "I couldn't auto-initialize NAME from the Playerbot Roster.",
["info.member"] = "I couldn't auto-initialize NAME from the Guild Roster.",
Expand Down
12 changes: 7 additions & 5 deletions Locales/MultiBotAceLocale-esES.lua
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,14 @@ local esESValues = {
["info.macro"] = "Ya tengo el número máximo de macros privadas.",
["info.neither"] = "No tengo un objetivo, tampoco estoy en un grupo.",
["info.group"] = "Tenemos que estar en Grupo, invitemos..",
["info.inviting"] = "Nombre de invitación al Grupo.",
["info.combat"] = "Nombre preguntado para Estrategias de Combate.",
["info.inviting"] = "NAME de invitación al Grupo.",
["info.combat"] = "NAME preguntado para Estrategias de Combate.",
["info.teleport"] = "te teletransportará a 'MAP-ZONE'",
["info.normal"] = "Nombre preguntado para estrategias que no son de combate.",
["info.inventory"] = "Inventario del Nombre",
["info.spellbook"] = "Libro de hechizos de Nombre",
["info.normal"] = "NAME preguntado para estrategias que no son de combate.",
["info.inventory"] = "Inventario del NAME",
["info.inventory.money_label"] = "Dinero",
["info.inventory.bag_slots_label"] = "Huecos de bolsa",
["info.spellbook"] = "Libro de hechizos de NAME",
["info.player"] = "No inicializaré automáticamente 'NAME' del Playerbot-Roster.",
["info.member"] = "No inicializaré automáticamente 'NAME' del Guild-Roster.",
["info.players"] = "No inicializaré automáticamente a nadie del Playerbot-Roster.",
Expand Down
2 changes: 2 additions & 0 deletions Locales/MultiBotAceLocale-frFR.lua
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ local frFRValues = {
["info.teleport"] = "vous téléportera vers 'MAP - ZONE'",
["info.normal"] = "Demande à NAME des stratégies non-combattantes.",
["info.inventory"] = "Inventaire de NAME",
["info.inventory.money_label"] = "Argent",
["info.inventory.bag_slots_label"] = "Sacs",
["info.spellbook"] = "Livre de sorts de NAME",
["info.player"] = "Je ne vais pas auto-initialiser 'NAME' depuis la liste des bots.",
["info.member"] = "Je ne vais pas auto-initialiser 'NAME' depuis la liste des membres de la guilde.",
Expand Down
2 changes: 2 additions & 0 deletions Locales/MultiBotAceLocale-koKR.lua
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ local koKRValues = {
["info.teleport"] = "will teleport you to 'MAP - ZONE'",
["info.normal"] = "NAME에게 비전투 전략에 대해 물어보세요.",
["info.inventory"] = "NAME의 인벤토리입니다.",
["info.inventory.money_label"] = "소지금",
["info.inventory.bag_slots_label"] = "가방 칸",
["info.spellbook"] = "NAME의 마법의 책.",
["info.player"] = "플레이어 봇 목록에서 'NAME'을 자동으로 초기화하지 않습니다.",
["info.member"] = "길드 목록에서 'NAME'을 자동으로 초기화하지 않습니다.",
Expand Down
2 changes: 2 additions & 0 deletions Locales/MultiBotAceLocale-ruRU.lua
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ local ruRUValues = {
["info.teleport"] = "телепортирует вас в 'MAP - ZONE'",
["info.normal"] = "Запросил небоевые тактики у NAME.",
["info.inventory"] = "Инвентарь NAME",
["info.inventory.money_label"] = "Деньги",
["info.inventory.bag_slots_label"] = "Слоты сумок",
["info.spellbook"] = "Книга заклинаний NAME",
["info.player"] = "Я не буду авто-инициализировать 'NAME' из состава игровых ботов.",
["info.member"] = "Я не буду авто-инициализировать 'NAME' из состава гильдии.",
Expand Down
2 changes: 2 additions & 0 deletions Locales/MultiBotAceLocale-zhCN.lua
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ local zhCNValues = {
["info.teleport"] = "将把你传送到'MAP - ZONE'。",
["info.normal"] = "向 NAME 询问非战斗策略。",
["info.inventory"] = "NAME 的物品栏。",
["info.inventory.money_label"] = "金钱",
["info.inventory.bag_slots_label"] = "背包栏位",
["info.spellbook"] = "NAME 的魔法书。",
["info.player"] = "我不会自动初始化玩家机器人名单中的'NAME'。",
["info.member"] = "我不会自动初始化公会名单中的'NAME'。",
Expand Down
1 change: 1 addition & 0 deletions MultiBot.toc
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ UI\MultiBotSpellBookFrame.lua
UI\MultiBotRewardFrame.lua
UI\MultiBotInventoryFrame.lua
UI\MultiBotInventoryItem.lua
UI\MultiBotInspectUI.lua
UI\MultiBotItemusFrame.lua
UI\MultiBotIconosFrame.lua
UI\MultiBotItem.lua
Expand Down
32 changes: 3 additions & 29 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,17 @@
TODO

* Voi si y'a pas d'autres appels à pageLabel:SetText(MB_PAGE_DEFAULT) dans les fichiers et remplacer par : + pageLabel:SetText(MultiBot.MB_PAGE_DEFAULT or "0/0")
* Ressortir les UI quetes dans leurs propre fichiers et uniformiser le tempklate de la frame comme celle de Itemus
* Uniformiser le templste de la frame reward comme celle de itemus
* Voir si y'a pas d'autres appels à pageLabel:SetText(MB_PAGE_DEFAULT) dans les fichiers et remplacer par : + pageLabel:SetText(MultiBot.MB_PAGE_DEFAULT or "0/0")
* Uniformiser le template des frame quetes comme celle de Itemus
* Uniformiser le template de la frame reward comme celle de itemus
* Essayer de faire disparaitre la barre multibots au bout d'un temps et la faire apparaitre quand on passe la souris dessus.
* Quand on deplace ou fait quelque chose dans l'ui il faudrait que ça se sauvegarde tout de suite dans les variables dans deco reco
* Raidus doit se rafraichir à l'ouverture et fermeture
* dans la liste des quêtes des fois c'est l'ID de la queête qui apparait et pas le tritre
* Afficher le pognon et les places de sacs dans la frame inventaire.
* Iconos ne mémorise pas sa position et n'a pas de strata
* Revoir le positionnement des fleches et pages de Iconos
* Mettre une option pour choisir la tailles des icones de la main barre et des quickhunter/shaman
* Voir si il y'a pas d'autres option que l'on peut ajouter à la frame options de multibot
* creer le multilangue pour le tooltip: setTooltip(self, "Show / Hide / Move Quick Shaman") des fichiers quickshaman et quickhunter
* Ajouter des emplacements de sacs à la fenêtre inventaire
* Creator a l'air de planter et apparait même quand il est desactivé.
* Faire les tootips multi dans la fonction:
local originalDoRight = button.doRight
button.doRight = function(btn)
if(IsShiftKeyDown()) then
if(state.selected == nil) then
state.selected = entryRec
if(UIErrorsFrame) then
UIErrorsFrame:AddMessage("Swap source: " .. (entryRec.id or entryRec.name), 1, 0.82, 0, 1)
end
return
end

if(state.selected == entryRec) then
state.selected = nil
if(UIErrorsFrame) then
UIErrorsFrame:AddMessage("Swap annulé.", 1, 0.25, 0.25, 1)
end
return
end
De MultiboEngine
* Finir les options de déplacement des boutons
* Debuguer le blocage de la barre principale en déplacement ça a l'air de ne pas persister apres une deco reco
* Améliorer le panneau options avec des onglets


Ajouter la fonction unequipe à Multibit:
Expand Down
2 changes: 1 addition & 1 deletion UI/MultiBotCreatorUI.lua
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ function MultiBot.InitializeCreatorUI(tLeft)
return nil
end

local rootButton = tLeft.addButton("Creator", 0, 0, CREATOR_ROOT_ICON, MultiBot.L("tips.creator.master"))
local rootButton = tLeft.addButton("Creator", 0, 0, CREATOR_ROOT_ICON, MultiBot.L("tips.creator.master")).doHide()
local creatorFrame = tLeft.addFrame(CREATOR_FRAME_NAME, CREATOR_FRAME_X, CREATOR_FRAME_Y)
creatorFrame:Hide()

Expand Down
51 changes: 35 additions & 16 deletions UI/MultiBotIconosFrame.lua
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,9 @@ local function bindIconosWindowPosition(window)

local savedPoint = MultiBot.GetSavedLayoutValue and MultiBot.GetSavedLayoutValue(ICONOS_LAYOUT_KEY) or nil
if type(savedPoint) == "string" and savedPoint ~= "" then
local splitPoint = MultiBot.doSplit(savedPoint, ", ")
local offsetX = tonumber(splitPoint[1])
local offsetY = tonumber(splitPoint[2])
local offsetX, offsetY = string.match(savedPoint, "^%s*(-?%d+)%s*,%s*(-?%d+)%s*$")
offsetX = tonumber(offsetX)
offsetY = tonumber(offsetY)
if offsetX and offsetY then
window.frame:ClearAllPoints()
window.frame:SetPoint("BOTTOMRIGHT", UIParent, "BOTTOMRIGHT", offsetX, offsetY)
Expand Down Expand Up @@ -206,12 +206,11 @@ local function bindIconosMoveInteractions(window)
end)

window.title:HookScript("OnMouseUp", function()
if not window.frame.__mbRightDragging then
return
if window.frame.__mbRightDragging then
window.frame.__mbRightDragging = nil
window.frame:StopMovingOrSizing()
end

window.frame.__mbRightDragging = nil
window.frame:StopMovingOrSizing()
persistIconosWindowPosition(window.frame)
end)

Expand All @@ -220,15 +219,16 @@ local function bindIconosMoveInteractions(window)
frame.__mbRightDragging = nil
frame:StopMovingOrSizing()
end

persistIconosWindowPosition(frame)
end)

window.frame:HookScript("OnMouseUp", function(frame)
if not frame.__mbRightDragging then
return
if frame.__mbRightDragging then
frame.__mbRightDragging = nil
frame:StopMovingOrSizing()
end

frame.__mbRightDragging = nil
frame:StopMovingOrSizing()
persistIconosWindowPosition(frame)
end)

Expand Down Expand Up @@ -756,17 +756,20 @@ local function createIconosContent(window, iconos)
resultsLabel:SetText("0/0")

local prevButton = createPaginationButton(headerPanel, "<")
prevButton:SetPoint("BOTTOMRIGHT", headerPanel, "BOTTOMRIGHT", -50, 14)
prevButton:SetPoint("BOTTOMRIGHT", headerPanel, "BOTTOMRIGHT", -82, 14)

local nextButton = createPaginationButton(headerPanel, ">")
nextButton:SetPoint("BOTTOMRIGHT", headerPanel, "BOTTOMRIGHT", -10, 14)

resultsLabel:SetPoint("RIGHT", prevButton, "LEFT", -8, 0)
resultsLabel:ClearAllPoints()
resultsLabel:SetPoint("LEFT", prevButton, "RIGHT", 6, 0)
resultsLabel:SetPoint("RIGHT", nextButton, "LEFT", -6, 0)
resultsLabel:SetJustifyH("CENTER")

local pageLabel = headerPanel:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
pageLabel:SetPoint("LEFT", prevButton, "RIGHT", 4, 0)
pageLabel:SetPoint("RIGHT", nextButton, "LEFT", -4, 0)
pageLabel:SetJustifyH("CENTER")
pageLabel:SetPoint("RIGHT", prevButton, "LEFT", -8, 0)
pageLabel:SetWidth(52)
pageLabel:SetJustifyH("RIGHT")
pageLabel:SetText(getIconosPageLabel(0, 0))

local pathPanel = CreateFrame("Frame", nil, content)
Expand Down Expand Up @@ -1036,6 +1039,22 @@ function MultiBot.InitializeIconosFrame()
self:Refresh()
end

function iconos.setPoint(pointX, pointY)
if not iconos.window or not iconos.window.frame then
return
end

local offsetX = tonumber(pointX)
local offsetY = tonumber(pointY)
if not offsetX or not offsetY then
return
end

iconos.window.frame:ClearAllPoints()
iconos.window.frame:SetPoint("BOTTOMRIGHT", UIParent, "BOTTOMRIGHT", offsetX, offsetY)
persistIconosWindowPosition(iconos.window.frame)
end

function iconos:HideWindow()
hideIconosTooltip(self.window)
self.window.frame:Hide()
Expand Down
Loading
Loading