Board logo

标题: 关于在战场中使用75特殊形象指定后实时改变形象的代码 [打印本页]

作者: godtype    时间: 2010-4-13 12:49     标题: 关于在战场中使用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
0043E18B  |. 90             NOP
0043E18C  |. 33C0           XOR EAX,EAX
0043E18E  |. B0 01          MOV AL,1

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
004D1040   B8 01000000      MOV EAX,1
004D1045   8BE5             MOV ESP,EBP
004D1047   5D               POP EBP
004D1048   C3               RETN

谢绝转载!

[ 本帖最后由 godtype 于 2010-12-12 22:50 编辑 ]
作者: q19961121    时间: 2012-1-30 14:06


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


请问star5.7要在哪里改成call  0043E164
作者: godtype    时间: 2012-1-30 16:06

5.7及以后已经自带本帖功能,你有实际用过引擎就知道啦。
作者: q19961121    时间: 2012-1-30 18:51     标题: 回复 #3 godtype 的帖子

原来自带了。。。。
谢谢毅哥。。。
作者: godtype    时间: 2012-1-30 18:54



QUOTE:
原帖由 q19961121 于 2012-1-30 18:51 发表
原来自带了。。。。
谢谢毅哥。。。

错了,应该多谢STAR,不用你们自己改。
作者: 灬棉崽灬    时间: 2012-1-30 21:08     标题: 回复 #3 godtype 的帖子

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

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

[ 本帖最后由 灬棉崽灬 于 2012-1-30 21:15 编辑 ]
作者: 灬棉崽灬    时间: 2012-1-30 21:17

004014E3      E8 7CCC0300   CALL Ekd5.0043E164

毅大这是我找到的5.6的地址,对吗?
作者: godtype    时间: 2012-1-30 21:17     标题: 回复 #6 灬棉崽灬 的帖子

引擎支持指令75才可以。
作者: 小兵1234    时间: 2012-5-9 08:36     标题: 回复 #6 灬棉崽灬 的帖子

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

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




欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) Powered by Discuz! 5.0.0