KMT 發表於 2014-11-30 19:19:30

新仙境傳說(RO) 【轉貼】「優化」之打怪 AI (2014/08/01 更新)

優化的有~
1.魔物在不可到達的地方略過不打(新功能)
2.魔物超過設定距離略過不打(新功能)
3.轉角遇到魔物和有拌腳石 不會卡住(修正)
4.遠距離攻擊職業 不會卡住[待測試](修正)
5.正在走向目標魔物,但途中有另一魔物先攻擊到您,就會轉換攻擊目標(修正)

以下要修改源碼~
請注意: 以下修改涉及主程式修改,
稍有不慎恐會造成 Openkore 無法執行,若無把握請勿嘗試,
建議修改前先備份該相關檔案,以備不時之需

開啟檔案 src\AI\Attack.pm

=====修改(1)=====
原程式碼} elsif (
        $config{attackCheckLOS} && $args->{attackMethod}{distance} > 2
        && (($config{attackCanSnipe} && !checkLineSnipable($realMyPos, $realMonsterPos))
        || (!$config{attackCanSnipe} && $realMonsterDist <= $args->{attackMethod}{maxDistance} && !checkLineWalkable($realMyPos, $realMonsterPos, 1)))
) {修改成} elsif (
        $config{attackCheckLOS} && $realMonsterDist > 1
        && (($config{attackCanSnipe} && !checkLineSnipable($realMyPos, $realMonsterPos))
        || (!$config{attackCanSnipe} && $realMonsterDist <= $args->{attackMethod}{maxDistance} && !checkLineWalkable($realMyPos, $realMonsterPos, 0)))
) {修改 02 ,05 行~
=====修改(1-1)===== PUN_DI 大大 && 11225s 大大提供
原程式碼my @stand = calcRectArea2($realMonsterPos->{x}, $realMonsterPos->{y},
                          $args->{attackMethod}{distance},修改成my @stand = calcRectArea2($realMonsterPos->{x}, $realMonsterPos->{y},
                          int($args->{attackMethod}{maxDistance}),將 {distance} 修改成 {maxDistance} 並 小數點無條件捨去

=====修改(2)=====
原程式碼if (
    (($config{attackCanSnipe} && checkLineSnipable($spot, $realMonsterPos))
        || checkLineWalkable($spot, $realMonsterPos))
        && $field->isWalkable($spot->{x}, $spot->{y})
        && ($realMyPos->{x} != $spot->{x} && $realMyPos->{y} != $spot->{y})
        && (!$master || round(distance($spot, $masterPos)) <= $config{followDistanceMax})
) {修改成if ( $field->isWalkable($spot->{x}, $spot->{y})
        && ($realMyPos->{x} != $spot->{x} && $realMyPos->{y} != $spot->{y})
        && round(distance($spot, $realMonsterPos)) <= $args->{attackMethod}{maxDistance}
        && (!$master || round(distance($spot, $masterPos)) <= $config{followDistanceMax})
        && (($config{attackCanSnipe} && checkLineSnipable($spot, $realMonsterPos))
        || checkLineWalkable($spot, $realMonsterPos, 0))
) {修改 01 - 06 行~


03 行增加計算迴避座標要在最大攻擊範圍內~ 避免陷入無限迴圈
**** Hidden Message *****

q6813639 發表於 2014-12-1 14:33:11

guvyctxtxucysidkxtxjvjcgxhclbkvlnpblcrxeztxkb

godboy720 發表於 2014-12-2 01:57:09

太讚啦 ~~~  感恩=ˇ=

0989990583 發表於 2015-1-29 13:28:04

hdf8592 發表於 2015-2-5 11:20:00

最近想回鍋 謝謝大大

kevinking 發表於 2015-4-18 16:42:41

x824682469 發表於 2015-5-5 11:20:58

劉翔翔 發表於 2015-8-6 22:40:20

室友玩跟著玩
就是要開掛XD

0458 發表於 2015-8-6 22:41:39

RO就是世界上嘴最屌的線上遊戲!!!!:loveliness::loveliness:

ncaa455088 發表於 2015-8-12 17:03:02

感謝大大無私低分享~

現在RO的生態和我退出之前已經差很多了

林少宇 發表於 2015-10-4 15:27:26

我收下嚕~~感謝

sa1597 發表於 2016-5-11 07:28:24

感謝分享
來研究看看
本來的設定一直卡

ads860911 發表於 2016-6-15 23:12:54

src\AI\Attack.pm<-----這是在哪裡?
頁: [1]
查看完整版本: 新仙境傳說(RO) 【轉貼】「優化」之打怪 AI (2014/08/01 更新)