标题: EXE补充研究及修改, Van太守打造
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2005-7-8 23:02 资料 主页 文集 短消息 看全部作者
EXE补充研究及修改

以下所有均为内存中偏移,改文件时减去400C00即可

1、音轨扩充
物理限制上限255(内存中用1个字节存放)
上限22判断代码:.text:004745B8                 cmp     [ebp+arg_0], 16h
一些音轨调用:
.text:00448ABE                 call    sub_4745FE      ; 10
.text:00448ABE                 call    sub_4745FE      ; 10
.text:004312E7                 call    sub_4745FE      ; 10h
.text:0041BFB1                 call    sub_4745FE      ; 12h
.text:00445953                 call    sub_4745FE      ; 14h
.text:00444FC9                 call    sub_4745FE      ; 15h

2、音效扩充
相关处理函数:sub_474777
物理限制上限:各100(文件名中只允许2位数字)
上限判断代码:
.text:004748D8                 cmp     [ebp+WavFileIndex], 2Bh
.text:0047488C                 cmp     [ebp+WavFileIndex], 89h
.text:00474834                 cmp     [ebp+WavFileIndex], 0D1h

3、场景
内场景起始PicIndex
.text:0040BCE8                 add     dl, 28h
大地图起始PicIndex
.text:0040BD3D                 add     cl, 72h

[ 本帖最后由 东方无翼 于 2006-10-9 17:34 编辑 ]


精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2005-7-8 23:12 资料 主页 文集 短消息 看全部作者
4、致命一击台词
特殊台词对应表:
dword_48B230
Len=21bytes*4:
text:0040C052                 cmp     [ebp+var_8], 15h
格式:Table[0]包含使用特殊台词1的武将Index
Table[1]包含使用特殊台词2的武将Index,以下类推
将其改成FFFFFFFF,则此特殊台词不会在游戏中出现
因为此Table后无空闲空间,所以扩充的时候需要改动地址

所有人都不使用特殊台词的修改法:
.text:0040C06F                 cmp     [ebp+var_4], 0FFFFh
将此句删除即可


精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2005-7-8 23:51 资料 主页 文集 短消息 看全部作者
5、特殊音效
复活时的声音调用
.text:0045931C                 call    mPlayWav_not?_0_Play ; 2a
武将出现的声音调用
.text:0045723E                 call    mPlayWav_not?_0_Play ; 2a

判断是否是木偶的函数
sub_4573C1
a、武将编号
.text:004573E4                 cmp     [ebp+CharIndex], 0A2h
.text:004573EB                 jb      short loc_4573FF
.text:004573ED                 cmp     [ebp+CharIndex], 0A9h
.text:004573F4                 ja      short loc_4573FF
b、兵种
.text:00457407                 cmp     eax, 31h
.text:00457415                 cmp     ecx, 32h
两个判断是或的关系

6、人物上限
基本上不可能,因为内存里所有数据是连续存放的,武将数据在中间,扩展的话必然需要将其移至其它地址。这样就算未扩展,光修改偏移就有240多处,工程量太大
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2005-7-9 00:56 资料 主页 文集 短消息 看全部作者
7、物理伤害公式改动
物理伤害=[(地形修正的攻方攻击力-地形修正的守方防御力)/2+攻方等级*1.5+25]*(1+兵种相克)。

在0043BD39 之前插入lea eax,[eax*2+eax](3个字节,8D0440);shr eax,1(两个字节,D1E8)
然后对后面的代码做如下修改:(//表示删去,*表示改动)
.text:0043BD39                 add     eax, 19h
.text:0043BD3C                 //mov     [ebp+var_4], eax(节省3个字节)
.text:0043BD3F                 *mov     ecx, [ebp+var_20]
.text:0043BD42                 *cmp     ecx, [ebp+var_10]
.text:0043BD45                 jb      short loc_43BD59(需修改跳转偏移)
.text:0043BD47                 //mov     ecx, [ebp+var_20](节省3个字节)
.text:0043BD4A                 sub     ecx, [ebp+var_10]
.text:0043BD4D                 shr     ecx, 1
.text:0043BD4F                 //mov     edx, [ebp+var_4](节省3个字节)
.text:0043BD52                 *add     eax, ecx
.text:0043BD54                 *mov     [ebp+var_4], eax
.text:0043BD57                 jmp     short loc_43BD7E(需修改跳转偏移)
.text:0043BD59
.text:0043BD59
.text:0043BD59 loc_43BD59:                             ; CODE XREF: mAttHurt+FAj
.text:0043BD59                 *mov     ecx, [ebp+var_10]
.text:0043BD5C                 *sub     ecx, [ebp+var_20]
.text:0043BD5F                 *shr     ecx, 1
.text:0043BD61                 *push    ecx
.text:0043BD62                 //mov     ecx, [ebp+var_4](节省3个字节)
.text:0043BD65                 *push    eax
.text:0043BD66                 call    subwithlbound
.text:0043BD6B                 add     esp, 8
.text:0043BD6E                 mov     [ebp+var_4], eax
.text:0043BD71                 cmp     [ebp+var_4], 0
.text:0043BD75                 jnz     short loc_43BD7E
.text:0043BD77                 mov     [ebp+var_4], 1
0043BD6E开始的那些代码可以写成
test eax,eax
sete al
mov     [ebp+var_4], eax
这样可以节省9字节

当然最好是重写,直接利用js来跳转,这样可以获得更多的剩余地址用于物理攻击公式的改写
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2005-7-13 12:58 资料 主页 文集 短消息 看全部作者
6 这个同样需要扩充内存空间。原来存放的地址是:
.data:004B09F0 gCharMustInBf   dd 5 dup(?)
.data:004B0A04 gCharMustNotInBf   dd 5 dup(?)
供选择出场人物
.data:004B5EE0 dword_4B5EE0    dd 1Fh dup(?)
实际出场人物(15个)
.data:0048B350 gCharIndexInBattle_Self

一些比较
.text:0041858E                 cmp     ecx, 5
.text:004185B2                 cmp     eax, 5
.text:004185EB                 cmp     ecx, 5
.text:00418766                 cmp     ecx, 5
.text:0041878D                 cmp     ecx, 5

不过这样剧本内的结构就变掉了,也是很麻烦的

20 那个只是设个状态位而已,实现不了什么功能

39要改升级的核心函数,改得会比较多
比如要加个判断,分别处理
for(i=0;i<LvAdd;i++)和for(i=LvAdd;i<0;i++)

36这种是苦力活
偏移是loc_411414,那个类型放在ecx中
精华帖
顶部

正在浏览此帖的会员 - 共 8 人在线




当前时区 GMT+8, 现在时间是 2024-10-6 07:10
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.011765 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP