
标题: 关于撤退台词对应人物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中人物顺序进行过一次大挪移,累啊……
作者:
yybb 时间: 2009-12-29 23:29
撤退台词只能指定给我军人物,友军和敌军是不行的。
作者:
godtype 时间: 2009-12-30 09:43
如果不对EXE动手术,就只能按顺序指定撤退台词,当然只是一个小手术。
作者:
赵辉 时间: 2009-12-30 10:29 标题: 回复 #4 godtype 的帖子
原来只是个小手术,早知道当初我就发帖问问毅兄了。
悔之晚矣~
作者:
godtype 时间: 2009-12-30 10:33 标题: 回复 #5 赵辉 的帖子
思路是有了,只不过还没有实际操作过,等今晚有时间再研究一下。
作者:
希布 时间: 2009-12-30 10:38
撤退台词只能指定给我军人物,友军和敌军是不行的。
这一点我也清楚,但是如果要第100号人物加入我军呢。所以正如赵辉所说,把要加入我军的人员尽量在DATA排前。不过不知道84版的吕布传是怎样设置的,因为这个MOD的人物顺序只是把曹操与吕布互换,其他没有变化。
回复 #5 赵辉 的帖子
思路是有了,只不过还没有实际操作过,等今晚有时间再研究一下。
期待毅兄的研究成果~
[ 本帖最后由 希布 于 2009-12-30 10:40 编辑 ]
作者:
大明英烈1 时间: 2009-12-30 13:26
台词和致命一击,哪位大大也写个教程吧,最好是针对star新引擎的。
作者:
godtype 时间: 2009-12-30 17:20
原代码(目前所有引擎都一样):
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
修改如下:
00441984 |. 837D 08 64 CMP DWORD PTR SS:[EBP+8],64
这里[EBP+8]是武将编号,暂时改成100,最大可以是127,超过的话还要再过后面的代码。
00441995 |. E8 381AFFFF CALL 004333D2
这里是将40C00D另外找地方改写,其实是可以直接在原代码中跳出去改写的,我只是为了美观一点所以另外改写,而4333D2原来是许子将教学的正式代码(不是改许子将教学的文字显示),反正许子将教学一般也不用。
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
代码不详细解释了,[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人物编号就行了
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) |
Powered by Discuz! 5.0.0 |