LV. 3
GP 81

【心得】給你更好用的生命體與傭兵AI (2022-02-23 修個小bug)

樓主 ~跡~ ReMem
GP178 BP-
關於最新版(v1.1.x)的更新內容,可參考 45F

【簡介】

方向:
  • 以打怪為主,開發時沒考慮 PVP 跟 GVG。
  • 希望透過不同參數,讓使用者在設定上有比較大的彈性,而非只能在寫好的功能上選擇。
特點:
  • 可設定自動使用技能
  • 可設定尋找攻擊目標的方式
    • 預設是防止搶怪(可自行修改)
    • 預設有主動模式、被動模式提供切換
  • 跟隨主人的方式不會亂飄,所以趕路時比較不會跟不上
  • 相較於官方 AI 較不會跑出螢幕範圍


【安裝與啟用】
  1. 下載檔案(擇一):
  2. 將檔案解壓縮到「RO資料夾\AI\USER_AI\」。也就是說 USER_AI 資料夾內要有解壓縮的「AI.lua、AI_M.lua、RNAI資料夾含檔案」。(下圖綠色部分為壓縮檔的內容)
  3. 在遊戲中輸入「/hoai」(自訂生命體)或「/merai」(自訂傭兵)
  4. 重新招喚或是過地圖或重登即生效
(萬一不小心蓋到AI資料夾檔案,可以用這個官方AI小修改版蓋過去)

【操作】
基本的操作都跟預設AI相同,在此不多贅述。以下只列出比較特別的部分:
  1. 移動:移動後會在指定位置發呆,這是用來引怪或是檔怪用的。可用跟隨指令(傭兵用 CTRL+T;生命體用 ALT+T)取消此狀態。
  2. 主被動切換:在0.5秒內連續按兩次跟隨指令,就會切換主動或被動模式。
  3. 加好友(允許攻擊特定對象的怪物):ALT+SHIFT+左鍵點對象(傭兵)或是ALT+SHIFT+右鍵點對象(生命體)。這就可以把對方加為好友,被加為好友的怪物視為可攻擊對象。PS.如果是要加的對象是生命體那種無法點擊的對象,點他所在的格子也可。
  4. 取消好友:用加好友的指令,但是點擊的對象是傭兵(或生命體)自己,就會清空所有好友清單。
  5. 範圍加好友(通常用在組隊時可以一次加很多人為好友):用移動指令點擊左上角座標,再用ALT+SHIFT+點擊右下角座標,這兩個座標形成的長方形內所有玩家(包含生命體與傭兵)都會被加為好友。



【設定說明】

如果您比較懶,這個部分可以忽略,以下是給想再做細部設定的玩家參考的。

不像預設AI必須修改程式碼,RNAI把一些常用的設定參數獨立獨立出來。
傭兵的參數放在MerCfg.lua;生命體的參數放在HomCfg.lua。
(v1.1.0版之後,不同的傭兵或生命體的設定可以存在不同的檔案,詳見網站的自訂腳本說明)
因此只要用筆記本打開相關檔案就可以作修改,內容如下:
(灰色字體為說明)
FollowDis=2 --跟隨距離
MoveDelay=500 --兩次發送移動的延遲 500 ms,建議不要動他。
RadiusAggr=12 --搜尋怪物的半徑
SearchMode={{64,128,0,256,0,0,-1,-1},{50,200,-800,25,30,-45,-1,1}} --主被動的相關參數,不動他,真的好奇是什麼意思可參考8樓
SearchSetting=SearchMode[1] --剛招喚生命體(傭兵)時載入被動模式;如果想要先載入主動模式可以將 1 改成 2
WeakTargets={} --這是不使用技能的魔物ID清單,魔物ID可以查詢RO幻想廳等網站(這個設定只對生命體有效)

Skill={} --這個不要動他

Skill[#Skill+1]={} --新增一組技能
Skill[#Skill].id=0 --技能ID(0=普攻)
Skill[#Skill].lv=1 --技能等級
Skill[#Skill].target=0 --技能對象(0=魔物;1=玩家;2=生命體或傭兵)
Skill[#Skill].when=1 --技能使用時機(0=不限制;1=有怪物時;2=沒怪物時)
Skill[#Skill].times=1 --技能連續使用次數
Skill[#Skill].delay=0 --連續使用後的延遲
Skill[#Skill].sp={0,100} --SP百分比限制
Skill[#Skill].nMyEnemy=0 --生命體(傭兵)被幾隻怪物以上攻擊才使用
Skill[#Skill].nOwnerEnemy=0 --主人被幾隻怪物以上攻擊才使用
Skill[#Skill].nRangeEnemy=0 --主動範圍內出現幾隻怪物以上攻擊才使用
Skill[#Skill].chase=1 --距離魔物太超出技能範圍時是否靠近魔物
Skill[#Skill].stemp=0 --不動他
Skill[#Skill].count=0 --不動他

技能ID的查詢可以參考:RNAI純文字編輯器
PS. windows 記事本如果選錯編碼可能會造成錯誤,建議在上面的編輯器直接修改即可。

特別注意:舊版(v1.0.3) 自動技能設定不適用「對地使用技能,如地雷陷阱」以及「以自己為中心傷害技能,如怒暴」。
178
-
LV. 11
GP 348
2 樓 白色草泥碼 kas123459
GP0 BP-
請問一下可以設定讓生命體主動攻擊嗎

我的羊 不會主動去打怪
0
-
LV. 12
GP 3
3 樓 主治醫生 fenlon168
GP0 BP-
    請問一下各位養生命體的前輩 我用了此AI後在蟻洞放養打蟻卵 常出現卡住情況(隔障礙物兩格生命體果凍就常卡住或是跑到距離主人很遠地方後不動) 請問有辦法能解決嗎?
    此AI在歐洞相當順 但是到了蟻洞就常卡住 不知該如何做修改...晚上歐洞練功人數不足常卡怪原地發呆沒怪打 只好回蟻洞..懇請幫忙
0
-
LV. 3
GP 119
4 樓 ~跡~ ReMem
GP0 BP-
※ 引述《fenlon168 (主治醫生)》之銘言
> 請問一下各位養生命體的前輩 我用了此AI後在蟻洞放養打蟻卵 常出現卡住情況(隔障礙物兩格生命體果凍就常卡住或是跑到距離主人很遠地方後不動) 請問有辦法能解決嗎?
> 此AI在歐洞相當順 但是到了蟻洞就常卡住 不知該如何做修改...晚上歐洞練功人數不足常卡怪原地發呆沒怪打 只好回蟻洞..懇請幫忙

障礙物的問題:我會列入之後版本需要解決的項目。暫時解決方式是調整(縮小)搜尋怪物的半徑(以主人為中心),並坐在適當的位置(範圍內不會有跨障礙物的可能)。

跑到很遠的地方:這可能是先前版本的bug,我後來有更新了。可以試試下載最新版本(RNAI_E1_2)
0
-
LV. 1
GP 0
5 樓 一將功成萬骨枯 jp6au1598
GP1 BP-
想請問一下由於我從新安裝RO
將檔案解壓縮到「RO資料夾\AI\USER_AI\」
我發現我的RO裡面並無USER_AI這個資料夾
那是否我要自己創一個嗎?
1
-
LV. 11
GP 16
6 樓 老爹 comfy
GP0 BP-
請問傭兵不能設定不打某些怪嗎?(會打活動怪
0
-
LV. 1
GP 0
7 樓 哈特迪斯 belialiceman
GP1 BP-
~跡~大您好,我從上一版就開始使用你傭兵AI,我發現只要傭兵過遠傳送回身邊或使用蒼蠅翅膀就會自動進入跟隨模式,每次飛完都必須ctrl+T兩下才能讓傭兵主動攻擊,請問這要如何設定才能向官方一樣飛完自動打怪
1
-
LV. 3
GP 128
8 樓 ~跡~ ReMem
GP8 BP-
※ 引述《belialiceman (哈特迪斯)》之銘言
> ~跡~大您好,我從上一版就開始使用你傭兵AI,我發現只要傭兵過遠傳送回身邊或使用蒼蠅翅膀就會自動進入跟隨模式,每次飛完都必須ctrl+T兩下才能讓傭兵主動攻擊,請問這要如何設定才能向官方一樣飛完自動打怪

MerCfg.lua檔案:
SearchMode={{64,128,0,256,0,0,-1,-1},{50,200,-800,25,30,-45,-1,1}}

前面的{64,128,0,256,0,0,-1,-1}是預設模式(被動)
後面的
{50,200,-800,25,30,-45,-1,1}是切換後的模式(主動)
你可以把兩個順序調換

至於這些參數是什麼意思,在此用主動模式舉例:
{50,200,-800,25,30,-45,-1,1}共有8個數字用逗號分開,依序為
{主人被打,生命體被打,其他玩家被打,主人攻擊,生命體攻擊,其他玩家攻擊,範圍外,範圍內}

假設今天怪物A在範圍內(搜尋半徑內)會得到1點的分數
如果怪物A正在攻擊生命體,這時候他會得到200點的分數(這時1+200=201分)
另外同時間怪物B也在範圍內,且正在攻擊主人,這時怪物B的分數是51分(1+50)
所以生命體會以怪物A為對象去攻擊(分數最高)
※如果最後分數是負的就不攻擊
8
-
LV. 3
GP 4
9 樓 Tifmin1525 tifmin1525
GP0 BP-
當我輸入了/hoai後就會跳出來
先是這個 按了確定後
會跳出這個

之後就無限循環了

另外我的善變放不出來
不過看起來我連編譯都有問題了,也不用看技能方面了@@
0
-
LV. 1
GP 0
10 樓 樹懶叫聲 kiss07021
GP0 BP-
我的生命體變異成S後
就不會自己打怪了@@
0
-
LV. 17
GP 20
12 樓 摩耶 fakelove9999
GP0 BP-
Skill[#Skill+1]={} --新增一組技能
Skill[#Skill].id=0 --技能ID(0=普攻)
Skill[#Skill].lv=1 --技能等級
Skill[#Skill].target=0 --技能對象(0=魔物;1=玩家;2=生命體或傭兵)

我設定成
Skill[#Skill+1]={}
Skill[#Skill].id=8009
Skill[#Skill].lv=5
Skill[#Skill].target=1

結果一直猛放月光,不會普攻...正常嗎?
0
-
LV. 2
GP 1
13 樓 小魅影 r122992913
GP0 BP-
※ 引述《fakelove9999 (惡魔)》之銘言
> Skill[#Skill].id=0 --技能ID(0=普攻)  
> 我設定成
> Skill[#Skill].id=8009    <---這裡要改成0吧


0
-
LV. 4
GP 137
14 樓 ~跡~ ReMem
GP3 BP-
※ 引述《fakelove9999 (惡魔)》之銘言
> Skill[#Skill+1]={} --新增一組技能
> Skill[#Skill].id=0 --技能ID(0=普攻)
> Skill[#Skill].lv=1 --技能等級
> Skill[#Skill].target=0 --技能對象(0=魔物;1=玩家;2=生命體或傭兵)
> 我設定成
> Skill[#Skill+1]={}
> Skill[#Skill].id=8009
> Skill[#Skill].lv=5
> Skill[#Skill].target=1
> 結果一直猛放月光,不會普攻...正常嗎?

運作方式是這樣的:
  1. 可使用的技能會由上往下搜尋
  2. 一旦搜尋到可使用的技能(且符合施放的條件)時,就使用此技能,並終止往下搜尋
  3. 普攻也當作是技能,只是id為0
所以單純把普攻的值改為8009,當然不會普攻

應該要這樣寫:
Skill[#Skill+1]={}
Skill[#Skill].id=8009
Skill[#Skill].lv=5
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=2700
Skill[#Skill].sp={20,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

Skill[#Skill+1]={}
Skill[#Skill].id=0
Skill[#Skill].lv=1
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=0
Skill[#Skill].sp={0,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

這樣的話:
第1次會搜尋到月光並使用他
第2次因為月光還在delay中,所以會繼續往下搜尋,就會用普攻了
3
-
LV. 5
GP 9
15 樓 Hsiu iversonlee6
GP0 BP-
請問要怎麼知道怪物的編號 想設定活動怪不打 但是每次換活動就要找新怪編號這樣
0
-
LV. 4
GP 138
17 樓 ~跡~ ReMem
GP0 BP-
※ 引述《iversonlee6 (Hsiu)》之銘言
> 請問要怎麼知道怪物的編號 想設定活動怪不打 但是每次換活動就要找新怪編號這樣
找怪物ID方法如下:(一般怪物去查RO幻想廳就看得到了,下面主要是針對查不到的狀況)
  1. 這個功能是生命體限定,如果有開傭兵要先收起來,避免造成彈窗
    (這部分我之後會再修正,讓開傭兵不會彈窗)
  2. 在對話欄輸入「/traceai」,會顯示「紀錄生命體狀態」之類的文字。
  3. 重新招喚生命體。
  4. 用ALT+右鍵攻擊活動怪物(應該只會普攻)。
  5. 到RO資料夾找「TraceAI.txt」檔案,裡面會有1行
    「id:xxxxxxx,type yyyy」這個yyyy即為此活動怪物ID
  6. 為了避免之後開啟傭兵出錯,同時減少電腦負擔,再次輸入「/traceai」關閉記錄狀態功能。
0
-
LV. 17
GP 8
18 樓 暴龍 poro02042000
GP0 BP-
要如何改回官方設定的呢
0
-
LV. 14
GP 11
19 樓 冰晶骷髏 jjjj1210
GP0 BP-
請問大大我在修改編碼的時候都不能存檔 都是存取被拒絕 有什麼解決辦法嗎?
0
-
LV. 3
GP 22
20 樓 屋頂上的貓 DearestHuei
GP0 BP-
我試試自己改,然後用成使用者AI就不太會打怪了(只會偶而打幾下這樣子)
生命體是 果凍→蜜蜂
原本直接使用你的果凍AI都還很正常!(在果凍階段的時候)
我附上我改的編碼

FollowDis=2
MoveDelay=500
RadiusAggr=12
SearchMode={{64,128,0,256,0,0,-1,-1},{50,200,-800,25,30,-45,-1,1}}
SearchSetting=SearchMode[1]
WeakTargets={}

Skill={}

Skill[#Skill+1]={}
Skill[#Skill].id=8021
Skill[#Skill].lv=5
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=0
Skill[#Skill].sp={0,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

Skill[#Skill+1]={}
Skill[#Skill].id=8018
Skill[#Skill].lv=5
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=0
Skill[#Skill].sp={0,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

Skill[#Skill+1]={}
Skill[#Skill].id=8020
Skill[#Skill].lv=5
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=0
Skill[#Skill].sp={0,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

Skill[#Skill+1]={}
Skill[#Skill].id=8019
Skill[#Skill].lv=5
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=0
Skill[#Skill].sp={0,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

Skill[#Skill+1]={}
Skill[#Skill].id=8013
Skill[#Skill].lv=5
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=2000
Skill[#Skill].sp={20,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

Skill[#Skill+1]={}
Skill[#Skill].id=0
Skill[#Skill].lv=1
Skill[#Skill].target=0
Skill[#Skill].when=1
Skill[#Skill].times=1
Skill[#Skill].delay=0
Skill[#Skill].sp={0,100}
Skill[#Skill].nMyEnemy=0
Skill[#Skill].nOwnerEnemy=0
Skill[#Skill].nRangeEnemy=0
Skill[#Skill].chase=1
Skill[#Skill].stemp=0
Skill[#Skill].count=0

請問有哪個地方是需要改的?

0
-
未登入的勇者,要加入 57 樓的討論嗎?
板務人員:

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】