轩辕春秋文化论坛 » 曹操传MOD制作交流 » 关于撤退台词对应人物DATA号的疑问


2009-12-29 22:38 希布
关于撤退台词对应人物DATA号的疑问

关于撤退台词的修改,雪芸的帖子似乎只有这些:
0B413、40D87 两处的1A改为31,可使用全部49条撤退台词。

用IMSG修改器修改撤退台词,发现有26条台词,应该是按照DATA人物序号0、1、2、3、4这样的顺序来对应的。
余下的为终端,可以通过上述方法扩展使用,那么剩下49-26=23条撤退台词是否都是继续按照DATA人物序号的升序来一一对应呢?那样的话第49号人物不能用台词了。如果我想用100号人物用特殊撤退台词,EXE需要改哪里?

2009-12-29 22:56 赵辉
回复 #1 希布 的帖子

对应关系确如LZ所说,想要49号以后的人物使用撤退台词的方法我没听说过,不知是否有同志会。
建议LZ安排好data中人物顺序,把需要撤退台词的全放到前面。剩下的就只好用剧本指令来实现了。

P.S. 我当初就因为此事,对data中人物顺序进行过一次大挪移,累啊……

2009-12-29 23:29 yybb
撤退台词只能指定给我军人物,友军和敌军是不行的。

2009-12-30 09:43 godtype
如果不对EXE动手术,就只能按顺序指定撤退台词,当然只是一个小手术。

2009-12-30 10:29 赵辉
回复 #4 godtype 的帖子

原来只是个小手术,早知道当初我就发帖问问毅兄了。
悔之晚矣~:q))+

2009-12-30 10:33 godtype
回复 #5 赵辉 的帖子

思路是有了,只不过还没有实际操作过,等今晚有时间再研究一下。

2009-12-30 10:38 希布
[quote] 撤退台词只能指定给我军人物,友军和敌军是不行的。
[/quote]
这一点我也清楚,但是如果要第100号人物加入我军呢。所以正如赵辉所说,把要加入我军的人员尽量在DATA排前。不过不知道84版的吕布传是怎样设置的,因为这个MOD的人物顺序只是把曹操与吕布互换,其他没有变化。

[quote]回复 #5 赵辉 的帖子

思路是有了,只不过还没有实际操作过,等今晚有时间再研究一下。
[/quote]
期待毅兄的研究成果~

[color=Silver][[i] 本帖最后由 希布 于 2009-12-30 10:40 编辑 [/i]][/color]

2009-12-30 13:26 大明英烈1
台词和致命一击,哪位大大也写个教程吧,最好是针对star新引擎的。

2009-12-30 17:20 godtype
原代码(目前所有引擎都一样):
[font=宋体]0044197B  /$ 55             PUSH EBP
0044197C  |. 8BEC           MOV EBP,ESP
0044197E  |. 81EC CC000000  SUB ESP,0CC
00441984  |. 837D 08 31     CMP DWORD PTR SS:[EBP+8],31
00441988  |. 73 28          JNB SHORT 004419B2
0044198A  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
0044198D  |. 50             PUSH EAX                                 ; /Arg2
0044198E  |. 8D8D 34FFFFFF  LEA ECX,DWORD PTR SS:[EBP-CC]            ; |
00441994  |. 51             PUSH ECX                                 ; |Arg1
00441995  |. E8 73A6FCFF    CALL 0040C00D                         ; \0040C00D
0044199A  |. 83C4 08        ADD ESP,8
0044199D  |. 8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]
004419A0  |. 52             PUSH EDX                                 ; /Arg2
004419A1  |. 8D85 34FFFFFF  LEA EAX,DWORD PTR SS:[EBP-CC]            ; |
004419A7  |. 50             PUSH EAX                                 ; |Arg1
004419A8  |. B9 F05D4B00    MOV ECX,004B5DF0                      ; |
004419AD  |. E8 AB7C0100    CALL 0045965D                         ; \0045965D
004419B2  |> 8BE5           MOV ESP,EBP
004419B4  |. 5D             POP EBP
004419B5  \. C3             RETN

0040C00D  /$ 55             PUSH EBP
0040C00E  |. 8BEC           MOV EBP,ESP
0040C010  |. 837D 0C 31     CMP DWORD PTR SS:[EBP+C],31
0040C014  |. 72 02          JB SHORT 0040C018
0040C016  |. EB 15          JMP SHORT 0040C02D
0040C018  |> 8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C]
0040C01B  |. 05 8A020000    ADD EAX,28A
0040C020  |. 50             PUSH EAX                                 ; /Arg2
0040C021  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]             ; |
0040C024  |. 51             PUSH ECX                                 ; |Arg1
0040C025  |. E8 2CFFFFFF    CALL 0040BF56                         ; \0040BF56
0040C02A  |. 83C4 08        ADD ESP,8
0040C02D  |> 5D             POP EBP
0040C02E  \. C3             RETN[/font]

修改如下:
00441984  |. 837D 08 64     CMP DWORD PTR SS:[EBP+8],64
这里[EBP+8]是武将编号,暂时改成100,最大可以是127,超过的话还要再过后面的代码。

00441995  |. E8 381AFFFF        CALL 004333D2
这里是将40C00D另外找地方改写,其实是可以直接在原代码中跳出去改写的,我只是为了美观一点所以另外改写,而4333D2原来是许子将教学的正式代码(不是改许子将教学的文字显示),反正许子将教学一般也不用。

[font=宋体]004333D2  /$ 55                 PUSH EBP
004333D3  |. 8BEC               MOV EBP,ESP
004333D5  |. 6A 00              PUSH 0
004333D7  |. EB 03              JMP SHORT 004333DC
004333D9  |> FF45 FC            /INC DWORD PTR SS:[EBP-4]
004333DC  |> 837D FC 31          CMP DWORD PTR SS:[EBP-4],31
004333E0  |. 73 24              |JNB SHORT 00433406
004333E2  |. 8B45 FC            |MOV EAX,DWORD PTR SS:[EBP-4]
004333E5  |. 8B0C85 0A344300    |MOV ECX,DWORD PTR DS:[EAX*4+43340A]
004333EC  |. 394D 0C            |CMP DWORD PTR SS:[EBP+C],ECX
004333EF  |. 75 13              |JNZ SHORT 00433404
004333F1  |. 05 8A020000        |ADD EAX,28A
004333F6  |. 50                 |PUSH EAX                                ; /Arg2
004333F7  |. FF75 08            |PUSH DWORD PTR SS:[EBP+8]               ; |Arg1
004333FA  |. E8 578BFDFF        |CALL 0040BF56                    ; \0040BF56
004333FF  |. 83C4 08            |ADD ESP,8
00433402  |. EB 02              |JMP SHORT 00433406
00433404  |>^EB D3              \JMP SHORT 004333D9
00433406  |> 8BE5               MOV ESP,EBP
00433408  |. 5D                 POP EBP
00433409  \. C3                 RETN[/font]
代码不详细解释了,[EBP-4]是循环计数,[EBP+C]是武将编号,从43340A开始的49*4的位置用来存放49个武将的DATA编号,例如原版的夏侯独眼就是01 00 00 00。
旧的代码是按武将编号顺序来对应IMSG中的撤退台词,新的代码就按43340A开始的DATA编号来对应IMSG中的撤退台词。

PS:未经测试。

2009-12-31 14:46 乔三槐
玩这么复杂干嘛呢,个人觉得还不如直接在S剧本中设定就好了,不是很方便吗!

2010-1-6 19:50 希布
回复 #9 godtype 的帖子

感谢毅兄的帮忙。
在下还以为就像修改致命一击的台词的办法一样只需修改对应DATA人物编号就行了:hz1026:

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.