본문 바로가기

쓰기

안녕하세요, whoami입니다.

질리지도 않고 프레임워크가 하나 더 올라갔습니다 -_-; 이번에는 유니코드 관련 문제 때문입니다.

관리자님이 올려주신 플러그인 소스는 유용하긴 한데 처음부터 만들려면 막막해지죠. 그래서
플러그인 개발하기 위해 플러그인 사양에 맞게 처음부터 만들 필요가 없게 기본바탕이 되는 프레임을
구성해보았습니다. 이 상태에서 ATPlugin.h 의 define 부분만 바꿔서 그대로 컴파일해도 작동되는
플러그인을 만들 수 있습니다 (단, 아무일도 하지 않습니다.. 당연하겠지만서도;)

이 소스는 Public Domain, 곧 저작권 없는 소스입니다. 프레임워크이니까 당연하겠죠? ^^

다운로드는.. ATPluginFrame_20080712.zip


*ps. Hide_D군님 - 게임 폴더.. 라기보다는 현재 실행되는 프로그램의 폴더를 알려주는 함수는 GetATDirectory 함수를 조금 변형하면 됩니다. 다음의 한 줄을 변경하세요. 비슷한 함수 중복인 것 같아서 따로 넣지는 않았습니다.

// _T("ATCTNR.DLL") 을 NULL 로 변경하면 현재 실행중인 exe 파일의 폴더를 알아올 수 있다.
GetModuleFileName(GetModuleHandle(NULL), szDirectory, MAX_PATH);



아래는 ReadMe.txt 의 내용입니다.
-----------------------------------------------------------------------------------------------------------------
아랄 트랜스 플러그인 개발 프레임워크 20080712 for AralTrans 0.2.20080704

* 파일 설명
 ATPlugin.h - 아랄트랜스 플러그인 규격에 맞는 익스포트 정보.
 ATPlugin.cpp - 아랄트랜스 플러그인이 제공해야 하는 실제 함수 모음
 DefATContainer.h - 아랄트랜스 컨테이너가 제공하는 함수의 원형 (ATCode 플러그인에서 슬쩍 ^^)
 ATCApi.h / ATCApi.cpp - 아랄트랜스 컨테이너 제공 함수를 사용하기 쉽게 Wrapping한 클래스
 tstring.h / tstring.cpp - 유니코드용 변환 함수 및 string 지원 모듈
 Util.h / Util.cpp - 플러그인 제작시 유용한 유틸리티 함수 모음
 ATPlugin.dsw / ATPlugin.dsp - Visual C++ 6.0 용 프로젝트 파일

* 후킹 플러그인을 만들 때
 ATPlugin.h 의 #define ATPLUGIN_HOOKER 를 주석 해제하시고 개발하세요.

* 번역 플러그인을 만들 때
 ATPlugin.h 의 #define ATPLUGIN_TRANSLATOR 를 주석 해제하시고 개발하세요.

* ATPLUGIN_VERSION 과 OnPluginVersion()
 0.2.20080518 공식 플러그인 규격은 아니지만 이후 플러그인 사양이 변했을 때 아랄트랜스
 제작자께서 참조 가능하도록 추가했습니다;

* ATCApi 사용하기 위한 준비
 1. ATCApi.h 를 include 하면 전역 객체로 g_cATCApi가 잡힙니다.
 2. g_cATCApi의 IsValid() 가 TRUE 이면 사용 가능.

* 유니코드 기반 프로젝트를 만들 때
 Visual C++ 6.0 설정의 컴파일러 옵션 define 중 _MBCS 를 지우고 UNICODE, _UNICODE 를 대신 넣으면 됩니다.
 동봉된 프로젝트 파일에는 유니코드용/MBCS용의 설정이 둘 다 있습니다.
 다른 버전의 컴파일러 사용시에는 각 버전의 유니코드 설정 방법을 참고하세요.

* tstring 모듈의 함수 간단 설명
 tstring - 유니코드 설정에 따라 string 혹은 wstring 으로 동작합니다.
 tstring MakeTString(const char *pszString) - char 형식의 문자열을 tstring 으로 바꿔줍니다.
 TCHAR MakeTChar(const char ch) - char 형식의 문자를 TCHAR 로 바꿔줍니다.. 실제로는 필요없을지도;
 MyWideCharToMultiByte() - WideCharToMultiByte 대용 함수입니다. 어플로케일때문에 이렇게 사용해야 한다고..
 MyMultiByteToWideChar() - MyMultiByteToWideChar 대용 함수입니다. 어플로케일때문에 이렇게 사용해야 한다고..
 Kor2Wide(LPCSTR lpKor, LPWSTR lpWide, int nWideSize) - 한글일 경우 MyMultiByteToWideChar를 쉽게 쓰기 위한 간략함수입니다.
 Wide2Kor(LPCWSTR lpWide, LPSTR lpKor, int nKorSize) - 한글일 경우 MyWideCharToMultiByte를 쉽게 쓰기 위한 간략함수입니다.

* Util 함수 간단 설명
 const char *GetATDirectory()
 - 아랄트랜스 설치 디렉토리를 알아온다.
 void GetATOptionsFromOptionString(const char *pszOption, ATOPTION_ARRAY &aOptions)
 - 간단한 옵션 파서. 옵션은 key1(value1),key2(value2) 형식 혹은 key1,key2 도 가능.
 void GetOptionStringFromATOptions(const ATOPTION_ARRAY &aOptions, char *pszOption, int nMaxOptionLength)
 - 위의 옵션 파서와 반대로 옵션 모음을 옵션 문자열로 바꿔주는 함수.

조회 수 :
11600
등록일 :
2008.07.12
18:03:14
엮인글 :
https://arallab.hided.net/3308/584/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/3308

Hide_D

2008.07.12
19:28:07
... 못찾은 저는 까막눈인듯 ㄱ-

whoami

2008.07.12
21:12:44

Hide_D군님/
const TCHAR *GetExeDirectory()
{
 static TCHAR szDirectory[MAX_PATH]={_T(''),};
 int i;
 
 if (szDirectory[0] != _T(''))
  return szDirectory;

 // _T("ATCTNR.DLL") 을 NULL 로 변경하면 현재 실행중인 exe 파일의 폴더를 알아올 수 있다.
  GetModuleFileName(GetModuleHandle(NULL), szDirectory, MAX_PATH);

 for(i=lstrlen(szDirectory); i>=0; i--)
 {
  if (szDirectory[i] == _T('\'))
  {
   szDirectory[i]=_T('');
   break;
  }
 }
 return szDirectory;
}

List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜 최근 수정일sort
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155437   2008-08-03 2008-12-16 00:03
429 Archive [소스] AralTrans 0.2 - 이지트랜스 플러그인 file 아랄 18512   2008-06-22 2008-06-22 01:47
 
428 Archive [소스] Aral Trans 0.2 - 기리기리 플러그인 file 아랄 18550   2008-06-22 2008-06-22 01:52
 
427 Archive [소스] AralTrans 0.2 - ATCode 플러그인 [1] file 아랄 18376   2008-06-27 2008-06-27 05:23
 
426 Archive [플러그인, 소스] MultiPlugin [11] file whoami 18212   2008-07-03 2008-08-15 00:19
 
425 Archive [플러그인, 소스] preHK2FK [3] file whoami 23991   2008-07-04 2009-01-06 02:08
 
424 Talk 1빠!!! [1] 아랄 19435   2008-07-08 2011-06-28 01:25
옹예~  
423 Talk 2등 ~ [3] 앙마vv 15977   2008-07-08 2008-09-17 00:31
2등 입니다 ㅋㅋㅋㅋ ........... 뭐... 뭐 어쩌라는거지 .......... 그나저나 이곳 뭐하는곳 ??????? ㄷㄷㄷ;;  
422 Talk 브라반 대체 뭐가 문제인걸까요 orz Hide_D 15988   2008-07-08 2008-07-08 13:54
추출된 스크립트도 문제가 없고 소스를 분석해봐도 문제는 없는데 =ㅅ=;;;  
421 Talk [버그 보고?]브라반 드디어 원인을 찾았습니다. orz [6] Hide_D 15593   2008-07-08 2008-07-09 16:23
엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉엉 0x3010 0x3011이용해서 대사 처리하는 녀석들을 찾아보았더니 http://aralgood.com/zbxe/26860 루이는 토모를 부른다. 가 있더군요. 요건 그 일부분! ------------------------------------------------------...  
420 Archive [버그 수정?]기리기리 이름 버그 수정 파일 [20080709 수정] [6] file Hide_D 16004   2008-07-08 2008-07-19 03:24
 
419 Talk [질문] HKCU/Software/AralGood/M2WAddr ? [3] whoami 14960   2008-07-08 2008-07-08 19:14
// CATCodeMgr::Init(ATCodeMgr.cpp) 중에서... // 어플로케일 관련 함수 m_sTextFunc.pfnOrigMultiByteToWideChar = (PROC_MultiByteToWideChar) CRegistryMgr::RegReadDWORD(_T("HKEY_CURRENT_USER\Software\AralGood"), _T("M2WAddr")); m_sTextFunc.pfnOri...  
418 Talk AGTH의 /L과 AT의 /L [1] Hide_D 17165   2008-07-08 2008-08-12 00:50
AT에서는 어플로케일 메시지가 뜨는데, AGTH에서는 그게 안뜬단 말이죠? 자체 구현인가...하면, 어플로케일이 없으면 /L옵션이 안먹는걸로 봐선 똑같이 어플로케일을 사용하는 것일텐데.. 이놈들은 어떻게 어플로케일 메시지가 안뜨게 하는걸까요?  
417 Archive [플러그인, 소스] MultiPlugin 20080709 [2] file whoami 18645   2008-07-09 2008-08-15 00:18
 
416 Talk 기리기리 번역... [8] 나는누구인감? 18994   2008-07-09 2008-07-10 13:34
루이토모를 하다보니 대사창이 아닌곳에 텍스트를 뿌리는 장면이 있더군요. 초반에 채팅창이 나오는데 그 채팅창이 이미지로 되어있는줄 알았는데 텍스트였습니다... 스크립트 열어보니 해당부분 번역되어 있더군요. 루이토모 외에 Temptation-Naked 2도 이런...  
415 Talk 일단 기리기리 미 번역 파트(선택지) 보고? file Hide_D 14675   2008-07-10 2008-07-10 00:34
 
414 Talk RealLive 게임 목록 Hide_D 16885   2008-07-10 2009-01-06 01:27
자게에도 써놨지만, 원래 있어야 할 위치는 여기인것 같아서.. http://www.product.co.jp/?enter=1&page=1 商品?分를 PC게임 키네틱노벨 로 맞추면 됩니다.  
413 Talk 어제 말씀드렸던것... 알아냈습니다. file 나는누구인감? 14332   2008-07-10 2008-07-10 14:17
 
412 Archive [플러그인, 소스] CmdFilter 테스트 버전 20080712 [1] file whoami 14942   2008-07-12 2009-01-06 01:00
 
411 Talk 줄 바꿈을 n으로 하는 게임에서 벽뚫기 방지 해결책 [1] Hide_D 15082   2008-07-12 2008-07-12 18:09
http://aralgood.com/zbxe/33245 여기 스샷보고 생각난건데, 자릿수를 지정해 주고, n을 새로 먹여주면 벽뚫기가 줄어들지 않을까요.  
» Archive [소스] 플러그인 개발을 위한 기본 프레임워크 20080712 [2] file whoami 11600   2008-07-12 2008-07-12 21:12
안녕하세요, whoami입니다. 질리지도 않고 프레임워크가 하나 더 올라갔습니다 -_-; 이번에는 유니코드 관련 문제 때문입니다. 관리자님이 올려주신 플러그인 소스는 유용하긴 한데 처음부터 만들려면 막막해지죠. 그래서 플러그인 개발하기 위해 플러그인 사...