忆三国游戏网整理发布star175制作的曹操传6.2版引擎,相比于6.1版,6.2新引擎增加了不少新功能,如:新增对PNG格式图形的支持、新增7个特效、调整了武将情报对话框、增加了一个板凳升级的指令、一些战场信息的显示切换、扩充策略等。具体请看下方说明即可。
压缩包中除了有6.2引擎EXE之外,还有形象指定器和6.2配套文件。
6.2新增内容
一、新增对PNG格式图形的支持
PNG的几个特点:真彩,无损压缩,支持透明背景,其中最大特点就是支持透明背景。
理论上讲,只要是在6.1版里可以使用真彩的图(目前应为JPG(有损压缩)格式或24位RGB图)现在都能使用PNG(无损压缩)格式,但从压缩比方面来看,PNG的优势在于对与存在大块相同像素的图比jpg拥有更高的压缩比,反之则jpg的压缩比更高。
就ccz而言,游戏中的背景类图(场景,logo,S地图,城门,单挑背景,不镂空的头像等,这类图本身并不需要透明,所以也不能体现出PNG透明的特点),因此建议还是用jpg比较好,虽然jpg是有损压缩,但肉眼基本看不出来,这个还请自行斟酌。
前景(R,S形象,镂空头像,Meff,Mcall)这些可以用PNG格式,利用PNG支持透明背景的特点,彻底解决了粉边现象
但PNG应用R,S形象,镂空头像时,仍然是采用ccz的透明处理方法
而在PNG应用于Meff和Mcall时,可以自己选择是否采用PNG透明方式
这次更新了Meff编辑器,增加了一个勾选项“PNG透明方式”,如果把策略图替换成透明背景的PNG,再勾选此项,表示这张策略图采用PNG透明方式。
不勾 (默认)原版方式 即每一帧共用一个透明度(这样相当于抛弃了png图的半透明特性,只当作普通图来用, RS形象和镂空头像也是把png图当作普通图来用)
勾选 使用PNG自带的透明度,即每个像素点都有自己的透明程度,前提是图片使用了透明的PNG格。
不过要注意的是如果勾选,需要在作图时就设置好透明度,对不善于美工的人来说也比较麻烦,如果实在搞不定,还是用不勾比较省心,所以请根据自己的能力来吧。当然,Meff和Mcall并不强制要求更换为PNG格式,如果不用PNG格式,那么将忽略是否勾选,直接采取原版方式。
Ps:这次把weather也真彩化了,Weather.e5和Meff里的几个天气图可以使用真彩图了,当然也同样兼容目前使用的索引图。
总结一下就是
1、背景图照旧
2、R,S形象,镂空头像可以采用透明的PNG,仅仅是为了去粉边
3、Meff,Mcall也可照旧,也可使用透明PNG
4、对美工要求不高者,可以直接忽略PNG
对于PGN的补充说明:目前有人反映使用PNG后会花屏,这应该是文件转换的问题,255索引图不要直接转png,这样会在游戏里会花掉,应该先用PS打255索引图,先转为RGB,再另存为PNG即可
二、新增7个特效
70---批亢捣虚
需要设置特效值(1-5(分别对应攻防精暴士)),强制使用被攻击方的一项能力用于计算伤害、暴率,连率,也可设置特效值为6,则取对方最小的一项能力用于计算(物理攻击和策略攻击均有效)。不论取何值,均可单向克制唯我独尊(双方都按正常情况取得能力)。
71---万夫莫敌
需要设置特效值,最终的能力加成效果为(周围八格的敌对方人数+1(自己))*特效值(影响全能力)
72---限制伤害
需要设置特效值,最终的效果是在受到物理攻击时,所遭受的伤害不会大于这个特效值(可以克制破甲攻击),
这个效果值是越小越强,因此特意取消了这个特效的7级提升。
73---转移伤害(借力打力)
需要设置特效值,转移这个比率的物理伤害给攻击范围内血量最少的敌人身上(可以造成被转移目标的撤退,当自身血量很低时无效)。
这里的自身血量很低时无效,低到何种程度不易把握,只知道这个数字越低越难被打死,目前是采取和特效值进行比较。
00040F124 |. 3B55 E8 CMP EDX,DWORD PTR SS:[EBP-18]
这里的ebp-18就是特效值,也可以改成一个常数(要用ob改),
按照这样的设置,在血量>=100的情况下,即使每次都受到足以致死的伤害,本来可以一下打死的部队都得三下才能打死(在周围有敌人可以转移伤害的情况下),既不会过于bug,又能较好的体现这个效果的价值。
74---特效模仿
不需要特效值,可以模仿周围四格敌对方除特效屏蔽以外的特效(宝物,兵种,天赋),
可以模仿周围四格己方全部的特效(宝物,兵种,天赋)。
75---特效屏蔽
不需要特效值,可以屏蔽周围四格敌对方除特效屏蔽以外的特效(宝物,兵种,天赋)。
Ps:以上2个所能模仿或屏蔽的效果是在形象指定器-兵种特效列表框里有编号的,没有的则不起作用,如辅助增加能力类、穿透,吃豆这些
5F---再次移动
行动后还可以再移动一次,只能移动,不能干别的,和冲锋攻击共用了一个效果号。
效果编号扩充到7F(不增加字节的情况下7F就是最大值了,push 7F是2字节,而push 80需要5字节),目前已经用到75
三、调整了武将情报对话框
这一项修改最早在圣三的exe里就完成了,是多年以前的成果,感觉这样的布局较为清晰。而记录杀敌数则是新增内容。
在以前的版本里,辅助装备也用了3字节,但是实际上辅助装备没有等级和经验的概念,辅助装备其实只要1字节就够,所以把这多余的2字节用来记录杀敌数了。
又在此基础上增加了杀敌数能力加成。
杀敌数加成,用整形变量4046来控制,默认0 不开启1开启
五项能力是每杀敌30个增加1%,不封顶 0043C4E3 |. 6A 1E PUSH 1E ; 能力加成
HPmax和MPmax是每杀敌15个增加1%,不封顶 00407277 |. 6A 0F PUSH 0F ; HPmax
004072A3 |. 6A 0F PUSH 0F ; MPMax
虽然是不封顶,但MPmax依然受到能力上限的影响,不能超过255
Ps:最终的增加量与关卡设计以及游戏篇幅有关,所以给出了代码位置,以便自行调整
移动力是杀敌达到100个增加1,只加一次
以上加成是在果体的数据上进行计算,会在面板显示,并且在同时又开启了破百加成的情况下,二者是乘法叠加。
四、地形情报一览锁定第一列
多年前就有人对我说现在兵种太多了,地形情报第一列会随着水平滚动条的移动而隐藏掉,看起来不太方便啊,所以这次修改了一下,虽然是个无关紧要的内容,但是其实修改下来才发现这个的难度还真是不小。
五、增加了一个板凳升级的指令
数字信息填18,里面的文字为注释,可有可无
这个指令建议用于R剧本,在S剧本里用的话由于不会自动补血,所以用了以后,出战武将升级后都会缺血和mp。
升级会进行多次,比如现在队伍里就2个武将,一个10级,一个1级,这个时候平均等级是5级,但使用这个指令后不是把1级升到5级就完事,还会继续测试新的平均等级,最终会把1级的升到9级,这个和练武场是一样的道理,因为某个武将等级的提升会导致整个队伍平均的等级的提升。
同时调整的还有装备自动升级
以前开启装备自动升级后,战斗中不能获得装备经验,现在改回了可以获得,这样容易练的装备我方依然可以保持装备上的等级优势,不好练的又可以自动升级,总之,好处都得是玩家的。
Ps:这下人员自动升级和装备自动升级都齐全了
六、一些战场信息的显示切换
现有的是0-4键调整游戏速度
这次新增加了
5 切换是否显示残血血条
6 切换是否显示攻防精暴士移状态
7 切换是否显示人物装备(同伯伯补丁)
8 切换物理攻击预估伤害时是否显示暴率,连率,相克,被克
9 在S中,点击部队会出现这支部队的移动范围,现在加上了每一格的移动消耗和地形状态
a自动装备时不卸下强制不出战武将的装备
b在武将情报的策略栏可以显示策略的习的等级
c 对攻击方进行描边
以上都是来回切换,按一下有,再按一下没有
七、扩充策略
现有的是曾经增加过的6个策略,这次又增加了12个策略位置,实际使用了8个,剩余4个备用
纵火--在战场上出现一个火,从出现回合开始计算,维持3回合,可以用来堵路,使用时有地形限制(策略无视地形无效)
修筑--在战场上出现一个鹿砦地形,从出现回合开始计算,维持3回合,用来暂时获得一定的地形优势,和正常的鹿砦没区别,使用时有地形限制(策略无视地形无效),要花费少量金钱
诱敌--强制把一个敌军拉到身边,对坚守原地或处于麻痹、混乱的武将无效
瞬移--部队原地消失,然后在指定地点出现
以上都是一些足以改变战场态势的法术,是否采用请自行斟酌。
其余的为雷系法术,雷系法术可在任何天气和地形下使用
顺便提一下,这次发布的形象指定器已经增加了对策略的修改功能,此外直接在列表框里双击条目,会弹出对话框,可以编辑该条目的Imsg说明。
八、专属效果和套装效果
专属效果:特定武将佩带特定装备会有特殊效果
套装效果:不特定武将佩带特定装备(至少2件)会有特殊效果
类似的设置目前在剧本也比较常见,不过剧本里的效果往往是exe里没有的,而exe里已有的效果就可以用这个来设置
设置专属效果的指令写法
数字信息必须填10
第一行 0 表示设置专属效果
第二行 共5个数字,中间用半角逗号分隔
其余为注释,可有可无
指令执行后的效果
设置套装效果的指令写法
数字信息必须填10
第一行 1 表示设置套装效果
第二行 共6个数字,中间用半角逗号分隔
其中第二行的01,57,255表示武器、护具、辅助的编号,要按顺序来写,本例的辅助写了255,表示忽略辅助,只要满足武器和护具的要求即可获得套装的效果
其余为注释,可有可无
指令执行后的效果
每个特效可以同时设置为2个专属和2个套装
特效号用形象指定器打开exe,点开兵种特效可以看到全部的特效号
九、对一些剧本指令的修改
1、4d 武将状态变更 的修改
在原版里,当这个指令作用于一个范围时,受到影响的部队是依次显示策略动画,现在改为同时显示,这样速度可以大大加快用整形变量4043来控制,默认0 同时显示策略动画,1 同原版
2、3c 武将加入测试 的修改
这个指令的作用就是测试一个武将是否已经加入队伍,目前这种功能一般都是用变量来解决,也就使得这条指令基本无人使用,浪费一条测试指令可惜了,所以这次把它改造成了 武将行为测试
这个指令除开第一个人物下拉列表外,还有两个下拉列表,根据不同的选择,总共能产生6种组合
对于玩家来说战场上有8个指令按钮,除掉交换和取消,正好也是6个(而AI还要去掉道具和待命,只有4种)
具体排列如下
如图所示,后两个下拉列表都是选择了第一项,表示要测试物理攻击,此时指定的人物(也可以选择我军友军敌军)只要进行一次物理攻击就可以触发相应剧情。
为了实现这个功能,调换了2个按钮的id号,相应的也调整CmdIcon.dll的图片顺序,新的CmdIcon.dll放在本次配套文件里,覆盖原来的即可。
3、3e 加入装备设定 的修改
这个修改在6.1就已经有了,但发布时忘记说了
这条指令在使用卸去装备的时候,装备是直接消失掉,现在改为对于一个属于我方阵营的人物,如果把武器的等级设为1(对三种装备都有效),卸掉的装备会进入仓库
如图所示,此时,武器的等级选择了lv1,执行后的结果是把三件装备全部放入仓库。
针对52兵种改变 指令会导致装备丢失的情况,可以利用这个方法和52指令配合使用,避免装备丢失
52指令在这种情况下装备会丢失:如果武将当前装备了新的兵种不能装备的武器或护具(辅助不受影响),那么改变后武器或护具会自动换成合适新的兵种使用的店货(相当于给的补偿),原武器护具消失。
如图所示,如果直接执行52指令,我方队员刘备的初始兵种是群雄,现在要变为道士,那么身上的武器或护具会变成适合道士使用的店货。
所以可以先执行一个3e指令卸掉装备(注意这里的3e指令,武器选择了lv1,装备会进入仓库),然后再改变兵种,此时由于武器和护具为空,也不会自动配上店货。
Ps:使用52兵种改变 指令较多的封神,对于杨戬战前变化是采用离队再入队的方法来处理装备问题,如果用现在的方法可以少写2个3b指令,运行结果是一样的
4、修正使用群伤策略不能触发5e指令的bug
5、6b指令用于R
目前在R中使用策略动画的情况也比较常见,但通常都是把策略图放到R形象里,实际上6b是可以直接在R里使用,只是坐标没转换,所以仅仅是修正了一下坐标而已。
十、特效自动使用 吃豆不消耗
顾名思义,不解释
用整形变量4035来控制,默认0 同原版1 不消耗
十一、修正指针变量遗留bug
6.0版有个指针变量存档化,但后来发现bug,这次修正了这个bug
一般游戏中的一些固定设置,如果想要改变这些设置,可以用指针变量进行修改,但目前可以改却不能保存,下次重开游戏,即使是读档,修改过的数据也会恢复成原值。
这次修正后把指针变量缩减到304个
0-199(200个)用法照旧,不进行特殊记录。
200-303(104个)则进行存档化,特殊需要时使用
举个例子 我方武将加入时的初始功勋的原值是25 (H19),这个数据可以在全局设置里改,但如果现在想在游戏过程里修改,还要求能一直存档就可以用200以后的指针变量来实现了
首先要知道这个数据的地址,是在40C388,如果现在想改为初始50(H32)
就是把 0040C387 6A 19 PUSH 19 ; |初始功勋
改为 0040C387 6A 32 PUSH 32 ; 初始功勋
写法如下
第一个77指令是设置为byte运算,因为这里只要改一个字节
第二个77指令把4244360(H40C388)这个地址放入指针变量200
第三个77把修改H40C388的值改为50(H32)
可以看到在写法上与以前版本是一样的,现在只是专门对200-303的指针变量做了特殊处理而已。
执行这三条指令后,40C388的值会一值保持H32,这个时候进行存档并关闭游戏,然后重开游戏再读取这个存档,数据也仍然是H32;如果读取一个没有执行这三条指令的存档或则重新开始游戏,这个值则会变回原始值,这就实现了指针变量存档化。
当然,如果在以后游戏过程中,又想恢复初始值25(H19),也专门为此写了一个指令
数字信息必须填19,
消息第一行是想要清除指针变量编号
第二行是注释,可有可无
执行这个指令后,即可恢复原始的数据。
十二、对单挑中的s形象进行了柔化处理,降低了马赛克现象
十三、文件夹化
以前的版本已经把地图,剧本,音效、存档都归类放入文件夹了,这次把大部分的E5文件也归入文件夹,文件夹名就叫E5,
上图的E5文件还是和exe放在一起(这些文件由于涉及到各种修改工具,还是要和exe放一起,font.e5用途不明),其余的E5文件放入文件夹,另外那个记录通关和宝物的Svcmn.e5s改名为SV.E5S,放到sv文件夹里去了
十四、解决了Mp3serv.dat的限制
以前版本的一个限制,如果修改了游戏的标题后必须同时修改Mp3serv.dat的a1c0(已解压)或5b9a(未解压)处的文字,二者要一模一样,否则游戏没有音乐,这次把这个限制去掉了,以后只要改游戏标题即可,不用再修改Mp3serv.dat了(改了反而没音乐)。
修改好的Mp3serv.dat(已解压)放在本次的配套文件里,替换掉原来的即可。
大概就是这些了,无关紧要的小修改就不提了,请自行体验。
6.2修正版(2021-05-19发布)
修正6.2版已知的全部bug(含本帖384楼之前报告的bug以及其他渠道获得的bug),但是264楼的没改,方法在267楼,请自行修改
修正版新增内容
一、增加一个策略-撞心
用了空白策略9的位置,效果参考封神榜,只能对本方队员使用, 可让目标恢复状态并损血
Data不重发了,自行设置,策略编号是52,策略类型为39,施展对象为本方,其余项目凭个人喜好。
二、增加20个自动存档位置(201-220)
在每回合开始时自动存档,默认关闭,按a键开启,再按一下关闭,原来a键的功能改到d键
三、可以通过设置整形变量4034(我友)和4033(敌援)的值来调整相应阵营的能力(不会显示于面板),用以改变游戏的总体难度。
如 设置4034=150,则我友全能力实际调整为150%
设置4033=80, 则敌援全能力实际调整为80%
这两个整形变量的默认值为0,即不做任何能力调整。
四、对无限移动的bug进行修正
应该不会再出现这种现象了(还要多进行一些测试才能确定)。如果系统检测到是一个无法抵达的地点,会自动作出调整,移动到一个距离该地点比较接近的一个新的目标点。
五、整形变量格式化文本
这个有人发帖询问过,是个不错的想法,所以这次增加了这个功能,这样就可以直接用指令来显示整形变量的值了(也可用于历史情报的显示)
格式化文本为 */整形变量号
例1
要在对话时显示我军的资金数,可以用下列指令来实现
第一个77指令金钱数是一个dword值,所以要先设置4076为dword运算
第二个77指令金钱的内存地址是在(H4b077C) 4917116,把这个地址放到指针变量0
第三个77指令把指针变量0的值放到整形变量0,这样一来,整形变量0的值就是金钱数了。
然后对话就可以显示整形变量0的数字了
运行效果如下
同理,你感兴趣的数据都可以这样显示出来,前提是你知道这些数据的内存地址
例2
上一例的数据不是直接放在整形变量中,所以要先知道内存,再通过指针变量来传递到整形变量,还有一些自定义的数据是直接放在整形变量中的,如 游戏里设置了好感度,或是类似瓦岗的尘屑这种特殊物品,玩家如果想查看这些数据实属不易,那么现在可以放到历史情报里以便随时查看。
这类数据由于是直接放在整形变量中,剧本指令也相对简单
假设道具数量在整形变量1,好感度在整形变量2,剧本如下:
运行效果如下
这里看到的都是实时数据,玩家可以在任何时候查看历史情报
最后 形象指定器也有更新,增加了数据搬运的功能。
常见问题
Q:我想继续使用自己的data.e5,为什么按要求扩充了新策略后,再用形象指定器编辑新策略会闪退?
A:用UE把data的ce0e至d299的数据全部改为0就行了,这个位置原来的一些数据会使形象指定器出错,要先全部清零。
Q:开启装备自动升级后,有些普通装备莫名直接升到5级
A:归根结底是调整了普通装备顺序导致的,以6.2版的神话三国志为例,第二关婴宁穿1级麻布衣入队,进入S01后,直接变为5级,看了一
下DATA,麻布衣设为了普通袍服,但482427处没有改顺序,因此就出Bug了。
总之,普通装可以不用(三阶都不要用),也可设为特殊装备(三阶都要设为特殊装备)
但 不要调普通装备顺序 不要调普通装备顺序 不要调普通装备顺序
困扰好几天的问题,终于找到原因了
Q:扳手用于6.2版exe的时候,读取到的兵种名称不全,也不能加人物特性了
A:因为exe的部分数据变动导致扳手的一些功能被自动禁用了。
可以修改扳手2.0的几个地方进行恢复(注意:是改扳手而不是改引擎)
0040397B |. 68 69B74100 PUSH 41B769 ; 兵种名称
00404CFA |. 68 87114000 PUSH 00401187 ; 特性
00404D11 |. 68 8EF44000 PUSH 0040F48E ; 特性
004084C1 . 68 90F44000 PUSH 0040F490 ; 特性数量
00408509 . 8D96 96FF0400 LEA EDX,DWORD PTR DS:[ESI+4FF96] ; 特性名称
修改后的扳手2.0只能用于6.2版exe
本修改方法未完全测试,请自行承担由此引发的不良后果
6.2修正版的bug处理方法
1、70 能力选择复制 无效(只能用于6.2修正版)
0040F32F |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; /改
6.2要修正这个bug的话把6.2修正版的抄过去,但是位置不够,要自己找空间
2、转移伤害被穿透攻击打时往往会失效(可用于6.2及6.2修正版)
0040654D |. E8 3E660000 |CALL Ekd5.0040CB90 ; 转移伤害 40F082
0040CB90 /$ 55 PUSH EBP
0040CB91 |. 8BEC MOV EBP,ESP
0040CB93 |. 6A 00 PUSH 0 ; -4
0040CB95 |. 6A 00 PUSH 0 ; -8
0040CB97 |. 83EC 1C SUB ESP,1C ; 0C--24
0040CB9A |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0040CB9D |. 33D2 XOR EDX,EDX
0040CB9F |> 807C11 10 FF /CMP BYTE PTR DS:[ECX+EDX+10],0FF
0040CBA4 |. 74 03 |JE SHORT Ekd5.0040CBA9
0040CBA6 |. 42 |INC EDX
0040CBA7 |.^ EB F6 JMP SHORT Ekd5.0040CB9F
0040CBA9 |> 8955 E0 MOV DWORD PTR SS:[EBP-20],EDX ; 获得初始的穿透人数
0040CBAC |. EB 03 JMP SHORT Ekd5.0040CBB1
0040CBAE |> FF45 F8 /INC DWORD PTR SS:[EBP-8]
0040CBB1 |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0040CBB4 |. 3B45 E0 |CMP EAX,DWORD PTR SS:[EBP-20] ; 仅对原有的穿透对象进行判断
0040CBB7 |. 0F83 F7000000 |JNB Ekd5.0040CCB4
0040CBBD |. 8B4D 08 |MOV ECX,DWORD PTR SS:[EBP+8]
0040CBC0 |. 8B4C08 10 |MOV ECX,DWORD PTR DS:[EAX+ECX+10]
0040CBC4 |. E8 3096FFFF |CALL Ekd5.004061F9
0040CBC9 |. 894D EC |MOV DWORD PTR SS:[EBP-14],ECX ; 4B****
0040CBCC |. E8 BE99FFFF |CALL Ekd5.0040658F
0040CBD1 |. E8 2CF80200 |CALL Ekd5.0043C402 ; 判断是否有转移伤害的装备
0040CBD6 |. 85C0 |TEST EAX,EAX
0040CBD8 |.^ 74 D4 |JE SHORT Ekd5.0040CBAE ; 无 跳转
0040CBDA |. 8945 E8 |MOV DWORD PTR SS:[EBP-18],EAX ; 特效值放在这里
0040CBDD |. E8 398F0100 |CALL Ekd5.00425B1B
0040CBE2 |. 6A 00 |PUSH 0 ; /Arg4 = 00000000
0040CBE4 |. 6A 00 |PUSH 0 ; |Arg3 = 00000000
0040CBE6 |. 6A 50 |PUSH 50 ; |Arg2 = 00000050
0040CBE8 |. 6A 02 |PUSH 2 ; |Arg1 = 00000002
0040CBEA |. 8B4D EC |MOV ECX,DWORD PTR SS:[EBP-14] ; |
0040CBED |. E8 86EC0000 |CALL Ekd5.0041B878 ; 获取攻击范围内的敌方战场编号
0040CBF2 |. C645 FC 00 |MOV BYTE PTR SS:[EBP-4],0
0040CBF6 |. C745 F4 FFFFF>|MOV DWORD PTR SS:[EBP-C],-1 ; 默认FFFFFFFF
0040CBFD |. C645 F0 FF |MOV BYTE PTR SS:[EBP-10],0FF ; 默认0FF
0040CC01 |. EB 03 |JMP SHORT Ekd5.0040CC06
0040CC03 |> FF45 FC |/INC DWORD PTR SS:[EBP-4]
0040CC06 |> 8B45 FC | MOV EAX,DWORD PTR SS:[EBP-4]
0040CC09 |. 8A88 48C74A00 ||MOV CL,BYTE PTR DS:[EAX+4AC748]
0040CC0F |. 80F9 FF ||CMP CL,0FF
0040CC12 |. 74 27 ||JE SHORT Ekd5.0040CC3B
0040CC14 |. 8B55 08 ||MOV EDX,DWORD PTR SS:[EBP+8]
0040CC17 |. 3A0A ||CMP CL,BYTE PTR DS:[EDX]
0040CC19 |.^ 74 E8 ||JE SHORT Ekd5.0040CC03 ; 不能转移到攻击方自身
0040CC1B |. 884D E4 ||MOV BYTE PTR SS:[EBP-1C],CL
0040CC1E |. E8 D695FFFF ||CALL Ekd5.004061F9
0040CC23 |. E8 5E360C00 ||CALL Ekd5.004D0286
0040CC28 |. 3B45 F4 ||CMP EAX,DWORD PTR SS:[EBP-C]
0040CC2B |.^ 73 D6 ||JNB SHORT Ekd5.0040CC03
0040CC2D |. 8945 F4 ||MOV DWORD PTR SS:[EBP-C],EAX ; 保留血量最小者的当前血量
0040CC30 |. 8945 DC ||MOV DWORD PTR SS:[EBP-24],EAX ; 保留血量最小者的当前血量
0040CC33 |. 8A4D E4 ||MOV CL,BYTE PTR SS:[EBP-1C]
0040CC36 |. 884D F0 ||MOV BYTE PTR SS:[EBP-10],CL ; 保留血量最小者战场编号
0040CC39 |.^ EB C8 |JMP SHORT Ekd5.0040CC03
0040CC3B |> 807D F0 FF |CMP BYTE PTR SS:[EBP-10],0FF
0040CC3F |. 74 6E |JE SHORT Ekd5.0040CCAF ; 没有可转移对象 跳转
0040CC41 |. 8B45 08 |MOV EAX,DWORD PTR SS:[EBP+8]
0040CC44 |. 8B4D F8 |MOV ECX,DWORD PTR SS:[EBP-8]
0040CC47 |. 8D8488 840000>|LEA EAX,DWORD PTR DS:[EAX+ECX*4+84]
0040CC4E |. 8B10 |MOV EDX,DWORD PTR DS:[EAX]
0040CC50 |. 3B55 E8 |CMP EDX,DWORD PTR SS:[EBP-18]
0040CC53 |. 72 5A |JB SHORT Ekd5.0040CCAF ; 血量太少 不触发 跳转
0040CC55 |. 50 |PUSH EAX
0040CC56 |. 52 |PUSH EDX
0040CC57 |. FF75 E8 |PUSH DWORD PTR SS:[EBP-18]
0040CC5A |. E8 352A0C00 |CALL Ekd5.004CF694
0040CC5F |. 59 |POP ECX
0040CC60 |. 2901 |SUB DWORD PTR DS:[ECX],EAX
0040CC62 |. 3B45 F4 |CMP EAX,DWORD PTR SS:[EBP-C]
0040CC65 |. 77 03 |JA SHORT Ekd5.0040CC6A
0040CC67 |. 8945 F4 |MOV DWORD PTR SS:[EBP-C],EAX
0040CC6A |> 8B4D E0 |MOV ECX,DWORD PTR SS:[EBP-20]
0040CC6D |. 894D FC |MOV DWORD PTR SS:[EBP-4],ECX
0040CC70 |. EB 03 |JMP SHORT Ekd5.0040CC75
0040CC72 |> FF45 FC |/INC DWORD PTR SS:[EBP-4]
0040CC75 |> 8B55 FC | MOV EDX,DWORD PTR SS:[EBP-4]
0040CC78 |. 8B4D 08 ||MOV ECX,DWORD PTR SS:[EBP+8]
0040CC7B |. 8A4411 10 ||MOV AL,BYTE PTR DS:[ECX+EDX+10]
0040CC7F |. 3C FF ||CMP AL,0FF
0040CC81 |. 74 19 ||JE SHORT Ekd5.0040CC9C
0040CC83 |. 3A45 F0 ||CMP AL,BYTE PTR SS:[EBP-10]
0040CC86 |.^ 75 EA |JNZ SHORT Ekd5.0040CC72
0040CC88 |. 8B8491 840000>|MOV EAX,DWORD PTR DS:[ECX+EDX*4+84]
0040CC8F |. 0345 F4 |ADD EAX,DWORD PTR SS:[EBP-C]
0040CC92 |. 3B45 DC |CMP EAX,DWORD PTR SS:[EBP-24]
0040CC95 |. 76 0F |JBE SHORT Ekd5.0040CCA6
0040CC97 |. 8B45 DC |MOV EAX,DWORD PTR SS:[EBP-24]
0040CC9A |. EB 0A |JMP SHORT Ekd5.0040CCA6
0040CC9C |> 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
0040CC9F |. 884411 10 |MOV BYTE PTR DS:[ECX+EDX+10],AL ; 保存受转移的战场编号
0040CCA3 |. 8B45 F4 |MOV EAX,DWORD PTR SS:[EBP-C]
0040CCA6 |> 8D8C91 840000>|LEA ECX,DWORD PTR DS:[ECX+EDX*4+84]
0040CCAD |. 8901 |MOV DWORD PTR DS:[ECX],EAX ; 保存受转移的损失血量
0040CCAF |>^ E9 FAFEFFFF JMP Ekd5.0040CBAE
0040CCB4 |> 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0040CCB7 |. E8 2C5A0400 CALL Ekd5.004526E8
0040CCBC |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0040CCBF |. E8 A28CFFFF CALL Ekd5.00405966
0040CCC4 |. 8B4D E0 MOV ECX,DWORD PTR SS:[EBP-20]
0040CCC7 |. 034D 08 ADD ECX,DWORD PTR SS:[EBP+8]
0040CCCA |. C641 10 FF MOV BYTE PTR DS:[ECX+10],0FF
0040CCCE |. 8BE5 MOV ESP,EBP
0040CCD0 |. 5D POP EBP
0040CCD1 . C2 0400 RETN 4
旧函数40F082废弃
3 扳手的自动回归功能失效
0044D8C2 /$ 55 PUSH EBP
0044D8C3 |. 8BEC MOV EBP,ESP
0044D8C5 |. E8 6177FBFF CALL Ekd5.0040502B
0044D8CA |. 8A4D 08 MOV CL,BYTE PTR SS:[EBP+8]
0044D8CD |. E8 BE83FCFF CALL Ekd5.00415C90 ; 再次移动
0044D8D2 |. 5D POP EBP
0044D8D3 . C2 0400 RETN 4
0044E553 |. /74 29 |JE SHORT Ekd5.0044E57E
0044E555 |. |FF75 D8 |PUSH DWORD PTR SS:[EBP-28] ; /Arg1
0044E558 |. |E8 65F3FFFF |CALL Ekd5.0044D8C2 ; 再次移动
0044E55D |. |8B4D D8 |MOV ECX,DWORD PTR SS:[EBP-28]
0044E560 |. |EB 0D |JMP SHORT Ekd5.0044E56F
0044E562 |> |FEC8 |/DEC AL
0044E564 |. |A2 9C0E5000 ||MOV BYTE PTR DS:[500E9C],AL
0044E569 |. |8A88 9D0E5000 ||MOV CL,BYTE PTR DS:[EAX+500E9D]
0044E56F |> |51 | PUSH ECX
0044E570 |. |E8 26170800 ||CALL Ekd5.004CFC9B ; 调试器 自动回归
0044E575 |. |A0 9C0E5000 ||MOV AL,BYTE PTR DS:[500E9C]
0044E57A |. |84C0 ||TEST AL,AL
0044E57C |.^|75 E4 |JNZ SHORT Ekd5.0044E562
0044E57E |> 90 |NOP
0044E57F |. 90 |NOP
0044E580 |. 90 |NOP
0044E581 |. 90 |NOP
0044E582 |. 90 |NOP
4 在战场使用3b指令倒戈后有时会闪退(测试发现如果部队在倒戈时处于中毒状态就会闪退,也可用于6.1、6.2)
0044E019 |. E8 72ACFCFF |CALL Ekd5.00418C90
0044E01E |. 3C 02 |CMP AL,2
0044E020 |.^ 75 E0 |JNZ SHORT Ekd5.0044E002
0044E022 |. 6A 10 |PUSH 10 ; /Arg1 = 00000010
0044E024 |. E8 B786FBFF |CALL Ekd5.004066E0 ; 检测是否中毒
0044E029 |. 85C0 |TEST EAX,EAX
0044E02B |.^ 74 D5 |JE SHORT Ekd5.0044E002
0044E02D |. 90 |NOP
0044E02E |. 90 |NOP
0044E02F |. 90 |NOP
0044E030 |. 90 |NOP
0044E031 |. 90 |NOP
0044E032 |. 90 |NOP
0044E033 |. 90 |NOP
0044E034 |. 90 |NOP
0044E035 |. 90 |NOP
0044E036 |. 90 |NOP
0044E037 |. 90 |NOP
0044E038 |. 90 |NOP
0044E039 |. 90 |NOP
0044E03A |. 90 |NOP
0044E03B |. 90 |NOP
0044E03C |. 90 |NOP
0044E03D |. 90 |NOP
0044E03E |. 8B4D E0 |MOV ECX,DWORD PTR SS:[EBP-20]
0044E041 |. E8 4985FBFF |CALL Ekd5.0040658F
0044E046 |. E8 1892FBFF |CALL Ekd5.00407263
0044E04B |. 33D2 |XOR EDX,EDX
0044E04D |. B9 0A000000 |MOV ECX,0A
0044E052 |. F7F1 |DIV ECX
0044E054 |. 85C0 |TEST EAX,EAX
0044E056 |. 75 01 |JNZ SHORT Ekd5.0044E059
0044E058 |. 40 |INC EAX
5、LOGO画面时出现在左下角的黑色方块(增加了出战位置预览的版本都有这个现象)
0047ED9B .^E9 40DFF8FF JMP 0040CCE0
0047EDA0 90 NOP
0040CCE0 > /833D 44D04B00>CMP DWORD PTR DS:[4BD044],0A
0040CCE7 . |75 0D JNZ SHORT 0040CCF6
0040CCE9 . |33C0 XOR EAX,EAX
0040CCEB . |3945 EC CMP DWORD PTR SS:[EBP-14],EAX
0040CCEE . |7E 06 JLE SHORT 0040CCF6
0040CCF0 . |8745 EC XCHG DWORD PTR SS:[EBP-14],EAX
0040CCF3 . |2945 E4 SUB DWORD PTR SS:[EBP-1C],EAX
0040CCF6 > |8B4D EC MOV ECX,DWORD PTR SS:[EBP-14]
0040CCF9 . |8B7D E4 MOV EDI,DWORD PTR SS:[EBP-1C]
0040CCFC . |E9 A0200700 JMP 0047EDA1
6、WIN10系统中在战场按鼠标右键极易弹出武将情报对话框
0044E3CA PUSH 202 改为 push 205
原版在 44E424
这个改法可用于其他的版本,但不同版本的位置可能会有些差异,只要在这个地址附近找一下,会有2个push 202,把前一个改为 push 205
7、剧本破百后不能正确读取127号商店的数据
0041B81C |. /77 12 |JA SHORT Ekd5.0041B830
8、修正手动单挑时敌方可以打到我方的其他部队的bug
这个是早期遗留bug,满足2个条件就会出现
1、战场(0,0)坐标有一个我军队伍
2、进行手动单挑的敌方部队有奋战攻击并且有没羽箭或更大的攻击范围
004236CA |. 8B90 800C0000 MOV EDX,DWORD PTR DS:[EAX+C80]
004236D3 |. C780 800C0000 FFFF2300 MOV DWORD PTR DS:[EAX+C80],23FFFF
004236F9 |. 66:C705 2C424B00 0401 MOV WORD PTR DS:[4B422C],104
004CF0FE 8990 800C0000 MOV DWORD PTR DS:[EAX+C80],EDX
9 【再次移动】的一个bug:如果装有再次移动的单位去攻击先反的单位导致被击退,仍然会出现移动框,并且可以移动,之后人物才消失
00415C99 .^E9 7270FFFF JMP 0040CD10
0040CD10 > /E8 1E9E0100 CALL 00426B33
0040CD15 . |85C0 TEST EAX,EAX
0040CD17 . |0F85 B88F0000 JNZ 00415CD5
0040CD1D . |8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
0040CD20 . |E8 6A98FFFF CALL 0040658F
0040CD25 . |E9 748F0000 JMP 00415C9E
10 弹出“打开文件E5/TS.E5时出错“提示框
精进这个策略默认是单体效果,并且只能对我军使用,这样是不会有问题的
如果把这个策略改为多体效果,并且战场上的第7个友军受到了影响,此后保存的存档再读取时就会出现此提示,之后闪退
00420BEC |. 0FB690 8E0C4200 MOVZX EDX,BYTE PTR DS:[EAX+420C8E]
00420BF3 |. 8A45 0C MOV AL,BYTE PTR SS:[EBP+C]
00420BF6 |. FF2495 620C4200 JMP DWORD PTR DS:[EDX*4+420C62]
00420BFD |> 3C 10 CMP AL,10
00420BFF |. 73 54 JNB SHORT Ekd5.00420C55
00420C01 |. 05 E61B5000 ADD EAX,Ekd5.00501BE6
00420C06 |. C600 03 MOV BYTE PTR DS:[EAX],3
00420C09 |. EB 4A JMP SHORT Ekd5.00420C55
00420C0B |> 05 501B5000 ADD EAX,Ekd5.00501B50
00420C10 |. B2 02 MOV DL,2
00420C82 . B0C4200 DD Ekd5.00420C0B
00420C8A . FD0B4200 DD Ekd5.00420BFD
Bug修正方法(注意:这些修正方法不再适用于6.2修正版)
1、修正 5b 战场高亮区域 的bug
004166E8 > 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004166EB . 3C 04 CMP AL,4
004166ED . 73 28 JNB SHORT Ekd5.00416717
004166EF . 83E0 01 AND EAX,1
004166F2 . 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004166F5 .^ E9 0664FFFF JMP Ekd5.0040CB00
004166FA 90 NOP
004166FB 90 NOP
004166FC 90 NOP
004166FD 90 NOP
0040CB00 > /85C0 TEST EAX,EAX
0040CB02 . |75 07 JNZ SHORT Ekd5.0040CB0B
0040CB04 . |E8 8A4F0400 CALL Ekd5.00451A93
0040CB09 . |EB 05 JMP SHORT Ekd5.0040CB10
0040CB0B > |E8 944F0400 CALL Ekd5.00451AA4
0040CB10 > |50 PUSH EAX ; /Arg1
0040CB11 . |E8 2E080000 CALL Ekd5.0040D344 ; Ekd5.0040D344
0040CB16 . |E9 E39B0000 JMP Ekd5.004166FE
2、修正 使用策略 瞬移 后,HPMP回满,状态恢复,SP清零 的bug
0043D9DE |. E8 5A50FDFF CALL Ekd5.00412A3D ; 瞬移策略
00412A3D /$ 55 PUSH EBP ; 瞬移策略
00412A3E |. 8BEC MOV EBP,ESP
00412A40 |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
00412A43 |. 8B01 MOV EAX,DWORD PTR DS:[ECX]
00412A45 |. 05 001C5000 ADD EAX,Ekd5.00501C00
00412A4A |. 50 PUSH EAX
00412A4B |. 0FB600 MOVZX EAX,BYTE PTR DS:[EAX]
00412A4E |. 50 PUSH EAX
00412A4F |. FF71 1C PUSH DWORD PTR DS:[ECX+1C]
00412A52 |. FF71 18 PUSH DWORD PTR DS:[ECX+18]
00412A55 |. FF71 14 PUSH DWORD PTR DS:[ECX+14]
00412A58 |. FF71 10 PUSH DWORD PTR DS:[ECX+10]
00412A5B |. FF75 0C PUSH DWORD PTR SS:[EBP+C] ; /Arg2
00412A5E |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |Arg1
00412A61 |. E8 5CC1FFFF CALL Ekd5.0040EBC2 ; Ekd5.0040EBC2
00412A66 |. 6A 0F PUSH 0F
00412A68 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00412A6B |. 50 PUSH EAX
00412A6C |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
00412A6F |. 83C1 10 ADD ECX,10
00412A72 |. 51 PUSH ECX
00412A73 |. E8 68EF0600 CALL Ekd5.004819E0
00412A78 |. 83C4 0C ADD ESP,0C
00412A7B |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00412A7E |. 8A45 F8 MOV AL,BYTE PTR SS:[EBP-8]
00412A81 |. 8801 MOV BYTE PTR DS:[ECX],AL
00412A83 |. 8BE5 MOV ESP,EBP
00412A85 |. 5D POP EBP
00412A86 . C2 0800 RETN 8
3 修正开启现代战场模式后,战前装备阶段点卖出会闪退的bug
00461D0E |. 81EC E00A0000 SUB ESP,0AE0
00461D17 8985 14F5FFFF MOV DWORD PTR SS:[EBP-AEC],EAX
00461D65 |> 8D8D 18F5FFFF LEA ECX,DWORD PTR SS:[EBP-AE8]
00461D83 |. 8D8D 18F5FFFF LEA ECX,DWORD PTR SS:[EBP-AE8] ; |
00461D95 |. 8D8D 18F5FFFF LEA ECX,DWORD PTR SS:[EBP-AE8]
0046B982 |. 81C1 48080000 ADD ECX,848
00472776 81C1 48080000 ADD ECX,848
00472903 |. 81C1 48080000 ADD ECX,848
4 修正 当策略图使用PNG格式时会出现图片花掉的现象
经测试,使用了PNG图片并且显示次数大于图片实际帧数时会出现图片花掉的现象(MEFF和MCALL都有此bug)
修正Meff
00402396 /$ 55 PUSH EBP
00402397 |. 8BEC MOV EBP,ESP
00402399 |. 51 PUSH ECX ; -4
0040239A |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0040239D |. 8B5481 14 MOV EDX,DWORD PTR DS:[ECX+EAX*4+14]
004023A1 |. 52 PUSH EDX ; -8
004023A2 |. 8A02 MOV AL,BYTE PTR DS:[EDX]
004023A4 |. FFB481 B4000000 PUSH DWORD PTR DS:[ECX+EAX*4+B4] ; -C
004023AB |. 8B41 0C MOV EAX,DWORD PTR DS:[ECX+C]
004023AE |. 0FAF41 08 IMUL EAX,DWORD PTR DS:[ECX+8]
004023B2 |. 50 PUSH EAX ; -10
004023B3 |. 6BC0 03 IMUL EAX,EAX,3
004023B6 |. 50 PUSH EAX ; /Arg3
004023B7 |. FFB1 D00F0000 PUSH DWORD PTR DS:[ECX+FD0] ; |Arg2
004023BD |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C] ; |
004023C0 |. FFB481 2C0C0000 PUSH DWORD PTR DS:[ECX+EAX*4+C2C] ; |Arg1
004023C7 |. E8 31D90700 CALL Ekd5.0047FCFD ; Ekd5.0047FCFD
004023CC |. 83C4 0C ADD ESP,0C
004023CF |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004023D2 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004023D5 |. 837D 10 01 CMP DWORD PTR SS:[EBP+10],1
004023D9 |. 74 1F JE SHORT Ekd5.004023FA ;
004023DB |. FFB1 D00F0000 PUSH DWORD PTR DS:[ECX+FD0] ; /背景
004023E1 |. 6A 00 PUSH 0 ; |Arg5 = 00000000
004023E3 |. 6A 02 PUSH 2 ; |Arg4 = 00000002
004023E5 |. 0FB650 03 MOVZX EDX,BYTE PTR DS:[EAX+3] ; |策略图透明程度
004023E9 |. 6BD2 06 IMUL EDX,EDX,6 ; |
004023EC |. 52 PUSH EDX ; |Arg3
004023ED |. FF75 F4 PUSH DWORD PTR SS:[EBP-C] ; |前景
004023F0 |. FF75 F0 PUSH DWORD PTR SS:[EBP-10] ; |H*W
004023F3 |. E8 14450000 CALL Ekd5.0040690C ; 处理天气图的透明度
004023F8 |. EB 1D JMP SHORT Ekd5.00402417
004023FA |> 0FB610 MOVZX EDX,BYTE PTR DS:[EAX]
004023FD |. 52 PUSH EDX ; /要显示帧编号
004023FE |. FFB1 D00F0000 PUSH DWORD PTR DS:[ECX+FD0] ; |背景
00402404 |. 8A50 02 MOV DL,BYTE PTR DS:[EAX+2] ; |
00402407 |. 52 PUSH EDX ; |Arg4
00402408 |. 8A50 03 MOV DL,BYTE PTR DS:[EAX+3] ; |
0040240B |. 52 PUSH EDX ; |Arg3
0040240C |. FF75 F4 PUSH DWORD PTR SS:[EBP-C] ; |前景
0040240F |. FF75 F0 PUSH DWORD PTR SS:[EBP-10] ; |H*W
00402412 |. E8 E5C40000 CALL Ekd5.0040E8FC ; 处理天气以外的透明度
00402417 |> 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
0040241A |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
0040241D |. FFB1 D00F0000 PUSH DWORD PTR DS:[ECX+FD0] ; /Arg5
00402423 |. FF71 0C PUSH DWORD PTR DS:[ECX+C] ; |Arg4
00402426 |. FF71 08 PUSH DWORD PTR DS:[ECX+8] ; |Arg3
00402429 |. FFB4C1 C0060000 PUSH DWORD PTR DS:[ECX+EAX*8+6C0] ; |Arg2
00402430 |. FFB4C1 BC060000 PUSH DWORD PTR DS:[ECX+EAX*8+6BC] ; |Arg1
00402437 |. E8 5FBC0700 CALL Ekd5.0047E09B ; 绘图
0040243C |. 8BE5 MOV ESP,EBP
0040243E |. 5D POP EBP
0040243F . C2 0C00 RETN 0C
00402442 90 NOP
00402443 90 NOP
00402444 90 NOP
00402445 90 NOP
00402446 90 NOP
00402447 90 NOP
00402448 90 NOP
00402449 90 NOP
0040244A 90 NOP
0040244B 90 NOP
0040244C 90 NOP
0040244D 90 NOP
0040244E 90 NOP
0040244F 90 NOP
00402450 90 NOP
00402451 90 NOP
00402452 90 NOP
00402453 90 NOP
00402454 90 NOP
00402455 90 NOP
00402456 90 NOP
修正Mcall
00402C79 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] ; /Arg5
00402C7C FF71 30 PUSH DWORD PTR DS:[ECX+30] ; |
00416C96 |. /75 4F JNZ SHORT DEkd5.00416CE7
00416CB9 |. /73 41 |JNB SHORT DEkd5.00416CFC
00416CC6 |. 0FB64D 18 |MOVZX ECX,BYTE PTR SS:[EBP+18] ; |
00416CCA |. 0FAF4D 08 |IMUL ECX,DWORD PTR SS:[EBP+8] ; |
00416CCE |. 034D F8 |ADD ECX,DWORD PTR SS:[EBP-8] ; |
00416CD1 |. 03C8 |ADD ECX,EAX ; |
00416CD3 |. 0FB609 |MOVZX ECX,BYTE PTR DS:[ECX] ; |
00416CD6 |. 51 |PUSH ECX ; |Arg3
00416CD7 |. 6BC0 03 |IMUL EAX,EAX,3 ; |
00416CDA |. 0345 0C |ADD EAX,DWORD PTR SS:[EBP+C] ; |
00416CDD |. 50 |PUSH EAX ; |Arg2
00416CDE |. 6A 01 |PUSH 1 ; |Arg1 = 00000001
00416CE0 |. E8 27FCFEFF |CALL DEkd5.0040690C ; DEkd5.0040690C
00416CE5 |.^ EB C9 JMP SHORT DEkd5.00416CB0
00416CE7 |> FF75 14 PUSH DWORD PTR SS:[EBP+14] ; /Arg6
00416CEA |. 6A 40 PUSH 40 ; |Arg5 = 00000040
00416CEC |. 6A 02 PUSH 2 ; |Arg4 = 00000002
00416CEE |. FF75 10 PUSH DWORD PTR SS:[EBP+10] ; |Arg3
00416CF1 |. FF75 0C PUSH DWORD PTR SS:[EBP+C] ; |Arg2
00416CF4 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |Arg1
00416CF7 |. E8 10FCFEFF CALL DEkd5.0040690C ; DEkd5.0040690C
00416CFC |> 8BE5 MOV ESP,EBP
00416CFE |. 5D POP EBP
00416CFF . C2 1400 RETN 14
5 修正 在练武场使用策略后,练武场背景会花掉
0040249D . /E9 7EA60000 JMP DEkd5.0040CB20
0040CB20 > B8 001E0600 MOV EAX,61E00
0040CB25 . E8 354AFFFF CALL DEkd5.0040155F
0040CB2A .^ E9 7359FFFF JMP DEkd5.004024A2
6 修正 S战场结束之后触发再次移动,即拥有该特技的人物杀最后一个敌人时,存在小概率闪退bug
0044E54F . 8079 01 02 CMP BYTE PTR DS:[ECX+1],2
0044E553 . 74 29 JE SHORT DEkd5.0044E57E
0044E555 . FF75 D8 PUSH DWORD PTR SS:[EBP-28] ; /Arg1
0044E558 . E8 D3E5FBFF CALL 0040CB30 ; DEkd5.0040CB30
0040CB30 /$ 55 PUSH EBP
0040CB31 |. 8BEC MOV EBP,ESP
0040CB33 |. E8 F384FFFF CALL 0040502B
0040CB38 |. 8A4D 08 MOV CL,BYTE PTR SS:[EBP+8]
0040CB3B |. E8 50910000 CALL 00415C90
0040CB40 |. 5D POP EBP
0040CB41 . C2 0400 RETN 4
7 修正 神魔附体和学会策略 这两个效果在R中无效(不能正确的实时显示),要进入S才生效的bug
00436DFB |. E8 505DFDFF CALL Ekd5.0040CB50 ; 5C---神魔附体
0043E1B8 |. E8 93E9FCFF CALL Ekd5.0040CB50 ; 6C---学会策略
0040CB50 /$ 55 PUSH EBP
0040CB51 |. 8BEC MOV EBP,ESP
0040CB53 |. 51 PUSH ECX
0040CB54 |. FF75 14 PUSH DWORD PTR SS:[EBP+14]
0040CB57 |. FF75 10 PUSH DWORD PTR SS:[EBP+10]
0040CB5A |. FF75 0C PUSH DWORD PTR SS:[EBP+C] ;
0040CB5D |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ;
0040CB60 |. E8 BDEDFFFF CALL Ekd5.0040B922
0040CB65 |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4] ; |
0040CB68 |. 85C0 TEST EAX,EAX ; |
0040CB6A |. 74 07 JE SHORT Ekd5.0040CB73 ;
0040CB6C |. E8 68360000 CALL Ekd5.004101D9 ; Ekd5.004101D9
0040CB71 |. EB 05 JMP SHORT Ekd5.0040CB78
0040CB73 |> E8 A6640000 CALL Ekd5.0041301E ; Ekd5.0041301E
0040CB78 |> 8BE5 MOV ESP,EBP
0040CB7A |. 5D POP EBP
0040CB7B . C2 1000 RETN 10
6.2修正版的2个新功能代码
1、整形变量格式化文字
0044CF28 /$ 55 PUSH EBP
0044CF29 |. 8BEC MOV EBP,ESP
0044CF2B |. 51 PUSH ECX
0044CF2C |. 6A 00 PUSH 0
0044CF2E |. 68 358E5000 PUSH 00508E35
0044CF33 |. 83EC 1C SUB ESP,1C
0044CF36 |. 0FB641 01 MOVZX EAX,BYTE PTR DS:[ECX+1]
0044CF3A |. 2C 2B SUB AL,2B
0044CF3C |. 3C 05 CMP AL,5
0044CF3E |. 73 5E JNB SHORT 0044CF9E
0044CF40 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0044CF43 |. 8A41 02 MOV AL,BYTE PTR DS:[ECX+2]
0044CF46 |. 3C 30 CMP AL,30
0044CF48 |. 72 54 JB SHORT 0044CF9E
0044CF4A |. 3C 39 CMP AL,39
0044CF4C |. 77 50 JA SHORT 0044CF9E
0044CF4E |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
0044CF51 |. 83C1 02 ADD ECX,2
0044CF54 |. 51 PUSH ECX ; /Arg1
0044CF55 |. E8 0A9FFDFF CALL 00426E64 ; 0426E64
0044CF5A |. 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0044CF5D |. 8955 E8 MOV DWORD PTR SS:[EBP-18],EDX
0044CF60 |. 8A45 F0 MOV AL,BYTE PTR SS:[EBP-10]
0044CF63 |. 3C 04 CMP AL,4
0044CF65 |. 75 1A JNZ SHORT 0044CF81
0044CF67 |. 833D 9C5F5000 00 CMP DWORD PTR DS:[505F9C],0 ; 找到一个"/"
0044CF6E |. 75 5A JNZ SHORT 0044CFCA ;如果是历史情报 跳转
0044CF70 |. 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
0044CF73 |. 50 PUSH EAX ; /Arg2
0044CF74 |. FF75 EC PUSH DWORD PTR SS:[EBP-14] ; |Arg1
0044CF77 |. E8 5A090000 CALL 0044D8D6 ; 其他情况直接显示出数字
0044CF7C |. 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
0044CF7F |. EB 38 JMP SHORT 0044CFB9
0044CF81 |> 3C 03 CMP AL,3
0044CF83 |. 75 12 JNZ SHORT 0044CF97
0044CF85 |. FF75 EC PUSH DWORD PTR SS:[EBP-14] ; /Arg1
0044CF88 |. E8 5792FBFF CALL 004061E4 ; 04061E4
0044CF8D |. E8 E3A7FBFF CALL 00407775
0044CF92 |. EB 25 JMP SHORT 0044CFB9
0044CF94 |> FF45 F8 INC DWORD PTR SS:[EBP-8]
0044CF97 |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0044CF9A |. 3C 09 CMP AL,9
0044CF9C |. 72 02 JB SHORT 0044CFA0
0044CF9E |> EB 2A JMP SHORT 0044CFCA
0044CFA0 |> 6BC0 0A IMUL EAX,EAX,0A
0044CFA3 |. 0345 F4 ADD EAX,DWORD PTR SS:[EBP-C]
0044CFA6 |. 0FB708 MOVZX ECX,WORD PTR DS:[EAX]
0044CFA9 |. 394D EC CMP DWORD PTR SS:[EBP-14],ECX
0044CFAC |.^ 75 E6 JNZ SHORT 0044CF94
0044CFAE |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
0044CFB1 |. 6BC9 05 IMUL ECX,ECX,5
0044CFB4 |. 03C1 ADD EAX,ECX
0044CFB6 |. 83C0 02 ADD EAX,2
0044CFB9 |> 50 PUSH EAX ; /Arg2
0044CFBA |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |Arg1
0044CFBD |. E8 C7B2FBFF CALL 00408289 ; 0408289
0044CFC2 |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
0044CFC5 |. 83C2 02 ADD EDX,2
0044CFC8 |. EB 02 JMP SHORT 0044CFCC
0044CFCA |> 33C0 XOR EAX,EAX
0044CFCC |> 8BE5 MOV ESP,EBP
0044CFCE |. 5D POP EBP
0044CFCF . C2 0400 RETN 4
0044D8D6 /$ 55 PUSH EBP ; 把数字重新转为文本
0044D8D7 |. 8BEC MOV EBP,ESP
0044D8D9 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0044D8DC |. 6BC0 04 IMUL EAX,EAX,4
0044D8DF |. 05 00205000 ADD EAX,00502000
0044D8E4 |. FF30 PUSH DWORD PTR DS:[EAX] ; /<%d>
0044D8E6 |. 68 C0B34800 PUSH 0048B3C0 ; |Format = "%d"
0044D8EB |. FF75 0C PUSH DWORD PTR SS:[EBP+C] ; |s
0044D8EE |. FF15 C0624800 CALL DWORD PTR DS:[<&USER32.wsprintfA>] ; wsprintfA
0044D8F4 |. 83C4 0C ADD ESP,0C
0044D8F7 |. 5D POP EBP
0044D8F8 . C2 0800 RETN 8
004D2623 E8 D3B2F7FF CALL 0044D8FB '原函数 004D2796废弃
0044D8FB /. 55 PUSH EBP
0044D8FC |. 8BEC MOV EBP,ESP
0044D8FE |. 51 PUSH ECX
0044D8FF |. 6A 00 PUSH 0
0044D901 |. 51 PUSH ECX
0044D902 |. 51 PUSH ECX
0044D903 |. 81EC 00040000 SUB ESP,400
0044D909 |. 8D85 F0FBFFFF LEA EAX,DWORD PTR SS:[EBP-410]
0044D90F |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
0044D912 |. 803D 705F5000 00 CMP BYTE PTR DS:[505F70],0
0044D919 |. 75 18 JNZ SHORT 0044D933
0044D91B |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]
0044D91E |. 8038 3A |CMP BYTE PTR DS:[EAX],3A
0044D921 |. 73 10 |JNB SHORT 0044D933
0044D923 |. 8038 30 |CMP BYTE PTR DS:[EAX],30
0044D926 |. 72 0B |JB SHORT 0044D933
0044D928 |. FF45 FC |INC DWORD PTR SS:[EBP-4]
0044D92B |.^ EB EE JMP SHORT 0044D91B
0044D92D |> FF45 F4 /INC DWORD PTR SS:[EBP-C]
0044D930 |. FF45 FC |INC DWORD PTR SS:[EBP-4]
0044D933 |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0044D936 |. 3C 01 |CMP AL,1
0044D938 |. 74 65 |JE SHORT 0044D99F
0044D93A |. 3C 02 |CMP AL,2
0044D93C |. 74 61 |JE SHORT 0044D99F
0044D93E |. 8B4D FC |MOV ECX,DWORD PTR SS:[EBP-4]
0044D941 |. 0FBE01 |MOVSX EAX,BYTE PTR DS:[ECX]
0044D944 |. 3C 2A |CMP AL,2A
0044D946 |. 75 22 |JNZ SHORT 0044D96A
0044D948 |. 8079 01 2F |CMP BYTE PTR DS:[ECX+1],2F ; 判断是不是“/ ”
0044D94C |. 75 1C |JNZ SHORT 0044D96A
0044D94E |. 83C1 02 |ADD ECX,2
0044D951 |. 51 |PUSH ECX ; /Arg1
0044D952 |. E8 0D95FDFF |CALL 00426E64 ; 把字符数字转成数字
0044D957 |. 42 |INC EDX
0044D958 |. 0155 FC |ADD DWORD PTR SS:[EBP-4],EDX
0044D95B |. FF75 F4 |PUSH DWORD PTR SS:[EBP-C] ; /Arg2
0044D95E |. 50 |PUSH EAX ; |Arg1
0044D95F |. E8 72FFFFFF |CALL 0044D8D6 ; 044D8D6
0044D964 |. 48 |DEC EAX
0044D965 |. 0145 F4 |ADD DWORD PTR SS:[EBP-C],EAX
0044D968 |.^ EB C3 |JMP SHORT 0044D92D
0044D96A |> 8B55 F4 |MOV EDX,DWORD PTR SS:[EBP-C]
0044D96D |. 8802 |MOV BYTE PTR DS:[EDX],AL
0044D96F |. 85C0 |TEST EAX,EAX
0044D971 |. 75 06 |JNZ SHORT 0044D979
0044D973 |. C645 F8 02 |MOV BYTE PTR SS:[EBP-8],2
0044D977 |.^ EB B4 |JMP SHORT 0044D92D
0044D979 |> 83F8 26 |CMP EAX,26
0044D97C |. 74 0A |JE SHORT 0044D988
0044D97E |. 83F8 0A |CMP EAX,0A
0044D981 |.^ 75 AA |JNZ SHORT 0044D92D
0044D983 |. 8845 F0 |MOV BYTE PTR SS:[EBP-10],AL
0044D986 |. EB 0B |JMP SHORT 0044D993
0044D988 |> FF45 FC |INC DWORD PTR SS:[EBP-4]
0044D98B |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
0044D98E |. 8A02 |MOV AL,BYTE PTR DS:[EDX]
0044D990 |. 8845 F0 |MOV BYTE PTR SS:[EBP-10],AL
0044D993 |> C645 F8 01 |MOV BYTE PTR SS:[EBP-8],1
0044D997 |. 8B45 F4 |MOV EAX,DWORD PTR SS:[EBP-C]
0044D99A |. C600 00 |MOV BYTE PTR DS:[EAX],0
0044D99D |.^ EB 8E JMP SHORT 0044D92D
0044D99F |> 8A75 F8 MOV DH,BYTE PTR SS:[EBP-8]
0044D9A2 |. 8A55 F0 MOV DL,BYTE PTR SS:[EBP-10]
0044D9A5 |. 8D8D F0FBFFFF LEA ECX,DWORD PTR SS:[EBP-410]
0044D9AB |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0044D9AE |. 8BE5 MOV ESP,EBP
0044D9B0 |. 5D POP EBP
0044D9B1 . C3 RETN
2 每回合开始时自动存档
0044E199 . 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
0044E19D . 75 08 JNZ SHORT 0044E1A7
0044E19F . 8B4D C8 MOV ECX,DWORD PTR SS:[EBP-38]
0044E1A2 . E8 0E49FCFF CALL 00412AB5 ; 这里是回合开始时的自动存档
0044E1A7 > 837D F4 00 CMP DWORD PTR SS:[EBP-C],0
0044E1AB . 74 34 JE SHORT 0044E1E1
0044E1AD . 6A 14 PUSH 14
0044E1AF . E8 3149FCFF CALL 00412AE5 ; 这里是回合结束时的自动存档
0044E1B4 . 90 NOP
0044E1B5 . 90 NOP
0044E1B6 . 90 NOP
0044E1B7 . 90 NOP
0044E1B8 . 90 NOP
0044E1B9 . 90 NOP
0044E1BA . 90 NOP
0044E1BB . 90 NOP
0044E1BC . 90 NOP
0044E1BD . 90 NOP
0044E1BE . 90 NOP
0044E1BF . 90 NOP
0044E1C0 . 90 NOP
0044E1C1 . 90 NOP
0044E1C2 . 90 NOP
0044E1C3 . 90 NOP
0044E1C4 . 90 NOP
0044E1C5 . 90 NOP
0044E1C6 . 90 NOP
0044E1C7 . 90 NOP
0044E1C8 . 90 NOP
0044E1C9 . 90 NOP
0044E1CA . 90 NOP
0044E1CB . 90 NOP
0044E1CC . 90 NOP
0044E1CD . 90 NOP
0044E1CE . 90 NOP
0044E1CF . 90 NOP
0044E1D0 . 90 NOP
0044E1D1 . 90 NOP
0044E1D2 . 90 NOP
0044E1D3 . 90 NOP
0044E1D4 . 90 NOP
0044E1D5 . 90 NOP
0044E1D6 . 90 NOP
0044E1D7 . 90 NOP
0044E1D8 . 90 NOP
0044E1D9 . 90 NOP
0044E1DA . 90 NOP
0044E1DB . 90 NOP
00412AB5 /$ 55 PUSH EBP
00412AB6 |. 8BEC MOV EBP,ESP
00412AB8 |. 803D 350E5000 00 CMP BYTE PTR DS:[500E35],0 ; 这个是a键开关
00412ABF |. 74 22 JE SHORT 00412AE3 ; 这句nop掉则永久开启
00412AC1 |. B8 520F5000 MOV EAX,00500F52
00412AC6 |. 50 PUSH EAX
00412AC7 |. FF30 PUSH DWORD PTR DS:[EAX]
00412AC9 |. C600 0A MOV BYTE PTR DS:[EAX],0A
00412ACC |. 0FB641 02 MOVZX EAX,BYTE PTR DS:[ECX+2]
00412AD0 |. 33D2 XOR EDX,EDX
00412AD2 |. B9 14000000 MOV ECX,14
00412AD7 |. F7F1 DIV ECX
00412AD9 |. 52 PUSH EDX ; /Arg1
00412ADA |. E8 06000000 CALL 00412AE5
00412ADF |. 59 POP ECX
00412AE0 |. 58 POP EAX
00412AE1 |. 8808 MOV BYTE PTR DS:[EAX],CL
00412AE3 |> 5D POP EBP
00412AE4 . C3 RETN
00412AE5 /$ 55 PUSH EBP
00412AE6 |. 8BEC MOV EBP,ESP
00412AE8 |. 833D FC0F5000 00 CMP DWORD PTR DS:[500FFC],0
00412AEF |. 74 3B JE SHORT 00412B2C
00412AF1 |. 837D 08 14 CMP DWORD PTR SS:[EBP+8],14
00412AF5 |. 75 09 JNZ SHORT 00412B00
00412AF7 |. 803D F90D5000 00 CMP BYTE PTR DS:[500DF9],0
00412AFE |. 74 2C JE SHORT 00412B2C
00412B00 |> 66:C705 99524000 EB4A MOV WORD PTR DS:[405299],4AEB
00412B09 |. 66:C705 F7524000 EB12 MOV WORD PTR DS:[4052F7],12EB
00412B12 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; /Arg1
00412B15 |. E8 5127FFFF CALL 0040526B ;
00412B1A |. 66:C705 99524000 8B4D MOV WORD PTR DS:[405299],4D8B
00412B23 |. 66:C705 F7524000 6A01 MOV WORD PTR DS:[4052F7],16A
00412B2C |> 5D POP EBP
00412B2D . C2 0400 RETN 4
00405BB2 /$ 55 PUSH EBP ;存档翻页处理
00405BB3 |. 8BEC MOV EBP,ESP
00405BB5 |. B8 520F5000 MOV EAX, 00500F52
00405BBA |. 837D 0C 03 CMP DWORD PTR SS:[EBP+C],3
00405BBE |. 75 02 JNZ SHORT 00405BC2
00405BC0 |. FE08 DEC BYTE PTR DS:[EAX]
00405BC2 |> 837D 0C 04 CMP DWORD PTR SS:[EBP+C],4
00405BC6 |. 75 02 JNZ SHORT 00405BCA
00405BC8 |. FE00 INC BYTE PTR DS:[EAX]
00405BCA |> 8038 0B CMP BYTE PTR DS:[EAX],0B
00405BCD |. 75 05 JNZ SHORT 00405BD4
00405BCF |. C600 00 MOV BYTE PTR DS:[EAX],0
00405BD2 |. EB 08 JMP SHORT 00405BDC
00405BD4 |> 8038 FF CMP BYTE PTR DS:[EAX],0FF
00405BD7 |. 75 03 JNZ SHORT 00405BDC
00405BD9 |. C600 0A MOV BYTE PTR DS:[EAX],0A
00405BDC |> 83C1 0C ADD ECX,0C
00405BDF |. 6A 01 PUSH 1 ; /Arg1 = 00000001
00405BE1 |. E8 C43D0000 CALL 004099AA ; 04099AA
00405BE6 |. 5D POP EBP
00405BE7 . C3 RETN
0041C485 |. 8038 FF CMP BYTE PTR DS:[EAX],0FF ;如果把这个0FF改为0A,则自动存档页
不能手动存档
0041C498 |. 8038 FF CMP BYTE PTR DS:[EAX],0FF ;如果把这个0FF改为0A,则自动存档页
不能手动存档
这些代码均来自于6.2修正版,如果要移植于其他版本,不能保证可以正常运行,请自行排查错误。