#1 狩人ではじめるGearSwap[FF11]

はじめに

装備セットの不足、マクロの限界を感じ、GearSwapを使ってみたFF11プレイヤーのメモです。
魔法、支援ジョブに比べ、操作が単純で、恩恵が得られそうな狩人でGearSwapを導入してみます。

Windowerをはじめとする外部ツールの使用は自己責任で。

GearSwapの導入

Windower上のAddonsからGearSwapをダウンロード、インストールをします。
2018年9月現在でバージョンは0.930でした。

ファイル構成

ユーザースクリプトWindower4/addons/GearSwap/dataキャラクター名_ジョブ名.luaで保存します。
例えば、キャラクター名 Hogeでジョブが狩人の時、使用するスクリプトは、Hoge_Rng.luaとなります。ファイル名に大文字、小文字の区別はありません。
hoge_rng.luaでも問題ありません。
ジョブ名はゲーム内で使用される3文字の略称を使用します。

装備のエクスポート

ユーザースクリプト内で使用する装備を記述する必要がありますが、一つ一つ記述するのは大変です。
GearSwapにはゲーム内で現在装備中の装備をファイルにエクスポートするコマンドがあります。
ゲーム内のチャットライン上で、

//gs export

と入力すると、Windower4/addons/GearSwap/data/exportにキャラクター名と日時が付いた以下のようなファイルが出力されます。

sets.exported={
    main="ペルーン+1",
    sub="ヌスクシールド",
    range="フォーマルハウト",
    ammo="クロノブレット",
    head="ORベレー+3",
    body="ORジャーキン+3",
    hands="メガナダグローブ+2",
    legs={ name="アデマケックス+1", augments={'AGI+12','Rng.Acc.+20','Rng.Atk.+20',}},
    feet="メガナダジャンボ+2",
    neck="フォシャゴルゲット",
    waist="フォシャベルト",
    left_ear="テロスピアス",
    right_ear={ name="胡蝶のイヤリング", augments={'Accuracy+4','TP Bonus +250',}},
    left_ring="王将の指輪",
    right_ring="イラブラットリング",
    back={ name="ベレナスケープ", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','AGI+10','"Store TP"+10',}},
}

狩人の場合、スナップショット装備、遠隔攻撃着弾装備、物理WS装備、魔法WS装備などをあらかじめ出力しておきます。
追記(2019/01/29)
アイテム名が日本語で出力されない場合、ユーザースクリプトset_language('japanese')を実行する必要あるかもしれません。
ユーザースクリプトが未作成のジョブでエクスポートする際は、
仮にset_language('japanese')を記述してある雛形のユーザスクリプトをロードしてからエクスポートすると日本語で出力されます。

ユーザースクリプト

GearSwapはとても自由度が高く、色々なことが出来ると思われますが、ここではGearSwapを触ってみるという趣旨でスナップショット装備から着弾装備の着替えを行なうサンプルを作ってみたいと思います。
まずはキャラクター、ジョブ毎にユーザースクリプトのファイルをWindower4/addons/GearSwap/dataに作成します。今回は狩人なので、キャラクター名_Rng.luaというファイルを作成します。(文字コードUTF-8)
ユーザースクリプトの雛形として、作成したファイルに以下のように記述します。

-- 装備セットを定義する関数
function get_sets()
    set_language('japanese')
end

-- アクション前の装備を指定する関数
function precast(spell)
end

-- アクション中の装備を指定する関数
function midcast(spell)
end

-- アクション後の装備を指定する関数
function aftercast(spell)
end

次に各関数の実装を行います。
遠隔攻撃時にスナップショット装備で攻撃を実行し、着弾装備に着替えるという動作を実装してみます。
get_sets関数に装備セットを記述します。装備セットはあらかじめエクスポートしておいたデータをコピペします。
precast関数の引数spellには、precast関数が呼び出されたときのアクションの情報が入っています。
遠隔攻撃の場合、spell.nameは"飛び道具"となるのでそれを条件にスナップショット装備に着替えます。
装備変更を行う関数はequip関数で、引数にはget_sets関数で定義した装備セットを指定します。
midcast関数も同様にspell.nameで判定し、着弾装備に着替えます。

-- 装備セットを定義する関数
function get_sets()
    set_language('japanese')
    
    sets.precast = {}
    sets.midcast = {}

    sets.precast.snap = {
        main="ペルーン+1",
        sub="ヌスクシールド",
        range="フォーマルハウト",
        ammo="クロノブレット",
        head={ name="テーオンシャポー", augments={'"Snapshot"+5','"Snapshot"+5',}},
        body="AMカバン+1",
        hands={ name="テーオングローブ", augments={'"Snapshot"+5','"Snapshot"+5',}},
        legs="ORブラッカエ+3",
        feet="メガナダジャンボ+2",
        neck="スカウトゴルゲット",
        waist="インパルスベルト",
        left_ear="テロスピアス",
        right_ear="デディションピアス",
        left_ring="王将の指輪",
        right_ring="イラブラットリング",
        back={ name="ベレナスケープ", augments={'"Snapshot"+10',}},
    }
    
    sets.midcast.ra = {
        main="ペルーン+1",
        sub="ヌスクシールド",
        range="フォーマルハウト",
        ammo="クロノブレット",
        head={ name="ARベレー+3", augments={'Enhances "Recycle" effect',}},
        body="ORジャーキン+3",
        hands={ name="アデマリスト+1", augments={'AGI+12','Rng.Acc.+20','Rng.Atk.+20',}},
        legs={ name="アデマケックス+1", augments={'AGI+12','Rng.Acc.+20','Rng.Atk.+20',}},
        feet="メガナダジャンボ+2",
        neck="イスクルゴルゲット",
        waist="イェマヤベルト",
        left_ear="テロスピアス",
        right_ear="デディションピアス",
        left_ring="王将の指輪",
        right_ring="イラブラットリング",
        back={ name="ベレナスケープ", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','AGI+10','"Store TP"+10',}},
    }
end

-- アクション前の装備を指定する関数
function precast(spell)
    if spell.name == '飛び道具' then
        equip(sets.precast.snap) -- スナップショット装備に変更
    end
end

-- アクション中の装備を指定する関数
function midcast(spell)
    if spell.name == '飛び道具' then
        equip(sets.midcast.ra) -- 着弾装備に変更
    end
end

GearSwap User Script Reference :: Windower Documentation

動作確認

ユーザースクリプトを変更した後はGearSwapをリロードして変更を有効にします。
ゲーム内のチャットライン上で

//gs reload

でリロードします。
動作確認ではゲーム内のチャットライン上で

//gs showswaps

と入力し、着替え状況をログに出力するようにして確認します。
メニューまたは

/range <t>

で遠隔攻撃を実行し、意図した通りに着替えが実行されていることを確認します。

GearSwap :: Windower Documentation

おまけ

色々なジョブで遊んでいるとワードローブも一杯になり、ジョブチェンジ毎にマイバッグに装備を出し入れしている方もいるかとおもいます。
その際、装備の出し忘れを防ぐためにGearSwapには、

//gs validate

というコマンドがあり、GearSwapで使用している装備で装備変更が可能な収納にない装備をリストアップしてくれる機能があります。

感想

GearSwapを使用する前は便利そうだけど、ユーザースクリプトを記述するのは大変そうだと思っていましたが、実際やってみるとエクスポート機能もあり割と簡単に導入することができました。
ユーザースクリプトも多少プログラミングの知識は必要ですが、複雑なことをしなければ容易に使うことができると思います。