物集大话西游替换老版人物研究——续
疫情期间无聊,研究了一下替换老版人物的方法。感谢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()!=null) {
long se=roleShow.getSpecies_id().longValue();
long w=good(Integer.parseInt(GoodsListFromServerUntil.getChoseGoodsList().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。
祝好!
本帖最后由 yue303 于 2022-5-13 17:21 编辑
物集开发时候貌似是17年,开发时候就是新人物了。灵犀大绿底端是有双环和灯笼的。后来的法门天梯不是大绿底端基础上的,法门端战斗背景不固定,人物对话框特高,一堆小bug还不如灵犀好呢。 坐骑替换老版早就有不少人弄了,但没人出教程。 本帖最后由 yue303 于 2022-5-13 18:04 编辑
大佬的方法确实有用,切换武器不变了,但进战斗还是新皮肤。
第二个方法就是手里没武器,哈哈
装备武器后,貌似大话站街手里是不拿武器的,忘了官服是不是这样。 进战斗和道具栏显示人物拿武器的状态。
TestpackJapnel.java改成这样了
yue303 发表于 2022-5-13 17:12
大佬的方法确实有用,切换武器不变了,但进战斗还是新皮肤。
第二个方法就是手里没武器,哈哈
进战斗没问题啊。
物品栏里的人物,拿了武器之后改变动作,这个有点麻烦。
不过你可以改一下皮肤动作,直接改成attack对应的动作,以后就一直是攻击状态。 进战斗,老版皮肤
站街,老版皮肤,我的物品栏里的皮肤没有改
登陆界面,武器类型注释之后。显示老版皮肤
本帖最后由 yue303 于 2022-5-14 15:44 编辑
cnucas 发表于 2022-5-13 20:56
登陆界面,武器类型注释之后。显示老版皮肤
我的好像不行,是不是我没注释对哦,虎头怪手里没武器
yue303 发表于 2022-5-14 10:40
我的好像不行,是不是我没注释对哦,虎头怪手里没武器
对的,登陆的创建界面确实没有武器。
你的进战斗换了皮肤,可能需要去看看精灵工厂那个文件。 cnucas 发表于 2022-5-14 17:34
对的,登陆的创建界面确实没有武器。
你的进战斗换了皮肤,可能需要去看看精灵工厂那个文件。
SpriteFactory.java 是不是去掉 的注释有点多了? 大佬给看看
yue303 发表于 2022-5-14 17:49
SpriteFactory.java 是不是去掉 的注释有点多了? 大佬给看看
我发了新方法了,你去试试 受益匪浅,地图最好也换掉 你的QQ 是多少啊 这个需要改HH文件吗? 大话爱好者 发表于 2022-8-16 13:05
这个需要改HH文件吗?
现在可以直接删掉HH文件了,另一个帖子里有全部替换的方法 哇:: 厉害了,受教了!写的真心不错: 受教了!写的真不错 牛皮. 谢谢分享 厉害了,受教了!写的真心不错
页:
[1]