翔鹰帝国网|帝国时代论坛|帝国时代系列|神话时代
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 724|回复: 10

[交流] 关于边移动边射击[SWGB]

[复制链接]

1

主题

0

精华

20

积分

骑士

耕战
0
鹰币
10
天龙币
0
回帖
7
附庸关系0
 楼主| 发表于 2019-9-17 10:12:14 本帖来自手机 | 显示全部楼层 |阅读模式
SWGB中用主单位+合并单位给城堡(fortress)两种攻击,一直在想能否用这个来实现边移动边攻击,但是帝国程序中,主单位如果移动,合并单位(annex_unit)会留在原地不动T_T

昨天试了一下,给投石车类(属于建筑,可以设置合并单位annex_unit)单位在攻击检测函数中加入一小段代码,循环将annex_unit的坐标替换为主单位的坐标,因为这种暴力替换坐标系统并不认为是在移动,所以annex_unit仍然能任意攻击,看起来就和边移动边射击一样,而且不需要触发,可以用在随机地图里面(但估计联机同步可能不行,没试过)

主要问题攻击检测函数只在有敌人时才会被调用,还是要找到所有移动函数,确保主单位/合并单位任何时候坐标都是同步的。等有空时穷举所有的f......+48h, f......+4ch代码,找一下所有的移动函数。。。

最大的问题:合并单位攻击时,主单位的动画不会有任何改变。因为我只是想给SWGB中的歼星舰做出炮塔防御效果,所以不影响。骑射手看着就会很不自然了
不知道合并单位是否设置了强制invisible,如果可以可视的话,应该可以做出车体移动、炮塔旋转攻击的效果

希望做过这方面的前辈分享下经验。。。谢谢
回复

使用道具 举报

1

主题

0

精华

20

积分

骑士

耕战
0
鹰币
10
天龙币
0
回帖
7
附庸关系0
 楼主| 发表于 2019-9-17 10:38:50 | 显示全部楼层
回复

使用道具 举报

29

主题

0

精华

3429

积分

公爵

耕战
347
鹰币
4043
天龙币
0
回帖
1136
附庸关系0
发表于 2019-9-17 12:51:48 | 显示全部楼层
好麻烦哦,红警2有旋转炮塔的单位只需一句OpportunityFire=yes
估计也不能指望决定版实现,hit & run可是蒙古与匈奴骑射称霸亚欧的重要因素之一
帝国2决定版懒人MOD+征服者1.5窃取特色单位MOD
http://www.hawkaoe.net/bbs/thread-139689-1-1.html
回复

使用道具 举报

417

主题

19

精华

8万

积分

教皇

耕战
13421
鹰币
41665
天龙币
18
回帖
6021

特级嘉禾勋章三级帝国勋章十字军勋章翔鹰建站十周年纪念章

附庸关系0
发表于 2019-9-17 13:11:42 本帖来自手机 | 显示全部楼层
楼主你好,反汇编当然是一个复杂而繁琐的事情,不过做好了成就感也是很高的。
您可以看一看1.5的传送单位是怎么做的,里面调用了什么子程序,也许有所帮助。
回复

使用道具 举报

1

主题

0

精华

20

积分

骑士

耕战
0
鹰币
10
天龙币
0
回帖
7
附庸关系0
 楼主| 发表于 2019-9-17 13:44:51 | 显示全部楼层
本帖最后由 UBR365K 于 2019-9-17 18:06 编辑
我是谁004 发表于 2019-9-17 13:11
楼主你好,反汇编当然是一个复杂而繁琐的事情,不过做好了成就感也是很高的。
您可以看一看1.5的传送单位是 ...

哈哈,多谢004前辈光临,
我目前电脑上没装帝国2,不过SWGB和帝国2引擎几乎一模一样,代码结构应该都一样

我现在就是找不到移动时更新坐标的函数在哪里,不过找到了一个代码段看着像是pathfinding判断,任何单位只要在移动就会调用,现在测试了下,基本可以比较稳定的gun & run 了,下班回家再全面测试下。。。
编辑:基本确定了地面单位只要移动就会循环调用这个函数,但是飞行模式单位不会。为了给歼星舰加上移动攻击能力,还要继续找咯。。。




代码超简单,就是检查是建筑类型80[prop_obj+4],有附加单位[unit+1E0h],复制坐标[unit+48h], [unit+4Ch]
.rsrc:007B8940     ; ---------------------------------------------------------------------------
.rsrc:007B8940     ; START OF FUNCTION CHUNK FOR sub_4B0470
.rsrc:007B8940
.rsrc:007B8940     loc_7B8940:                             ; CODE XREF: sub_4B0470+16Aj
.rsrc:007B8940 030                 push    edx
.rsrc:007B8941 034                 push    eax
.rsrc:007B8942 038                 push    ecx
.rsrc:007B8943 03C                 mov     cx, [eax+4]
.rsrc:007B8947 03C                 cmp     cl, 50h
.rsrc:007B894A 03C                 nop
.rsrc:007B894B 03C                 jnz     short loc_7B8963
.rsrc:007B894D 03C                 mov     edx, [ebx+1E0h]
.rsrc:007B8953 03C                 test    edx, edx
.rsrc:007B8955 03C                 jz      short loc_7B8963
.rsrc:007B8957 03C                 mov     eax, [ebx+48h]
.rsrc:007B895A 03C                 mov     ecx, [ebx+4Ch]
.rsrc:007B895D 03C                 mov     [edx+48h], eax
.rsrc:007B8960 03C                 mov     [edx+4Ch], ecx
.rsrc:007B8963
.rsrc:007B8963     loc_7B8963:                             ; CODE XREF: sub_4B0470+3084DBj
.rsrc:007B8963                                             ; sub_4B0470+3084E5j
.rsrc:007B8963 03C                 pop     ecx
.rsrc:007B8964 038                 pop     eax
.rsrc:007B8965 034                 pop     edx
.rsrc:007B8966 030                 fld     dword ptr [ebx+48h]
.rsrc:007B8969 030                 fsub    dword ptr [eax+3Ch]
.rsrc:007B896C 030                 jmp     loc_4B05E0
.rsrc:007B896C     ; END OF FUNCTION CHUNK FOR sub_4B0470
.rsrc:007B896C     ; ---------------------------------------------------------------------------


回复

使用道具 举报

417

主题

19

精华

8万

积分

教皇

耕战
13421
鹰币
41665
天龙币
18
回帖
6021

特级嘉禾勋章三级帝国勋章十字军勋章翔鹰建站十周年纪念章

附庸关系0
发表于 2019-9-17 19:18:37 | 显示全部楼层
UBR365K 发表于 2019-9-17 13:44
哈哈,多谢004前辈光临,
我目前电脑上没装帝国2,不过SWGB和帝国2引擎几乎一模一样,代码结构应该都一样
...

这个当然在帝国2上用不了,引擎一样不代表程序也一样呀,而且SW的程序功能和帝国也有所不同。
004时代:战役时代
我很乐意看到有人在MOD技术上超过我。
回复

使用道具 举报

1

主题

0

精华

20

积分

骑士

耕战
0
鹰币
10
天龙币
0
回帖
7
附庸关系0
 楼主| 发表于 2019-9-17 19:37:53 本帖来自手机 | 显示全部楼层
哈哈,我一直把SWGB当个帝国2的大模组看的,SWGB原版增加的几个功能护盾,电厂,绝地武士也都挺鸡肋。话说帝国2原版里,annex_unit是否只用在城镇中心上?好像几乎没见到单位有带annex_unit的

点评

看一下城门  发表于 2019-9-17 19:46
回复

使用道具 举报

417

主题

19

精华

8万

积分

教皇

耕战
13421
鹰币
41665
天龙币
18
回帖
6021

特级嘉禾勋章三级帝国勋章十字军勋章翔鹰建站十周年纪念章

附庸关系0
发表于 2019-9-17 22:39:26 | 显示全部楼层
晚上试了一下,在帝国2中做出了这种效果,而且附加单位会跟随从属单位移动。但这样的问题有两个,一是不能手动操纵他们,只会自动寻找目标;二是它们如果锁定了一个正在遭受攻击的目标,就会不受射程限制不断攻击它,直到玩家失去它的视野或者被摧毁
004时代:战役时代
我很乐意看到有人在MOD技术上超过我。
回复

使用道具 举报

1

主题

0

精华

20

积分

骑士

耕战
0
鹰币
10
天龙币
0
回帖
7
附庸关系0
 楼主| 发表于 2019-9-19 13:35:20 | 显示全部楼层
本帖最后由 UBR365K 于 2019-9-19 13:59 编辑

又做了一些测试,
1。SWGB中当附加单位攻击地面目标时也会有忽视射程的问题,但是当攻击空中目标(单位类型48,43,59,62,63,64,与是否设置飞行模式无关)时是完全正常的!也不会锁死在一个目标。

因为SWGB用附加单位给城堡增加了防空攻击,基本可以肯定开发者重写了附加单位的攻击判断代码,对空中单位单独处理。现在只要能找到这段代码改一下判断条件,就可以让附加单位完美gun & run,而且研究下肯定能增进对程序机制的了解。。。

2。只暴力修改坐标,和濒死单位强制进驻一样,单位的视野和图像还是留在原地,导致1)做不出车体移动,炮塔旋转攻击的效果。2)视野留在原地虽然完全不影响对空中单位的攻击判断,但是很讨厌。。。 如果设置视野为0则只有被攻击的时候才会自动反击也很讨厌。。。(话说或许能利用这个作出绝地武士光剑反弹的效果?)

不知道视野和图像的机制是什么样的,如果是存储在玩家全局数据里,遇到有单位移动的event才调取具体单位坐标就很难改了。。。 up1.5的传送解决这个了吗?

3。找到设置了飞行模式的单位的寻路pathfinding了,在0x004146F0,语句都一样,可以直接调用改坐标代码。现在只要能解决上面两个问题就万事大吉了。。。



回复

使用道具 举报

417

主题

19

精华

8万

积分

教皇

耕战
13421
鹰币
41665
天龙币
18
回帖
6021

特级嘉禾勋章三级帝国勋章十字军勋章翔鹰建站十周年纪念章

附庸关系0
发表于 2019-9-19 14:03:29 本帖来自手机 | 显示全部楼层
UBR365K 发表于 2019-9-19 13:35
又做了一些测试,
1。SWGB中当附加单位攻击地面目标时也会有忽视射程的问题,但是当攻击空中目标(单位类型 ...


您如果只研究SW的话,那就无法与帝国2联系起来了。
1.5能传送是因为本来就有这么一个传送单位的子程序,所以自然可以调用。再加上停止单位行为的代码(当然这个问题下不需要),就可以完美地传送。
昨天我又进行了研制,现在可以在指派主体的时候,让附加单位也指定目标。后续还会考虑停止和对地攻击时的指令。
我还发现,附加单位的坐标偏移的绝对值不能小于0.5,否则会出问题。
顺便,那不是hit & run么?
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-11-23 09:10 , Processed in 0.148318 second(s), 117 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

快速回复 返回顶部 返回列表