2025/11/17 記事をまとめてブログ全体を整理しました。

GearSwap入門説明書

GearSwapは、プレイヤーが起こすアクションに応じた着替えを自動で行うWindowerのアドオンです。

公式FF11でも次のコマンドで着替えを行えますが、次のメリットデメリットから最適な着替えを行うことが難しいのが現状です。

コマンドメリットデメリット
/equipラグなく着替えられるマクロ行数に制限があるため、全ての部位を最適に着替えられない
/equipset全ての部位を最適に着替えられる反映までに1秒程度のラグがある

指定した全ての部位をラグなく着替えられるのがGearSwapです。

ただし、プログラムコードを記述する必要があるため、全ての人に最適解となる訳ではありません。最強の着替えをしたければプログラムの読み書きができるようになる必要があります。

目次

Q&A

GearSwapって何ですか?

アクションに応じて自動で装備を切り替えてくれる便利なツールです。

  • 精霊魔法詠唱時には「魔攻装備」
  • 弱体魔法詠唱時には「魔命装備」
  • 殴る時は「TP装備」
  • WSには「WS装備」
GearSwapを入れたけど、何も起きません。どうして?

GearSwapは「luaファイル(装備切り替えスクリプト)」が必要です。

アドオンだけ入れても動きません。

まずは data/ フォルダにある「Sample」や他の人が公開しているファイルをコピーして使うとよいです。

luaファイルって自分で作らないといけないんですか?

最初は他人のをコピーでOKです。

自分のジョブ用に少しずつ「装備セットを書き換える」だけで十分です。

完全にゼロから作るのは慣れてからで大丈夫。

装備セットはどうやって書くの?

基本はこんな感じです

sets.engaged = {
    head="装備名",
    body="装備名",
    hands="装備名",
    legs="装備名",
    feet="装備名",
}
どのタイミングで装備が切り替わるの?

GearSwapでは大きく分けて以下のタイミングで切り替わります:

  • precast:詠唱開始前(FC装備など)
  • midcast:詠唱中(魔命装備など)
  • aftercast:詠唱後
    • engaged:戦闘中の通常攻撃
    • idle:待機中

この仕組みを理解すると一気に使いやすくなります。

ログに「error」と出て動きません

多い原因は次の2つです:

  1. 装備名のスペルミス(アイテム名は正確に書く)
  2. カッコ {} の閉じ忘れ

エラーの行番号と内容を見て修正しましょう。

難しくて作れないんですが・・・

初心者は「戦闘用」「待機用」「魔法用」くらい3パターン作るだけで十分です。

いきなり完璧にしなくてOK。

徐々に「もうちょっとこうしたい」を追加していくのがおすすめ。

GearSwapを日本語環境で使うための準備

GearSwapにはMote-libsという便利なライブラリが用意されています。

GearSwapは、装備定義に応じて自動で着替えを行うアドオンだと説明してきましたが、これは内部的にMote-libsがアクションに応じた装備定義を探して着替えを自動で行ってくれているからです。

デフォルト状態では日本語に対応していないので、Mote-libsを日本語化するための方法を説明します。

GearSwapのインストール

WindowerでGearSwapを有効にします。

有効にするとWindower\addons\GearSwap\が設置されます。

日本語バージョンのインストール

Mote-libsはいくつかのバージョンがあるのですが、よしざうるすさんが本家を日本語化してくれたバージョンがありますので、こちらからダウンロードします。

ダウンロード後、圧縮ファイルを展開し、Windower\addons\GearSwap\libsへ上書きすると日本語でMote-libsが使えるようになるのですが、念のためファイル比較ツールなどでファイルの差分を確認しておきます。

確認が面倒くさい人は、下記の差分ファイルだけを上書きしてください。

サンプルコード

私が現在使っているジョブのコードはGitHubで管理しています。ご自由にダウンロードしてお使いください。

ファイル構成

コードのメンテナンス性を考慮して、ロジックファイルと装備定義を分けて運用しています。

また、ジョブコードを可能な限りシンプルにするため、重複するコードは共通ファイルにまとめています。

ファイル構成

GearSwap/
  └ data/
    ├ user-globals.lua(共通ファイル)
    ├ ジョブ.lua(ジョブロジック)
    └ キャラクター名/
      └ ジョブ_gear.lua(装備定義)

キャラクター名フォルダはご自身のキャラクター名に書き換えてお使いください。

各種モードの使い分け 

GearSwap(Mote-libs)の各種モードについて説明します。

使いどころがよく分からないモードもありますが、分かる部分だけ便利に使えれば良いと思います。

各種モードの一覧

Mote-libsには次のモードが用意されています。

    state.OffenseMode         = M{['description'] = 'Offense Mode'}
    state.HybridMode          = M{['description'] = 'Hybrid Mode'}
    state.RangedMode          = M{['description'] = 'Ranged Mode'}
    state.WeaponskillMode     = M{['description'] = 'Weaponskill Mode'}
    state.CastingMode         = M{['description'] = 'Casting Mode'}
    state.IdleMode            = M{['description'] = 'Idle Mode'}
    state.RestingMode         = M{['description'] = 'Resting Mode'}

    state.DefenseMode         = M{['description'] = 'Defense Mode', 'None', 'Physical', 'Magical'}
    state.PhysicalDefenseMode = M{['description'] = 'Physical Defense Mode', 'PDT'}
    state.MagicalDefenseMode  = M{['description'] = 'Magical Defense Mode', 'MDT'}

    state.Kiting              = M(false, 'Kiting')
    state.SelectNPCTargets    = M(false, 'Select NPC Targets')
    state.PCTargetMode        = M{['description'] = 'PC Target Mode', 'default', 'stpt', 'stal', 'stpc'}

    state.EquipStop           = M{['description'] = 'Stop Equipping Gear', 'off', 'precast', 'midcast', 'pet_midcast'}

    state.CombatWeapon        = M{['description']='Combat Weapon', ['string']=''}
    state.CombatForm          = M{['description']='Combat Form', ['string']=''}

これらの使い方を説明します。

OffenseMode:抜刀モードの切り替え

戦闘スタイルに応じて抜刀時の装備を切り替えるために使います。

state.OffenseMode:options('Normal','Stp','Parry')
sets.engaged = {}
sets.engaged.Stp = {}
sets.engaged.Parry = {}

切り替えコマンドはマクロに仕込むか、キーバインドすると使いやすいです。

--サイクルさせる場合
gs c cycle OffenseMode

--直接指定する場合
gs c set OffenseMode Normal
gs c set OffenseMode Stp
gs c set OffenseMode Parry

IdleMode:待機モードの切り替え

被ダメカットやリフレ装備など、待機状態の装備を切り替えるために使います。

state.IdleMode:options('Normal','Refresh')
sets.idle = {}
sets.idle.Refresh = {}

切り替えコマンドはマクロに仕込むか、キーバインドすると使いやすいです。

--サイクルさせる場合
gs c cycle IdleMode

--直接指定する場合
gs c set OffenseMode Normal
gs c set OffenseMode Refresh

RangedMode:遠隔モードの切り替え

装備している遠隔武器の種類に応じて矢弾を持ち替えるモードに使えます。

state.RangedMode:options('Archery','Marksmanship')

このモードを使うためには、ある自力でプログラムを組まなければいけませんので、初心者向きのモードではありません。

銃を装備したら矢弾を自動で装備し、弓を装備したら矢を自動で装備するために次のようなコードを組んでいます。装備した遠隔武器が弓なのか銃なのかを判断し、対応する矢弾を装備するためのコードです。

function job_state_change(stateField,  newValue, oldValue)
    if stateField == 'RangeWeapons' then
        if newValue == 'Fomalhaut' then
            send_command('gs c set RangedMode Marksmanship')

        elseif newValue == 'TPBonus' then
            send_command('gs c set RangedMode Archery')
            
        elseif newValue == 'Hangaku' then
            send_command('gs c set RangedMode Archery')
        end
    end
end

function job_post_precast(spell, action, spellMap, eventArgs)
    if spell.name == '飛び道具' then
        if state.RangedMode.value == 'Archery' then
            equip({ammo = gear.ArcheryPhysics})
        elseif state.RangedMode.value == 'Marksmanship' then
            equip({ammo = gear.MarksmanshipPhysics})
        end
    end
end

手動でモードを切り替えることもできますが、私の場合はプログラムでモードを切り替えていますので、切り替えコマンドはマクロに組んでいません。

WeaponskillMode:ウェポンスキルモードの切り替え

戦術によってはモクシャを積んでWSを打つ場面がありますので、ウェポンスキルのモードを切り替えるために使います。WSの命中やダメージ用に別途装備セットを用意して切り替えるなどの使い方ができます。

state.WeaponskillMode:options('Normal', 'SubtleBlow')
--WS遠隔ダメージ
sets.precast.WS.Range = {}
sets.precast.WS.SubtleBlow = {}
sets.precast.WS["ラストスタンド"] = { Normal=sets.precast.WS.Range,
                                      SubtleBlow=set_combine(sets.precast.WS.Range,sets.precast.WS.SubtleBlow)} 

マクロに組み込んで使うと使いやすいです。

--サイクルさせる場合
gs c cycle WeaponskillMode

CastingMode:詠唱中モードの切り替え

私は使っていませんが、103%の詠唱中断装備で詠唱するか、FC装備で詠唱するかを分けて使うことができると思います。

DefenseMode:防御モードの切り替え

物理防御用のセットと魔法防御用のセットに切り替えて使うモードだと思います。

私も以前ナイトでこのモードを使っていましたが、今は盾を持ち替えた際に装備を切り替える実装をしているので現在は使っていません。

function customize_idle_set(idleSet)
    if state.SubWeapons.value == 'Duban' then
        return set_combine(idleSet,sets.idle)
    else
        return set_combine(idleSet,sets.idle.Magical)
    end
end


function customize_melee_set(meleeSet)
    if state.OffenseMode.value == 'Multi'then
        return set_combine(meleeSet,sets.engaged)
    elseif state.SubWeapons.value == 'Duban' then
        return set_combine(meleeSet,sets.engaged.Physical)
    else
        return set_combine(meleeSet,sets.engaged.Magical)
    end
end

他のモード切替と同じように使えますので、このモードを使いたい人は試してみてください。

あまり使わない・よく分からないモード

Kiting

大量の敵をかき集めるときに使うモードです。

装備定義の作り方によると思うのですが、私はあまり使わないモードです。

私の場合、抜刀装備には移動速度アップ装備を組み込んでいませんので、抜刀時の移動が遅いです。

sets.Kiting = {right_ring="シュネデックリング",}

抜刀しながら走る必要がある場合、state.Kitingでモードを切り替えると、上記装備に切り替わり抜刀状態でも移動速度アップ状態で走ることが可能になります。

たまに、敵の赤線技を避ける手法が必要な場合に使うことがありますが、ほとんど使いません。

RestingMode

私は使っていませんが、ヒーリング用の装備を切り替えるモードです。

SelectNPCTargets

どういう場面で使うのか分からないので、私は使っていません。

PCTargetMode

どういう場面で使うのか分からないので、私は使っていません。

EquipStop

私は使っていませんが、モードの切り替えで着替えをキャンセルできるのだと思います。

  • precast
  • midcast
  • pet_midcast

武器の持ち替え

上記には無いカスタムモードを作ることができます。

たぶん、state.CombatWeaponで切り替えるのが正しいのでしょうが、臨機応変に武器を持ち変えて戦う戦略が多いので、私は部分的に武器を持ち替えられるようにしています。

    state.MainWeapons           = M{'RostamA','RostamB','Naegling','Kustawi'}
    state.SubWeapons            = M{'CrepuscularKnife','NuskuShield','Tauret'}
    state.RangeWeapons          = M{'DeathPenalty','Fomalhaut'}

モードの切り替えは、マクロに組むなどしてください。

    --メイン武器のサイクル
    gs c cycle MainWeapons
    --サブ武器のサイクル
    gs c cycle SubWeapons
    --遠隔武器のサイクル
    gs c cycle RangeWeapons

    gear.RostamA                = {name="ロスタム", augments={'Path: A'}}
    gear.RostamB                = {name="ロスタム", augments={'Path: B'}}
    gear.RostamC                = {name="ロスタム", augments={'Path: C'}}
    gear.Naegling               = {name="ネイグリング"}
    gear.CrepuscularKnife       = {name="クレパスクラナイフ"}
    gear.DeathPenalty           = {name="デスペナルティ"}
    gear.Fomalhaut              = {name="フォーマルハウト"}
    gear.TPBonus                = {name="アナーキー+2"}
    gear.NuskuShield            = {name="ヌスクシールド"}
    gear.RAbulletphysics        = {name="クロノブレット"}
    gear.RAbulletMagic          = {name="ライヴブレット"}
    gear.CorsairShot            = {name="ライヴブレット"}
    gear.Kustawi                = {name="クスタウィ+1"}
    gear.Slip                   = {name="プライムガン"}

例えば、コルセアの場合ネイグリングを装備したらTPボーナスの銃を一緒に装備することになると思うので、ネイグリング用のマクロを用意しておくと便利です。

/con gs c set MainWeapons Naegling
/con gs c set TPBonus

GearSwapで使えるコマンド一覧

GearSwapで使えるコマンドの一覧です。

コマンド内容使用例
//gs cカスタムコマンドを実行する場合に使います。//gs c lockstyleset
//gs equip 装備セット定義名装備セットに着替えます。
友達に装備を見せる場合など、たまに使います
//gs equip sets.precast.FC
//gs equip naked装備中の装備をすべて外します。
ソーティのお題などで使います。
//gs debugmode着替えに失敗した場合などの調査に使います。
//gs showswaps実際に着替えた内容をログで表示させます。
//gs reloadGearSwapをリロードして、編集したないようを反映させます。
//gs export装備中の装備をファイルに出力します。GearSwapの装備セットにそのまま貼り付けられます。
//gs enable <部位>指定した部位の着替えを行うようにするフラグです。
1部位、すべての部位を指定可能です。
disableフラグを解除するために使います。
//gs enable main
//gs enable all
//gs disable <部位>指定した部位の着替えを行わないようするフラグです。
ダイバーなどで強化する部位を着替えたくない場合に使用します。
1部位、すべての部位を指定可能です。
//gs disable main
//gs disable all

GearSwap開発

GearSwapで使えるAPIはたくさんありますので、リンク先でご確認ください。

コメント

コメントする

目次