[大坑]xsa文件破解(未完成)
本帖最后由 神崎亚里亚 于 2012-12-14 13:41 编辑通过.xsa文件修改,可以改变mm在不同情况下的动作,以及后续动作.
一周前就想改xsa了,今天下决心开始干.
文件结构大概是知道了,来源于这张图.http://up.hgame5.cc/data/attachment/forum/201212/07/0632400e99wl0ql9q5ql3l.jpg
经过几个小时的努力(学习iostream,试探地址),成功的用c++读取了xsa文件. 现在能做到的是读取每个动作的start frame, end frame, speed 以及ifrepeat. 还没有找到next frame所在的位置..
下表是从.xsa文件里读出来的.因为太长了我就列了前几行.做过xa文件修改的朋友应该很熟悉吧.这和xa文件里的数据是一样的.
No.speedstartend
11.51020
21.23070
31.280120
41.512501290
51740760
62760780
71.2780800
82800820
91880900
101.7900920
110.8880900
121.2900920
131.7130150
141.6710730
15216401660
16216601680
172.217001720
1010.577007710
1021.577507770
103177707790
1041.577907810
按说在xsa文件里修改这些值就可以改变游戏里的动作了.但是我刚试了一下,修改了走路和跑步的动作,但是没用.
然后 我把4个xsa文件都删了,mm该怎么走还是怎么走...这可让我纳闷了..难道我这个2.2ogg版本不需要读取xsa文件?
于是我查了论坛里的腰碎补丁,也是改xsa文件的.我用A型腰碎补丁替换了4个xsa文件,但是mm依然故我!拒绝拥抱的时候啥变化也没有....
我再度怀疑我这个版本是不是不用读xsa文件....
谁能告诉我这是为什么???
工作尚未完成. 还没有找到nextframe的地址. 也没有能通过xsa改变mm的动作.
哪位大大有兴趣,做个修改器吧..我不会.
附上读写文件源代码:
//读写ai3 xsa文件. 1.0版. 作者:神崎亚里亚 Dec.13.2012
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
fstream pp("ax01_01_01.xsa",ios::binary|ios::in|ios::out);
struct Clip {
char nff;
float speed;
float unknown1;
float start;
float end;
};
char unknownB;
cout<<sizeof(Clip)<<endl;;
Clip rr;
int count=0;
char a;
int suojin=11;
// cout<<"please enter the suojin number:";
// cin>>suojin;
pp.read(reinterpret_cast<char *>(&a),suojin);
int inta;
int intb;
float next;
fwrite( pp, 509, 100.0, 480.0, 730.0); //把509号动作的速度改成100,始末帧改成480和730.
while(pp ) //开始读文件,输出每个clip的始末帧和速度
{
pp.read(reinterpret_cast<char *>(&rr),sizeof(Clip));
pp.read(reinterpret_cast<char *>(unknownB),28);
if(rr.speed>0)
cout<<count<<""<<rr.speed<<" "<<rr.start<<" "<<rr.end<<" "<<endl;
count++;
}
pp.close();
}
//把关键帧写入文件
void writefile(fstream &file, int serial_num, float speed, float start, float end)
{
float a;
file.seekp( 7+ serial_num * 108, ios::beg );
file.seekp( 68, ios::cur);
streamsize size =4;
a = speed;
file.write( reinterpret_cast<char *>(&a), size);
file.seekp( 4, ios::cur);//start
a = start;
file.write( reinterpret_cast<char *>(&a),size);
a = end;
file.write( reinterpret_cast<char *>(&a), size);
cout<<"**!"<<endl;
file.seekp(0,ios::beg);
}
技术贴,沙发啊 看起来很复杂啊,技术活干不来{:H5_04:}楼主加油 太复杂了,表示路过支持大大早日成功{:H5_14:} 大大這麼努力的在研究探討
真是令人感動
雖然我不懂
但還是給予支持 技術性挺高呢,為樓主搖旗吶喊 技术宅拯救世界!!!!!!!!!!!!!{:H5_03:} xsa在js3_01_02_00里 acecat 发表于 2012-12-14 22:47 static/image/common/back.gif
xsa在js3_01_02_00里
nani?不是00_02_00里吗 技术贴是应该支持的,其ta的我做不了太多,我在一边呐喊好了 神崎亚里亚 发表于 2012-12-15 02:01 static/image/common/back.gif
nani?不是00_02_00里吗
大大乃试试看呀{TG:23:} acecat 发表于 2012-12-15 03:05 static/image/common/back.gif
大大乃试试看呀
今晚就试,多谢你呀,我已经看到胜利的曙光了 技术贴{:H5_05:} 其實我都不會改的說
{:H5_13:}
页:
[1]
2