Board logo

标题: 章节的扩展 [打印本页]

作者: godtype    时间: 2010-5-7 10:06     标题: 章节的扩展

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

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

图片附件: 001.gif (2010-5-7 10:06, 4.37 K) / 该附件被下载次数 128
http://xycq.org.cn/forum/attachment.php?aid=93884


作者: wysjbc    时间: 2010-5-7 11:36

如果要是原版,请问该怎么扩充?
作者: godtype    时间: 2010-5-7 11:39

代码位置是一样的,只要找地方写新的名称就可以了,最后那里已经有写,可以用大兵种的名称,因为那些没有作用。
作者: wysjbc    时间: 2010-5-9 07:20     标题: 回复 #3 godtype 的帖子

噢,谢谢毅大。我自己会去试试。
作者: 《苍狼白鹿传》    时间: 2010-8-5 20:46

你要是外场景有多,可以直接用外场景
意思就是说即便只5章也可以弄到7章8章




欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) Powered by Discuz! 5.0.0