曹操传策略伤害种类增加方法,《精忠报国岳飞传》制作组,精忠报国岳飞传,轩辕春秋文化论坛">


标题: 曹操传策略伤害种类增加方法, 东施效颦之作。初步试验成功,尚需进一步测试
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4716
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-7-11 10:55 资料 主页 文集 短消息 看全部作者
张生的这项改动不错,思想方法和我增加战场形象的首帖类似。一般来说,写程序时只要尽量节省,字节数还是有富余的。这时候需要根据实际需求设定跳转表等参数,而并不是利用所有的空闲区域。省下来的地方可以留作下次改动使用。
van的改进基本还是看懂了,不过可能是由于汇编语言格式的差异,看起来有点吃力,我按照w32dsm生成的格式重写了一下:
:0043C09B 33C9                    xor ecx, ecx
:0043C09D 8A8AD0C34300            mov cl, byte ptr [edx+0043C3D0]
:0043C0A3 894DF8                  mov dword ptr [ebp-08], ecx
:0043C0A6 EB48                    jmp 0043C0F0


这样改进之后,0043C3D0~0043C42D存放的不再是策略伤害系数的分类号,而直接是策略伤害的系数,如果乐意,可以把每个策略的伤害系数都设置为不同。
空闲区域有两部分:一部分是0043C0A8~0043C0EF,总计0x48字节,即上面jmp跳过的部分;令一部分是0043C35C~0043C3CF,总计0x74字节,即原来存放跳转表项的部分。

注:并非所有的跳转表都可以这样化简,仅限于这种直接赋值的跳转表才行。


顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4716
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-7-12 15:42 资料 主页 文集 短消息 看全部作者


QUOTE:
原帖由博雅张生于2005-07-12, 13:54:51发表
To 周瑜:

按照你的这种改法

:0043C096  7751        ja 0043C0E9

这里应该怎么改?

是不是这里不用改,而

:0043C0E9 C745F800000000    mov[ebp-08], 00000000

这一句保留就行了?

:0043C08F 8945E4                  mov dword ptr [ebp-1C], eax
:0043C092 837DE441                cmp dword ptr [ebp-1C], 00000041

这两句是为了判断策略编号是否超过上限,如果是,则执行下面mov [ebp-08], 00000000这句。虽然在正常的游戏中,永远无法执行到这个分支,但还是建议保留,这样更加安全。
于是三句都不用动,实际空闲区域为0043C0A8~0043C0E8的0x41字节。


顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4716
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-7-14 09:55 资料 主页 文集 短消息 看全部作者
:0043C165 33C0          xor eax, eax
这句没有必要,因为后面是对整个eax赋值,不是对al赋值,先把eax清零就没什么必要了。

既然做到这份上了,不如更精确设定攻击策略伤害加成系数,精确到1%。也就是把除数改为0x64,如何?
顶部

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




当前时区 GMT+8, 现在时间是 2025-1-8 00:39
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

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

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