搜尋


返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

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

[複製連結]
1
GAGA123 ( Lv.50 智天使 ) 發表於 2014-11-30 18:53:05 | 只看該作者 回覆獎勵 |降序瀏覽 |閱讀模式
優化的有~
1.魔物在不可到達的地方略過不打(新功能)
2.魔物超過設定距離略過不打(新功能)
3.轉角遇到魔物和有拌腳石 不會卡住(修正)
4.遠距離攻擊職業 不會卡住[待測試](修正)
5.正在走向目標魔物,但途中有另一魔物先攻擊到您,就會轉換攻擊目標(修正)

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


開啟檔案 src\AI\Attack.pm

=====修改(1)=====
原程式碼



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

=====修改(2)=====
原程式碼
  1. if (
  2.     (($config{attackCanSnipe} && checkLineSnipable($spot, $realMonsterPos))
  3.         || checkLineWalkable($spot, $realMonsterPos))
  4.         && $field->isWalkable($spot->{x}, $spot->{y})
  5.         && ($realMyPos->{x} != $spot->{x} && $realMyPos->{y} != $spot->{y})
  6.         && (!$master || round(distance($spot, $masterPos)) <= $config{followDistanceMax})
  7. ) {
複製代碼
修改成
  1. if ( $field->isWalkable($spot->{x}, $spot->{y})
  2.         && ($realMyPos->{x} != $spot->{x} && $realMyPos->{y} != $spot->{y})
  3.         && round(distance($spot, $realMonsterPos)) <= $args->{attackMethod}{maxDistance}
  4.         && (!$master || round(distance($spot, $masterPos)) <= $config{followDistanceMax})
  5.         && (($config{attackCanSnipe} && checkLineSnipable($spot, $realMonsterPos))
  6.         || checkLineWalkable($spot, $realMonsterPos, 0))
  7. ) {
複製代碼
修改 01 - 06 行~
03 行增加計算迴避座標要在最大攻擊範圍內~ 避免陷入無限迴圈


所有站內附件皆會附上安全掃描報告
請會員查看純淨度百分比後判斷使用



相關檔案須知:
取得檔案前,請先詳細閱讀文章內容
避免不必要錯誤與誤會發生。
也可多參考文章討論樓層內容
了解附件檔案相關討論資訊。









大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單