halo2另类改键法
首先感谢BB大大和MINISOYO无私奉献出无功能限制的完全版HALO2,我也把一些HALO2的使用心得与大家分享,本人水平有限,希望大家不要见笑!最近碰到一个游戏,它是诺基亚的软件<王国之心>,我就想改到MOTO机上用.但用了JavaMagic,fulljava,MotoMidMan来改键,发现还是不行,最后使用BB大大的HALO2的改键教程也无能为力!我就估计可能程序中对键值另有映射,打开游戏GAME下的MultiOutPut.class发现方法keyPressed和keyReleased它和数组codes的值与键值 i 有关.
public void keyPressed(int i)
{
if(i == codes[0] || i == codes[1])
up = true;
if(i == codes[2] || i == codes[3])
down = true;
if(i == codes[4] || i == codes[5])
left = true;
if(i == codes[6] || i == codes[7])
right = true;
if(i == codes[8] || i == codes[9])
menu_left = true;
if(i == codes[10] || i == codes[11])
menu_right = true;
if(i >= 48 && i <= 57)
key_num[i - 48] = true;
}
例如:当codes[0]或codes[1]的值与按键"上"的键值(-1)相同时就执行方向键"上"的动作.就是说它是以数组codes的值为标准的!而数组codes的值如下:int codes[] = { -1, 1, -6, 6, -2, 2, -5, 5, -21, -6, -22, -8}.结合方法keyPressed和keyReleased分析,这数组的值两个为一组.例如:-1, 1对应的就是方向键"上";-6, 6对应的就是方向键"下".这两个数前一个是诺基亚对应键值,后一个是GAME ACTION值,GAME ACTION值是通用的不用改.既把codes[2]改为-6,codes[4]改为-2,codes[6]改为-5,codes[8]改为-21,codes[10]改为-22,需要注意:MOTO机的方向键"下"与诺基亚左软键键值相同,都是-6.应把方法keyPressed和keyReleased的这句:
if(i == codes[8] || i == codes[9])
改为:
if(i == codes[8] || i == codes[8]).
分析完毕,用HALO2打开游戏,在MultiOutPut.class搜索codes. [ 图1 ]
有3个对象,我们要改的是第一个. [ 图2 ]
具体改法看图吧! [ 图3 ]
最后再把keyPressed和keyReleased方法中的if(i == codes[8] || i == codes[9])改为:
if(i == codes[8] || i == codes[8]). [ 图4 ]
支持
学习了:眼睛 在这个函数之前插入拦截代码。if(keycode == -6)
keycode == -22;
不用去理会后面的键值怎么处理。 哇 强人啊 bb说的也对!但方向键"下”就没用了。只能用“8”键了! 支持一位 不会的。
nokia是
-1
-2 -5 -3
-4
moto是
-1
-2 -20 -5
-6
所以方向 下 也是一样的
if(keycode = -6)
keycode = -2;
拦截是可以拦截所有的。
实际上按你的方法去改 ,为什么不去直接改了codes的初始化,其初始化应该在静态构造函数里,也就是<clinit>里面。那样应该更方便点。 强人啊!都看不懂:吹吹 估计BB没仔细看,我改的就是codes的初值!把codes[2]改为-6,codes[4]改为-2,codes[6]改为-5,codes[8]改为-21,codes[10]改为-22 楼主,俺要拜你为师——:眼睛 [quote]原帖由 <i>bb</i> 于 2008-1-9 18:58 发表 <a href="http://forum.minisoyo.com/redirect.php?goto=findpost&pid=1567440&ptid=78024" target="_blank"><img src="http://forum.minisoyo.com/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />不会的。<br /><br />nokia是 <br /> -1<br />-2 -5 -3<br /> -4<br /><br />moto是<br /> -1<br />-2 -20 -5<br /> -6<br /><br />所以方向 下 也是一样的<br />if(keycode = -6)<br /> keycode = -2;<br /><br />拦截是可以拦截所有的。<br /><br />实际上按你的方法去 ... [/quote]<br />诺机的是这样的? 都很強!!! 哇 强人啊:眼睛 楼主可以帮我试试这个吗!
我使用BB的教程,采用拦截方法,但不知为何,就是不行!
会导致所有的按键都失效了!上下左右都无法用了
你试下帮我把软件的“-7”键值改成“27”
BB大大看到的,麻烦也帮我看看,究竟为何会这样的! 不好意思,没有认真看。。。:(sorry 厉害啊,这教程我就收下了,感谢啦~ 支持教程呀
回复 #14 怨缘远 的帖子
你这是什么机子?哪个键?“27”???:疑问 :疑问 [quote]原帖由 [i]lshjava[/i] 于 2008-1-10 16:36 发表 [url=http://forum.minisoyo.com/redirect.php?goto=findpost&pid=1573908&ptid=78024][img]http://forum.minisoyo.com/images/common/back.gif[/img][/url]你这是什么机子?哪个键?“27”???:疑问 :疑问 [/quote]
[size=5]你到这里看看,我的机子很特别!是诺基亚的7710![/size]
[url=http://forum.minisoyo.com/thread-74179-2-1.html][size=5]http://forum.minisoyo.com/thread-74179-2-1.html[/size][/url]
[size=5]键很少!就是想把软件的“菜单”使用在这里,即是这个键的键值是“27”[/size] 我帮你改好了,在netebook下的b.class文件中 protected final void keyReleased(int i1)和 protected final void keyPressed(int i1)方法中加入了:
iload_1
bipush 27
if_icmpne 6
bipush 249
istore_1
既:if(i1 == 27)
i1 = -7;
的拦截语句.原理和方法BB大大和qsrc大大已经解释了!但在HALO2.02中存在漏洞,需在protected final void keyPressed(int i1)方法中自行调整两句switch多分支语句!tableswitch 1: 364, 2: 392, 3: 18, 4: 10, 5: 392, 6: 22, 7: 14, 8: 385, 9: 83, 10: 264, 11: 381, 12: 264, 13: 389, default: 392 和:
tableswitch 0: 165, 1: 168, 2: 171, 3: 179, 4: 187, 5: 195, 6: 203, 7: 211, 8: 219, 9: 227, default: 234
把里面的跳转的地址都加5!
估计HALO2.05已解决这个漏洞了,但我电脑用不了HALO2.05,系统冲突.请你用HALO2.05试一下!
页:
[1]
2
