标题: 章节的扩展
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2010-5-7 10:06 资料 个人空间 短消息 看全部作者
章节的扩展

目前的引擎在章节方面都总共只有五章,分别是
0——序章
1——第一章
2——第二章
3——第三章
4——终章

随着关卡数的增加,曾经有人问过我怎样扩展章节,当时没有深入研究,现在终于研究出来,其实很简单,即使是没有扩容、没有精简过代码、也没有利用教学的引擎都可以做得到。下面以我的4.0系列引擎为例写出代码(实际应用的引擎只能等到5.0发布):
首先选择一段8*N个字节的空白位置,N为章节总数,我暂时准备了10个章节,位置是从8AA00开始,看图


图片附件: 001.gif (2010-5-7 10:06, 4.37 K)


(截图是用OB截的,所以显示的是内存地址。)
然后改写代码:
0040B946  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
0040B949  |. 25 FF000000    AND EAX,0FF
0040B94E  |. C1E0 03        SHL EAX,3
0040B951  |. 05 00C04800    ADD EAX,0048C000
0040B956  |. 8945 DC        MOV DWORD PTR SS:[EBP-24],EAX
0040B959  |. 90             NOP
0040B95A  |. 90             NOP

0040B971  |. 83F8 09        CMP EAX,9

0040B9E1  |. 8B55 DC        MOV EDX,DWORD PTR SS:[EBP-24]
0040B9E4  |. 90             NOP

0040BA1A  |. 8B4D DC        MOV ECX,DWORD PTR SS:[EBP-24]
0040BA1D  |. 90             NOP

0040BA64  |. 8B45 DC        MOV EAX,DWORD PTR SS:[EBP-24]
0040BA67  |. 90             NOP
改成上面这样就可以了,其中[EBP+8]的值的章节值,即剧本指令67:章名的值;48C000就不用说了,看截图可知;CMP EAX,9的9是章节最大值(从0开始算)。
就这样改就OK了。

最后,关于位置的选择,我选8AA00是因为从我的4.0开始,这里虽然有兵种名称,但是已经没有用,所以可以再利用。而一般的引擎,推荐8AEDC开始的大兵种名称,因为这些是没有用的,改了也不会对游戏有影响。而对于STAR175的引擎,建议自己找连续的一大堆00的位置,当然了,找到的空白位置不一定可以用,最好先咨询一下STAR。


顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2010-5-7 11:39 资料 个人空间 短消息 看全部作者
代码位置是一样的,只要找地方写新的名称就可以了,最后那里已经有写,可以用大兵种的名称,因为那些没有作用。


顶部

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




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

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

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