Bildzeichen dienen zum Zeichnen von Zeichen auf Bildern, während Systemzeichen dazu dienen, die mit dem Telefon gelieferten Schriftarten aufzurufen, die grundsätzlich vom Erscheinungsbild unterschieden werden können. Nachdem der Text eines solchen Spiels direkt ins Chinesische übersetzt wurde, wird im Spiel „口口口口口口“ (leer) angezeigt. Für Spiele, die eigene Bildzeichen verwenden, umfassen die chinesischen Übersetzungsmethoden die Matrix-Chinesisierung und die Modifikation von Systemzeichen. Die Punktmatrix-Lokalisierung hat ihre Grenzen, wie z. B. zu viel Text, Punktmatrix-Indizes in Klassendateien usw., und ist nur auf einige Spiele anwendbar. Weitere werden in Systemwörter umgewandelt. Für die Änderung müssen Sie über ein gewisses Verständnis der Java-Sprache verfügen. Wenn Sie Java nicht kennen, empfehlen wir Ihnen daher, vor dem Lesen dieses Tutorials JAVA herunterzuladen und zu lernen , um JAVA zu verstehen (muss sein). dekomprimiert). S40-Seitenvorbereitungstools: MC, MobyExplorer,
Mokka-Dekompilierung
BE-Bytecode-Editor
jasmin(/ur l)
(url=http://down2.s60net.com:8118/res/201112/10/17938831/paojiao_94825.jar?) prev auditor ( /url)
(url=http://down2.s60net.com:8118/res/20118/15/89301505/paojiao_89300.jar?) Disass embler2Jasmin
Unter den Java-Spielen, die Bildschriftarten verwenden, sind die Spiele des Spieleherstellers DigitalChocolate die einfachsten. Im Allgemeinen wird das DigitalChocolate-Spiel modifiziert. Das Schokoladenspiel ist eine Einführung in das Lernen. Die Modifikationsmethode des Spiels dieses Herstellers ist eine feste Formel und nicht sehr kompliziert. Nehmen Sie als Beispiel „ My Pet Shop My Pet Store“ von DigitalChocolate. Nachdem Sie das Spiel dekomprimiert haben, verwenden Sie die Mocha-Dekompilierung, um die darin enthaltenen Klassendateien zu dekompilieren, und durchsuchen Sie sie kurz, um die folgenden Methoden zu finden: öffentlich? (Bild image, DataInputStreamdatainputstream, Schriftart, int?, int?) {} Wir haben festgestellt, dass es sich in i befindet. Im Unterricht liegen die Dateien dieser Methode im Allgemeinen in Klassendateien von 3 bis 4 KB vor. Geben Sie daher dem Öffnen von 3- bis 4K-Dateien zum Durchsuchen Vorrang, dann werden Sie sie schnell finden. public i (Bildbild, DataInputStreamdataInputStream, Schriftart, inti1, int j1) {int k; int i2; int j2; char ch; if (image ! = null) (weggelassen...) Was wir tun müssen, ist image = null über if (image! = null) hinzuzufügen. Denken Sie nicht darüber nach. Das Hinzufügen in Java wird nicht funktionieren. Aus Verwirrungs- oder Toolgründen kann die dekompilierte Java-Datei grundsätzlich nicht wieder in eine Klassendatei kompiliert werden. Der Zweck kann durch Ändern des Bytecodes erreicht werden. Erstellen Sie zunächst die neuen Ordner „1“ und „2“ und legen Sie i ab. Fügen Sie die Klasse ein, öffnen Sie die Software Disassembler2Jasmin und es gibt zwei Adressfelder. Füllen Sie das erste aus, E:/1/i. Füllen Sie das zweite Feld der Klasse aus, E:/2/Klicken Sie in der linken Softtaste auf „Unshell“ und ändern Sie i. Die Klasse wird in Bytecode dekompiliert, wodurch i generiert wird. j-Datei. Öffnen Sie i mit einem Texteditor. j, das ist der sogenannte Bytecode, der am Anfang steht: invokespecial java/lang/Object/
astore_1 vor aload_1 hinzuzufügen und schließlich: invokespecial java/lang/Object/
astore_1 hinzu und speichern und überprüfen Sie es dann, was viel praktischer ist. -------------Der grundlegende Bedienungsprozess ist so. Warum müssen Sie ihn so ändern? Lassen Sie uns über das folgende Prinzip sprechen. Im i. Wir sehen diese Methode in Java: public void a (Graphicsgraphics, String string, int i1, int j1, int k1) {if (a! = null) {...graphics. setClip(i5, j5, k5 - i5, i6 - j5); Grafik. drawImage(a, i1 - (a[i4] & 255), j1 - a[i4] - b2, 20);}i1 += b1 + c;}graphics. setClip(i2, k2, i3, j3); return;} Hinweis: Viele Spiele verwenden die Methode public void a (Graphics Graphics, String string, int i1, int j1, int k1...), um Zeichenfolgen zu zeichnen. Im if-Abschnitt sehen wir die setClip-Methode zum Ausschneiden von Bildern. Das Prinzip der setClip-Methode besteht darin, nur einen Teil des Inhalts auf dem Bildschirm anzuzeigen, sodass der Inhalt des Bildes angezeigt wird, der sich genau in diesem Teil befindet. drawImage ist eine Methode zum Zeichnen bestimmter Bilder. Man kann sich leicht vorstellen, dass die Methode in if zum Anzeigen von Bildwörtern verwendet wird. Grafik. setFont(a); int j2 = Grafik. getColor();if (a){......Grafiken. setColor(b); Grafik. drawString(string, i1, j1 - 1, k1); Grafik. drawString(string, i1 - 1, j1, k1); Grafik. drawString(string, i1 + 1, j1, k1); Grafik. drawString(string, i1, j1 + 1, k1);} Grafiken. setColor(a); Grafik. drawString(string, i1, j1, k1); Grafik. setColor(j2);} Hinweis: Der Teil unter dem „if“ ist der Schlüsselteil. Wir haben die Methode drawString zum Zeichnen von Zeichenfolgen gesehen und wissen daher, dass wir dafür sorgen müssen, dass diese Methode nicht den Teil innerhalb von if ausführt, sondern direkt zum Systemwortteil unten wechselt. (Ergänzung: Wenn bedingte Divergenzanweisungen gemäß unterschiedlichen Bedingungen in unterschiedliche Prozesse umgewandelt werden. Schauen wir uns dann den Anfang an, wenn (a! = null), wir sehen, dass dies durch die Beurteilung der Variablen a beurteilt wird. Und wo ist diese Variable definiert? Zuvor haben wir über die Methode public c (Image image, DataInputStreamdatainputstream, Font font, int i, int j) gesprochen, wir könnten genauso gut einen Blick darauf werfen. public i (Image image, DataInputStreamdataInputStream, Font Schriftart, int i1, int j1) {int k; int j2; if (image ! = null) {a = image;b = j1; a = j1! = -1; } Hinweis: Sie können sehen, dass diese Methode die Variable a beinhaltet und die Aufgabe dieser Variablen darin besteht, zu bestimmen, ob die Bildmenge null ist. Dann sah ich eine =-Schriftart in else; Dieser Satz bedeutet, die Schriftartmenge einer (Schriftvariablen) zuzuweisen, was als Zuweisung der Systemschriftart zu a verstanden werden kann. Wir hoffen also, dass wir versuchen können, diese Methode immer sonst auszuführen, sodass wir image = null vor if (image ! = null); hinzufügen können. Auf diese Weise ist der Wert von image zu Beginn null und der Teil in else wird ausgeführt. Im Bytecode: aload_1ifnull Label216 entspricht if (image! = null). (Aufgrund des Tools ist es schwieriger, die Positionierung auf dem Mobiltelefon zu ändern als auf dem Computer.) aload_1 dient dazu, das erste (1) Objekt zu laden, auf das die lokale Variable verweist, und es auf den Stapel zu verschieben. Die erste lokale Variable entspricht dem Bild an der ersten Position des Methodennamens. Fügen Sie hier image=null hinzu, um einen Nullbetrag für das Bild zu erstellen. aconst_nullastore_1 Wenn Sie mehr über das Prinzip erfahren möchten, können Sie einen Blick auf Java Bytecode Revealed werfen. Es ist zu beachten, dass die „1“ in astore_1 auf dem vorherigen if (image ! = null) basiert. Wir sehen, dass die dritte Zeile aload_1 ist, hier ist sie 1, dann muss astore_1 auch 1 sein. Wenn es wiederum aload_2 ist, sollte es astore_2 sein und so weiter. aconst_null
astore_1 Dieses Codesegment ist relativ mechanisch, sodass Sie es sich merken können. Die von Digital Chocolate produzierten Spiele sind relativ fest und jeder, der seine Spiele lokalisieren möchte, sollte sie auf diese Weise modifizieren. Die Spielmodifikationen von DC sind im Grunde die Grundlage für viele Spielmodifikationen. Daher wird empfohlen, dass jeder es gründlich beherrscht. Spiele anderer Hersteller sind nicht so einfach und selbst Spiele desselben Herstellers können unterschiedliche Modifikationsmethoden haben. Was benötigt wird, ist kontinuierliches Lernen und Üben, das Sammeln von Erfahrungen und die Vertiefung des Verständnisses von Java.
-------------------Chinesische Version des Textes des Digital Chocolate-Spiels. Nachdem Sie die Bildzeichen erfolgreich in Systemzeichen umgewandelt haben, können Sie den Text direkt chinesisch umwandeln. Die Sprachdateien sind grundsätzlich l0_0, l0_1, l0_2 usw. Wählen Sie in „Mein Zooladen“ im Allgemeinen Chinesisch l0_0 (Englisch). Verwenden Sie das Plug-in im SUMEA-Ordner im Computertool Halo, um es direkt zu öffnen und zu ändern. Auf dem Mobiltelefon müssen Sie Hexadezimal verwenden. Öffnen Sie l0_0 im Hexadezimalformat. 00 00 3c 75 stellt die Gesamtzahl der Bytes 15477 dar, 00 00 01 6c stellt die Gesamtzahl der Startbytes 364 dar, 00 00 05 b8, 00 00 05 c1... stellt das Feldstartbyte dar. Was ist das Feldstartbyte? Linker Softkey - Bearbeiten - Gehen Sie zur Adresse, geben Sie die Adresse 0x5b8 oder dezimal 1464 ein. Nach der Bestätigung werden Sie feststellen, dass es sich um die Bytenummer 00 06 des Englischen handelt. Geben Sie dann das zweite 0x5c1 ein, um zum 00 02 von Ok unten zu gelangen. Jedes Startbyte entspricht wiederum den folgenden Feldern. Um es ganz klar auszudrücken: 5b8 ist die Gesamtzahl der Bytes vor 00 06. Die Anzahl der Bytes ändert sich, wenn wir sie lokalisieren, und diese müssen geändert werden, was ziemlich kompliziert und mühsam ist.