Wago 원문 (https://wago.io/4pIsTr0Z9)
업데이트
모듈 업데이트 : CapsLock 단축키 CL로 표시
위크오라 버튼에 본인의 단축키를 표시하는 방법입니다.
만약 매크로라면 매크로 작성시 /시전, /사용 대신에
반드시 /cast, /use를 사용하세요
1. 메인 모듈 위크오라 가져오기
!WA:2!LRvZZTXXvElPe5yuo(dUL1MS2UQoWL8ceroIa8d9rzAVaGGsWg8Jfa0YjmCbNpAqmlhmZKEgakkxUQ1Cv24yVh2LooRRAD8bUED5AlFWftCkFW7fDi3svtPkNYrDihmPUK)cYR)ygmyWaqizDivfwsKt39796371V3V(ZtSWyTgtBmT3AsIvBxdDtmz5vRvU0sfv2wEtRsZV302LCQrM8hEPBl32TPfzzBxDltNx(JZ7UJnUIUPDBxsBh88yh1nQSTUMBZtLxdkyNPQlr3CtKRfst3X2qEhKEdKPfAl8ok6MA02uTABOHuWOgwTn1YcTqABULP12MenCd52gUNmVPCl8TwLxlQg(6UkgyZnDB(u71cAxNQ0n3d0GYSAB(QENwPjwwdtOQ1saZnZ7cCDsIP1IyYM4MEpYP(J770wrykxUdWHR1MBAG9ESn8syJQ2KPwUnXicguCvClSPlvnLvD17G9E0B7WiPcVvVV1gEp(j9EKvo1Ksz)yVt79W0AyfVKxIBjOcKNUJ3JsSLDDXetVh7KEp((1Sq(c5jFkVXA6930SpbS326UnfCFqifIjHaPFnGOazCqtDnCfSf4fjB49TAUp1jw1Qnrf)n3v1YWq22H5ioa8rfck)3207XTFsW8jUyt0IwA6n0XeOBTFchELb1TNHElD3AqmqEtlt8EBcbq20IvKje5D8oDfwn5D0Vb(PwW70hqJji6mxU3zS)zjLsook53pjs2udL8CjrTA7WCXazY2yneZOLrNvkrz9TWOKN9CjLsKCIKiDhKSbbgH3bbHKw(mmoWSQmyoGNs2LsfD8RLfivvRwTSmrQnLjWaiMG0n9dcDK2THLPBvqlvAH10B3I6ueXR0GTSNvnX(QGUz1Iw8KWiVSM12)GLB0Wb7(mp0bYMQGRzflDtxLcfxQwXk2Oq8xVHfPLSBD76U6TWIsNW(j6kYvT1KDHbRoWq6DOweqGU61Ozs5ZbfP6mnoD2koUYe3e51n1DFEfUaU(Z97mSuLnqlM7LxUcAo00jeLlTeR8uIYQmcckqBnbKow)ksVcEhqKAlBETCuxMzce8ZetGUc2L5cvBti0WFEpqhU4Y(vHOaQEXONlEe0H9krjE9we0Kc6e6vuYyvZidBQLibdPWfOATKHil56ussj6SxGRsPdx3CZfspfD2lWv40DToUxiSHhvHOYSaeK5IxGaPoPsUqLClwKgYgwDsZKw3F1VH7RoG46RX(zr4BcCg91yK(RrBtwSrpewYPGfmIP6w1gBySOSkXkvl6Vlb5io06OGICvVRZO(40)PybzvZrh6z8vYSraVDzqm2WOL6sbqs32eteDGRxH6GLjQnfZdmhk55vLDCL((jLKc0JiCa5VvzmXihknaQfDjvhUCdWYtfURyreDBkqMCtWxnpg3i4dk5IBv1WYT08P0Hp71TbzYi95YmE2PqAwb121sOCuw3ClU7SKjn92IStjr1PssriWeiKspDpSdU3aEdIy7x(ueDHSbQzJu(SLUpw6Rc6yitaZH8nT47SqoB9(Am8iE0Y(F3J7E4bSudjs8A)(975WvrOiBCei(EzmEuI0f0iK)Xqvp(6rlVPKwVPcS(zi0VepUOlh(9zI(cggAse4c7nnkANet20etS2AHaydgT5kDnlHVpVH(nUrkELrhNuKjuTpz)Al4cfo5xyouMS9hUkynxHALwEPUcaB4G7H3StpqExC1Y1kXfq(CvYmeHm1SJOqYoeHm9fhrHm1qeYStoIcz6HiKlKDefYmdrixCuDSZoeHCPr1XEHKjId3jA8uBxxiceIyoNiIBImPpBMSrjJUwq)5PGUtskz(vRvdIJKK4IyGPpaisE(2zGW7uDfum5hdpTOOrNvl9xKPffl)QRw6yILh5eIPEqKqm9dIeISpisiYC)Lq47sVW9xQGp7xCiSNzYlES8FPHXF2jpw(Zm5GeWlccy6zyRdpSmNz2VUanHeCi5o7f)6I9eVCV4K)1kCuFirGRIbrXCrSVwlZ6s2e9oW2KK47sLQRytzfd2slDjTJzzLcfDKq)OdrJaZXVIIOlbDIjwFDH1d7V9W35to638E3D3pcD07)rh()((O7(t(3p6T)O7(2Fb6O35do6d)pVF8rJaADk)Olu2zORWYp8dGCsZCTbeaHJPVFXZrxyQWHYV4OJkoyan0Sz6vMJmC9GrArtDHEL5iV6SbppcA6l1Rmh55Mg80kaYvefnZ0tFFaL9x0qdmMgEQXHV5VS3nphxwYMy3cg6QBPqpvx2UYOB2CCe9iJ7bpHwbfOijDtkj73Ds3KnSpVo0tSZwwN4KQqDMKf2HdDlCRqSAOBGz9t60r3nUFwxhj)ollBC8y2bAhbGwP5hNTt50SDd5VN5W76UlLPp2Tq35(Al0XeSW3)B4)XoJe2oCbLJD0pbo(Ep0IVM(tUV03KPodrpZphUrYnh6KPIXphRtmwh4XEEdXfCQ0w3qJB00Wt(gAtP2t8Aua9w(h7DWzzfJFJ32ceRwbNsEeXkfiN0rZnJ0dqw9eqcDe2dLF3VzkMIBc0)GTmrUfpwvGuW(2Qb78Czdx0XkAohAhR2izcgStRTOucriX500WUyslDt8RWp38ytOd(auIsoOUqaVue3zVMf4nhzaJiCoO1wCVnghBEg3gOz5V09kIf9ybPlEogKiU9Zd5hh1nlIM0MJxIDsEPJfdJtpR7zhZvYrbjloCSWsIBiubfh6wa2wA0XIUfDXrXyfpWG72w20fRvDua9eN9wVCmOdGlmxfQZhsYdZYEvzhgRIAyjIoP6rMPFafna23Oeqexesyy5ET3id6hx4tie6rdF(bFyqKtweveMZYLTZIaR8frHoouF6uTSzNwlQJSrBSdmvNRf3t7mo1nqr82MDbVMySg96PDW0tMLnyHLvBIKBtKdbckU6ZA8D1GE93ir8tLszRo2SJKQLzd9nLIELP9mvkmy1rQNBrEWByIz1s6MoyIBQWAZ4Oxp2bcXvmdklh)xAtN2kWuTI6hp5zNGEvwNf(t6XJGF29(UNd0WqLFJ0dFik6oLIy9Pe34AFhmpNom9yUfKmKLRe267BPjHfvydpOEqub(GEnU4NmWpG2N)HnZB)lbMEi5oPIAV0KiNUHr(M5wXhk54c7T2jUfHbl0IOV5MycljoOeF5xXMIgMPGvPLKTCGK0eJyACatY5)dZwwBR1PMJ4(O6i1DMBwXWY8nUNac6bKlMHfwVFSXHUKDaeumXFHldA8iMbmXehCkah0ZjODo0KdC(J(dzzmLo(ljClfON7BTv((q(AP772bbMc37qXrb(0hStapQlagLfAc4POVRGVxixO4L4aAyuKnrld9Yt9nMbEJZXB7bKpoQ3KGEcK6Bms4t6XvX6Gbp8hZ1ZfXZ67agmKqi0nLbD7YGVVwqMkQn71EqD3YWQWZbMOd)bRqWBQ7aodm7Hh1YbB0b7i13BeG)ArkdKg5Umd1aeckqxIKlW78CggPg2wcJxQXJbr1AltjaLTc7lN1YUUGjbUuFumO6bohst(cnwSOHYsQ03Bim()nKB4YvedofP3IFQKRUY85QvSE(slnFPLUsvX7ajmdvHLJYEUtPsUSjJlyc3a3FO3ns4HeON3tZQo)L9SHsdiH0PzIDfb(op2ZteF(B9oD(2q2Q9yTDW1LvCSikxflBaHJ4nUd4eypMOQTB0q)6huVqUQ1QxTwUk1UtxYzK6D59lybBGL9(I2L2ivQBSlFh9Aoj4myST8oo0LMSrfoMR3ck8xVqqFTcbd9vLQRuSC591WkqxtFmyKRwS8klSA59ABku9e2pj)r0jYjO6XN(q2pDSpzk(hvOVCkn7NFWVQkd8MYQ7uVbSjwsZ9Kn1PpHklZz9EXf8oTx6BHLDWWEazpqWh(2AqshT56uKeIdga10C2LsdvL9sNVLSUjJrV1EyVFK36E)tWNf6RMex)e)3SB8oJe6Wp9lo6d)pqh9B(5F1N9VGUm6SQjYkH(QF1NF3)Tpx04r)xq7V3np8dFF0r)))8dF3paD4V6ZpA3p9UV3V(OBcfU5)Zx9fFg)mQt4NXMk9d43QKaOl(uCgfmaWbI4iWvIjhjeDRfGCRRTEOPp81G4NPOBVZXydsmhWelrMEWSNNKa8)80h2N9tSar)gO)X2YAWGUmQwnsh(7w77fBmNQ4dikWWswRXTPja2yxfyvJg83zADtiIN0uXv2ac8ptf2RqnrfvdzhNZ4PNipK9Os)WBc2VN87cjC0xEPIElBywdXli814VGWt9NGPHH1JkBiEpD)R7UTfr7Aez7DVM4J9vdsstSphPJfPEM9GzjAWF6H5xUwTLxC)UaG)DNX703gkQiRUf9PyAQrUoVlpHcFA8N37V)pmR3tVHhAScEpBLc1QuEcr5QEpRs1RwAHA(vKZ7zZNRSFXKLZ79S7xg3WLVryrTlc1ERf110mWHQhQA5vRw8AxTyXYRUIhk7D(fhWB4oDBy(LV2sSM(sEte(zApnvQtZRA3cY2oLTu3cQRq5EiBgkzZWRszPvxCLCZd68s8kaqPCfkcuuDfFbLBLQLxUWRWeK33(KzBtmSFMMUU2ox(8NN(WNL0ToFWlF(8zM1(5gm4JnSFzD6i3PSp3GPsBhiavxTUBtcgw8GH2oko4wqGuLPLMsAY9DTufbMFNt8t)gj11Sp3ZvbR3cHo6dU5DFZpLEq8)YVm0jZF4)3NC47(wOStn5SzMK8pdZzO3yN8LlUqTdAqHba8oiG)u)j(7tLHmqdAuQwOsXIlvr1YWI8YNc(jBBDTdY4ur9hNPIYvkKLSdpm5BANCWMtllT6G8XBCapAUatCN4eN4u7dZdG1ypF1B(OhOBY5dSRe2ptmYlt2GmUXCQmJ0mstpwNF)R9N)d
2. 단축키 표시할 위크오라 > 디스플레이 탭에서 [문자 추가]
추가된 문자의 디스플레이 문자에 "%c" 입력하면 위에 공통 문자가 추가됩니다.
사용자 정의 함수에 아래 문자열을 복사해서 붙여넣으세요.
function() local KeyBindOnWA = _G.KeyBindOnWA or CreateFrame("FRAME", "KeyBindOnWA") if not KeyBindOnWA.UpdateList then KeyBindOnWA.UpdateList = {} end KeyBindOnWA.UpdateList[aura_env.id] = aura_env if KeyBindOnWA.GetKeybind then return KeyBindOnWA.GetKeybind(aura_env.state.name) end end
- CapsLock 단축키 CL로 표시
- 마우스5번 버튼
- NUMPAD : N 으로 표시 되도록 추가
테스트
_G.kbTable_master = {}
local spamAura = ""
local spamCount = 0
local updated = false
-- Function to check for WA causing spam
local function spamCheck(checkAura)
local lastAura = spamAura
local prompt = ""
if not checkAura then
prompt = "Global update initiated"
return false, prompt
elseif (lastAura and checkAura == lastAura) then
if spamCount > 3 then
return true
elseif spamCount == 3 then
prompt = checkAura.." is spamming and will be ignored"
spamCount = spamCount +1
return true, prompt
end
else
prompt = checkAura.." triggered an update"
spamAura = checkAura
spamCount = spamCount +1
return false , prompt
end
end
-- Function to parse macros
local function macroParse(actionID, auraName)
-- check if valid Macro
local _, _, body = GetMacroInfo(actionID)
if not body then return false; end
-- look for simple macros, prio on spell macros vs item macros
local macroSpell = body:match("/cast (.*)%s")
if macroSpell then
local _,_,_,_,_,_,macroID = GetSpellInfo(macroSpell)
if macroID then
local type = "spell"
return macroID, type
end
end
-- try to brute force a spellID using the spell that triggered the refresh
if auraName then
local _,_,_,_,_,_,provSpellID = GetSpellInfo(auraName)
if provSpellID then
local searchString = "/cast.*"..auraName
local macroSpellCheck = body:find(searchString)
if macroSpellCheck then
local type = "spell"
return provSpellID, type
end
end
end
-- look for /use strings if no spells are found
local macroItem = body:match("/use (.*)%s")
if macroItem then
-- check if the /use is an equipment slot
local slotCheck = tonumber(macroItem)
if slotCheck and slotCheck < 20 then
local itemID = GetInventoryItemID("PLAYER", slotCheck)
if itemID then
local type = "item"
return itemID, type
end
end
-- check if the /use string is a valid item
local _, itemlink = GetItemInfo(macroItem)
if itemLink then
local itemID = GetItemInfoFromHyperlink(itemLink)
if itemID then
local type = "item"
return itemID, type
end
end
end
-- if nothing extracted return false
return false
end
-- Main Function for populating keybind table
function _G.kbTable_refresh(auraName)
-- checks if master table is created before running
if not _G.kbTable_master then return; end
-- checks if same WA has been spamming and stops it
local spamResult, spamPrompt = spamCheck(auraName)
-- console printout of check results
--if spamPrompt then print (spamPrompt); end
if spamResult then return; end
for slotID=1,180 do
local actionType, actionID, _ = GetActionInfo(slotID)
-- check if button is a macro and get spell / item ID
if actionType == "macro" then
local macroID, macroType = macroParse(actionID, auraName)
if macroID then
actionID = macroID
actionType = macroType
end
end
-- NIL check actionID then populate keybind table
-- keybinds beyond #156 haven't been test yet
if actionID then
local action = slotID
local modact = 1+(action-1)%12
local bindstring = ""
if (action < 25 or action > 72) and (action <145) then
bindstring = 'ACTIONBUTTON'..modact
elseif action < 73 and action > 60 then
bindstring = 'MULTIACTIONBAR1BUTTON'..modact
elseif action < 61 and action > 48 then
bindstring = 'MULTIACTIONBAR2BUTTON'..modact
elseif action < 37 and action > 24 then
bindstring = 'MULTIACTIONBAR3BUTTON'..modact
elseif action < 49 and action > 36 then
bindstring = 'MULTIACTIONBAR4BUTTON'..modact
elseif action < 157 and action > 144 then
bindstring = 'MULTIACTIONBAR5BUTTON'..modact
end
local keyBind = GetBindingKey(bindstring)
if keyBind then
-- truncates mouse button keybinds
local mouseMod, mouseBtn, btnNum = keyBind:match("(.*)(BUTTON)(.*)")
if mouseBtn then
-- if mouseMod == 'SHIFT-' then
if mouseMod == 'S' then
mouseMod = "S"
-- elseif mouseMod == 'CTRL-' then
elseif mouseMod == 'C' then
mouseMod = "C"
elseif mouseMod == 'A'then
mouseMod = "A"
end
keyBind = mouseMod.."M"..btnNum
end
-- items are stored with item name as key to bypass inventory requirement
if actionType == 'item' then
actionID = GetItemInfo(actionID)
end
-- check for nil, changed or empty keybinds before populating
if keyBind and actionID and kbTable_master[actionID] ~= keyBind then
kbTable_master[actionID] = keyBind
updated = true
end
end
end
end
-- clear spamcheck to allow WAs to check for updates
if updated then
spamAura = ""
spamCount = 0
end
end
-- Populate table on init
kbTable_refresh()
'World of Warcraft > [WoW] 위크오라' 카테고리의 다른 글
와우 용군단 광역차단 스턴 트래커 (2) | 2023.06.24 |
---|---|
와우 용군단 스탯 위크오라 수정하는 방법 (0) | 2023.06.10 |
와우 위크오라 볼륨 조절하는 방법 (0) | 2023.06.02 |
와우 용군단 포탈 위크오라 (시즌 1 & 2 / 230601) (1) | 2023.06.01 |
와우 용군단 원한 파티 대상자 이름 표시 위크오라 (3) | 2023.05.28 |