轩辕春秋文化论坛 » 曹操传MOD制作交流 » 关于在战场中使用75特殊形象指定后实时改变形象的代码


2010-4-13 12:49 godtype
关于在战场中使用75特殊形象指定后实时改变形象的代码

有很多人反映在战场中使用了75:S特殊形象指定 后,不能实时显示出新的形象,特此研究了一下,并发一下修正后的代码。
以我的引擎4.0系列为准,其他引擎请参考之。


00405C08  |. B8 01000000    MOV EAX,1
改成
00405C08  |. E8 44B00000    CALL 00410C51

这里写入新代码:
00410C51  /$ 55             PUSH EBP
00410C52  |. 8BEC           MOV EBP,ESP
00410C54  |. 52             PUSH EDX
00410C55  |. E8 7CD80200    CALL 0043E4D6
00410C5A  |. 83C4 04        ADD ESP,4
00410C5D  |. 3C FF          CMP AL,0FF
00410C5F  |. 74 0C          JE SHORT 00410C6D
00410C61  |. 8AC8           MOV CL,AL
00410C63  |. E8 7E50FFFF    CALL 00405CE6
00410C68  |. E8 BFF10200    CALL 0043FE2C
00410C6D  |> B8 01000000    MOV EAX,1
00410C72  |. 8BE5           MOV ESP,EBP
00410C74  |. 5D             POP EBP
00410C75  \. C3             RETN
这样改就可以了。

附上S5.6引擎的75指令的代码
0043E164  /. 55             PUSH EBP
0043E165  |. 8BEC           MOV EBP,ESP
0043E167  |. 6A 02          PUSH 2
0043E169  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
0043E16C  |. E8 86A2FDFF    CALL Ekd5_56.004183F7
0043E171  |. 0FB7C0         MOVZX EAX,AX
0043E174  |. 50             PUSH EAX
0043E175  |. 6A 50          PUSH 50
0043E177  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
0043E17A  |. E8 78A2FDFF    CALL Ekd5_56.004183F7
0043E17F  |. 0FB7C0         MOVZX EAX,AX
0043E182  |. 5A             POP EDX
0043E183     90             NOP
0043E184  |. 90             NOP
0043E185  |. 8882 00105000  MOV BYTE PTR DS:[EDX+501000],AL
[color=Red]0043E18B  |. 90             NOP
0043E18C  |. 33C0           XOR EAX,EAX
0043E18E  |. B0 01          MOV AL,1[/color]
0043E190  |. 8BE5           MOV ESP,EBP
0043E192  |. 5D             POP EBP
0043E193  \. C3             RETN

附上岱瀛版新引擎的75指令的代码
004D100D   55               PUSH EBP
004D100E   8BEC             MOV EBP,ESP
004D1010   83EC 08          SUB ESP,8
004D1013   6A 02            PUSH 2
004D1015   8B4D 08          MOV ECX,DWORD PTR SS:[EBP+8]
004D1018   E8 DA73F4FF      CALL 35SLG.004183F7
004D101D   25 FFFF0000      AND EAX,0FFFF
004D1022   8945 FC          MOV DWORD PTR SS:[EBP-4],EAX
004D1025   6A 50            PUSH 50
004D1027   8B4D 08          MOV ECX,DWORD PTR SS:[EBP+8]
004D102A   E8 C873F4FF      CALL 35SLG.004183F7
004D102F   25 FFFF0000      AND EAX,0FFFF
004D1034   8945 F8          MOV DWORD PTR SS:[EBP-8],EAX
004D1037   8B55 FC          MOV EDX,DWORD PTR SS:[EBP-4]
004D103A   8882 00A05500    MOV BYTE PTR DS:[EDX+55A000],AL
[color=Red]004D1040   B8 01000000      MOV EAX,1[/color]
004D1045   8BE5             MOV ESP,EBP
004D1047   5D               POP EBP
004D1048   C3               RETN

[b][size=4][color=Blue]谢绝转载![/color][/size][/b]

[color=Silver][[i] 本帖最后由 godtype 于 2010-12-12 22:50 编辑 [/i]][/color]

2012-1-30 14:06 q19961121

00405C08  |. B8 01000000    MOV EAX,1
改成
00405C08  |. E8 44B00000    CALL 00410C51
这是毅哥4.0的地址


请问star5.7要在哪里改成call  0043E164

2012-1-30 16:06 godtype
5.7及以后已经自带本帖功能,你有实际用过引擎就知道啦。

2012-1-30 18:51 q19961121
回复 #3 godtype 的帖子

原来自带了。。。。
谢谢毅哥。。。

2012-1-30 18:54 godtype
[quote]原帖由 [i]q19961121[/i] 于 2012-1-30 18:51 发表
原来自带了。。。。
谢谢毅哥。。。 [/quote]
错了,应该多谢STAR,不用你们自己改。

2012-1-30 21:08 灬棉崽灬
回复 #3 godtype 的帖子

在绘图前用这个指令应该没问题<br />
我记得如果在绘图后用这个指令的话必须得重新读档才OK

毅大我问个问题,就是如果旧引擎也这样改的话是不是也可以用这个指令?

[color=Silver][[i] 本帖最后由 灬棉崽灬 于 2012-1-30 21:15 编辑 [/i]][/color]

2012-1-30 21:17 灬棉崽灬
004014E3      E8 7CCC0300   CALL Ekd5.0043E164

毅大这是我找到的5.6的地址,对吗?

2012-1-30 21:17 godtype
回复 #6 灬棉崽灬 的帖子

引擎支持指令75才可以。

2012-5-9 08:36 小兵1234
回复 #6 灬棉崽灬 的帖子

我好像也是這樣記得的。
記得好像是在該關R劇本先用該指令了。
那到S劇本時,就沒問題了。
如之前張遼一直是敵人,呂布被處死後,投靠曹操。
我從那時R劇本時,讓他由256形象的藍色張遼化成257紅色張遼(感謝周瑜大的形象增刪器),下一關它確實是以我軍顏色出現的。
只是我懶地打完該關,看它是否是永久改變(那時還沒有阿斌大的通用調適器)。

2012-5-9 08:38 小兵1234
回复 #1 godtype 的帖子

順道一提,毅神5.0最終板也有這功能了。

页: [1]


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