誰でも編集に参加できるWIKIです。

追加された行はこの色です。
削除された行はこの色です。

[[Windower4]] >> React

#contents


*概略
https://github.com/SammehFFXI/FFXIAddons
次のような状況に対して自動的にアクションを取れるように設定できる。

|1. <Actor> begins casting <action>| Raniは、Xxxxxxに水遁の術:参を唱えた。|
|2. <Actor> readies <action> |Yamaは、鬼神技・天敬の構え。|
|3. <Actor> finishes casting <action>| Raniの水遁の術:参が発動。|
|4. <Actor> finishes ready >move>.| Yamaは、鬼神技・天敬を実行。|

react_<JOB>.luaファイルにジョブ毎に記述する。
直接編集するのが簡単だが、編集後にコマンドで追加すると元に戻ってしまうので//lua reload reactすること。
コマンドは使わずに直接ファイルを編集するのが一番よい。
NMの名前、特殊技、魔法名すべて英語で記述しなければならない。


*コマンド
**コマンド1:アクション定義方法
//react add <Actor> <Action> <Timing> <Reaction>
| Actor | 敵またはパーティメンバー名 | 例:"Briareus"|
| Action | 英語名称で魔法名、特殊技 | 例:"Trebuchet"、"Death"|
| Timing | ReadyまたはComplete | 2アビに対してCompleteを使うこと |
| Reaction | turnaround | 敵に背を向ける |
| ^ | facemob | 敵に対峙する |
| ^ | runto [X-yalms] | X-yalms距離を取る。指定がない場合は2yalmsでターゲットに接近する |
| ^ | runaway [X-yalms] | X-yalms距離を取る。指定がない場合は30yalmsでターゲットから離れる |
| ^ | exec Xxxx | 日本語が使えないのでスクリプトファイルで対応する |
| ^ | gs equip setx.XXXX | GearSwapの着替えが可能 |

**コマンド2:一覧表示
//react list "Actor"

**コマンド3:削除
//react remove "Actor" "Action"

**コマンド4:ログ表示
//react showcmds

**コマンド5:ヘルプ
//react help

**コマンド6:移動系
| //react stoprun | アクションでrunaway/runtoを使った際のオートラン状態を解除 |
| //react facemob | 対峙する |
| //react turnaround | 背を向ける |
| //react runaway <yalm> | 指定yalm離れる |
| //react runto <yalm> | 指定yalm近づく |

重要1: runaway/runtoを使ったあとは、普通に立ち止まることができず移動し続けるおかしな挙動をするので、必ず//react stoprunを使ってください。
重要2: runaway/runtoを使ったあとでコンソールログにエラーが出ることがあります。このエラーも//react stoprunを実行すれば起こりません。
コンソールログが全く出ないようにしたい場合は、..\windower4\scripts\init.txtにconsole_displayactivity 0を記述してください。



*サンプル

**実際にOdin戦で使っていた青魔用スクリプト
=|BOX|

["Odin"]={
["Zantetsuken"]={
["complete_reaction"]="",
["ready_reaction"]="exec react/zantetsuken"
},

["Geirrothr"]={
["complete_reaction"]="",
["ready_reaction"]="runaway 40"
},

["Gagnrath"]={
["complete_reaction"]="",
["ready_reaction"]="runaway 40"
},
},
||=

..\windower4\scripts\react\Zantetsuken.txt
=|BOX|
input /party 斬鉄剣! <call0>
||=



**神竜のブレス対策
=|BOX|
["Shinryu"]={
["Cosmic Breath"]={
["complete_reaction"]="",
["ready_reaction"]="exec react/react_Breath"
},
},
||=

..windower4\scripts\react\react_Cbreath.txt
=|BOX|
input /party コズミックブレス! <call0>
gs equip sets.breath
||=
被ダメージ装備に着替える



**Beefcake

=|BOX|
["Anissis"]={
["Prismatic Breath"]={
["complete_reaction"]="",
["ready_reaction"]="exec react/React_Breath",
},

["Breakga"]={
["complete_reaction"]="",
["ready_reaction"]="exec react/React_Breakga",
},
},
||=



**バス[D]のクゥダフ & カニ

=|BOX|
["Za'Rho Metalshell"]={
["Ore Toss"]={
["complete_reaction"]="",
["ready_reaction"]="exec react/React_OreToss",
},
},
["Bernie the Beheader"]={
["Sundering Snip"]={
["complete_reaction"]="",
["ready_reaction"]="exec react/React_OreToss",
},
},
||=

※スクリプト名は分かりやすいものに変えてください。中身はGearSwapの装備セット変更です。


**沼[S]のモルボルが使う例のやつ (Valhallaにはいないけどね)
=|BOX|
["Melancholic Moira"]={
["Extremely Bad Breath"]={
["complete_reaction"]="",
["ready_reaction"]="exec React_sudden"
}
},
||=


**シーフソロで3国裏
=|BOX|
["Gu'Dha Effigy"]={
["Death"]={
["complete_reaction"]="",
["ready_reaction"]="exec React_vfra"
}
},
["Tzee Xicu Idol"]={
["Death"]={
["complete_reaction"]="",
["ready_reaction"]="exec React_vfra"
}
},
||=


**ブリの明鏡止水は2アビなのでready_reactionではなくcomplete_reactionで止めなくてはならない。
=|BOX|
["Briareus"]={
["Colossal Slam"]={
["complete_reaction"]="",
["ready_reaction"]="exec React_sudden"
},
["Mercurial Strike"]={
["complete_reaction"]="",
["ready_reaction"]=" },
["Meikyo Shisui"]={
["complete_reaction"]="exec React_sudden",
["ready_reaction"]=""
},
["Trebuchet"]={
["complete_reaction"]="",
["ready_reaction"]="exec React_sudden"
}
},
||=


**視線判定はこんな感じで対応
=|BOX|
["Medusa"]={
["Gorgon Dance"]={
["complete_reaction"]="facemob",
["ready_reaction"]="turnaround"
},
["Calcifying Deluge"]={
["complete_reaction"]="facemob",
["ready_reaction"]="turnaround"
},
["Petrifaction"]={
["complete_reaction"]="facemob",
["ready_reaction"]="turnaround"
},
["Shadow Thrust"]={
["complete_reaction"]="facemob",
["ready_reaction"]="turnaround"
},
["Tail Slap"]={
["complete_reaction"]="facemob",
["ready_reaction"]="turnaround"
},
["Pinning Shot"]={
["complete_reaction"]="facemob",
["ready_reaction"]="turnaround"
},
},
||=

''React_vfra.txt''
=|BOX|
input /ja V.フラリッシュ <t>
||=

''React_sudden.txt''
=|BOX|
input /ma サドンランジ <t>
||=

''React_sudden2.txt'' 何が何でも止めたいときに黒魔もスタン
=|BOX|
input /ma サドンランジ <t>
send @BLM /ma スタン <t>
||=


**WSを打ったら背を向ける
D90のデュラハンはスパイクが面倒ですが、ディスペルもフィナーレもない近接物理ジョブはこうすれば何とかなるよというスクリプトです。背を向けておいてTPが溜まったらデュラハンにWSを打って、再び背を向けるという動きをします。雑魚デーモンが来たら、デーモンを殴りながらWSをデュラハンに当てるとよいでしょう。ちなみにこのサンプルは踊り子用なのでB.フラリッシュが入っています。ステップは別マクロで溜めておいてください。
D90のデュラハンはスパイクが面倒ですが、ディスペルもフィナーレもない近接物理ジョブはこうすれば何とかなるよというスクリプトです。背を向けておいてTPが溜まったらデュラハンにWSを打って、再び背を向けるという動きをします。雑魚デーモンが来たら、デーモンを殴りながらWSをデュラハンに当てるとよいでしょう。

..\windower4\scripts\TurnaroundWS.txt
=|BOX|
input /ja B.フラリッシュ <me>
wait 1

react facemob
input /ws ピリッククレオス <t>
wait 3
react turnaround
||=




*同じジョブのプレーヤーが複数いる場合にLuaファイルを別々に定義したい場合
Luaファイルは react_<Job>.luaのファイル名になっているため、複数の青魔がいる場合にサドン担当を一人だけにすることができない。
react_<PlayerName>_<Job>.luaという名前のファイルがあれば、それをロードし、なければreact_<Job>.luaを探すというロジックにすれば対応できる。


react.luaの73行目あたりを全部これに置き換えればよい。

=|BOX|
if windower.ffxi.get_player() then
self = windower.ffxi.get_player()


custom_reactions_file = files.new('react_'..self.name..'_'..self.main_job..'.lua')
if custom_reactions_file:exists() then
windower.add_to_chat(2,'React: Loading File: react_'..self.name..'_'..self.main_job..'.lua')
else
custom_reactions_file = files.new('react_'..self.main_job..'.lua')
if custom_reactions_file:exists() then
--windower.add_to_chat(2,'React: Loading File: react_'..self.main_job..'.lua')
else
--windower.add_to_chat(2,'React: New job detected, Creating file: react_'..self.main_job..'.lua')
custom_reactions = {}
custom_reactions_file:write('return ' .. T(custom_reactions):tovstring())
end
end

custom_reactions = require('react_'..self.main_job)

end
||=



*白魔のカーズナに対してカーズナ効果アップ装備に着替える
Actor: 白魔の名前
Action: "Cursna" カーズナ
Timing: Ready
Reaction: gs equip sets.Cursna

次のコマンドでアクションを追加します。このコマンドを実行するのはカーズナをもらう側のキャラです。
仮にKaworuという名前のナイトだとしたら、react_PLD.luaまたは改造済みであればreact_Kaworu_PLD.luaというファイル名にアクションが追加されます。
//react add "Ayanami" "Cursna" Ready "gs equip sets.Cursna"

=|BOX|
return {
["Ayanami"]={
["Cursna"]={
["complete_reaction"]="",
["ready_reaction"]="gs equip sets.Cursna"
}
}
}
||=

次にカーズナをもらうカヲル君のGearSwapファイル(Kaworu_PLD.lua)に次のような装備セットを記述しておきます。
=|BOX|
sets.Cursna={
neck="デビリスメダル",
left_ring="エフェドラリング",
right_ring="メネロスリング",
}
||=

Valhallaにはこんな装備はないので99キャップのサーバーの人は是非試してみてください。
さらに応用すればケアルをもらう時に被ケアル効果アップの装備に着替えることもできるし、
スニークをもらったら移動速度アップ/リジェネ/リフレ/リゲイン装備に着替えることもできます。



*移動系コマンドを使ったヒットアンドアウェイ
移動系コマンドは//react helpにも表示されない隠しコマンドだが、これを利用すると敵の範囲技を受けないように攻撃するときだけ射程範囲内に移動するといったことが可能になる。以下のサンプルは一人用だが、コルセアが2人いるなら接近>>WS>>離脱 >>> 接近>>WS>>連携>>離脱といったスクリプトを書くこともできる。

サンプルマクロ
=|BOX|
/con react runto 18
/ws ワイルドファイア <t> <wait 2>
/con react runaway 23
/con react stoprun
||=

編集にはIDが必要です

メンバー募集!