群英Ⅲ吧 关注:12,973贴子:215,601

如何将必杀技数目上限提高为8(新)

只看楼主收藏回复

由于原贴中的代码少了一条导致无法调整必杀技,另外如果读之前的存档会给武将装配上其没有学会的必杀技且无法更改,所以另开一贴,原帖我将删除。这次主要更改了读档部分的代码,存档部分没有更改。另外必杀技数目限制部分的代码更改了第一处,补充了上次缺少了一条代码。
存档:跟上次的代码完全一样

读档:对上次的代码进行了更改

注意照此更改后如果读之前的存档,因为数据格式不符的原因,大部分情况下武将都没有装配其已会的必杀技,至少没有装配全,所以我方每个武将的必杀技需要重新装配。至于其他君主的武将,计算机会自动装配的,不需要我们关心。
另外我是在原代码地址处直接修改的,照此修改后,胡杨大神原先的读存档代码就不需要了。
必杀技数目修改:
我是按武将等级决定能装配几个必杀技,初始3个,达到一定等级后增加1个,最多8个,共三处代码:

上次发的图少了最后一条JNZ指令,这次补上了。
下面的两个图跟上次是完全一样的。


图中最上面箭头所指为初始必杀技数,其余箭头所指为增加一个必杀技数须达到的等级,均为16进制数,大家可以根据自己的需求更改。10进制数和16进制数的转化网上有在线计算器,请自行搜索。
如果不想按武将等级决定能装配的必杀技数目,直接设置成8 ,可以无视以上三处代码的修改,只需要把原代码处的cmp eax,3中的3改为8即可,当然大家可能早已改成6了。
最后简单说一下如何利用OllyDBG修改代码,其实非常简单,会用Offie或WPS就会修改代码,相比16进制编辑不容易改错代码。
以1.10英文版OllyDBG为例,首先打开要修改的可执行文件,然后在代码区(就是左上有指令的那部分)右键菜单依次选择“go to”(转到)、“Expression”(表达式)就会跳出一个地址框,在其中输入需要修改代码的地址,比如要修改读档部分就输入45c706,然后回车或点击地址框“OK”(确定)就转到需要修改代码的地址了。当然你也可以通过鼠标滚轮查看当前当前位置附近的其它指令代码。
接下来双击要修改的指令(注意不是指令的二进制代码部分,否则成设置断点了)或单击要修改的指令后直接开始输入就会出现指令框,输入完一条指令按回车或单击指令框“Assemble”,然后继续输入下一条指令。当前位置所有指令修改完毕后按Esc或单击指令框“Cancel”,指令框就消失了,此时选中当前位置所有修改过的指令然后选右键菜单中的“Copy to Executable”(复制到可执行文件),点击“Selection”(选中)后就会出现修改后的新可执行文件框,不过暂时现别理它。点击代码区后继续修改其它位置的代码,每修改完一处代码都重复刚才的操作将修改后的代码复制到新可执行文件,在最后一处代码修改完并复制到新可执行文件后,在新可执行文件框里点右键选“Save file”保存就可以了,注意另取一名,别覆盖原文件。


IP属地:山东1楼2023-11-08 00:24回复


    IP属地:山东来自Android客户端2楼2023-11-08 05:29
    回复


      IP属地:辽宁来自Android客户端3楼2023-11-08 07:02
      回复
        装备7个必杀后,存档。


        IP属地:广东来自Android客户端4楼2023-11-08 10:00
        回复
          读取楼上必杀的存档后,武将身上原来装备的7个必杀,只剩下装备3个(需要重新手动装备)。


          IP属地:广东来自Android客户端5楼2023-11-08 10:04
          回复
            还是虚心请教,能不能请老哥尝试解决读取进度后,武将的必杀技需要重新装配问题。
            直白点说,也就是,我装备了7个必杀存档,读取进度后,身上还是带着7个,可以吗?


            IP属地:广东来自Android客户端6楼2023-11-08 10:08
            回复
              是8没错啊。


              IP属地:广东来自Android客户端7楼2023-11-08 12:07
              回复
                唯一代码行出现不同的地方是,“存档”的代码。
                图1是楼主老哥你的代码。
                图2是我对着输代码后,显示的代码。
                楼主老哥的地址,改代码到“0045CE8B”的位置,就终止了。下一行是“0045CE92”。
                而我顺序着改,得到的情况却是多了一行。我用繁体2.1纯净未改的官方原版exe,按楼主老哥的代码一行行输,输到这里就是多了一行



                IP属地:广东来自Android客户端8楼2023-11-08 12:13
                回复
                  另外,楼主大哥能不能别折腾兄弟了,我就那点水平。能否干脆直接替我修正。


                  IP属地:广东来自Android客户端9楼2023-11-08 12:15
                  回复
                    你的代码少了那条bts指令,加上就没问题了


                    IP属地:山东来自Android客户端10楼2023-11-08 12:21
                    回复
                      2.1繁体版的原exe。自带“0045CE8C”这行代码。楼主老哥你的代码没有这一行。我改到“0045CE8B”位置就对着改不下去了


                      IP属地:广东来自Android客户端12楼2023-11-08 12:54
                      回复
                        输完指令后你按回车或点击asseble了吗?还是输入完就点cancel了?那样的花只是输入了一条指令但没加进去,就跟人吃了一口饭但没咽一样。如果是那样你不会所有地方都缺最后一条指令吧?


                        IP属地:山东来自Android客户端13楼2023-11-08 12:55
                        回复
                          应该还有人跟你出一样的问题,一块说一下吧,十六进制数的最高位如果不是数字而是字母的话OllyDbg是识别不出来的,这种情况下得在最高位前加个0。具体到这条指令,其中的参数“D4”得改为“0D4”,这样就可以了。


                          IP属地:山东来自Android客户端17楼2023-11-08 13:15
                          回复
                            我都是按照你说的,一条条顺序着输的。输完“0045CE87”这一行代码后。下面就接些出现“0045CE8A”和“0045CE8B”两行。 往“0045CE8A”里输完“DEC EDX”代码后。“0045CE8B”这行就卡主无法输了。 而“0045CE8C”的一行代码,原本官方版的exe里就存在。


                            IP属地:广东来自Android客户端18楼2023-11-08 13:27
                            回复
                              前前后后两个贴子,中间经历了十几小时,还找了好几个懂编码的朋友求教,总算完成了,激动得口沫鼻涕横流


                              IP属地:广东来自Android客户端19楼2023-11-08 13:38
                              回复