标题:
关于战役名称显示
[打印本页]
作者:
砖家叫兽
时间:
2011-1-22 19:45
标题:
关于战役名称显示
记得以前玩《蜀汉英雄传》虎牢关地图出现了两次,S之前有个战役名称显示一样
因为指定了战役 ,战役名称会自动搜索到 IMSG 文件
00449E52 /$ 55 PUSH EBP
00449E53 |. 8BEC MOV EBP,ESP
00449E55 |. 81EC D0000000 SUB ESP,0D0
00449E5B |. 898D 30FFFFFF MOV DWORD PTR SS:[EBP-D0],ECX
00449E61 |. 8B85 30FFFFFF MOV EAX,DWORD PTR SS:[EBP-D0]
00449E67 |. 33C9 XOR ECX,ECX
00449E69 |. 8A08 MOV CL,BYTE PTR DS:[EAX]
00449E6B |. 83F9 3A CMP ECX,3A ; 58
00449E6E |. 7D 30 JGE SHORT yuan.00449EA0 ; 超过58关上限跳
00449E70 |. 8B95 30FFFFFF MOV EDX,DWORD PTR SS:[EBP-D0]
00449E76 |. 33C0 XOR EAX,EAX
00449E78 |. 8A02 MOV AL,BYTE PTR DS:[EDX]
00449E7A |. 50 PUSH EAX ; /关数
00449E7B |. 8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC] ; |
00449E81 |. 51 PUSH ECX ; |地址
00449E82 |. E8 1D21FCFF CALL yuan.0040BFA4 ; \获取战役名称
00449E87 |. 83C4 08 ADD ESP,8
00449E8A |. 6A 16 PUSH 16
00449E8C |. 8D95 34FFFFFF LEA EDX,DWORD PTR SS:[EBP-CC] ; 地址 已获取IMSG文字
00449E92 |. 52 PUSH EDX ; 地址
00449E93 |. 68 58074B00 PUSH yuan.004B0758 ; 场所名地址
00449E98 |. E8 53690300 CALL yuan.004807F0
00449E9D |. 83C4 0C ADD ESP,0C
00449EA0 |> 8BE5 MOV ESP,EBP
00449EA2 |. 5D POP EBP
00449EA3 \. C3 RETN
实际上这里把场所名覆盖了,然后作为战役名显示
有兴趣的童鞋可以 将这一段抹掉
不过这样的话似乎出战前场所名要指定好了 否则还是你上一个场景的地名
作者:
砖家叫兽
时间:
2011-1-22 19:47
后面是继续追踪的子函数
迷有兴趣的童鞋可以跳过
0040BFA4 /$ 55 PUSH EBP
0040BFA5 |. 8BEC MOV EBP,ESP
0040BFA7 |. 837D 0C 3A CMP DWORD PTR SS:[EBP+C],3A
0040BFAB |. 76 02 JBE SHORT yuan.0040BFAF
0040BFAD |. EB 15 JMP SHORT yuan.0040BFC4
0040BFAF |> 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
0040BFB2 |. 05 FA000000 ADD EAX,0FA
0040BFB7 |. 50 PUSH EAX ; /关数+0FA
0040BFB8 |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8] ; |
0040BFBB |. 51 PUSH ECX ; |地址
0040BFBC |. E8 95FFFFFF CALL yuan.0040BF56 ; \yuan.0040BF56
0040BFC1 |. 83C4 08 ADD ESP,8
0040BFC4 |> 5D POP EBP
0040BFC5 \. C3 RETN
0040BF56 /$ 55 PUSH EBP
0040BF57 |. 8BEC MOV EBP,ESP
0040BF59 |. 68 C8000000 PUSH 0C8 ; /0C8(200)
0040BF5E |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] ; |
0040BF61 |. 50 PUSH EAX ; |地址
0040BF62 |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C] ; |
0040BF65 |. 69C9 C8000000 IMUL ECX,ECX,0C8 ; |
0040BF6B |. 51 PUSH ECX ; |(关数+0FA)*0C8
0040BF6C |. B9 BCE44A00 MOV ECX,yuan.004AE4BC ; |
0040BF71 |. E8 0ED20000 CALL yuan.00419184 ; \yuan.00419184
0040BF76 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0040BF79 |. C682 C8000000>MOV BYTE PTR DS:[EDX+C8],0
0040BF80 |. 5D POP EBP
0040BF81 \. C3 RETN
00419184 /$ 55 PUSH EBP
00419185 |. 8BEC MOV EBP,ESP
00419187 |. 51 PUSH ECX ; 4AE4BC
00419188 |. 894D FC MOV DWORD PTR SS:[EBP-4],ECX
0041918B |. 6A 00 PUSH 0 ; /0
0041918D |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] ; |
00419190 |. 50 PUSH EAX ; |(关数+0FA)*0C8
00419191 |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4] ; |4AE4BC
00419194 |. E8 16000000 CALL yuan.004191AF ; \yuan.004191AF
00419199 |. 8B4D 10 MOV ECX,DWORD PTR SS:[EBP+10]
0041919C |. 51 PUSH ECX ; /0C8 (200)
0041919D |. 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C] ; |
004191A0 |. 52 PUSH EDX ; |地址
004191A1 |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4] ; |
004191A4 |. E8 59FFFFFF CALL yuan.00419102 ; \yuan.00419102
004191A9 |. 8BE5 MOV ESP,EBP
004191AB |. 5D POP EBP
004191AC \. C2 0C00 RETN 0C
作者:
砖家叫兽
时间:
2011-1-22 19:50
像原版第一关是颍川之战,战前会显示 “颍川之战”
把这一段NOP掉,如果之前场景场所名是街道,那么这里战役名称就是“街道”
实际上大家读档的时候可以看到,如果是 R 会显示场景信息,事件 地名
但是到了 S 就变成了 事件 和 战役名
其实战役名的地址和场所名是在一块的
这一段就是按照关数(注意上限是58),然后搜索 IMSG中战役名称覆盖了场所名
作者:
513633522
时间:
2011-3-14 09:41
看到了,收藏下
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/)
Powered by Discuz! 5.0.0