- UID
- 5948534
- 主题
- 13
- 阅读权限
- 30
- 帖子
- 65
- 精华
- 0
- 积分
- 279
- 金钱
- 1309
- 荣誉
- 24
- 人气
- 65
- 在线时间
- 297 小时
- 评议
- 0
- 帖子
- 65
- 精华
- 0
- 积分
- 279
- 金钱
- 1309
- 荣誉
- 24
- 人气
- 65
- 评议
- 0
|
本帖最后由 ΦIΛOΘEOΣ 于 2012-8-3 13:54 编辑
所謂AI指以敵我距離, 對手狀態等為參考條件/壓入參數, 後算出AI行為代號的一群式子.
這群式子分佈在主程序約0x4A4xxx~0x4Exxxx處( 1.02,下同 ).
這些式子的特徵是以mov eax,xxx ... retn返回, 返回後的eax便是反應模式代號.
反應代號初步表列如下:
05=轉身動作
09=歡呼
0b=後退
11=某種待機
12,13,14,15,16,17,18,19,1a=error
25=死防
27=遠逃開
28=C1
2A=繞背( 始終面對背 )
2B=直線亂跑
2D=歡呼
30=大距離遠離
32,33,34=error
35=前啟動
36=跟
37=緊跟
38=逃開
39=error
3A=黏( 器械? )
3B=左右晃/待機
3C=亂晃
3D=後退後亂晃
3F=跑動中則跑方/1~5方
40=C2~C3(常態)
41=C1
1000011,43=無雙
1000110,46=跳方
48=某種待機
4B=反覆防與取消防/發抖
4C=非死防的防
52=不動
55,56=僵化
59=C1
5C=左右晃
5D=逃開
5F=跑動中無跑方的1~5方
61=弓兵/遠離後一方
65=某種待機
66=繞圈( 鷹/北斗 )
67=防禦著左右晃/待機
68=逃開
69=盾兵/遠離後返回跑方
6B=轉身動作
1101101,6D=無雙
6F=死防
71=圍繞著亂跑
1110100,74=無雙
77=跑動中則跑方/1~5方
78=C1
79以上=不動
::80=不決定( 移交給其它判斷式決定 )
待機模式指等待對手進入某種狀態後才有反應的模式, ( 如http://game.ali213.net/forum.php ... &page=1#pid51537332中為等待出C技時做出反應的模式 ), 這部分尚未詳細整理.
AI反應絕大部分由0x4d610f處的eax最後決定, 欲測試可改其上的返回式(sub4D8560)為:
004D8560 B8 xx000000 MOV EAX,const32
004D8565 C3 RETN
========
所附是改動了見面狀態( 改為跳方 ) / 見面後某種待機狀態( 改為直接攻擊 ) / 離開一定距離時的"發抖"( 疑似355翻滾迴避狀態的殘留, 但無具體動作對應; 改為死防 )的主程序.
http://akazukin.ys168.com/ >> ssm6m >> SM602m04.rar
具體結果可參考:
tp://www.you河蟹tube.com/watch?v=YMy_VZCGT58
====
8/3/12:
測試npc"按鍵"延遲, 帶副產品.
sub_4D86F0返回的ESI可能代表慣性或延遲, 加大此返回值可使ai出後段C(c4以上)的機率增大, 且使跳方變成大跳(經常"跳過頭"一類, 懷疑雜兵就是用這個); 減小此值則使ai跳方更低更快(所謂"小跳斬"), 除c1c2外不出其他c等.
ai後段C可參考http://www.you{}tube.com/watch?v=CCQq3RLFrtM
副產品承SM602m04, 除加入上述慣性值的變動使ai出後段C外又改了幾個反應參數, 主要減少盾兵亂跳而不出集體跑方的現象.
http://akazukin.ys168.com/ >> ssm6m >> SM602m04r.rar
*單個npc(如鬥技場)及難度為難或修羅時ai出後段C較明顯, 究極反而不大明顯, 可能是究極時ai放無雙較頻繁所致. |
|