확장팩 팁과 노하우 게시판

전체보기

모바일 상단 메뉴

본문 페이지

[애드온] 애드온 수동픽스 참고

ROAMO
댓글: 10 개
조회: 5929
추천: 46
비공감: 1
2012-08-30 05:21:47

만역 여러분의 애드온 세팅이 지금도 누군가에 의해 아주 잘 관리되고 있다면 (통합애드온) 읽을 필요 없다.



소판다를 앞두고 아직까지 베타나 PTR 중 아무 것이라도 설치하고 애드온을 관리하지 않은 잉여라면

이제 곧 몇 시간 뒤 패치로 인해 오만 잡상 애드온의 오작동과 엄청난 렉,

그리고 (메시지 표시를 켜뒀다면) 끝없이 뜨는 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 에러면 이렇게 뗌빵해놓을 것을 추천한다.

Lv34 ROAMO

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징

최근 HOT한 콘텐츠

  • 와우
  • 게임
  • IT
  • 유머
  • 연예
AD