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

GearSwapカスタマイズ入門

GearSwapにどこまでの機能を持たせるかは裁量次第ではありますが、やろうと思えば他者からのアクションで着替えを行えたり、デバフを解除するアイテムを自動で使うことも可能です。

例えば、ソーティのボスが使う技に応じた弱点をログに表示させる機能を最近追加しました。これにより頭で考えることなく瞬時に対応できるようになります。

GearSwapを着替えだけのツールとしてシンプルに使うもよし。最適化されたツールとして使うもよしです。

そんな自由度の高いGearSwapをカスタマイズする方法を説明します。

目次

GearSwapの基本動作

GearSwapは次の順番で動いており、対応するファンクションが実装されていれば該当するファンクションが動く仕組みになっています。

  1. precast
    1. user_precast
    2. job_precast
    3. default_precast
    4. user_post_precast
    5. job_post_precast
    6. cleanup_precast
  2. midcast
    • user_midcast
    • job_midcast
    • default_midcast
    • user_post_midcast
    • job_post_midcast
    • cleanup_midcast

まず基準となるのが、default_precastです。ここではsets.precast.***の装備セットをメモリ上に展開します。

default_処理より前に何かの実装をしたければ、user_もしくはjob_を実装します。default_より後に何かの処理を実装したければuser_post_もしくはjob_post_で実装します。

たとえば次の定義がある場合で、天候や陣に応じて八輪の帯に着替えたい場合は、default_より後の処理で着替えロジックを作ればいいのです。default_より前に動くロジックで作ってしまうと、default_の着替えで上書きされてしまいますので、作ったロジックを活かせません。

   sets.midcast['精霊魔法'] = {
        waist="スクリミルコード",
    }

具体的な例を挙げるとすると、私が作っている共通ファイルはuser_post_***で組んでおり、各ジョブのロジックではjob_post_***にしています。

両方ともに実装がある場合は、両方のファンクションが動くことになるのですが、最終に動いたロジックで装備を決定させますので、ジョブロジックで特別な処理が必要な場合はjob_post_でロジックを組んでいます

共通ロジックに処理があり、ジョブロジックに処理を定義していない場合は共通ロジックの処理しか行われません。もちろん両方に定義がない場合は、default_に該当する装備定義が選択されます。

命名規則のルール

GearSwapで定められている命名規則は次の通りです。GearSwapで自動着替えをさせたいのなら次の命名規則に従う必要があります。

  • sets.precast
    • sets.precast.FC
    • sets.precast.JA
    • sets.precast.WS
    • sets.precast.RA
  • sets.midcast
    • sets.midcast.RA
    • sets.midcast.Pet
  • sets.idle
  • sets.resting
  • sets.engaged
  • sets.defense
  • sets.buff

命名規則には親子関係(ツリー構造)があり、子供の定義がなければ親の定義が採用されます。

私たちは、この定義の下にツリー構造で次のように装備セットを定義していきます。

sets.precast.FC = {}
sets.precast.FC['ディスペガ'] = set_combine(sets.precast.FC,{main="デイブレイクワンド",})
sets.precast.FC['インパクト'] = set_combine(sets.precast.FC,{head=empty,body="クレパスクラプリス",})
sets.precast.WS["サベッジブレード"] = {}

たとえばディスペガはデイブレイクワンドを装備していなければ詠唱できませんので、このような実装が必要になります。ディスペガの定義がない場合は親のsets.precast.FCが選択されることになりますが、デイブレイクワンドを装備していないので詠唱できません。

命名の優先度

命名規則には優先度が決められており、より具体的な定義になるほど優先度が高くなると考えてください。

ケアルの場合だとこうなります。

優先度対応する属性
1spell.namesets.precast.FC[‘ケアル’]
2spellMapsets.precast.FC.Cure
3spell.skillsets.precast.FC[‘回復魔法’]
4spell.typesets.precast.FC.Whitemagic

ケアルのFC装備を定義するだけでも、このような書き方ができてしまうのですが、どの書き方をしても正しく着替えが行われます。ただし、これらの定義が混在している場合、優先度の高い定義が採用されます。

spell.name

spell.nameで定義する場合のルールはこうです。

ケアルはWindower\res\spells.luaで次のように定義されていますので、このjaに該当する部分を使います。

    [1] = {id=1,en="Cure",ja="ケアル",cast_time=2,element=6,icon_id=86,icon_id_nq=6,levels={[3]=1,[5]=3,[7]=5,[20]=5},mp_cost=8,prefix="/magic",range=12,recast=5,recast_id=1,requirements=1,skill=33,targets=63,type="WhiteMagic"},

spellMap

spellMapで定義する場合のルールはこうです。

ケアル関連はWindower\addons\GearSwap\libs\Mote-Mappings.luaで次のように定義されていますので、ケアルの場合はCureを使います。

    ['ケアル']='Cure',['ケアルII']='Cure',['ケアルIII']='Cure',['ケアルIV']='Cure',['ケアルV']='Cure',['ケアルVI']='Cure',
    ['フルケア']='Cure',
    ['ケアルラ']='Curaga',['ケアルラII']='Curaga',['ケアルラIII']='Curaga',
    ['ケアルガ']='Curaga',['ケアルガII']='Curaga',['ケアルガIII']='Curaga',['ケアルガIV']='Curaga',['ケアルガV']='Curaga',

Cureにはケアル1~6とフルケアが含まれていますので、sets.midcast.Cureで定義すると全てのケアルをカバーできる装備セットとなるわけです。

ケアルガの場合はsets.midcast.Curagaで装備セットを定義してください。

定義内容はMote-Mappings.luaを見れば分かります。

一部の魔法は共通ファイルにカスタマイズして定義しています。

spell.skill

skillの定義名はWindower\res\skills.luaにあります。

skill名称
Divine Magic神聖魔法sets.midcast[‘神聖魔法’]
Healing Magic回復魔法sets.midcast[‘回復魔法’]
Enhancing Magic強化魔法sets.midcast[‘強化魔法’]
Enfeebling Magic弱体魔法sets.midcast[‘弱体魔法’]
Elemental Magic精霊魔法sets.midcast[‘精霊魔法’]
Dark Magic暗黒魔法sets.midcast[‘暗黒魔法’]
Summoning Magic召喚魔法sets.midcast[‘召喚魔法’]
Ninjutsu忍術sets.midcast[‘忍術]
Singing歌唱sets.midcast[‘歌唱’]
Blue Magic青魔法sets.midcast[‘青魔法’]
Geomancy風水魔法sets.midcast[‘風水魔法’]

spell.type

typeの定義名はWindower\res\spells.luaにあります。

type名称
WhiteMagic白魔法sets.midcast.WhiteMagic
BlackMagic黒魔法sets.midcast.BlackMagic
BlueMagic青魔法sets.midcast.BlueMagic
SummonerPact召喚魔法sets.midcast.SummonerPact
Geomancy風水魔法sets.midcast.Geomancy
Ninjutsu忍術sets.midcast.Ninjutsu
BardSong歌唱sets.midcast.BardSong
Trustフェイスsets.midcast.Trust

コメント

コメント一覧 (11件)

  • 初めまして、いつも更新してくださり、ありがとうございます。

    以前から参考にさせてもらうために見ていたのですが、今まで使っていたGSをやめこちらに完全移行しようかと思っています。
    直近までジョブ別にluaファイルを紹介していたと思うのですが、コメントにあったGearSwap: Lua runtime error: GearSwap/flow.lua:321: >のエラーログのページが消えた事により対処法がわからなく、困っております。
    何度かお答え頂いてると思うのですが、よければ教えていただけないでしょうか。

    • 記事を整理したかったので非表示にしている状態なのですが、コメント見られなくなった申し訳ない。。。
      各ジョブのページは追々復旧させていきます。
      取り急ぎエラーで困っているならここに貼り付けて貰って構いませんよ。

      • 早速のご返信ありがとうございます。
        GearSwap has detected an error in the user function get_sets:”C:\Program Files (x86)\Windower\addons\GearSwap\data\user-globals.lua:9: attempt to call global ‘init_weaponns’ (a nil value)
        おそらくこれだと思うのですが、誤字?していた部分をweaponsに修正しても結果は同じでした。

        • 該当ジョブの装備定義にinit_weaponnsはありますか?
          こういうやつです。
          function init_weaponns()
          — デフォルト武器を設定
          send_command(‘gs c set MainWeapons Burtgang; wait 0.3; gs c set SubWeapons Duban;’)
          end

          • あ、いえ
            装備のluaに関してはまだ書き換えておらず、今まで使っていたものになります。
            たった今ご用意頂いているSAM.luaを使って自分の装備に書き換えてGS自体をリロードしたのですが同様のエラーログが出ています。

          • 装備のLuaを参照しているので、ロジックと装備定義はセットでなければ動かないです。
            厳密に言えば共通ロジックから装備定義のinit_weaponnsを呼んでいるので、このファンクション定義がない場合エラーになります。

        • init_weaponns
          誤字ってますね・・・・今気づきました。
          これ直すと影響出る人多そうなのでこのままにしておきます・・・汗

          • あ、今気づきましたが修正したせいかもしれません。w
            無事読み込みました。ありがとうございます!

            あと草薙剣なんですが
            function init_weaponns()
            — デフォルト武器を設定
            send_command(‘gs c set MainWeapons KusanaginoTsurugi; wait 0.3; gs c set SubWeapons UtuGrip’)
            end

            gear.KusanaginoTsurugi = {name=”草薙剣”}

            これで問題ないでしょうか?

          • あとロジックファイルを修正です。
            state.MainWeapons = M{‘KusanaginoTsurugi’,’DojikiriYasutsuna’,’ShiningOne’}

          • ありがとうございます!問題なく起動できました!
            他のジョブも同じエラーが出ていると思うので修正していこうと思います。
            長々とお付き合い頂き、ありがとうございました!

コメントする

目次