轩辕春秋文化论坛 » 曹操传MOD制作交流 » 请毅兄指点下,谢谢


2014-4-3 22:27 aaa132536
请毅兄指点下,谢谢

像损血、耗蓝时的动画需调用450984函数,那么策略动画有没有一个专门的函数,只要输入策略动画编号、施策方、受策方等参数,调用这个函数就可播出动画,谢谢。

2014-4-4 00:17 WHITESHIP
噗看标题还以为是旧帖……

我的经验是,如果只是要播放策略动画还是有可能的。
一般是一串连着的函数,4014F8,401E5C,4016AB等。你可以搜一下,仿照一下代码。

如果要像真正的策略攻击一样显示数字,损血什么的太难了,因为中途还需要45533D调用攻击范围,并会让玩家决定攻击目标。
如果只调用4214BF的话,要从497AF8开始设置几个值,非常麻烦,所以我最后没有用这个方法。

不知道毅大有没有比较好的方案……

2014-4-4 00:58 aaa132536
回复 #2 WHITESHIP 的帖子

我只要动画效果,我想为几个特性加上动画效果。如回春:受伤后可自动释放补给策略,特性作用时会显示补给的动画。

[color=Silver][[i] 本帖最后由 aaa132536 于 2014-4-4 01:07 编辑 [/i]][/color]

2014-4-4 01:05 aaa132536
回复 #2 WHITESHIP 的帖子

谢谢夏侯兄。动画一般是引用4014F8这个函数。

004141F4  |> \68 004C0400                    push 44C00                                          ; /Arg4 = 00044C00
004141F9  |.  6A 04                          push 4                                              ; |/Arg3 = 00000004
004141FB  |.  6A 00                          push 0                                              ; ||Arg2 = 00000000
004141FD  |.  6A 00                          push 0                                              ; ||Arg1 = 00000000
004141FF  |.  B9 C8E44A00                    mov ecx,Ekd5.004AE4C8                               ; ||
00414204  |.  E8 37B80600                    call Ekd5.0047FA40                                  ; |\Ekd5.0047FA40
00414209  |.  50                             push eax                                            ; |Arg3
0041420A  |.  8A55 F4                        mov dl,byte ptr ss:[ebp-C]                          ; |
0041420D  |.  52                             push edx                                            ; |Arg2
0041420E  |.  68 F8BB4800                    push Ekd5.0048BBF8                                  ; |Arg1 = 0048BBF8 ASCII "MEFF.E5"
00414213  |.  B9 B0174900                    mov ecx,Ekd5.004917B0                               ; |
00414218  |.  E8 DBD2FEFF                    call Ekd5.004014F8                                  ; \Ekd5.004014F8

可惜还不明白输入的参数到底是什么

2014-4-4 08:51 godtype
[url]http://www.xycq.net/forum/viewthread.php?tid=222806&page=1#pid3699629[/url]
......

2014-4-4 11:21 aaa132536
回复 #5 godtype 的帖子

谢谢毅兄,不过我想问下

00414204  |.  E8 37B80600                    call Ekd5.0047FA40                                  ; |\Ekd5.0047FA40
00414209  |.  50                             push eax                                            ; |Arg3
0041420A  |.  8A55 F4                        mov dl,byte ptr ss:[ebp-C]                          ; |
0041420D  |.  52                             push edx                                            ; |Arg2
0041420E  |.  68 F8BB4800                    push Ekd5.0048BBF8                                  ; |Arg1 = 0048BBF8 ASCII "MEFF.E5"
00414213  |.  B9 B0174900                    mov ecx,Ekd5.004917B0                               ; |
00414218  |.  E8 DBD2FEFF                    call Ekd5.004014F8                                  ; \Ekd5.004014F8

参数2是不是策略动画编号,参数3是不是受策方坐标

谢谢

[color=Silver][[i] 本帖最后由 aaa132536 于 2014-4-4 11:23 编辑 [/i]][/color]

2014-4-4 12:35 godtype
策略动画是很多函数组合使用的,看清楚前面的部分。

2014-4-4 15:48 aaa132536
回复 #7 godtype 的帖子

嗯,我发现调用004014F8函数还要输入一个空间值:dword ptr ss:[ebp-110],那dword ptr ss:[ebp-110]到底是什么哦

2014-4-4 15:54 aaa132536
00405990  |> \8B4D 1C                        mov ecx,dword ptr ss:[ebp+1C]  (ecx=受策方战场内存地址)
00405993  |.  FF71 07                        push dword ptr ds:[ecx+7]                           ; /Arg2
00405996  |.  FF71 06                        push dword ptr ds:[ecx+6]                           ; |Arg1
00405999  |.  B9 50424B00                    mov ecx,Ekd5.004B4250                               ; |
0040599E  |.  E8 9CF60400                    call Ekd5.0045503F                                  ; \Ekd5.0045503F
004059A3  |.  68 004C0400                    push 44C00                                          ; /Arg4 = 00044C00
004059A8  |.  6A 04                          push 4                                              ; |/Arg3 = 00000004
004059AA  |.  6A 00                          push 0                                              ; ||Arg2 = 00000000
004059AC  |.  6A 00                          push 0                                              ; ||Arg1 = 00000000
004059AE  |.  B9 C8E44A00                    mov ecx,Ekd5.004AE4C8                               ; ||
004059B3  |.  E8 88A00700                    call Ekd5.0047FA40                                  ; |\Ekd5.0047FA40
004059B8  |.  50                             push eax                                            ; |Arg3
004059B9      6A 05                          push 5      (策略动画编号)
004059BB  |.  90                             nop                                                 ; |
004059BC  |.  90                             nop                                                 ; |
004059BD  |.  68 F8BB4800                    push Ekd5.0048BBF8                                  ; |Arg1 = 0048BBF8 ASCII "MEFF.E5"
004059C2  |.  B9 B0174900                    mov ecx,Ekd5.004917B0                               ; |
004059C7  |.  E8 2CBBFFFF                    call Ekd5.004014F8                                  ; \Ekd5.004014F8

这个调用策略动画的代码还要补充哪里哦

2014-4-4 17:11 godtype
只要跟mov ecx,004917B0 有关的都是。
好像我那样拆开指令6B就足够了。

2014-4-4 18:05 aaa132536
回复 #10 godtype 的帖子

哦,那我再去研究下。

2014-4-4 19:24 aaa132536
回复 #10 godtype 的帖子

谢谢毅兄,我知道怎么做了。

页: [1]
查看完整版本: 请毅兄指点下,谢谢


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