기본 애드온을 사랑하시는 모든 분들께 이글을 바칩니다.
귀찮아서 애드온을 안쓰고 매크로로 이동조정을 했는데
매크로로 누르기 귀찮아서 외국 포럼을 보고 느낀것을 적은것 뿐이오니..
세세한 답변을 못해드리는바.. 이전 양해 부탁드립니다. 기본지식도 없이
애드온 파일을 보고 처리한것이니 이점도 양해 부탁드립니다.
매크로 작동보다 애드온 폴더만들어서 작동하는게 편하지 않을까 하여..
저또한 뼈져리게 원했던 것들만 간츄려서 적어봅니다. (나이가드니 귀찮니즘이....ㅠ)
이렇게 생각하시면 편합니다.
# TOC = LUA 파일과 와우를 잇는 다리
LUA = 애드온 코드 집합
1. 모든 애드온 폴더안에는 xxx.LUA xxx.TOC 파일이 있다.
이 파일만 남겨 놓고 삭제한다.
2. 노트패드로 열어 수정한다.
( 안되면 Notepad++ v5.9 Installer <<<<링크다운)
3.LUA 파일 이름과 TOC 파일이 수정 작성되었다면 저장하고 같은 이름으로 쓴다
ex) Fix.LUA Fix.TOC (LUA와 TOC는 파일형식입니다 그대로 가따가 붙여넣기 하면 안되요 )
4. TOC 파일을 열고 수정한다. (귀찮으면 요거가따가 붙여넣기한다)
## Interface: 40100
## Author: Na
## Title: Fix
## Notes: 변경
## Version : 100125
Fix.lua
Interface: 와우버전입니다 구버전 채크하기 귀찮으시면 40100으로 쓰면 됩니다.
Author: 애드온 제작자입니다 본인의 이름을 쓰세요
Title: 애드온 채크시 표시될 이름입니다. lua 파일에 썼던 이름을 적습니다.
Notes: 애드온의 정보입니다 그냥 적으세요
Version: 애드온의 버전입니다 숫자로 그냥 적으세요
Fix.lua : lua 파일에 썼던 이름을 적습니다.
5. LUA파일에 짧고 원했던 코드를 골라 복사 붙여넣기한다.
6. script 명령어 ( 와우 매크로로 사용했던것) /script 만 빼고 넣으면 작동한다.
7. 단 frame 조정은 다음의 (명령어)에 대체해 쓴다.
frame = CreateFrame("FRAME", "DefaultUIScrips")
frame:RegisterEvent("PLAYER_ENTERING_WORLD")
frame:RegisterEvent("PARTY_MEMBERS_CHANGED")
function eventHandler(self, event, ...)
-- YOUR CODE HERE (명령어)
end
frame:SetScript("OnEvent", eventHandler)
8. 단 애드온 폴더안에 폴더가 잇는것들은 서로 연동된것이니 코드 복사 붙여넣기
하면 헛고생.
7. 예시) 다음의 코드를 lua 파일에 취찮으니 그냥 붙여넣기 하면 잘 작동됩니다.
9. -- XXXX는 주석입니다 그냥 편한데로 쓰시면 됩니다. 나중에 여러개의 코드를
짜집기할때 수정하기 좋으라고 하는거죠.
-- 직업아이콘
local UFP = "UnitFramePortrait_Update"
local UICC = "Interface\\TargetingFrame\\UI-Classes-Circles"
local CIT = CLASS_ICON_TCOORDS
hooksecurefunc(UFP,function(self)
if self.portrait then
if UnitIsPlayer(self.unit) then
self.portrait:SetTexture(UICC)
self.portrait:SetTexCoord(unpack(CIT[select(2,UnitClass(self.unit))]))
else
self.portrait:SetTexCoord(0,1,0,1)
end
end
end)
-- 에러메세지
local U=UIErrorsFrame;U:UnregisterAllEvents()U:RegisterEvent("SYSMSG")U:RegisterEvent("UI_INFO_MESSAGE")
-- 프레임
frame = CreateFrame("FRAME", "DefaultUIScrips")
frame:RegisterEvent("PLAYER_ENTERING_WORLD")
frame:RegisterEvent("PARTY_MEMBERS_CHANGED")
function eventHandler(self, event, ...)
-- 플레이어 프레임
PlayerFrame:SetScale(1.12)
-- 대상 프레임
TargetFrame:SetScale(1.12)
-- 주시 프레임
FocusFrame:SetScale(0.9)
-- 아레나 프레임
local _, type = GetInstanceInfo()
if type == "arena" then
for i=1,MAX_ARENA_ENEMIES do
_G["ArenaEnemyFrame"..i]:SetScale(1.2)
_G["ArenaEnemyFrame"..i]:SetPoint("topright", -80, -50)
_G["ArenaEnemyFrame"..i.."PetFrame"]:SetScale(1.2)
end
end
end
frame:SetScript("OnEvent", eventHandler)
--플레이어 캐스팅
CastingBarFrame:SetScale(1.25)
CastingBarFrame:ClearAllPoints()
CastingBarFrame:SetPoint("CENTER",UIParent,"CENTER", 0, -265)
CastingBarFrame.SetPoint = function() end
--대상 캐스팅
TargetFrameSpellBar:SetScale(1.25)
TargetFrameSpellBar:ClearAllPoints()
TargetFrameSpellBar:SetPoint("CENTER",UIParent,"CENTER", 0, -120)
TargetFrameSpellBar.SetPoint = function() end
--주시 캐스팅
FocusFrameSpellBar:SetScale(2.25)
FocusFrameSpellBar:ClearAllPoints()
FocusFrameSpellBar:SetPoint("CENTER",UIParent,"CENTER", 0, 150)
FocusFrameSpellBar.SetPoint = function() end
--클레스 칼러
local UnitIsPlayer, UnitIsConnected, UnitClass, RAID_CLASS_COLORS =
UnitIsPlayer, UnitIsConnected, UnitClass, RAID_CLASS_COLORS
local _, class, c
local function colour(statusbar, unit)
if UnitIsPlayer(unit) and UnitIsConnected(unit) and unit == statusbar.unit and UnitClass(unit) then
_, class = UnitClass(unit)
c = CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS[class] or RAID_CLASS_COLORS[class]
statusbar:SetStatusBarColor(c.r, c.g, c.b)
end
end
hooksecurefunc("UnitFrameHealthBar_Update", colour)
hooksecurefunc("HealthBar_OnValueChanged", function(self)
colour(self, self.unit)
end)
local sb = _G.GameTooltipStatusBar
local addon = CreateFrame("Frame", "StatusColour")
addon:RegisterEvent("UPDATE_MOUSEOVER_UNIT")
addon:SetScript("OnEvent", function()
colour(sb, "mouseover")
end)
-- 액션바 거리에 따른 색상
hooksecurefunc("ActionButton_OnEvent",function(self, event, ...)
if ( event == "PLAYER_TARGET_CHANGED" ) then
self.newTimer = self.rangeTimer
end
end)
hooksecurefunc("ActionButton_UpdateUsable",function(self)
local icon = _G[self:GetName().."Icon"]
local valid = IsActionInRange(self.action)
if ( valid == 0 ) then
icon:SetVertexColor(1.0, 0.1, 0.1)
end
end)
hooksecurefunc("ActionButton_OnUpdate",function(self, elapsed)
local rangeTimer = self.newTimer
if ( rangeTimer ) then
rangeTimer = rangeTimer - elapsed
if ( rangeTimer <= 0 ) then
ActionButton_UpdateUsable(self)
rangeTimer = TOOLTIP_UPDATE_TIME
end
self.newTimer = rangeTimer
end
end)
위에 써놓은것이 각 애드온에 따른 코드입니다. 그냥 갖다붙이시면 알아서 잘 작동합니다.
scale= 크기 setpoint= 위치입니다.
이것만 아신다면 알아서 수정하실수 있습니다.
또한 이것만 아신다면 각 애드온에 원하는 코드를 빼와서 자신만의 애드온에 추가 할수있다는 말이 되겠죠.
안쓰시는 코드가 있다면 그냥 삭제 해주시면 됩니다. 그래도 잘 작동합니다.
전.. 초보라 짧고 좋은것들만 간추려서 씁니다만.. 아무쪼록 기본 인터페이스를 좋아하는 유저로서
ui포럼이 외국처럼 공유되기를 원하며.. 이만. 허접한 말씀을 올립니다..