2025/4/4 全体的に使い方などの説明ページを近日中に用意する予定です

【GearSwap】コルセアのMote-libs用コード

コルセアのMote-libsコードです。

ソースコード

ファイル構成

GearSwap/
  └ data/
    ├ Common.lua(共通ファイル
    ├ COR.lua(ジョブロジック)
    └ キャラクター名/
      ├ weather_obi.lua(属性帯
      └ COR_gear.lua(装備定義)

ジョブロジック

function get_sets()
    mote_include_version = 2
    include('Mote-Include.lua')
    set_language('japanese')
end

function job_setup()
    Initialize()
    state.Buff['睡眠']              = buffactive['睡眠'] or false
    state.Buff['トリプルショット']  = buffactive['トリプルショット'] or false
end

function user_setup()
    -- gs c cycle Kiting
    state.Kiting        = M(false, 'Kiting')

    -- gs c cycle MainWeapons
    state.MainWeapons   = M{'RostamA','RostamB','Naegling'}

    -- gs c cycle SubWeapons
    state.SubWeapons    = M{'CrepuscularKnife','GletisKnife'}
    
     -- gs c cycle RangeWeapons
     state.RangeWeapons  = M{'DeathPenalty','Fomalhaut'}

     -- gs c cycle OffenseMode
    state.OffenseMode:options('Normal')

    -- gs c cycle IdleMode
    state.IdleMode:options('Normal','Refresh')
end

function job_pretarget(spell, action, spellMap, eventArgs)
    if spell.type == 'CorsairRoll' then
        display_roll_info(spell)
    end
end

function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.action_type == 'Ranged Attack' then
        for buff,active in pairs(state.Buff) do
            if active and sets.buff[buff] then
                equip(sets.buff[buff])
            end
        end
    elseif spell.name == 'レデンサリュート' then
        equip(get_hachirin(spell.element))
    end
end

function job_buff_change(buff, gain)
    if state.Buff['睡眠'] then
        equip({range=sets.Weapons.Slip})
    end
end

function customize_idle_set(idleSet)
    local weapon = customize_weapon_set()
    idleSet = set_combine(idleSet,weapon)
    if(player.sub_job ~= '忍' and player.sub_job ~= '踊') then
        idleSet = set_combine(idleSet, set_combine(weapon,{sub=sets.Weapons.NuskuShield}))
    end
    return idleSet
end

function customize_melee_set(meleeSet)
    local weapon = customize_weapon_set()
    if(player.sub_job == '忍') then
        --二刀流装備 係数11
        meleeSet = set_combine(set_combine(meleeSet,sets.engaged.dual11), weapon)
    elseif(player.sub_job == '踊') then
        --二刀流装備 係数21
        meleeSet = set_combine(set_combine(meleeSet,sets.engaged.dual21), weapon)
    else
        --一刀流装備
        meleeSet = set_combine(meleeSet, set_combine(weapon,{sub=sets.Weapons.NuskuShield}))
    end
    return meleeSet
end

function customize_weapon_set()
    --武器のセット
    local weapon = nil
    weapon = set_combine(weapon,{main=sets.Weapons[state.MainWeapons.value]})
    weapon = set_combine(weapon,{sub=sets.Weapons[state.SubWeapons.value]})
    weapon = set_combine(weapon,{range=sets.Weapons[state.RangeWeapons.value]})
    if state.MainWeapons.value == 'Naegling' then
        weapon = set_combine(weapon,{range=sets.Weapons.Ataktos})
    end
    return weapon
end

function job_self_command(cmdParams, eventArgs)
    if cmdParams[1] == 'lockstyleset' then
        send_command('input /lockstyleset '..lockstyleset)
        
    elseif cmdParams[1] == 'Idle' then
        Idle()

    elseif cmdParams[1] == 'Medicine' then
        Medicine()
    end
end

装備定義

function init_weaponns()
    --デフォルト武器を設定
    send_command('gs c set MainWeapons RostamA')
    send_command('gs c set SubWeapons GletisKnife')
    send_command('gs c set RangeWeapons Fomalhaut')
end
function init_gear_sets()
    lockstyleset = 111

    sets.buff['トリプルショット'] = set_combine(sets.midcast.RA,{body="CSフラック+3"})
    sets.Weapons = {}
    sets.Weapons.RostamA                = {name="ロスタム", augments={'Path: A'}}
    sets.Weapons.RostamB                = {name="ロスタム", augments={'Path: B'}}
    sets.Weapons.RostamC                = {name="ロスタム", augments={'Path: C'}}
    sets.Weapons.Naegling               = {name="ネイグリング"}
    sets.Weapons.CrepuscularKnife       = {name="クレパスクラナイフ"}
    sets.Weapons.GletisKnife            = {name="グレティナイフ"}
    sets.Weapons.DeathPenalty           = {name="デスペナルティ"}
    sets.Weapons.Fomalhaut              = {name="フォーマルハウト"}
    sets.Weapons.Ataktos                = {name="アナーキー+2"}
    sets.Weapons.NuskuShield            = {name="ヌスクシールド"}
    sets.Weapons.RAbulletphysics        = {name="クロノブレット"}--{name="クロノブレット"}
    sets.Weapons.RAbulletMagic          = {name="クロノブレット"}--{name="ライヴブレット"}
    sets.Weapons.CorsairShot            = {name="アニミキーブレット"}
    sets.Weapons.Slip                   = {name="アープ"}

    sets.idle = {
        ammo=sets.Weapons.RAbulletphysics,
        head="無の面",
        body="アダマンアーマー",
        hands="ニャメガントレ",
        legs="ニャメフランチャ",
        feet="ニャメソルレット",
        neck="無の喉輪",
        waist="無の腰当",
        left_ear="エアバニピアス",
        right_ear="ハーティーピアス",
        left_ring="ピュリティーリング",
        right_ring="シュネデックリング",
        back="無の外装",
    }

    sets.idle.Refresh = set_combine(sets.idle,{
        head={ name="ヘルクリアヘルム", augments={'Accuracy+24','INT+5','"Refresh"+2',}},
        body={ name="ヘルクリアベスト", augments={'Pet: Haste+1','"Mag.Atk.Bns."+16','"Refresh"+2',}},
        hands={ name="ヘルクリアグローブ", augments={'Mag. Acc.+4','Crit. hit damage +1%','"Refresh"+1','Accuracy+19 Attack+19','Mag. Acc.+17 "Mag.Atk.Bns."+17',}},
        neck="シビルスカーフ",
    })

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

    sets.engaged = {
        head="マリグナスシャポー",
        body="マリグナスタバード",
        hands="マリグナスグローブ",
        legs="CSトルーズ+3",
        feet="マリグナスブーツ",
        neck="無の喉輪",
        waist={ name="セールフィベルト+1", augments={'Path: A',}},
        left_ear="昏黄の耳飾り",
        right_ear="テロスピアス",
        left_ring="シーリチリング+1",
        right_ring="シーリチリング+1",
        back={ name="カムラスマント", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
    }
    sets.engaged.dual11= {waist="霊亀腰帯",left_ear="エアバニピアス",}
    sets.engaged.dual21= set_combine(sets.engaged.dual11,{back={ name="カムラスマント", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dual Wield"+10','Phys. dmg. taken-10%',}},})

    sets.precast.JA["ランダムディール"] = {body={ name="LAフラック+3", augments={'Enhances "Loaded Deck" effect',}},}
    sets.precast.JA["フォールド"]       = {hands={ name="LAガントリー+3", augments={'Enhances "Fold" effect',}},}
    sets.precast.JA["スネークアイ"]     = {legs={ name="LAトルーズ+3", augments={'Enhances "Snake Eye" effect',}},}
    sets.precast.JA["ワイルドカード"]   = {feet={ name="LAブーツ+3", augments={'Enhances "Wild Card" effect',}},}

    sets.precast.CorsairRoll = {
        main={name="ロスタム", augments={'Path: C',}},
        range={ name="コンペンセーター", augments={'DMG:+15','Rng.Atk.+15','"Mag.Atk.Bns."+15',}},
        head={ name="LAトリコルヌ+3", augments={'Enhances "Winning Streak" effect',}},
        body="CSフラック+3",
        hands="CSガントリー+3",
        Legs="デサルタタセッツ",
        feet="CSブーツ+2",
        neck="王将の首飾り",
        left_ring="ルザフリング", 
        back="ガンスリンガマント"
    }
 
    sets.precast.FC = {
        range={ name="ドゥームズデイ", augments={'"Fast Cast"+4',}},
        head={ name="ヘルクリアヘルム", augments={'"Fast Cast"+5',}},
        body="ドレッドジュポン",
        hands={ name="レイライングローブ", augments={'Accuracy+12','Mag. Acc.+14','"Mag.Atk.Bns."+15','"Fast Cast"+2',}},
        legs={ name="ヘルクリアトラウザ", augments={'"Fast Cast"+6','Mag. Acc.+3','"Mag.Atk.Bns."+9',}},
        feet={ name="ヘルクリアブーツ", augments={'"Fast Cast"+6','Mag. Acc.+12',}},
        neck="オルンミラトルク",
        left_ear="ロケイシャスピアス",
        right_ear="エンチャンピアス+1",
        left_ring="キシャールリング",
        right_ring="メダダリング",
    }

    sets.precast.RA = {
        ammo=sets.Weapons.RAbulletphysics,
        head={ name="テーオンシャポー", augments={'"Snapshot"+5','"Snapshot"+5',}},
        body="LKフラック+3",
        hands={ name="LAガントリー+3", augments={'Enhances "Fold" effect',}},
        legs="LKトルーズ+3",
        feet="メガナダジャンボ+2",
        waist="イェマヤベルト",
        left_ring="昏黄の指輪",
        back={ name="カムラスマント", augments={'"Snapshot"+10',}},
    }

    sets.precast.WS = {
    }

    sets.precast.WS.Damage = {
        head={ name="ニャメヘルム", augments={'Path: B',}},
        body="LKフラック+3",
        hands="CSガントリー+3",
        legs={ name="ニャメフランチャ", augments={'Path: B',}},
        feet={ name="LAブーツ+3", augments={'Enhances "Wild Card" effect',}},
        neck="共和プラチナ章",
        waist={ name="セールフィベルト+1", augments={'Path: A',}},
        left_ear={ name="胡蝶のイヤリング", augments={'Accuracy+4','TP Bonus +250',}},
        right_ear="テロスピアス",
        left_ring="エポナリング",
        right_ring="王将の指輪",
        back={ name="カムラスマント", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}},
    }

    sets.precast.WS.Range = {
        head={ name="ニャメヘルム", augments={'Path: B',}},
        body="LKフラック+3",
        hands="CSガントリー+3",
        legs="CSトルーズ+3",
        feet={ name="LAブーツ+3", augments={'Enhances "Wild Card" effect',}},
        neck="イスクルゴルゲット",
        waist="フォシャベルト",
        left_ear={ name="胡蝶のイヤリング", augments={'Accuracy+4','TP Bonus +250',}},
        right_ear="テロスピアス",
        left_ring="ディンジルリング",
        right_ring="王将の指輪",
        back={ name="カムラスマント", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','AGI+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}},    
    }

    sets.precast.WS.Magic = {
        ammo=sets.Weapons.RAbulletMagic,
        head={ name="ニャメヘルム", augments={'Path: B',}},
        body={ name="LAフラック+3", augments={'Enhances "Loaded Deck" effect',}},
        hands="ニャメガントレ",
        legs="ニャメフランチャ",
        feet={ name="LAブーツ+3", augments={'Enhances "Wild Card" effect',}},
        neck="サンクトネックレス",
        waist="エスカンストーン",
        left_ear={ name="胡蝶のイヤリング", augments={'Accuracy+4','TP Bonus +250',}},
        right_ear="フリオミシピアス",
        left_ring="ディンジルリング",
        right_ring="メダダリング",
        back={ name="カムラスマント", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','Weapon skill damage +10%',}},
    }

    -- 射撃WS
    sets.precast.WS["ラストスタンド"]           = sets.precast.WS.Range
    sets.precast.WS["ワイルドファイア"]         = sets.precast.WS.Magic
    sets.precast.WS["レデンサリュート"]         = set_combine(sets.precast.WS.Magic,{head="妖蟲の髪飾り+1",right_ring="アルコンリング",})

    -- 片手剣WS
    sets.precast.WS['シャインブレード']         = sets.precast.WS.Magic
    sets.precast.WS["サークルブレード"]         = sets.precast.WS.Damage
    sets.precast.WS["サベッジブレード"]         = sets.precast.WS.Damage

    -- 短剣WS
    sets.precast.WS["ガストスラッシュ"]         = set_combine(sets.precast.WS.Magic,{ammo=sets.Weapons.CorsairShot})
    sets.precast.WS["サイクロン"]               = set_combine(sets.precast.WS.Magic,{ammo=sets.Weapons.CorsairShot})
    sets.precast.WS["イオリアンエッジ"]         = set_combine(sets.precast.WS.Magic,{ammo=sets.Weapons.CorsairShot})

    sets.precast.CorsairShot = {
        head={ name="ニャメヘルム", augments={'Path: B',}},
        body={ name="LAフラック+3", augments={'Enhances "Loaded Deck" effect',}},
        hands="CSガントリー+3",
        legs={ name="ニャメフランチャ", augments={'Path: B',}},
        feet="CSブーツ+2",
        neck="無の喉輪",
        waist="無の腰当",
        left_ear="昏黄の耳飾り",
        right_ear="フリオミシピアス",
        left_ring="ディンジルリング",
        right_ring="メダダリング",
        back="無の外装",
    }

    sets.midcast.RA = {
        head="マリグナスシャポー",
        body="マリグナスタバード",
        hands="マリグナスグローブ",
        legs="CSトルーズ+3",
        feet="マリグナスブーツ",
        neck="イスクルゴルゲット",
        waist="イェマヤベルト",
        left_ear="昏黄の耳飾り",
        right_ear="テロスピアス",
        left_ring="シーリチリング+1",
        right_ring="シーリチリング+1",
        back={ name="カムラスマント", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','Rng.Acc.+10','"Store TP"+10',}},
    }
    
    sets.midcast.CorsairShot = {
        ammo=sets.Weapons.CorsairShot
    }
end

コメント

コメント一覧 (26件)

  • お世話になっております 情報提供です

    101 [“ドラケンロール”] = {lucky=3, unlucky=7, bonus=”ペット命中・飛命”}
    誤 ラッキー3 アンラッキー7
    正 ラッキー4 アンラッキー8

    ソース
    https://wiki.ffo.jp/html/6062.html

  • 解決しました
    よしざうるすさんのMote-libs at jpを入れてたところコード丸写しでもて正常に動くようになりました
    大変お騒がせしました、とても分かりやすいブログで参考になるのでこれからも頑張って下さい

    • こんにちは。
      よしざうるすさんのMote-libs at jpですか。
      あまりにも自然に溶け込んでいたので、自分で設置したことすら忘れていました。
      どこかに書き留めておきます。ありがとうございました!

  • 早速ですがご報告を
    ロジックの方をシンプルに state.WeaponskillMode:options(‘Normal’) にして
    sets.Weapons = {} を消して sets.precast.WS = {} に装備を入れたところ
    やっとWSのprecastがでました ここから少しずつやっていきます

    • お、なにやら難しそうな感じになってきましたね。。。
      こちらでもそのモードについて調べて整理しておきます。
      がんばってください!

  • 長時間ありがとうございました、進展があったら報告させていただきます

  • ダメでした・・・そうなんですよねWSだけていうのが謎で・・・いろいろ試してみます

    • ちなみに、他のジョブとかではどうですか?
      お力になれず申し訳ない。
      原因追及がんばってください!

  • WS名出力されますが相変わらず着替えだけしないですね
    gs showswaps でWS打つと本来ならprecastのログでますよね?

    • precastのログでますね。
      遠隔攻撃とか他の処理でもログでてると思います。

      ちょっと試験的に、sets.precast.WS.Damageからsets.precast.WS[“エクゼンテレター”] = sets.precast.WS.Damageまでの行を消して
      sets.precast.WS = {}に適当なWS装備をセットして試してみてください。

    • FCやスナップ装備に着替えているprecastログが確認できているのなら、WS関連の部分がちゃんと動いていない可能性があるんですが、それが原因不明。

      さらにこちらの環境では動いていることからして、コードが問題ではないのかもしれない?
      例えばファイルの文字コードがUTF-8になっていないとか。でも、他の処理で着替えているのならそういう可能性もなさそうだし。
      コピペによって変な文字コードが入っているとか。

      できることとしたら、WS関連の着替えを簡単にして動作確認して原因探るしかないですね・・・

    • ロジックファイルのjob_precastにデバッグを仕込んでみてください。
      このコードで書き換えてOKです。
      WS打つときにWS名が出力されるか確認です。

      function job_precast(spell, action, spellMap, eventArgs)
      windower.add_to_chat(2, spell.name)

      if spell.type == ‘CorsairShot’ then
      equip({ammo=sets.Weapons.CorsairShot})
      end
      end

  • 書き換えて色々試しましたがダメでした
    ロジックの方はまったく変えてないんですが、そっちは変更する必要ないですよね?
    sets.Weapons = {}
    sets.Weapons.Fomalhaut = {name=”フォーマルハウト”}
    sets.Weapons.TPBonus = {name=”アナーキー+2″}
    sets.Weapons.NuskuShield = {name=”ヌスクシールド”}
    sets.Weapons.RAbullet = {name=”クロノブレット”}
    sets.Weapons.Rostam = {main={ name=”クスタウィ+1″, augments={‘Path: A’,}}, sub={name=”グレティナイフ”}, range=sets.Weapons.Fomalhaut, ammo=sets.Weapons.RAbullet}
    sets.Weapons.Naegling = {main={ name=”ネイグリング”}, sub={name=”グレティナイフ”}, range=sets.Weapons.TPBonus, ammo=sets.Weapons.RAbullet}
    sets.Weapons.CorsairShot = {name=”アニミキーブレット”}

    • ロジックの方は変更しなくても大丈夫です。
      うーん、なんだろう原因が分からないですね。

      他の処理はちゃんと動いているんですよね?
      Windowerコンソールにエラーとか出てませんよね?

      遠隔攻撃の時に、スナップ(precast)→着弾(midcast)で想定した着替えが行われているか。
      gs showswapsで一度確認して貰えますか?

  • Weaponsの方でしたか失礼しました
    そこの定義が違うと動かない事があるんですね、そこが原因かもしれません。
    そこを修正してみます

  • とりあえずMagicの所だけ変更してやってたので

    sets.precast.WS.Magic = {
    head={ name=”ヘルクリアヘルム”, augments={‘”Mag.Atk.Bns.”+25′,’Pet: Mag. Acc.+23′,’Accuracy+1 Attack+1′,’Mag. Acc.+15 “Mag.Atk.Bns.”+15’,}},
    body={ name=”LAフラック+3”, augments={‘Enhances “Loaded Deck” effect’,}},
    hands=”CSガントリー+3″,
    legs={ name=”ヘルクリアトラウザ”, augments={‘STR+3′,'”Mag.Atk.Bns.”+25′,’Accuracy+15 Attack+15′,’Mag. Acc.+16 “Mag.Atk.Bns.”+16’,}},
    feet={ name=”LAブーツ+3”, augments={‘Enhances “Wild Card” effect’,}},
    neck=”サンクトネックレス”,
    waist=”オルペウスサッシュ”,
    left_ear=”フリオミシピアス”,
    right_ear={ name=”胡蝶のイヤリング”, augments={‘Accuracy+4′,’TP Bonus +250’,}},
    left_ring=”ディンジルリング”,
    right_ring=”エパミノダスリング”,
    back={ name=”カムラスマント”, augments={‘AGI+20′,’Mag. Acc+20 /Mag. Dmg.+20′,’AGI+10′,’Weapon skill damage +10%’,’Phys. dmg. taken-10%’,}},
    }

    • デフォルトでRostamの定義を選択するようになっているので、次の定義と異なる場合、動かない可能性があります。
      sets.Weapons.Rostam = {main={ name=”ロスタム”, augments={‘Path: A’,}}, sub={name=”グレティナイフ”}, range=sets.Weapons.Fomalhaut, ammo=sets.Weapons.RAbullet}

      なので、sets.Weapons.Rostamに該当する部分を確認するために、sets.Weapons = {}で武器の定義を確認したかったのです。

      COR_gear全部貼り付けても構わないので、もう一度お願いできますか?

    • COR_gearのsets.Weapons = {}に関連する部分(装備)をここにコピペして貰えますか?

  • 早速のご返答ありがとうございます。
    更新してみましたがやはりWSの時のprecastだけ動きません。
    WSだけていうのが謎なんですよね、どのWSでもダメでした。
    //gs showswaps でログ出るようにしてるのですが着替えてないようです。

    • たまにGearSwapの不具合で着替えを行わないときがあるので、いちど次のコマンドでGearSwapをリロードしてみてください。
      /lua r gearswap

  • 初めまして、突然の書き込み失礼します。
    Mote-libsを調べていたらこちらにたどり着き、とても参考になりました。
    公開のソースコードを参考に自分で組んだらWSのprecastだけが動かず、試しに公開されてるコードを丸写しでやってみましたが、それでもWSのprecastだけが動きませんでした。
    こちらのコードで問題なく動いていますでしょうか? ご回答頂けると幸いです。

    • 初めまして。
      動いているコードをブログにコピペしているので動くと思いますが、念のため先ほど最新のコードで更新しました。

      ご自身の環境に応じた装備に書き換えて一度確認していただけますか?

      発動しないWSの名前や武器など教えていただけると幸いです。

takahashikazuo へ返信する コメントをキャンセル