확장팩 팁과 노하우 게시판

전체보기

모바일 상단 메뉴

본문 페이지

[애드온] 미니맵 우클릭으로 월드맵을 열어보자

트럴
댓글: 4 개
조회: 4863
추천: 12
2010-11-26 12:57:17

오늘은 애드온제작시 기본 테크닉인 함수 후킹(hooking)을 간략하게 배워보고,

미니맵을 우클릭하여 월드맵을 열어보도록 하겠습니다.

(너무 세세하게 들어가면 또 복잡해지니까.. 어느정도 그래도 따라할수 있는 순서로 진행하겠습니다.)

 

1.

일단 기본적으로 미니맵의 프레임명을 알아야겠습니다.

와우상에서 마우스를 미니맵에 올려놓고 채팅창에 다음과 같이 쳐봅니다.

(아래부분을 ctrl+c 해서 챗창에 ctrl+v 하세요)

 

/run print( GetMouseFocus():GetName() )    

==>  Minimap

 

보통 저렇게 나오실테고, 다른 미니맵 애드온을 쓰시는분이시라면 다르게 나오시는 분들도 계실껍니다.

아무튼 일단 미니맵프레임 명을 구했습니다.

 

2. 

미니맵명을 Minimap이라고 가정하고 진행하겠습니다.  다른 이름이신분들은 그걸로 사용하시면 됩니다.

마찬가지로 아래 스크립트를 실행해보세요

 

/run print( Minimap:GetScript("OnMouseUp") )

==> function: 어쩌구 저쩌구

 

Minimap:GetScript("OnMouseUp") 이 무슨 뜻이냐면

그 프레임에서 "마우스 버튼을 클릭했다가 띠는 순간" 실행할 함수를 말합니다.

방금 print를 통해서 그게 뭐하는 함수인지는 모르겠지만, 뭔가가 있긴 있구나하는걸 확인했습니다.

 

사실 우리는 그게 뭐하는 함수인지 대충은 알고 있습니다. 미니맵 위에서 마우스를 눌렀다가 떼보세요

네 핑을 그려주는 함수죠. 이제 준비는 끝났습니다.

 

3.

1,2 번까지는 그냥 준비 및 테스트 였고요.. 지금 부터는 실제 lua화일에 쓸 스크립트를 작성하겠습니다.

 

함수 후킹을 사용할텐데요

함수 후킹은 원래 있던놈을 가져와서 내맘대로 바꿔놓고 다시 가져다 놓는걸 말합니다. 일단 무장적 해봅시다.

 

local old = Minimap:GetScript("OnMouseUp"); 

-- Minimap의 OnMouseUp 함수에 대한 포인터를 old 변수에 저장합니다.

-- 즉, old() 하면 해당 함수를 실행하게됩니다.

 

function myMinimap_OnMouseUp( self, ... )

   -- 좌클릭일시는 기존의 old 함수를 실행하고, 우클릭일때는 내가 원하는 월드맵보기를 실행하는

   -- myMinimap_OnMouseUp 함수를 작성합니다.

   -- 여기서 self와 ...는 일단 넘어가봅시다 ^^

   local button = ...

   if button == "LeftButton" then

      old( self, ... );

   elseif button == "RightButton" then

      ToggleFrame(WorldMapFrame)

   end

end

 

Minimap:SetScript("OnMouseUp", myMinimap_OnMouseUp); 

-- Minimap의 OnMouseUp로 우리가 작성한 함수를 등록해줍니다.

 

주석 달아놓은거 빼고 다시 적어보면

 

local old = Minimap:GetScript("OnMouseUp"); 

 

function myMinimap_OnMouseUp( self, ... )

   local button = ...

   if button == "LeftButton" then

      old( self, ... );

   elseif button == "RightButton" then

      ToggleFrame(WorldMapFrame)

   end

end

 

Minimap:SetScript("OnMouseUp", myMinimap_OnMouseUp); 

 

괜히 설명만 장황하지 굉장히 간단하죠 ^^?

 

저 스크립트를 자주 쓰시는 애드온의 lua 화일에 추가하시거나,

좀 해보신분들은 직접 새 lua작성하시면 되겠습니다.

Lv15 트럴

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징

최근 HOT한 콘텐츠

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