Board logo

标题: 请毅兄指点下,谢谢 [打印本页]

作者: aaa132536    时间: 2014-3-30 01:22     标题: 请毅兄指点下,谢谢

我刚完成两个特性:

抛射:原地攻击时弓的最大射程+1
骑射:移动后攻击弓的最大射程+1

但AI进行攻击时还只是按原来的攻击范围攻击,不会按特性修正后的攻击范围攻击,请问下毅兄要怎么改才能使AI按特性修正后的攻击范围攻击,谢谢
作者: godtype    时间: 2014-3-30 10:15

去看三英外传
作者: aaa132536    时间: 2014-3-30 12:46     标题: 回复 #2 godtype 的帖子

哦,谢谢
作者: aaa132536    时间: 2014-3-30 13:31     标题: 回复 #2 godtype 的帖子

恩,毅兄,能不能给个提示,关于AI判定攻击范围时的代码地址在哪里。
作者: godtype    时间: 2014-3-30 16:44

当然就是攻击范围函数
作者: aaa132536    时间: 2014-3-30 19:50     标题: 回复 #5 godtype 的帖子

但如果直接读取攻击范围函数的话,AI好像只会按现有攻击范围来计算,不会考虑移动后特性(抛射、骑射)修正的攻击范围。
作者: godtype    时间: 2014-3-30 20:36


逆向看一下什么地方调用过相关的函数……
作者: dennis2669    时间: 2014-3-30 20:36     标题: 回复 #6 aaa132536 的帖子

那不能直接在AI選擇時測試有沒這特技嗎
作者: aaa132536    时间: 2014-3-31 02:37

AI进行选择时是调用
00438965  /$  55                          push ebp
00438966  |.  8BEC                        mov ebp,esp
00438968  |.  83EC 14                     sub esp,14
0043896B  |.  894D EC                     mov dword ptr ss:[ebp-14],ecx
0043896E  |.  8B4D EC                     mov ecx,dword ptr ss:[ebp-14]
00438971  |.  E8 486F0000                 call Ekd5.0043F8BE

这个函数吧,不过AI进行选择时是默认不移动的,测试有没有抛射、骑射特性无意义,这个代码要怎么写才能代人抛射、骑射特性呢。若代码写成有抛射特性的判定时攻击范围-1,有骑射特性的判定时攻击范围+1,但若AI原址攻击时怎么办。
作者: aaa132536    时间: 2014-3-31 09:55

AI在进行选择攻击对象时,应该是在自己可移动步数+攻击范围内选的,这样若AI选择的攻击对象自己在原地就可攻击到则跳过,若需要移动后才能攻击到,则加入特性(抛射、骑射)修正攻击范围。那AI选择攻击对象时需移动几步这段代码地址在哪里哦。
作者: godtype    时间: 2014-3-31 10:33

反正我就这样改完了,AI想做什么就由得它自己决定,超出范围的事我是不会浪费精力的。
作者: aaa132536    时间: 2014-3-31 12:08     标题: 回复 #11 godtype 的帖子

哦,我还是放弃那两个特性吧,涉及AI的事都是太麻烦的




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