تقوم أحرف الصورة برسم أحرف على الصور، بينما تقوم أحرف النظام باستدعاء الخطوط التي تأتي مع الهاتف، والتي يمكن تمييزها بشكل أساسي عن المظهر. بعد ترجمة نص هذا النوع من الألعاب مباشرة إلى اللغة الصينية، ستعرض اللعبة كلها "口口口口口口" (فارغة). بالنسبة للألعاب التي تستخدم أحرف الصورة الخاصة بها، تتضمن أساليب الترجمة الصينية إضفاء الطابع الصيني على المصفوفة وتعديل أحرف النظام. توطين المصفوفة النقطية له حدوده، مثل وجود الكثير من النص، وفهرسة المصفوفة النقطية في ملفات الفئة، وما إلى ذلك، ولا ينطبق إلا على بعض الألعاب. يتم تعديل المزيد إلى كلمات النظام. يتطلب التعديل أن يكون لديك فهم معين للغة Java، لذا قبل قراءة هذا البرنامج التعليمي، إذا كنت لا تعرف Java، فمن المستحسن التنزيل والتعلم JAVA مبتدئون لفهم JAVA (يحتاج إلى فك الضغط). أدوات التحضير الجانبية S40: MC, MobyExplorer,
فك تجميع Mocha
محرر الكود الثانوي
ياسمين(/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?) Disass embler2Jasmin
من بين ألعاب Java التي تستخدم خطوط الصور، فإن ألعاب الشركة المصنعة للعبة DigitalChocolate هي الأسهل. بشكل عام، تم تعديل لعبة DigitalChocolate. لعبة الشوكولاتة هي مقدمة للتعلم. طريقة التعديل للعبة هذه الشركة المصنعة هي صيغة ثابتة وليست معقدة للغاية. خذ موقع DigitalChocolate's " My Pet Shop My Pet Store" كمثال. بعد فك ضغط اللعبة، استخدم Mocha decompilation لفك ملفات الفئة الموجودة فيها، وتصفحها لفترة وجيزة للعثور على الطرق التالية: عامة؟ (صورة الصورة، DataInputStreamdatainputstream، Font Font، int؟، int؟) {} وجدنا أنه موجود في i. في الفصل، بشكل عام، توجد ملفات هذه الطريقة في ملفات فئة من 3 إلى 4K. لذلك، أعط الأولوية لفتح ملفات بحجم 3 إلى 4K للتصفح، وستجدها بسرعة. public i (صورة الصورة، DataInputStreamdataInputStream، الخط الخط، inti1، int j1) {int k؛ كثافة العمليات i2؛ كثافة العمليات J2؛ شار الفصل؛ if (image ! = null) (تم حذفه...) ما يتعين علينا فعله هو إضافة image = null أعلاه if (image! = null). لا تفكر في ذلك في ط. إضافته في جافا لن ينجح. بسبب الارتباك أو لأسباب تتعلق بالأدوات، لا يمكن تجميع ملف جافا الذي تم فك ترجمته مرة أخرى في ملف فئة. يمكن تحقيق الغرض عن طريق تعديل الرمز الثانوي. قم أولاً بإنشاء مجلدات جديدة "1" و"2"، ثم ضع i. أدخل الفصل الدراسي، وافتح البرنامج Disassembler2Jasmin، وسيظهر لك صندوقان للعناوين. املأ الأول، E:/1/i. املأ الحقل الثاني للفئة، E:/2/انقر فوق "Unshell" في المفتاح الوظيفي الأيسر، وقم بتغيير i. يتم تفكيك الفئة إلى كود ثانوي، والذي سيولد i. ملف j. افتح i باستخدام محرر النصوص. j، وهو ما يسمى بالرمز الثانوي، الموجود في البداية: invocespecial java/lang/Object/
astore_1 قبل aload_1 وأخيرًا: invocespecial java/lang/Object/
astore_1 ثم حفظه ومراجعته، وهو أمر أكثر ملاءمة. ------------- عملية التشغيل الأساسية هكذا، لماذا تحتاج إلى تعديلها بهذه الطريقة؟ دعونا نتحدث عن المبدأ أدناه. في ط. نرى هذه الطريقة في جافا: public void a (Graphics graphics, String string, int i1, int j1, int k1) {if (a! = null) {... graphics. setClip(i5, j5, k5 - i5, i6 - j5); الرسومات. drawImage(a, i1 - (a[i4] & 255), j1 - a[i4] - b2, 20);}i1 += b1 + c;}graphics. setClip(i2, k2, i3, j3); return;} ملاحظة: تستخدم العديد من الألعاب طريقة الفراغ العام (رسومات الرسومات، سلسلة السلسلة، int i1، int j1، int k1...) لرسم السلاسل. في قسم if، نرى طريقة setClip لقص الصور. مبدأ طريقة setClip هو عرض جزء فقط من المحتوى على الشاشة بحيث يتم عرض محتوى الصورة الموجود بالضبط في هذا الجزء. drawImage هي طريقة تستخدم لرسم صور محددة. من السهل أن نتخيل أن الطريقة in if تُستخدم لعرض الكلمات المصورة. الرسومات. setFont(a); إنت j2 = الرسومات. getColor();if (a){......graphics. 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);} graphics. setColor(a); الرسومات. drawString(string, i1, j1, k1); الرسومات. setColor(j2);} ملاحظة: الجزء الموجود أسفل if هو الجزء الرئيسي. لقد رأينا طريقة drawString لرسم السلاسل، لذلك نعلم أن ما يتعين علينا فعله هو جعل هذه الطريقة لا تنفذ الجزء الموجود داخل if، بل تنتقل مباشرة إلى جزء كلمة النظام أدناه. (ملحق: إذا تم تحويل عبارات التباعد الشرطي إلى عمليات مختلفة وفقًا لشروط مختلفة. ثم انظر إلى البداية إذا كانت (a! = null)، نرى أنه يتم الحكم عليها من خلال الحكم على المتغير a. وأين يتم تعريف هذا المتغير؟ تحدثنا سابقًا عن الطريقة العامة c (صورة الصورة، DataInputStreamdatainputstream، الخط الخط، int i، int j)، قد نقطع ونلقي نظرة. public i (صورة الصورة، DataInputStreamdataInputStream، Font، int i1، int j1) {int k; int char ch;ب = ي1؛ أ = ي1! = -1؛ } ملاحظة: يمكنك أن ترى أن هذه الطريقة تتضمن المتغير a، ومسؤولية هذا المتغير هي تحديد ما إذا كانت كمية الصورة فارغة. ثم رأيت = الخط في آخر؛ تعني هذه الجملة تعيين مقدار الخط إلى (متغير الخط)، والذي يمكن فهمه على أنه تعيين خط النظام إلى. لذا نأمل أن نحاول تنفيذ هذه الطريقة دائمًا، حتى نتمكن من إضافة image = null قبل if (image ! = null); بهذه الطريقة تكون قيمة الصورة فارغة في البداية، وسيتم تنفيذ الجزء الموجود في else. في الكود الثانوي: aload_1ifnull Label216 يتوافق مع if (image! = null). (بسبب الأداة، يعد تعديل الموضع على الهاتف المحمول أكثر صعوبة من تعديله على الكمبيوتر.) aload_1 هو تحميل الكائن الأول (1) المشار إليه بواسطة المتغير المحلي ودفعه إلى المكدس. المتغير المحلي الأول يتوافق مع الصورة الموجودة في الموضع الأول من اسم الطريقة. أضف صورة=null هنا لإنشاء مقدار فارغ للصورة. aconst_nullastore_1 إذا كنت تريد معرفة المزيد عن هذا المبدأ، فيمكنك إلقاء نظرة على Java Bytecode Revealed. تجدر الإشارة إلى أن "1" في astore_1 يعتمد على if (image ! = null) السابق. نرى أن السطر الثالث هو aload_1، هنا هو 1، ثم astore_1 يجب أن يكون أيضًا 1. بدوره، إذا كان aload_2، فيجب أن يكون astore_2 وهكذا. aconst_null
astore_1 مقطع التعليمات البرمجية هذا ميكانيكي نسبيًا، لذا يمكنك تذكره. الألعاب التي تنتجها شركة Digital Chocolate ثابتة نسبيًا، وعلى كل من يريد توطين ألعابه تعديلها بهذه الطريقة. تعد تعديلات لعبة DC هي الأساس للعديد من تعديلات اللعبة. ولذلك، فمن المستحسن أن يتقن الجميع ذلك بدقة. الألعاب من الشركات المصنعة الأخرى ليست بهذه السهولة، وحتى الألعاب من نفس الشركة المصنعة قد يكون لها طرق تعديل مختلفة. ما نحتاجه هو التعلم المستمر والممارسة، وتجميع الخبرة، وتعميق فهم جافا.
----------------- النسخة الصينية من نص لعبة الشوكولاتة الرقمية. بعد تغيير أحرف الصورة بنجاح إلى أحرف النظام، يمكنك تحويل النص إلى اللغة الصينية مباشرة. ملفات اللغة هي بشكل أساسي l0_0 وl0_1 وl0_2 وما إلى ذلك. في "My Pet Store"، اختر بشكل عام اللغة الصينية l0_0 (الإنجليزية). استخدم المكون الإضافي الموجود في مجلد SUMEA في أداة الكمبيوتر Halo لفتحه وتعديله مباشرة. على الهاتف المحمول، تحتاج إلى استخدام الست عشري. افتح l0_0 بالنظام الست عشري. 00 00 3c 75 يمثل إجمالي عدد البايتات 15477، 00 00 01 6c يمثل إجمالي عدد بايتات البداية 364، 00 00 05 b8، 00 00 05 c1... يمثل بايت بداية الحقل. ما هو بايت بداية الحقل؟ المفتاح الوظيفي الأيسر - تحرير - انتقل إلى العنوان، وأدخل العنوان 0x5b8 أو العلامة العشرية 1464. بعد التأكيد، ستجد أنه ينتقل إلى رقم البايت 00 06 باللغة الإنجليزية. ثم أدخل 0x5c1 الثاني للانتقال إلى 00 02 من Ok أدناه. تتوافق كل بايتة بداية مع الحقول التالية بدورها. بصراحة، 5b8 هو إجمالي عدد البايتات قبل 00 06. سيتغير عدد البايتات عندما نقوم بتعريبها، وهذه تحتاج إلى تعديل، وهو أمر معقد ومزعج للغاية.