제가 kgpanel로 접속시 자동으로 전문기술을 표시하고 클릭시 창이 뜨도록 만들고 있습니다.
본문
거의 90% 완성된 상태인데, 마지막으로 해결되지 않는 문제가 있어 여기에 질문 드립니다.
현재 사용하는 코드는
1. on Load
<1번 전문기술> --- 2번전문기술은 prof2로 사용
self:RegisterEvent("PLAYER_ENTERING_WORLD")
self:RegisterEvent("SKILL_LINES_CHANGED")
self:RegisterEvent("TRADE_SKILL_UPDATE")
self:RegisterEvent("CRAFT_UPDATE")
local prof1, prof2 = GetProfessions("player")
local name = GetProfessionInfo(prof1)
if name == "전문기술이름" then self:Show() else self:Hide() end;
2. on Click
if pressed then CastSpellByName("전문기술이름") end
<문제점1>
우선 위 동영상에서도 볼 수 있듯이, 전문기술을 바꾸면 바로 적용되지 않고 꼭 reload하거나 재접해야만 전문기술변화가 반영됩니다. 이걸 어떻게 해결해야할지 모르겠습니다.
<문제점2>
전문기술 두개를 다 배웠을때는 오류가 나지 않지만, 전문기술을 하나만 배우거나 둘다 배우지 않았으면 오류가 발생합니다.
제가 GetProfessionInfo()를 사용해서 오류가 나는 것으로 확인되었는데, 만약 전문기술을 하나만 배웠거나 둘다 안배웠다면 값을 어떻게 줘야 오류가 발생하지 않는지 알고 싶습니다.
1x [string "전문기술2-주각2-1_on__load"]:6: Usage: GetProfessionInfo(index)
[C]: in function `GetProfessionInfo'
[string "전문기술2-주각2-1_on__load"]:6: in function `y'
kgPanelskgPanels-r448.lua:1124: in function `Setupsc__ript'
kgPanelskgPanels-r448.lua:816: in function `Initsc__ripts'
kgPanelskgPanels-r448.lua:802: in function `PlaceFrame'
kgPanelskgPanels-r448.lua:709: in function `ApplyLayout'
kgPanelskgPanels-r448.lua:507: in function
(tail call): ?
[C]: ?
[string "safecall Dispatcher[1]"]:9: in function <[string "safecall Dispatcher[1]"]:5>
(tail call): ?
...aceMasqueLibsAceAddon-3.0AceAddon-3.0-12.lua:558: in function `EnableAddon'
...aceMasqueLibsAceAddon-3.0AceAddon-3.0-12.lua:651: in function <...aceMasqueLibsAceAddon-3.0AceAddon-3.0.lua:636>
[C]: in function `LoadAddOn'
FrameXMLUIParent.lua:429: in function `UIParentLoadAddOn'
FrameXMLUIParent.lua:456: in function `CombatLog_LoadUI'
FrameXMLUIParent.lua:1116: in function
Locals:
nil
위에 코드가 오류내용입니다.
GetProfessionInfo()를 어떻게 무효화 시키는지 궁금합니다. 아님 다르게 우회하는 방법이라도 알고 싶습니다.
감사합니다.
1) on__load는 이름 그대로 프레임 최초 로드 시 한번만 호출되기 때문에, 전문 기술 변경시 그 EVENT를 검출하여 작동하는 OnEvent 핸들러를 추가로 작성하셔야 할듯 합니다. 2) GetProfessionInfo에 prof1 ,prof2를 넣기 전에 각각의 nil 검사를 해주면 될듯 합니다 if prof1 then local name = GetProfessionInfo(prof1) .... end
감사합니다 ^^ 이걸로 며칠을 혼자 머리싸메다 못했는데....한방에 해결했습니다. 다시한번 정말 감사합니다.