2015-11-02 4,323 ℃
日服 2.5.1
在其他地方已经发过了,这次顺带丢到博客上
我研究过的1w过关有两种方式,其中一种是一开始就是最后一wave,但是因为超过10wave的本从最后一wave载入需要消耗很多的时间,大家都不喜欢,我这里就不写了,直接写另外一个。
效果是1wave打完后直接胜利,原理很简单,就是在1wave结束后把wave改成49(50),自然就跳到胜利了
注意不支持魔神
还有这修改有很大的风险,目前已知的一个问题是宝箱数只会返回1wave拿到的宝箱数,所以比如这次万圣节的成就,宝箱那个成就怎么打都是拿不到的。所以修改请三思而后行,我是不承担任何后果的
代码很简单
this.nNowWave = this.GetMaxWave() - 1;
修改位置
EnemyManager下的FixedUpdate()函数
某些人要的IL代码
这次就不赠送修改好的版本了,请自行修改~
想請問一下, 直接跳最後一wave要怎樣修改?
我試過幾個方法都沒有辦法刷出敵人.. 應該是EnemyList沒有跳到最後一wave.. 是否要修改initHighlyPreciseRandom?
最近有点事,抱歉这么晚回你
我测试了一下,原来方法都不能用了,我也没有去研究过其他的方法
不过我觉得跳最后一wave跟我这里的最终效果应该是一样的
public void FixedUpdate()
{
if ((this._mode == eMode.Generate) && this.GenerateEnemy())
{
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length – 1))
{
this._mode = eMode.Empty;
}
else
{
this._mode = eMode.Empty;
}
this._berserkTime = 30f;
}
this._FieldJobType = 0;
foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
{
this._FieldJobType |= ((int) 1) << behavior._param.jobType;
}
}
public void FixedUpdate()
{
if ((this._mode == eMode.Generate) && this.GenerateEnemy())
{
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length – 1))
{
this._mode = eMode.Empty;
}
else
{
this._mode = eMode.Empty;
}
this._berserkTime = 30f;
}
this._FieldJobType = 0;
foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
{
this._FieldJobType |= ((int) 1) << behavior._param.jobType;
}
}
博主,我按照你的修改成功了,但是进入战斗并没有改变什么。。。。不知道是哪里出了问题……能麻烦博主再帮我看看好吗
public void FixedUpdate()
{
if ((this._mode == eMode.Generate) && this.GenerateEnemy())
{
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length – 1))
{
this._mode = eMode.Battle;
}
else
{
this._mode = eMode.Empty;
}
this._berserkTime = 30f;
}
this._FieldJobType = 0;
foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
{
this._FieldJobType |= ((int) 1) << behavior._param.jobType;
}
}
这是国服的FixedUpdate() : Void的函数……就是把this._mode = eMode.Battle;
改为
this._mode = eMode.Empty;
就好了吗?。。。
恩
可是这个怎么改啊?……
不会弄啊 还是用Reflexil吗?直接在C#上改不了 是不是还是得在Reflexil里面改?是第几行啊 找不到battle了……
大神 能帮忙解答一下吗?我天天上你的博客看你有没有给我的回复……
我没有玩国服啊,这个问题没法回答你
啊……是吗?。。。那你能留一个邮箱 我给你发一份dll帮我看一下吗?博主,帮人帮到底吧~~~~
你可以试下把下面的
this._mode = eMode.Battle;
改为
this._mode = eMode.Empty;
我比较呆萌……只会用你教我的办法在IL里面添加那7到12行……这个需要修改怎么修改啊……还是添加7到12行么?或者是在某一行有个eMode.Battle把它变成eMode.Empty,别的都不用改么?
是因为台服if ((this.kEMode == eMode.Generate) && this.GenerateEnemy())里面的kEMode
在国服里是 if ((this._mode == eMode.Generate) && this.GenerateEnemy())里面是_mode
别的都一样,是不是问题出在这里?
还有就是国服里面的EnemyManager下的sWarningWork里面并没有nnowwave这一项,台服里面有nowwave,然后再进去就是set_nnowwave了,但是国服没有。还是问题出在这里?
经过大神孜孜不倦的教导……终于改的和大神你的一摸一样了,但是为什么进战斗的时候会跳出桌面啊?。。。大神遇到过这种问题吗?
是日服吗?你有按图上的改吗,其他服报错的话我也不知道怎么办
是日服的。完全按照你给的IL格式改的……改完用reflexil保存save as一下 然后进游戏 开始战斗的时候就自己弹出桌面了……
我是这么改的:08行上添加ldarg.0 09行改成GetMaxWave 10行添加ldc.i4.1 11行添加sub 12行改成set_nNowWave 然后就直接在Assembly-CSharp右键reflexil save as 别的都没有改动 我这样改对吗?是不是还缺少什么步骤……
或者大神能发一个你的自用版给我吗?我看看是哪里出了问题……
07到12行全部是新加上去的,不是直接在原来的上面改
额,08-12行我添加上去了……但是07行也是ldarg.0,这个怎么添加啊……加到上一行或者下一行感觉都不对啊……
不行啊大神 如果7行也加上就比你的代码多出了一行了 但是我试了试从8行添加到12行 还是会进战斗闪退……我快疯掉了……哥,你能发个你的自用版给我看下吗?真快崩溃了。。。。
将图上的7~12插到原来的第6行下面。。。原来的第7行在第13行。。。你改完后可以再用reflector打开看下代码对不对
大神!能收下小可的膝盖吗? 按照孜孜不倦的教诲,终于改成功了……台服可以用了~~日服没有在玩
但是现在我贪贪的问一下……国服在第12行并找不到set_nnowwave怎么办?。。。
不知道这个set_nnowwave的代码是什么意思?在国服有没有向对应的代码呢?
还有个问题需要麻烦你……是把offset里的23—32都添加进去么? 另外……Operand type选择哪个啊……一个一个试了好久也找不到……
大神~~~~~~么么哒,教教呗。怎么办?右键Replace all with code之后代码全变了,该改哪里啊?
我按照你说的办法了……下载注册了reflector+reflexil,也找到EnemyManager下的FixedUpdate()函数
了,但是完全不会修改啊……怎么把this.nNowWave = this.GetMaxWave() – 1;这一段添加进去啊……右键Replace all with code之后,代码更看不懂了,也不知道该添在哪里,而且我试了试,也仍然添不进去……
求指教大神,小白做到这一步,真不知道怎么进行下去了……
使用Create new来修改,OpCode和Operand照着第二张图填,不会的话可以去百度一下,或者自己一个一个试
好哒大神,回去我试试~~~~谢谢~~~嘴一个
好的,我下载一个你说的软件试试吧……reflexil收费了……用ILSPY可以吗?打开之后修改不了啊,怎么才可以修改呢?。。。能麻烦给一个稍微详细些的教程吗?……或者加个QQ或者微信,真抱歉耽误你时间了…………
我在Assembly-CSharp.il里面找到getmaxwave,但是确实不知道该改哪里。。。。或者是set_Nnowwave,都不知道怎么办才好……
你可以考虑用.NET Reflector + Reflexil照着我的图改,我没用过ILDasm没法教你
大神 我是直接用ILDasm吧DLL转成IL在用记事本打开修改的……但是实在不知道该改那一块……能麻烦指教一下吗?。。。。。谢谢大神了,困扰我2个多月了…………
大神……好人做到底……能指教一些详细些的教程吗?。。。这个一回版困扰了我2个月了……一直做不好。我是用ILDasm吧DLL转成IL再记事本打开,但是根据大神你的代码,实在不知道改哪里啊…………求求大神指点一二,谢谢了!!!
这个一回版得折磨我了快2个月了……还是做不好……实在不知道这一串关键代码在哪里……我是用ILDasm把DLL转成IL 然后用记事本打开去找大神你的这一段代码……但是不知道改哪里……求求指教了……真的谢谢了!
大神……还是搞不懂这一串代码……好人做到底……能给个比较详细的教程吗?。。。IL的搞的不是很明白啊……
FixedUpdate()里面没this.nNowWave = this.GetMaxWave() – 1; 这段 怎么添加进去啊
最后CALL 提示 reflexil is unable to create this instruction , check coherence between the opcode and the operand
32行的call Operand type 是选择Method reference吗 大神求解
当然是Method reference
Method reference 选择不了 难道国服改不了吗
不懂你说的选择不了是什么情况,opcode和operand没弄错的话是肯定可以写进去的
我明白他说的是什么意思了
国服和台服日服不一样
用Method reference找不到set_nnowwave这个 只有_nnowwave这个 而且前面不是红色而是蓝色 选择不了 只能用field reference添加 就会出现reflexil is unable to create this instruction , check coherence between the opcode and the operand
所以可能是国服修改不了……
不敢用,顺带这两篇的图不错