标题: 关于撤退台词对应人物DATA号的疑问
性别:男-离线 godtype
(毅)

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

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


发表于 2009-12-30 09:43 资料 个人空间 短消息 看全部作者
如果不对EXE动手术,就只能按顺序指定撤退台词,当然只是一个小手术。


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

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

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


发表于 2009-12-30 10:33 资料 个人空间 短消息 看全部作者
回复 #5 赵辉 的帖子

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


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

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

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


发表于 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:未经测试。
顶部

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




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

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

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