Picture 문자는 그림에 문자를 그리는 것이고, 시스템 문자는 휴대폰에 기본 제공되는 글꼴을 호출하는 것으로 기본적으로 외형으로 구분할 수 있습니다. 이런 종류의 게임 텍스트가 중국어로 직접 번역된 후 게임은 모두 " 口 口 口 口 "(공백)으로 표시됩니다. 자체 그림 문자를 사용하는 게임의 경우 중국어 번역 방법에는 매트릭스 중국어화 및 시스템 문자 수정이 포함됩니다. 도트 매트릭스 현지화에는 너무 많은 텍스트, 클래스 파일의 도트 매트릭스 인덱스 등의 제한 사항이 있으며 일부 게임에만 적용 가능합니다. 더 많은 내용이 시스템 단어로 수정되었습니다. 수정을 위해서는 Java 언어에 대한 어느 정도의 이해가 필요하므로, 이 튜토리얼을 읽기 전에 Java를 모르는 경우에는 JAVA 초보자를 다운로드하여 학습하는 것이 좋습니다. 압축 해제). S40 측면 준비 도구: MC, MobyExplorer,
Mocha 디컴파일
BE 바이트코드 편집기
jasmin(/ur l)
(url=http://down2.s60net.com:8118/res/201112/10/17938831/paojiao_94825.jar?) 이전 감사자( /url)
(url=http://down2.s60net.com:8118/res/20118/15/89301505/paojiao_89300.jar?) embler2Jasmin 제거
그림 글꼴을 사용하는 Java 게임 중에서 DigitalChocolate 게임 제조업체의 게임이 가장 간단합니다. 일반적으로 DigitalChocolate 게임이 수정되었습니다. 초콜릿 게임은 학습에 대한 소개입니다. 이 제조사 게임의 수정 방법은 정해져 있는 공식으로 그다지 복잡하지 않습니다. DigitalChocolate의 " My Pet Shop My Pet Store"를 예로 들어 보겠습니다. 게임 압축을 푼 후 Mocha 디컴파일을 사용하여 해당 클래스 파일을 디컴파일하고 간략하게 탐색하여 다음 방법을 찾습니다. 공개? (이미지 이미지, DataInputStreamdatainputstream, Font 글꼴, int?, int?) {} i에 있는 것을 발견했습니다. 클래스에서는 일반적으로 이 메서드의 파일이 3~4K 클래스 파일에 들어 있습니다. 따라서 탐색을 위해 3~4K 파일을 여는 데 우선순위를 두시면 해당 파일을 빠르게 찾을 수 있습니다. 공개 i(이미지 이미지, DataInputStreamdataInputStream, 글꼴 글꼴, inti1, int j1) {int k; int i2; int j2; 문자 ch; if (image ! = null) (생략...) 우리가 해야 할 일은 if (image! = null) 위에 image = null을 추가하는 것입니다. 나에 대해 생각하지 마십시오. Java에 추가하면 작동하지 않습니다. 혼란이나 도구상의 이유로 인해 기본적으로 디컴파일된 Java 파일은 클래스 파일로 다시 컴파일될 수 없습니다. 목적은 바이트코드를 수정하여 달성할 수 있습니다. 먼저 새 폴더 "1"과 "2"를 만들고 i를 넣습니다. 클래스를 넣고 Disassembler2Jasmin 소프트웨어를 열면 두 개의 주소 상자가 있습니다. 첫 번째 E:/1/i를 입력합니다. 클래스의 두 번째 필드인 E:/2를 입력하고 왼쪽 소프트 키에서 "Unshell"을 클릭하고 i를 변경합니다. 클래스는 바이트코드로 디컴파일되어 i를 생성합니다. j 파일. 텍스트 편집기로 i를 엽니다. 소위 바이트코드인 j, 시작 부분에 있음: Invokespecial java/lang/Object/
astore_1을 추가하고 마지막으로: Invokespecial java/lang/Object/
astore_1을 편집하고 추가한 후 저장하고 검토하면 훨씬 편리합니다. --------------- 기본 조작 과정은 이렇습니다. 왜 이렇게 수정해야 합니까? 아래에서 원리에 대해 이야기해 보겠습니다. 나에서. 우리는 java에서 이 메소드를 볼 수 있습니다: public void a (Graphics Graphics, String string, int i1, int j1, int k1) {if (a! = null) {... 그래픽. setClip(i5, j5, k5 - i5, i6 - j5); 제도법. drawImage(a, i1 - (a[i4] & 255), j1 - a[i4] - b2, 20);}i1 += b1 + c;} 그래픽. setClip(i2, k2, i3, j3); return;} 참고: 많은 게임에서는 문자열을 그리기 위해 public void a(그래픽 그래픽, 문자열 문자열, int i1, int j1, int k1...) 메서드를 사용합니다. if 섹션에서 그림을 자르는 setClip 메소드를 볼 수 있습니다. setClip 메소드의 원리는 내용의 일부만 화면에 표시하여 해당 부분에 정확히 위치한 그림의 내용이 표시되도록 하는 것입니다. drawImage는 지정된 그림을 그리는 데 사용되는 메서드입니다. if의 메소드가 그림 단어를 표시하는 데 사용된다고 상상하기 쉽습니다. 제도법. setFont(a); int j2 = 그래픽. getColor();if (a){......그래픽. setColor(b); 제도법. drawString(string, i1, j1 - 1, k1); 제도법. drawString(string, i1 - 1, j1, k1); 제도법. drawString(string, i1 + 1, j1, k1); 제도법. drawString(string, i1, j1 + 1, k1);} 그래픽. setColor(a); 제도법. drawString(string, i1, j1, k1); 제도법. setColor(j2);} 참고: if 아래 부분이 핵심 부분입니다. 문자열을 그리는 drawString 메소드를 보았으므로 이 메소드가 if 내부의 부분을 실행하지 않고 아래의 시스템 단어 부분으로 직접 이동하도록 해야 한다는 것을 알았습니다. (보충: 조건발산문을 다른 조건에 따라 다른 프로세스로 변환하면. 그러면 처음을 보면 if (a! = null) 변수 a를 판단하여 판단한다는 것을 알 수 있습니다. 그리고 이 변수는 어디에 정의되어 있습니까? 앞서 우리가 public c(Image image, DataInputStreamdatainputstream, Font Font, int i, int j) 메소드에 대해 이야기했는데, 잘라서 살펴보는 것이 좋을 것 같습니다. public i(Image image, DataInputStreamdataInputStream, 글꼴 글꼴, int i1, int j1) {int k; int j2; char ch; if (image ! = null) {a = image;b = j1; a = j1! = -1; } 참고: 이 메서드에는 변수 a가 포함되어 있으며 이 변수의 역할은 이미지 수량이 null인지 여부를 결정하는 것입니다. 그런 다음 else에서 = 글꼴을 보았습니다. 이 문장은 a(글꼴 변수)에 글꼴 양을 할당한다는 의미이며, 이는 시스템 글꼴을 a에 할당하는 것으로 이해될 수 있습니다. 따라서 우리는 이 메서드가 항상 else를 실행하도록 하여 if(image ! = null); 앞에 image = null을 추가할 수 있기를 바랍니다. 이런 식으로 처음에는 image의 값이 null이고 else의 부분이 실행됩니다. 바이트코드에서: aload_1ifnull Label216은 if(image! = null)에 해당합니다. (도구 때문에 컴퓨터보다 휴대폰에서 위치를 수정하는 것이 더 어렵습니다.) aload_1은 로컬 변수가 참조하는 첫 번째 객체(1)를 로드하고 스택에 푸시하는 것입니다. 첫 번째 지역 변수는 메서드 이름의 첫 번째 위치에 있는 이미지에 해당합니다. 이미지에 대해 null 금액을 생성하려면 여기에 image=null을 추가하세요. aconst_nullastore_1 원리에 대해 더 알고 싶다면 Java Bytecode Revealed를 살펴보세요. astore_1의 "1"은 이전 if(image ! = null)를 기반으로 한다는 점에 유의해야 합니다. 세 번째 줄은 aload_1입니다. 여기서는 1이고 astore_1도 1이어야 합니다. 차례로 aload_2이면 astore_2여야 합니다. aconst_null
astore_1 이 코드 세그먼트는 비교적 기계적이므로 기억할 수 있습니다. Digital Chocolate에서 제작한 게임은 상대적으로 고정되어 있으므로 게임을 현지화하려는 모든 사람은 이러한 방식으로 수정해야 합니다. DC의 게임 수정은 기본적으로 많은 게임 수정의 기초입니다. 그러므로 모두가 철저하게 숙지하는 것이 좋습니다. 다른 제조사의 게임은 그리 쉽지 않고, 같은 제조사의 게임이라도 수정 방법이 다를 수 있습니다. 필요한 것은 지속적인 학습과 실천, 경험 축적, Java에 대한 이해 심화입니다.
-------------------디지털 초콜릿 게임 텍스트의 중국어 버전입니다. 그림 문자를 시스템 문자로 성공적으로 변경한 후 텍스트를 직접 중국어화할 수 있습니다. 언어 파일은 기본적으로 l0_0, l0_1, l0_2 등입니다. "My Pet Store"에서는 일반적으로 중국어 l0_0(영어)을 선택합니다. 컴퓨터 도구 Halo의 SUMEA 폴더에 있는 플러그인을 사용하여 직접 열고 수정하세요. 휴대폰에서는 16진수를 사용해야 합니다. l0_0을 16진수로 엽니다. 00 00 3c 75는 총 바이트 수 15477을 나타내고, 00 00 01 6c는 시작 바이트의 총 수 364를 나타내며, 00 00 05 b8, 00 00 05 c1...은 필드 시작 바이트를 나타냅니다. 필드 시작 바이트는 무엇입니까? 왼쪽 소프트 키 - 편집 - 주소로 이동하여 주소 0x5b8 또는 십진수 1464를 입력합니다. 확인 후 영어의 바이트 번호 00 06으로 이동하는 것을 알 수 있습니다. 그런 다음 두 번째 0x5c1을 입력하여 아래 Ok의 00 02로 이동합니다. 각 시작 바이트는 차례로 다음 필드에 해당합니다. 직설적으로 말하면 5b8은 00 06 이전의 총 바이트 수입니다. 현지화하면 바이트 수가 변경되며 이를 수정해야 하는데 이는 상당히 복잡하고 번거롭습니다.