- 精华
- 阅读权限
- 60
- 好友
- 相册
- 分享
- 听众
- 收听
- 注册时间
- 2020-11-30
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
疫情期间无聊,研究了一下替换老版人物的方法。
感谢https://www.iopq.net/thread-17111197-1-1.html的抛砖引玉。
上面帖子的办法,有点破釜沉舟!但总的来挺有开创性的。不过他遗留了几个问题,总结来说就是两个:一个是,更换武器,皮肤也跟着变换;
一个是,上坐骑之后变新形象。
坐骑稍微复杂一点,我还没来得及改,武器的问题我已经解决。
解决思路如下:
一、
客户端源码\src\com\gl\util\Xy2Util.java,替换旧皮肤,龙族不换。按照上面帖子操作
- public static Map<String, String> MODEL;
- static {
- MODEL = new HashMap<String, String>();
- MODEL.put("20001", "11101");
- MODEL.put("20002", "11102");
- MODEL.put("20003", "11103");
- MODEL.put("20007", "11104");
- MODEL.put("20009", "11105");
- MODEL.put("20004", "12102");
- MODEL.put("20006", "12101");
- MODEL.put("20005", "12103");
- MODEL.put("20008", "12104");
- MODEL.put("20010", "12105");
- MODEL.put("21001", "21101");
- MODEL.put("21003", "21102");
- MODEL.put("21002", "21103");
- MODEL.put("21007", "21104");
- MODEL.put("21009", "21105");
- MODEL.put("21006", "22101");
- MODEL.put("21005", "22102");
- MODEL.put("21004", "22103");
- MODEL.put("21008", "22104");
- MODEL.put("21010", "22105");
- MODEL.put("22001", "31101");
- MODEL.put("22002", "31102");
- MODEL.put("22003", "31103");
- MODEL.put("22004", "32103");
- MODEL.put("22005", "32101");
- MODEL.put("22006", "32102");
- MODEL.put("22007", "31104");
- MODEL.put("22008", "32104");
- MODEL.put("22009", "31105");
- MODEL.put("22010", "32105");
- MODEL.put("23001", "41101");
- MODEL.put("23002", "41103");
- MODEL.put("23003", "41102");
- MODEL.put("23004", "42101");
- MODEL.put("23005", "42102");
- MODEL.put("23006", "42103");
- }
复制代码
二、
角色拿武器之后会有一个判断,判断武器的类型,
在客户端src\com\tool\time\TimeLimit.java拉到最下面就能看到。
不知道为何里面把“双环”和“灯笼”的普通装备去掉了,我们可以自己加上,武器对应的id是武器的皮肤id。
- public static int good(int id){
- if ((id>=1600&&id<=1615)||id==6100||id==7006) {return 1;}
- if ((id>=1400&&id<=1415)||id==6106||id==7012) {return 2;}
- if ((id>=1100&&id<=1115)||id==6124||id==7021) {return 3;}
- if ((id>=1200&&id<=1215)||id==6122||id==7022) {return 4;}
- if ((id>=2200&&id<=2215)||id==6109||id==7016) {return 5;}
- if ((id>=2400&&id<=2415)||id==6119||id==7020) {return 6;}
- if ((id>=1300&&id<=1315)||id==6103||id==7009) {return 7;}
- if ((id>=1700&&id<=1715)||id==6102||id==7008) {return 8;}
- if ((id>=2100&&id<=2115)||id==7013||id==6105) {return 9;}
- if ((id>=1000&&id<=1015)||id==6118||id==7007) {return 10;}
- if (id==7019||id==6120) {return 11;}//加上双环
- if ((id>=1800&&id<=1815)||id==6104||id==7011) {return 12;}
- if ((id>=1900&&id<=1915)||id==6108||id==7017) {return 13;}
- if ((id>=2200&&id<=2215)||id==6109||id==7010) {return 14;}
- if ((id>=1500&&id<=1515)||id==7014||id==6117) {return 15;}
- if ((id>=2000&&id<=2015)||id==6107||id==7015) {return 16;}
- if (id==7018||id==6121) {return 17;}//加上灯笼
- if ((id>=2617&&id<=2632)||id==6125||id==7023) {return 18;}
- return 0;
- }
复制代码 这里修改就有两种方法:
1、直接把这十八般兵器从头到尾全部注释掉,这样人物使用武器就不会有任何变化!
但是有个不足的地方就是,这样龙族角色就没有武器了;用第二种方法可以解决。
2、简单做个判定,只有龙族可以使用武器皮肤。
源代码231行如下:
- else if (GoodsListFromServerUntil.getChoseGoodsList()[0]!=null) {
- long se=roleShow.getSpecies_id().longValue();
- long w=good(Integer.parseInt(GoodsListFromServerUntil.getChoseGoodsList()[0].getSkin()));
- <font color="#ff0000"> if (w!=0) {//修改这里</font>
-
- //TODO 获取光武皮肤
- if (pf == null && GoodsListFromServerUntil.NB == 5) {
- //if ((w==2&&se==20001)||(w==2&&se==20009)||(w==1&&se==20010)||(w==1&&se==21005)||(w==10&&se==21008)||(w==1&&se==22009)||(w==1&&se==23001)||(w==1&&se==24001)) {
- w+=18;
- //}
- }
- buffer.append("S");
- buffer.append((w<<32)|se);
- }
- }
复制代码 改成这样即可:- if ((w!=0)&&(se==24001||se==24002||se==24003||se==24004||se==24005||se==24006)) {
复制代码 这个就表示使用武器之后,必须是龙族才有新皮肤,否则一律全是老版皮肤!至于上面的光武代码,基本没用,删掉也行。
这样就解决了武器变皮肤的问题!
另外关于上一个帖子里提到的问题,说登录时创建人物的界面还显示新皮肤,这个简单!
把客户端src\org\come\login\CreateView.java的259行到276行注释掉就好了
- else {
- String weapon=GetdqWeapon();
- long type=0;
- /* if (weapon.equals("剑")) {type=1;}
- else if (weapon.equals("扇")) {type=2;}
- else if (weapon.equals("锤")) {type=3;}
- else if (weapon.equals("斧头")) {type=4;}
- else if (weapon.equals("拳套")) {type=5;}
- else if (weapon.equals("书")) {type=6;}
- else if (weapon.equals("棍")) {type=7;}
- else if (weapon.equals("鞭")) {type=8;}
- else if (weapon.equals("钩")) {type=9;}
- else if (weapon.equals("刀")) {type=10;}
- else if (weapon.equals("双环")) {type=11;}
- else if (weapon.equals("枪")) {type=12;}
- else if (weapon.equals("幡")) {type=13;}
- else if (weapon.equals("爪")) {type=14;}
- else if (weapon.equals("浮尘")) {type=15;}
- else if (weapon.equals("飘带")) {type=16;}
- else if (weapon.equals("灯笼")) {type=17;}
- else if (weapon.equals("弓")) {type=18;}*/
- part=SpriteFactory.createPart(type<<32|SelectedRoleID(), GetdqActionIntTwo(), 1, null);
- }
复制代码
最后,我这里存在的问题有俩:
1、坐骑的皮肤没有换
坐骑那里还没研究,另外想找个大佬给我指点一下,上学那会只学过一点C语言,Java很多我都看不懂。
2、人物角色换武器之后,老版皮肤也应该跟着换武器
这个需要做的事情有点多。
要去掉hh文件,引入老版人物不同武器的素材,还有坐骑素材,删掉龙族等等,不少的事要干。
总之,以Java强大的面向对象编程功能,没有实现不了的事。
唯一就是觉得自己好蠢,我猜测当年物集的作者,从旧版人物过度到新版,也是费了很大功夫的,如今我们开倒车,感觉自己好蠢!
希望能有大神出来,给个坐骑皮肤的修改教程。
如果没有,大家多等等,我去研究研究,顺便学一点Java。
祝好!
|
|