ROAMO
2012-08-30 05:21
조회: 5,438
추천: 46
애드온 수동픽스 참고만역 여러분의 애드온 세팅이 지금도 누군가에 의해 아주 잘 관리되고 있다면 (통합애드온) 읽을 필요 없다. 이제 곧 몇 시간 뒤 패치로 인해 오만 잡상 애드온의 오작동과 엄청난 렉, 그리고 (메시지 표시를 켜뒀다면) 끝없이 뜨는 Lua 에러 메시지에 엌소리가 날 것이다. 후회하면 뭐하나. 이미 늦은걸. (그것도 그렇지만 사실 격변 막판에 애드온 업뎃이 끊긴 게 좀 많다 ㅡ,.ㅡ) 급한 불부터 꺼야겠다면 다음 가이드를 참조한다. 1. 백업은 필수. Interface, WTF 둘 다 백업한다. 2. 매 패치마다 그렇듯 와우를 실행하고 구버전 애드온 활성화를 해준다. 3. 실행하고 잠시간 수많은 애드온 에러에 범벅이 된 화면을 음미한다. 애드온게이라면 더더욱 향이 짙을 것이다. 4. 인터페이스 설정으로 가서 도움말에서 Lua 메시지를 표시하도록 체크한다. 5. 모든 애드온 코드에서 Search & Replace를 수행할 수 있는 에디터가 필요하다. Notepad++라면 족할 것이다. 다음 문자열을 애드온 폴더의 모든 *.lua와 *.xml 파일에서 찾아 바꿔준다. *애드온 에러메시지를 보고 코드를 열어 그 부분만 수정해줘도 좋고, 확 다 돌려버려도 웬만하면 문제는 없을 것이다 *Lua는 대소문자를 가린다는 점에 유의. 복붙하자. *에러메시지 뜰때마다 보고 해당하는 문자열만 전체 파일 바꾸기로 바꿔주는 게 가장 편하다. *WTF 폴더의 내용물은 보통 안 돌려도 되지만 필요하다면 돌린다. 가끔 WTF에 코드를 넣는 변태 애드온들이 있다. GetActiveTalentGroup → GetActiveSpecGroup SetActiveTalentGroup → SetActiveSpecGroup GetNumTalentGroups → GetNumSpecGroups GetPrimaryTalentTree → GetSpecialization GetUnspentTalentPoints → GetNumUnspentTalents GetNumTalentTabs → GetNumSpecializations GetTalentTabInfo → GetSpecializationInfo GetTalentTreeRoles → GetSpecializationRole IsRaidLeader → UnitIsGroupLeader IsPartyLeader → UnitIsGroupLeader UnitIsPartyLeader → UnitIsGroupLeader IsRaidOfficer → UnitIsGroupAssistant UnitIsRaidOfficer → UnitIsGroupAssistant GetNumPartyMembers → GetNumSubgroupMembers GetRealNumPartyMembers → GetNumSubgroupMembers GetNumRaidMembers → GetNumGroupMembers GetRealNumRaidMembers → GetNumGroupMembers RAID_ROSTER_UPDATE → GROUP_ROSTER_UPDATE PARTY_MEMBERS_CHANGED → GROUP_ROSTER_UPDATE LootSlotIsItem → LootSlotHasItem UIPanelButtonTemplate2 → UIPanelButtonTemplate 6. 와우를 끄고 켠다. 리로드를 해도 되긴 하다. 이 외에 해당하는 문제 (특히 특성별 GetSpellInfo 계열 Invalid spell slot 에러)는 애드온 업데이트를 기대하자. 남은 잡 애드온들이 에러를 뿜는다면 일단 꺼두는 게 좋다. 아래는 참을성 없는 분을 위한 수정 경험담. Invalid spell slot 에러가 나는 애드온이 한두개가 아니라서 (RangeDisplay, ForteXorcist, Prat) 나중에 수정할 일을 대비해 기록보관도 할 겸 수정방법을 적는다. 직접 수정하려면 Lua 지식이 필요하다. 문제가 되는 함수(군)의 레퍼런스는 아래 링크에 있다. 대개 스펠 나열 코드에서 문제가 일어난다. 딱히 이 API에서 변화에 블포 언급이 없었던 걸로 알고 있지만, 구글링해보니 격변에서는 잘못된 슬롯 (첫번째 인자)에 nil을 뱐환하나 이젠 에러를 일으키는 것으로 변경된 듯 하다. (덕분인지 모르겠지만 특성 기술 3개를 매크로로 묶어도 글쿨에 걸려 시전 안되는 일이 없는 건 좋다 ㅎㅎ) 예제로 RangeDisplay는 다음 코드에서 에러를 뿜는다. local spell, rank = GetSpellName(i, BOOKTYPE_SPELL); 이걸 다음과 같이 수정하면 해결할 수 있다. (pcall은 구글링하기 바람) local spell, rank pcall(function() spell, rank = GetSpellName(i, BOOKTYPE_SPELL); end)) pcall 안에 lambda function이 들어가기에 local 선언을 바깥으로 빼줘야 한다. (예문으로 든 spell, rank는 어차피 nil로 초기화된다) 비단 GetSpellName 뿐 아니라 GetSpellInfo, GetSpellBookItemInfo 등 수많은 기술 조회 API들이 이런 변경을 겪었기 때문에, 에러가 날때마다 Invalid spell slot 에러면 이렇게 뗌빵해놓을 것을 추천한다.
EXP
9,876
(9%)
/ 10,601
ROAMO
|
인벤 공식 앱
댓글 알람 기능 장착! 최신 게임뉴스를 한 눈에 보자