본문 바로가기

쓰기

가령 모듈 3가지가

DumpText,

FixLine,

EzTransXP

요렇게 있다고 가정할때


var c0_EzTransXP = new EzTransXP("NoSpace");

var c0_DumpText = new DumpText("KOut,KHex,KHex16");

var c0_FixLine = new FixLine("/ATData/c0.dat");


c0_DumpText.setNext(c0_EzTransXP);//DumpText 이후에 EzTransXP 사용

c0_FixLine.setNext(c0_DumpText);//FixLine다음에 DumpText


SetContext("C0",c0_FixLine);//별명 C0로 컨텍스트 엔진에 추가



이런식으로 썼을때 가령

어떤 텍스트를 번역하고 싶다면

var TrText = GetContext("C0").Translate("원하는 텍스트");


으로 쓸수도 있구요.


만약 직접 자바스크립트로 구동하는 녀석을 짜고 싶다면,


var c1_MyDouble = new Context(function(text){

var TrText = this.getNext().Translate(text);

        return TrText + TrText; //2배!

});


요렇게 해서

직접 쓸거면

c1_MyDouble.Translate("번역할것"); 하거나

SetContext("DoubleType",c1_MyDouble); 요렇게 등록해서 쓰거나요,



특이 개념으로

var Hook1 = new Hook(function(){

var Mem = this.ReadMemory("[EAX]+0x40",100,function(chunk){

for(var i=0;i<chunk.length();i++){

if(chunk[i]==0){

return i;

}

}

return -1;

});

        var Text = ToText(Mem,-1);

var MsgBox = GetDLL("User32.dll").GetFunc("MessageBoxW");

        MsgBox(0,"!!!","Before : "+Text,0);

        var TrText = GetContext("C0").Translate(Text);

        MsgBox(0,"!!!","Before : "+Text,0);


var Data = ToData(TrText,-1);

this.WriteMemory("[EAX]+0x40",Data,-1);

});

SetHook(null,"0x1000",Hook1);


이렇게 만들어볼 수도 있지 않을까 싶어요

분류 :
Talk
조회 수 :
8336
등록일 :
2011.04.21
16:56:33
엮인글 :
https://arallab.hided.net/43654/61c/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/43654

Hide_D

2011.04.21
17:10:51

따로 GetContext, SetContext를 마련해 두는 이유는

각 경우에 따라 다른 플러그인을 사용하는 플러그인이 있을 경우 (FixLine이 유력)

단순히 getNext()로는 충분하지 않기 때문에 그냥 이 플러그인을 해당 Context의 마지막으로 두고

그 플러그인이 번역시에는


GetContext("지정해둔 이름")을 통해 다른 컨텍스트를 불러오기 위해서입니다.

아랄

2011.04.23
00:41:49


var c0_EzTransXP = new EzTransXP("NoSpace");
var c0_DumpText = new DumpText("KOut,KHex,KHex16");
var c0_FixLine = new FixLine("/ATData/c0.dat");

 

c0_DumpText.setNext(c0_EzTransXP);//DumpText 이후에 EzTransXP 사용
c0_FixLine.setNext(c0_DumpText);//FixLine다음에 DumpText

 

SetContext("C0",c0_FixLine);//별명 C0로 컨텍스트 엔진에 추가

// 네, 좋은 방법이네요. v8엔진을 들여다보지 못해 잘 모르겠습니다만
// EzTransXP, DumpText 같은 식별자는 아랄트랜스 코어모듈이 플러그인을 로드할 때 자동으로 선언/정의 하도록 동작해야 겠군요.

 

var TrText = GetContext("C0").Translate("원하는 텍스트");

// 스고이! 간단하고 명료합니다!

 

var c1_MyDouble = new Context(function(text){
 var TrText = this.getNext().Translate(text);
        return TrText + TrText; //2배!
});

// 역시 간단하고 명료합니다!
// 체인 상에 있는 다음 변환함수를 호출하는 룰을 정해 놓는다면
// preTranslate, postTranslate 들이 따로 존재할 필요가 없어지네요

 

 

c1_MyDouble.Translate("번역할것"); 하거나
SetContext("DoubleType",c1_MyDouble); 요렇게 등록해서 쓰거나요,

// 네, 한가지 걱정되는 점은 코드파인더들을 위해 컨텍스트, 모듈 같은 용어들을 다시 정리해야 할 것 같아요.
// 위의 컨셉대로라면 new EzTransXP("NoSpace") 이 한문장은 단순한 모듈객체 생성이 아닌 하나의 컨텍스트 생성이니까요.
// 그래서 컨텍스트 끼리는 체인을 형성할 수도 있고.. 단, 짤 때 순환참조 체인 형성은 주의해야 겠군요.

 

 

var Hook1 = new Hook(function(){

 var Mem = this.ReadMemory("[EAX]+0x40",100,function(chunk){

  for(var i=0;i<chunk.length();i++){

   if(chunk[i]==0){

    return i;

   }

  }

  return -1;

 });

        var Text = ToText(Mem,-1);

 var MsgBox = GetDLL("User32.dll").GetFunc("MessageBoxW");

        MsgBox(0,"!!!","Before : "+Text,0);

        var TrText = GetContext("C0").Translate(Text);

        MsgBox(0,"!!!","Before : "+Text,0);

 


 var Data = ToData(TrText,-1);

 this.WriteMemory("[EAX]+0x40",Data,-1);

});

SetHook(null,"0x1000",Hook1);

// "[EAX]+0x40" 에서 [EAX]는 다른 변수명으로 치환 후 eval 같은 함수를 사용하여 최종 정수 값을 구하는 건가요?
// 그냥 흥미롭고 궁금해서요 ^^;
// 그리고 네이티브 dll 프로시져를 호출하는 부분도 상당히 재밌네요!
// 인자 갯수 잘못주면 재앙이 일어날 수도ㅎㅎ

 

// 암튼 이래저래 굿입니다 히데님 짱짱~, 저는 대찬성~ =ㅁ=b


 

Hide_D

2011.04.23
20:13:45

[EAX]+0x40 같은건 별 수 없이

'직접 코딩한 계산기'를 이용해야 할 것 같습니다.

eval 때리면 이것이 옳은지 틀렸는지 확인하기가 어렵거든요 ㅇㅇ


그 다음으로 translate가 있는데

아무래도

Context.translate(text=string); 와

Context.translate(text=string,aux=string); 두가지가 가능하도록 해야할 것 같네요.

가끔 처리하면서 부가데이터를 함께 넣고 싶었던 적이 한두번이 아니라서요

Hide_D

2011.04.23
20:17:22

모듈 로드의 개념은 두가지가 있을 수 있는데

하나는 외부 UI에서 사용에 '체크'해주면 저 스크립트 내에서 쓸 수 있도록 하는 것과


또 하나는

Import("EzTransXP") 라고 주면 DLL을 불러오고, 외부 UI쪽에 해당 플러그인을 불렀음을 보내주는 것

정도네요.

List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155440   2008-08-03 2008-12-16 00:03
129 Talk [질문] MBCS와 #UNICODE의 관계 [7] 호기심맨 13663   2008-12-14 2008-12-14 22:16
무모한 용기가 화를 부른다고.... '나도 필터란걸 만들어보자' 하고 쓸데없는 결심을 하는 바람에(결심만)...... 요새 1년을 기다려온 투3도 손도못대고 ....... Visual Studio 2005란거 깔고 낑낑대고 있네요.. (왜인지는 모르겠지만 현제 다운받은 아랄소스...  
128 Talk 아랄 디버깅에서 전체문장이 나오고 다시 한글자로 나오는 경우에서요 [2] file 암흑마제 13666   2009-12-21 2009-12-22 23:37
 
127 Talk ATLAS 삽질중.. [3] file 아랄 13771   2008-11-09 2009-01-06 01:15
 
126 Talk 기리기리 버그, [6] Hide_D 13829   2008-10-19 2009-01-06 01:48
기리기리에서는 라인 외부 함수로 @,*를 사용하고 내부 함수(매크로?)로 [] 를 사용하고 있는데, []안에 올바른 매크로가 들어가지 않는 경우, 튕겨버립니다 ezTransXP나 KiriKiri나 둘중에 한녀석 손좀 봐둬야 할듯 =ㅅ=; http://www.aralgood.com/zbxe/13278...  
125 Archive 아야카시 실행파일 수정 [5] file 아랄 13873   2009-01-02 2009-03-24 11:42
 
124 Archive [플러그인, 소스] DenyWord 테스트 버전 20080921 file Hide_D 13927   2008-09-21 2009-01-06 01:25
 
123 Talk 필터에 MFC로 모달리스 창을 띄웠을때=ㅅ=; [4] file Hide_D 13934   2008-12-27 2008-12-30 08:29
 
122 Archive CustomDic 0.3 20080107 또 오류 OTL [5] file Hide_D 13954   2009-01-07 2009-01-08 02:00
 
121 Talk [질문]UTF 코드를 SHIFT-JIS와 KS코드로 변환 [4] 호기심맨 13989   2008-09-02 2008-09-16 23:09
안녕하세요... 요즘 Aral이란 프로그램 덕에 갑자기 컴퓨터가 좋아진 사람입니다. 다시한번 모든 개발자분께 감사하구요.. 저도 아주아주 미약한 실력이지만 .. 참여해 보려고 합니다. (Aral에 도움될 실질적 가능성 0.0001%) 제가 관심가지는 부분은 단순님이...  
120 Archive [플러그인, 소스] OriginalText 테스트버전 [4] file Hide_D 13990   2008-09-12 2009-04-22 11:10
 
119 Talk Vmware 가상 일윈으로 즐기기.. [3] file ㅌㅌ 14029   2008-07-23 2008-07-24 21:11
 
118 OtherFiles CustomDic 090106 쓰레드 에러 도와주세요~ [2] file Hide_D 14035   2009-01-06 2009-01-06 20:47
 
117 Talk 히데님께서 말씀하신 기리기리 오류문제 입니다. [3] file 유르_레릴 14130   2008-11-30 2008-12-30 08:53
 
116 Talk 정식 아랄 플러그인으로 요청하시고 싶다면 Hide_D 14234   2009-07-10 2009-07-10 18:29
원칙적으로는 관리자님께 요청하는 것이 맞지만 관리자님은 유니크 몹이시기 때문에[...] 절 부르시면 소환해 드립니다. 원클릭 서비스도 가능할지도[..]  
115 Archive FixLine v2 20090329 테스트버전 [6] file Hide_D 14317   2009-03-29 2009-03-29 15:51
 
114 Talk 0.3 atcode 플러그인. FrigateBird 14331   2009-12-22 2009-12-22 11:32
사용하면서 폰트셋 지정이 떨어져 나간 부분이 너무 횡하니 느껴지는데요. 그 부분에 코드 걸린것들을 표시하면 어떨까요. (별칭, 주소, 메모리 목록을.) 코드가 여러개 걸리면 그 조그마한 화살표로 왔다리 갔다리 하는것도 진절머리 납니다. ^^; 그리고 폰트...  
113 Talk 어제 말씀드렸던것... 알아냈습니다. file 나는누구인감? 14332   2008-07-10 2008-07-10 14:17
 
112 Archive [번역툴] QuickTrans 0.1.1 [4] HaruKaze 14339   2009-05-04 2009-05-05 22:28
몇가지 버그와 자동 저장기능을 추가한 0.1.1 버전입니다. 다운로드 -- Version History -- 0.1.1 Release 2009-05-04 18:00 - 명령어 예외 목록의 수정 기능이 정상적으로 작동되지 않는 버그 수정 - 프로그램이 비정상적으로 종료될 만한 옵션을 변경할 경우...  
111 Talk 음 제가 컴퓨터를 못하는 사람이라 뻘글일 수도 있겠지만.. [2] 쥬빌 14389   2008-12-30 2008-12-30 12:14
아랄 트랜스의 장점이 게임상의 대사가 바로 한글로 변환 표기되는 것이라 보는데요. 번역률을 높이기 위해 번역본이 있는 게임들은 ez트랜스가 아닌, 미연시 번역본 text과 연동하여 쓸수는 없을까요? ez와의 연동 구조를 잘 모르겠으나..게임상의 일어를 ez...  
110 Talk 0.3의 설계가 안되네요;; [6] 아랄 14431   2008-11-19 2009-01-06 01:22
미연시에 국한된 유틸이 아닌 이제 떳떳한(?) 범용 유틸로 거듭나려하니 욕심만 많아지고,, 리소스 편집기능, 후킹체인 다이어그램 표시 등... 모든 컨셉을 적용하자니 서드파티 플러그인 규격이 복잡해지고 으으.. 아무래도 0.2 레이아웃을 그대로 가져가야 ...