ff14高級觸發(fā)器不正經(jīng)教程-想讓你的角色被注視時搖搖尾巴嗎?

“最終幻想XIV”,“ACT高級觸發(fā)器/Triggernometry”有不感興趣或抵觸的朋友們可以先退出了,愿你們看B站其他內(nèi)容看的開心?
本篇不涉及修改游戲資源,mod的使用等;戰(zhàn)斗用觸發(fā)器我大概也能做,但是非本篇主要介紹內(nèi)容;搖尾巴指的是ff14游戲內(nèi)置em宏命令,而非動作模組:
本篇是高級觸發(fā)器教程(而非觸發(fā)器高級教程),本教程以制作一個“被玩家注視時執(zhí)行特定宏命令的觸發(fā)器”為目標介紹ACT高級觸發(fā)器,可能包含的內(nèi)容有(目錄):
高級觸發(fā)器(Triggernometry)的簡單介紹
分組、觸發(fā)器(觸發(fā)器條件、觸發(fā)器動作、計劃任務(wù))的簡單介紹
ACT日志的簡單介紹
正則表達式知識(并不完整,只講我喜歡的部分)的簡單介紹
變量的簡單介紹(只介紹部分,比如標量變量,列表變量,特殊變量)
觸發(fā)器調(diào)用簡單介紹(順便介紹下我稱之為迭代器和定時器的寫法)
放點鏈接

1.高級觸發(fā)器的簡單介紹
Q:什么是觸發(fā)器?
A:ACT會解析游戲并打印日志,觸發(fā)器可以處理日志并做一些事情,比如播放聲音語音合成或者發(fā)出蜂鳴聲
Q:高級觸發(fā)器與普通觸發(fā)器的區(qū)別?
A:引入了變量,包括自己創(chuàng)建變量或是讀取在場角色的變量;能做更多的事情,比如模擬鍵盤按鍵、執(zhí)行鼠標操作、發(fā)送post請求、觸發(fā)其他觸發(fā)器、執(zhí)行C#腳本等。


如插件中心介紹說的那樣,沒特殊需求的話用cactbot就好了,但搖尾巴偏就屬于特殊需求~
第二張圖中,本地觸發(fā)器通常指.xml配置文件放在本地的觸發(fā)器,自己創(chuàng)建或者導(dǎo)入的觸發(fā)器就放在這里;遠程觸發(fā)器則是可以從遠程代碼倉庫進行更新的.xml配置文件,比如ff14AuraCan的多數(shù)版本上傳到過GitHub上,它們也可以作為遠程觸發(fā)器被安裝及更新。

為了能看到更多的東西(主要指日志和變量),我們來修改一些配置:
點擊高級觸發(fā)器主界面右上角的【選項】-【編輯配置】-【其他】標簽,勾選【設(shè)置使用實時值為默認測試方法】以及【開發(fā)者模式】
再來到【選項】-【編輯配置】-【通用】標簽,勾選【通用】窗口下的【記錄通常日志】
如果本文中還有其他東西我這顯示了而你那沒有,可以來找我貼貼,也可以自己想想辦法,專欄末尾附上的鏈接也可能對你有幫助~

(修改配置后)點擊高級觸發(fā)器的選項按鈕,里面有幾個比較重要與常用的功能,我挑點喜歡的介紹下:

測試輸入:選擇日志行(Normal log line)并且輸入日志可以很方便的測試你的觸發(fā)器是否有效,不需要真的讓你的同伴反復(fù)放一個三分鐘CD的技能
禁用所有的Aura:Aura有敖龍族的意思,英語翻譯是氣質(zhì)、氣氛、氛圍等。這里我感覺用“圖片區(qū)域”和“文本區(qū)域”更合適,當(dāng)你使用高級觸發(fā)器顯示圖片或者文本區(qū)出了問題需要緊急停止時請使用這個功能
嘗試中斷執(zhí)行的動作:冒險者你也不想你的尾巴一直搖吧(這例子其實不太恰當(dāng))。遇到不可控情況時先去掉觸發(fā)器前的對號,還不能停止的話使用該功能
清除所有變量:好東西
清除動作隊列:好東西
觸發(fā)器性能基準測試:通常來說觸發(fā)器的執(zhí)行還是蠻快的,但并不代表它一直很快。當(dāng)你的列表變量中儲存著海都900位玩家時(當(dāng)然不代表海都真的有這么多人)你可以明顯的觀察到處理這個變量的時間占比高的離譜
查看變量:你可以通過這個來創(chuàng)建、刪除、編輯、查看高級觸發(fā)器中已經(jīng)儲存的變量
查看日志:最主要的功能之一了,似乎通常只會顯示戰(zhàn)斗日志,需要做一點修改(勾選記錄通常日志)才會顯示非戰(zhàn)斗日志
2.分組、觸發(fā)器的簡單介紹
分組:文件夾
觸發(fā)器:文件夾里除了文件夾以外的東西,有時也指代一整組觸發(fā)器
如果你用的也是中文版,那么你幾乎不可能搞錯他們的概念,它幾乎在每一個顯眼的地方告訴你它是個什么東西。
分組或者觸發(fā)器左側(cè)都有一個勾選框,默認是鉤上的,也就是工作狀態(tài)。你可以點一下,讓那個?消失,這樣的話無論日志打印了什么都和該分組、該觸發(fā)器無關(guān)了

好的我們來創(chuàng)建一個分組:
右鍵點擊【本地觸發(fā)器】-點擊【添加】-點擊【分組】,給分組隨便起個英文名中文名日文名法文名都可以,只供展示用,觸發(fā)器互相調(diào)用時識別的是它的id(因此需要被調(diào)用的觸發(fā)器請不要輕易復(fù)制,很容易由于id相同而出問題)。我們就叫它Hello WorldTouch my tail好了,同時我將我舊觸發(fā)器(這里指負責(zé)某個功能的整組觸發(fā)器)前的?去掉,以免他們互相干擾(本地觸發(fā)器的?別去掉,不然下面的都不工作了)
創(chuàng)建分組時有一些其他的功能可以點點看,萬一哪天就用上了呢~

再在分組下創(chuàng)建一個觸發(fā)器,右鍵新創(chuàng)建的分組,也就是Touch my tail那行字,點擊【添加】-點擊【觸發(fā)】,起個名字,因為計劃等下第一個要做的觸發(fā)器功能是入場提醒,因此我簡單的叫它in。同樣地,這個觸發(fā)器可以隨便起什么名字,只要你自己分得清就好。如果你不想別人看得懂它,也可以起一些諸如e981a■e38184e■a898e■■■b6的名字。
其他的部分我們暫時空著,我們可以隨時右鍵觸發(fā)器或分組,點擊編輯來修改任何部分。點擊減號可以折疊,右鍵分組點擊折疊全部也可以折疊。

現(xiàn)在我們來看一點觸發(fā)器的細節(jié)部分,包括觸發(fā)器條件、觸發(fā)器動作、計劃任務(wù)。雙擊我們的in,開始編輯我們的觸發(fā)器
觸發(fā)器動作:這個觸發(fā)器被觸發(fā)后會執(zhí)行的動作,可以添加多個
觸發(fā)器條件:滿足條件后才能讓這個觸發(fā)器(以及其下觸發(fā)器動作)執(zhí)行,如果其他觸發(fā)器調(diào)用該觸發(fā)器且勾選忽略條件則無視觸發(fā)器條件。類比編程語言的if else
計劃任務(wù):前面幾個選擇框也留意一下,會有用的到的時候。我們先看一下順序執(zhí)行這個可選框,觸發(fā)器動作內(nèi)的多個動作默認是并發(fā)執(zhí)行的,可以粗略理解為誰先誰后不一定。但如果你勾選這個,那么該觸發(fā)器內(nèi)的動作一定會從上到下執(zhí)行,執(zhí)行完一個才執(zhí)行另一個(觸發(fā)器的互相調(diào)用另算)
3.ACT日志的簡單介紹
說實話,我說不準這是原生的、應(yīng)該叫ACT日志還是被處理過、應(yīng)該叫高級觸發(fā)器日志,以前看過一個架構(gòu)圖,后來忘了,也找不到了。
現(xiàn)在去玩會游戲,打個本或者去某個地圖掛機亦或者看看風(fēng)景,總之你認為會打印日志的活動都可以(寫到這里時我去打了個月讀討伐戰(zhàn)。小隊,通訊貝,跨服貝,部隊都有人說話,還有貓娘甩朝陽巴掌,有肥肥在啊嗚啊嗚,算是比較全面的日志采集了)。點擊查看日志,里面應(yīng)該有很多東西
我們右鍵其中一條-【復(fù)制】-【復(fù)制選擇到剪貼板】(你可以輸入AddCombatant然后點擊搜索,從這里面選),這是我們待會要用的日志(龍尾輕輕搖是假名,希望沒有叫這個名字的玩家)
現(xiàn)在把前面的部分以及結(jié)尾的括號去掉,中間的才是日志本體
日志的格式并不是一成不變的,至少在開6.0大版本時經(jīng)歷過一次改變
我來列舉一些關(guān)鍵詞,可供搜索日志時使用:
如果你也像我一樣需要處理通訊貝跨服貝部隊小隊團隊默語呼喊喊話情感動作一類的話可以多關(guān)注一下ChatLog,我來舉幾個例子:
4.正則表達式知識的簡單介紹
先胃疼五秒
讓我寫是沒什么問題的,讓我講我會胃疼。寫不出想要的正則可以找我?guī)兔?,我不會的話也會先去學(xué)然后試著寫
先聲明一下,不同編程語言的正則表達式是不完全相同的,但它們有相似的概念。學(xué)會一個后其他的查查文檔也就會的差不多了,nga那個教程(后面有鏈接)正則講的就十分詳細。甚至都快變成正則教程了
我們再回顧一下入場打印的日志,并試圖解析一下它的組成
日期,包含一對方括號、兩個冒號、一個點、時、分、秒、毫秒
一個分隔用的空格
關(guān)鍵詞AddCombatant
又一個分隔用的空格
03
可能是玩家唯一id(為了讓日志盡量準確這里沒有做修改,請大家不要找這些id的無辜玩家的麻煩)
玩家角色名字(這里是假名字)
后面那些我不太關(guān)注(因為可以通過特殊變量獲取),有服務(wù)器名,坐標,血量血量上限,藍量藍量上限,怪物還有怪物id。也許wiki上有怪物id列表,我暫時沒興趣去查
接下來我試圖講清楚這個正則,如果看不懂一定不是你們的問題。我把日志(上)與對應(yīng)的正則表達式(下)放在一起方便大家對照
先來看看前置知識點:
這行日志能通過(上文的正則)^.{14} AddCombatant 03:[^:]*?:(?<visiter>[^:]*?)(:[^:]*?){5}:0:
這行日志能通過(日志行中的一部分)AddCombatant
這行日志能通過(這有個點↘).
這行日志能通過(啥也沒有,包括空格也沒有)
好的~前置部分講完了~上面的四段橘色都可以稱為正則表達式(包括那個點和那個啥也沒有)。這里是想提醒大家正則寫的不要太隨意,否則觸發(fā)器可能會不受控制
下面正式開始:
^行首的這個我也不知道讀什么玩意的符號表示日志行的開頭。
.(↙這有個英文句號,和小數(shù)點長得一樣的那個)代表一個任意字符。
{14}表示前面的元素有14份,(這有個英文句號↘).{14}表示14個任意字符;嗷{5}表示嗷嗷嗷嗷嗷。
?(←這有個空格)代表空格。是的,空格沒什么特殊的,它和嗷沒太大的區(qū)別。
AddCombatant 03:(←這有個英文冒號)代表的就是你看到的東西。冒號也沒什么特殊的。
[^:]方括號代表的是一組規(guī)則,表示這里有一個或一組符合方括號內(nèi)規(guī)則的字符。這里的冒號依然只是冒號;^表示非;[^:]表示任意英文冒號以外的字符;[^嗷]表示任意嗷以外的字符。
*表示0個或任意多個前面的字符(順便+表示1個或多個);嗷*表示任意多個嗷;(英文句號↘).*表示任意多個任意字符;[^:]*表示任意多個不是冒號的字符。
?單獨使用的話表示0或1個,與*或+連用表示懶惰匹配(懶惰匹配可以理解為想盡辦法讓日志通過該正則的情況下匹配盡量少的字符。如嗷+會匹配喵嗷嗷嗷嗷嗷中的所有嗷,嗷+?只會匹配其中的第一個嗷,嗷*?更是懶到一個嗷都不會匹配。懶惰匹配在寫正則時還是比較實用的,建議理解清楚)
[^:]*?(前面的三個東西組合在一起)表示匹配盡量少的冒號以外的字符
:(←這有個冒號)表示匹配一個冒號
(?<visiter>[^:]*?)這個結(jié)構(gòu)不是所有能使用正則的地方都支持的用法,我的啟蒙教程稱其為捕獲組,而且是命名捕獲組。它的功能可以粗略理解為從日志行中截取一段,并且作為一個僅在該觸發(fā)器中可以使用的變量(即便是同分組的其他觸發(fā)器也不能使用)。捕獲組的另一種被稱為普通捕獲組,由于我更喜歡命名捕獲組,所以我不講普通捕獲組。雖然不講,但是我不否認普通捕獲組比較省事,而且打印更少的觸發(fā)器日志。
回過頭來看這個捕獲組(?<visiter>[^:]*?),橙色部分(即括號、第一個問號、尖括號)是命名捕獲組的固定寫法,灰色則是可以自由發(fā)揮的部分。這個捕獲組按順序從日志行中還未匹配的部分捕獲盡量少的非冒號字符,將其命名為visiter,并且供該觸發(fā)器使用。使用方法為${visiter}
(:[^:]*?){5}這個就不是捕獲組了,和捕獲組沒什么關(guān)系。它匹配5個括號里的東西,括號里則是一個冒號和盡量少的非冒號字符。它和:[^:]*?:[^:]*?:[^:]*?:[^:]*?:[^:]*?的效果是一致的
:0:(←兩個冒號夾著一個數(shù)字0)它匹配你看到的東西——兩個冒號夾著一個數(shù)字0。玩家這里是0,怪物這里則是怪物的id,我用這種方式篩選進入視野范圍的是玩家還是小怪。畢竟誰都不想在下副本期間觸發(fā)器叫個不停
上面的這些并不都是正則的基礎(chǔ)部分,也不是基礎(chǔ)的全部部分,能懂多少都沒關(guān)系。拜讀下我的啟蒙教程、在B站找一些視頻、去網(wǎng)絡(luò)上學(xué)習(xí)一下、直接掄起高級觸發(fā)器開搞都是十分可行的方法,最后我來把日志行與正則匹配的東西用不同的顏色標記出來:

[23:15:19.017] AddCombatant 03:10410CE8:龍尾輕輕搖:15:5A:0000:496:萌芽池:0:0:65728:80366:10000:10000:::-657.40:-849.27:12.04:2.53
^.{14} AddCombatant 03:[^:]*?:(?<visiter>[^:]*?)(:[^:]*?){5}:0:

日志行后面有一段黑色的字體沒有對應(yīng)的正則去匹配。沒關(guān)系,我們并不關(guān)心它,前面的部分已經(jīng)能達到我們的目的了——識別玩家(而不是怪物)進入我們監(jiān)控范圍的日志行,并且允許觸發(fā)器肆意擺弄玩家的角色名~無論你想用語音合成播放、用對話框顯示、創(chuàng)建變量供其他觸發(fā)器使用、發(fā)送到你的遠端服務(wù)器還是配合高級觸發(fā)器的特殊變量做其他的操作都可以,隨你喜歡~
現(xiàn)在我們來實踐一下,雙擊之前創(chuàng)建的觸發(fā)器in,來編輯這個觸發(fā)器:
把上方的正則表達式復(fù)制進觸發(fā)器頁面的輸入框
在觸發(fā)器動作頁簽下點擊Add action按鈕,使用默認的動作類型系統(tǒng)音效就可以,我們直接點擊添加,然后點擊保存更改。如果操作沒有問題的話現(xiàn)在每有一個人入場你的音頻設(shè)備就會發(fā)出短促的滴聲(如果沒有音響也可以把蜂鳴修改為顯示消息框,但可能會消息框太多關(guān)不過來)

提醒大家兩點:角色的模型會在角色入場后一段時間才加載出來,對于過圖很慢的玩家尤其明顯
5.變量的簡單介紹
變量是高級觸發(fā)器與普通觸發(fā)器的區(qū)別之一,GitHub上的文檔足夠詳細的介紹了變量的用法
我們可以一起打開GitHub看一下…哦Thal’s Balls,又打不開了,算了我簡單說說吧
變量分為標量變量,變量列表(一維數(shù)組),表格變量(二維數(shù)組)和特殊變量(可以理解為游戲數(shù)據(jù))。前三者都有專門的觸發(fā)器動作進行操作;特殊變量要從小隊列表對象或者世界實體對象讀取
變量能以文本或數(shù)字的方式處理:數(shù)字有包括運算和比較在內(nèi)的一系列方法,文本則是有包括正則和字符串截取的一系列方法。方法太多這里不介紹了,可以去GitHub或者我nga的啟蒙教程看看
測試沒問題后把蜂鳴前的對號去掉(不去掉或直接刪除也是沒問題的),點擊Add action按鈕。動作類型選擇變量列表操作,操作類型選擇將值推送到列表變量的末尾(其他幾個沒差太多),原變量名稱我叫它player_list,表達寫${visiter}
現(xiàn)在我們?nèi)ヒ粋€人數(shù)不太離譜的地方(舊薩雷安就不錯),然后一路保存更改

等待片刻,然后去插件主頁面右上角的選項中點擊查看變量,然后切換到列表變量頁簽,可以雙擊變量以較為詳細的方式查看,也可以進行添加編輯刪除等操作(列表中都是假名)

現(xiàn)在去只有兩三個人的地方,比如住宅區(qū)。清空一下player_list列表變量(在Triggernometry狀態(tài)那個窗口選中player_list然后點摧毀變量),然后換一下職業(yè)(比如占星換成賢者)。點一下刷新按鈕,你會發(fā)現(xiàn)你也在player_list里了。再換幾次職業(yè),你會發(fā)現(xiàn)里面有好幾個你的角色名(換職業(yè)視作又一個你來了)。
這河貍嗎?這不河貍。接下來我來介紹一點列表變量的用法,讓觸發(fā)器不重復(fù)記錄;再介紹一點特殊變量的用法,讓觸發(fā)器不記錄我們。

先搞清一件事:
捕獲組只能在某觸發(fā)器內(nèi)使用,使用方法為${捕獲組名}或$捕獲組角標數(shù)字(前文沒細講的普通捕獲組用法)
變量能在不同的觸發(fā)器中使用,使用方法為:
${var:標量變量名}
${lvar:變量列表名[序號]}
${tvar:表格變量名[列序號][行序號]}
還有個叫持久變量的東西,前面三個東西加個字母p就行,如${evar:持久變量名},類似長期存儲的變量。似乎是在創(chuàng)建變量時點一下右側(cè)的軟盤圖標就會設(shè)定為持久變量,我目前還沒用過
特殊變量與捕獲組類似,${特殊變量表達式},可用的特殊變量可以去GitHub上查看,稍后也會舉幾個栗子
詳細的請閱讀GitHub文檔~請小心,最初寫觸發(fā)器以及困迷糊的時候很容易因為忽略了捕獲組和變量的使用差異而一個問題排查半小時不知道哪寫錯了。

讓觸發(fā)器不重復(fù)記錄:
思路很簡單,執(zhí)行觸發(fā)器in前查一下變量列表,這個名字已經(jīng)插入過就不插入了:
點擊觸發(fā)器條件頁簽,勾選最上級條件組,右鍵并選擇添加,然后選擇條件。左側(cè)表達式與右側(cè)表達式用默認的字符串就好。左側(cè)表達式和右側(cè)表達式如下:
條件選擇:左側(cè)必須與右側(cè)的正則表達式匹配??赡苁沁€處于版本初期的原因,其他的條件有些存在bug(也可能是我用錯了或其他什么原因)。大家可以把表達式的類型由字符串修改為數(shù)字,并使用大于小于符號進行嘗試

我稍微拉大了窗口,方便大家查看我做了哪些修改。左側(cè)表達式的意思是返回visiter這個捕獲組代表的玩家名在變量列表player_list中的索引(索引,也就是位置,從“1”開始。這點與多數(shù)編程語言不同),如果變量列表里沒有這個visiter存儲的字符串則返回0。換言之,我們看看返回值是否為0就知道是不是已經(jīng)存過了。
現(xiàn)在可以試下是否正常動作了~清空player_list變量或者直接刪掉,然后換職業(yè)換職業(yè)換職業(yè)換職業(yè),看看列表里只有一個自己,ok~很成功

讓觸發(fā)器不記錄我們:

思路同樣很簡單,看看那個人是不是玩家自己就行惹~
_ffxivplayer是特殊變量,返回的是當(dāng)前玩家(你)的角色名稱
這個觸發(fā)器做好后發(fā)現(xiàn)有個不完善的地方,這樣寫的話萬一你的角色名比較短,而來者的名字恰巧能把你的名字包含在里面(比如你叫龍尾,來的人叫龍尾輕輕搖),那這個觸發(fā)器就不會觸發(fā)了
可以把右側(cè)表達式修改為^${_ffxivplayer}$,這樣的話就不存在上述問題了($表示一行的結(jié)尾)
現(xiàn)在可以試下是否正常動作了~清空player_list變量或者直接刪掉,然后換職業(yè)換職業(yè)換職業(yè)換職業(yè),看看列表里沒有一個自己,ok~很成功(拿前面那段話改了一個字,懶)

人要是走出我們的視野了怎么辦?我們的列表里還存著這個人呢,這似乎不合適吧?
如果你想到了這個問題,給你加十分~如果你甚至想出了解決辦法,那給你加二十分(來自漂亮龍娘的肯定)
人員離場時同樣也會打印日志。由于我們不用擔(dān)心重復(fù)刪除的問題,并且既然我們根本不會進入列表變量那么自然就不需要刪除列表變量,因此名為out的觸發(fā)器不用設(shè)置觸發(fā)器條件

比較簡單,因此我只把兩行比較長的部分放上來,其他部分參考圖片就好:
現(xiàn)在可以試試了,一切正常的話該變量列表會記錄在座各位的角色名(不過海都很容易缺少離場日志,也就是out那個,所以你會發(fā)現(xiàn)在海都掛了一下午會有上千角色名)
6.觸發(fā)器調(diào)用簡單介紹
本篇到這里是一萬字左右,領(lǐng)悟了上面這些勉強可以算入門了
那被注視時搖尾巴的日志呢?被注視沒有日志(乖巧
……但是我們有特殊變量可以顯示某個人選中目標的id!我們判斷這個id是不是我們角色的id就知道那個人有沒有在看我們了。如果之前沒在看我們,現(xiàn)在看我們了,那么我們就搖搖尾巴
我來闡述下實現(xiàn)的思路:
使用in和out維護一個人員列表
定時遍歷這個人員列表,如果列表中的某個人在看你的角色,且之前不在注視列表(記錄正在看著我們的角色名單)我們就把ta的名字添加進注釋列表中,否則無作為;定時遍歷注視列表,如果那個人沒看你,就把ta的名字從注視列表中拿出去
更換地圖時把人員列表和注視列表清了
再做個可以用游戲內(nèi)的宏關(guān)閉搖尾巴功能的小開關(guān),你也不想你的尾巴像貓貓(非貓魅族)的一樣不受控制吧
第一步已經(jīng)實現(xiàn)了,我們接下來做第二步~我們把第二部拆分為如下數(shù)個觸發(fā)器:
gazeat:傳入一個角色名,若人員列表中這個人在看你,且之前沒看你,就把ta的名字放入注視列表,同時搖搖尾巴
remove:傳入一個數(shù)字,若注視列表中這個人沒在看你,就把ta的名字從注視列表中移除
member_iterator:人員列表遍歷器,如果傳入的數(shù)字不大于人員列表長度,把人員列表中索引為該數(shù)字的角色名傳給gazeat進行調(diào)用,并且調(diào)用自身,調(diào)用自身時傳的數(shù)字加一
gazeat_iterator:注視列表遍歷器,如果傳入的數(shù)字不大于注視列表長度,把注視列表中索引為該數(shù)字的角色名傳給remove進行調(diào)用,并且調(diào)用自身,調(diào)用自身時傳的數(shù)字加一
trigger:定時器,一秒一次調(diào)用自身,不去人多地方的話甚至可以500ms調(diào)用一次。于此同時調(diào)用member_iterator和gazeat_iterator

1.gazeat的條件1是用來區(qū)分玩家和陸行鳥的,玩家和陸行鳥的日志行實在是太像了,我沒找到僅憑日志行區(qū)分的方法。_ffxiventity是個特殊變量,表示當(dāng)前區(qū)域的所有實體,job是職業(yè),陸行鳥沒有職業(yè)。如果沒人幫你做實驗?zāi)憧梢韵炔患舆@個條件,讓陸行鳥看你…
條件2的targetid就是注視實體的id了,_ffxiventity[龍尾輕輕搖]這種寫法似乎獲取不到當(dāng)前玩家id,于是稍稍麻煩了一點做了特殊處理。
動作2的系統(tǒng)消息方式即便你前臺在使用其他軟件,后臺也會發(fā)送按鍵,注意安全。122對應(yīng)的是F11,詳細的你可以在輸入122的地方看到下面有一個鏈接,點進去就是了:https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?view=windowsdesktop-6.0
2.remove沒什么要講的,測試gazeat和remove時可以使用測試輸入這個功能:
比如你想測試gazeat這個觸發(fā)器,可以使用這一行:
gazeat龍尾輕輕搖

查看下實驗結(jié)果,需要用到游戲內(nèi)特殊變量的測試請確保游戲是開著的

3.member_iterator:這個開始是真正的觸發(fā)器互相觸發(fā)的操作了,觸發(fā)器互相調(diào)用有些類似多線程編程開啟新線程一樣,所以觸發(fā)器工作的先后順序可能與預(yù)期不符,自己設(shè)計時請多做實驗,必要時及時給電腦斷電以免燒壞主板~(騙你的啦,一般最多死機,不太容易燒掉)
numeric的用法是把${index}+1算出來
觸發(fā)器調(diào)用這里放個圖:

4.gazeat_iterator:你可能注意到了,觸發(fā)器的正則和前面一個東西的開頭一樣的,都是gazeat。嗯,不影響,能跑就行(/em 心虛地偏開了頭。才不是因為懶所以沒做修改呢…)因為這兩個觸發(fā)器匹配的都不是日志行,而是匹配其他觸發(fā)器對其進行調(diào)用時的事件文本,因此不會互相干擾。
5.trigger:計劃任務(wù)選項卡憑直覺寫的,看起來工作的還不錯
穿漂亮點去海都掛一會、找親友幫忙測試、或者把判定職業(yè)的觸發(fā)器條件關(guān)掉然后把你的好CP叫出來~
主體功能已經(jīng)做完了,撒花~

接下來是第三步,換地圖時把人員列表和注視列表清了:

放上Touch my tail整組觸發(fā)器,復(fù)制下來點擊導(dǎo)入然后粘貼就能使用了。你也許想使用通用Json操作來在觸發(fā)器被觸發(fā)時給你的內(nèi)置裝備發(fā)送post請求使其通過力反饋的方式來提醒你。我試圖這樣做但是沒有找到合適的硬件,有的話希望能介紹給我
我去玩我的尾巴了,下次再見~
7.放點鏈接
我使用的是國服整合版的ACT(https://ffcafe.org/act/)。很方便,有漢化,且他們?nèi)栽趯riggernometry 高級觸發(fā)器進行維護。其他版本的高級觸發(fā)器版本存在差距但同樣可以接受。
高級觸發(fā)器GitHub更新日志:https://github.com/paissaheavyindustries/Triggernometry/wiki/Triggernometry-changelog
高級觸發(fā)器GitHub功能列表與詳細介紹:https://github.com/paissaheavyindustries/Triggernometry/wiki/Triggernometry-FAQ-and-examples
我入門的教程(不是我寫的別誤會了):https://nga.178.com/read.php?tid=20779526&rand=20
本篇文章的源碼(版本更新導(dǎo)致不可用的話后續(xù)可能會更新):https://github.com/raine01/TouchMyTail