2025/4/21 全ジョブロジック大幅変更 コピペする前に必ずバックアップしてください!

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

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

目次

ソースコード

ファイル構成

GearSwap/
  └ data/
    ├ user-globals.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()
    state.Buff['トリプルショット']  = buffactive['トリプルショット'] or false

    -- 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','NuskuShield'}
    
    -- 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_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 customize_idle_set(idleSet)
    return set_combine(idleSet,customize_weapon_set())
end

function user_customize_melee_set(meleeSet)
    return set_combine(meleeSet,customize_weapon_set())
end

function customize_weapon_set()
    if state.MainWeapons.value == 'Naegling' then
        weapon = {range=sets.Weapons.TPBonus}
    else
        weapon = {range=sets.Weapons[state.RangeWeapons.value]}
    end
    return weapon
end

装備定義

function init_weaponns()
    --デフォルト武器を設定
    send_command('gs c set MainWeapons RostamB')
    if player.sub_job == '忍' or player.sub_job == 'NIN' or player.sub_job == '踊' or player.sub_job == 'DNC' then
        send_command('gs c set SubWeapons CrepuscularKnife')
    else
        send_command('gs c set SubWeapons NuskuShield')
    end
    send_command('gs c set RangeWeapons DeathPenalty')
end
function init_gear_sets()
    lockstyleset = 111

    sets.buff['トリプルショット'] = set_combine(sets.midcast.RA,{body="CSフラック+2"})
    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.DeathPenalty           = {name="デスペナルティ"}
    sets.Weapons.Fomalhaut              = {name="フォーマルハウト"}
    sets.Weapons.TPBonus                = {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={'Weapon skill damage +2%','AGI+6','"Refresh"+2','Accuracy+9 Attack+9',}},
        hands={ name="ヘルクリアグローブ", augments={'Spell interruption rate down -6%','Attack+5','"Refresh"+2','Accuracy+8 Attack+8',}},
        legs={ name="ヘルクリアトラウザ", augments={'Pet: VIT+10','"Subtle Blow"+10','"Refresh"+2','Accuracy+8 Attack+8',}},
        feet={ name="ヘルクリアブーツ", augments={'"Mag.Atk.Bns."+17','STR+9','"Refresh"+2',}},
        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','"Store TP"+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フラック+2",
        hands="CSガントリー+3",
        legs={ name="デサルタタセッツ", augments={'"Phantom Roll" ability delay -5','Phys. dmg. taken -4%',}},
        feet="CSブーツ+2",
        neck="王将の首飾り",
        left_ring="ルザフリング",
        back={ name="ガンスリンガマント", augments={'Enmity-1','"Phantom Roll" ability delay -5',}},
    }
    
    sets.precast.FC = {
        head={ name="ヘルクリアヘルム", augments={'"Mag.Atk.Bns."+9','"Fast Cast"+6','Mag. Acc.+9',}},
        body="ドレッドジュポン",
        hands="レイライングローブ",
        legs={ name="ヘルクリアトラウザ", augments={'Mag. Acc.+16','"Fast Cast"+6','STR+10',}},
        feet={ name="ヘルクリアブーツ", augments={'"Fast Cast"+6','MND+2','Mag. Acc.+2',}},
        neck="オルンミラトルク",
        waist="コーネリアの黒帯",
        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",
        neck={ name="コモドアチャーム+2", augments={'Path: A',}},
        waist="イェマヤベルト",
        left_ring="昏黄の指輪",
        back={ name="カムラスマント", augments={'"Snapshot"+10',}},
    }

    sets.precast.WS = {
    }

    sets.precast.WS.Damage = {
        head="ニャメヘルム",
        body="LKフラック+3",
        hands="CSガントリー+3",
        legs="ニャメフランチャ",
        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 = {
        ammo=sets.Weapons.RAbulletphysics,
        head={ name="ニャメヘルム", augments={'Path: B',}},
        body="LKフラック+3",
        hands="CSガントリー+3",
        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','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="ニャメヘルム",
        body="LAフラック+3",
        hands="ニャメガントレ",
        legs="ニャメフランチャ",
        feet={ name="LAブーツ+3", augments={'Enhances "Wild Card" effect',}},
        neck={ name="コモドアチャーム+2", augments={'Path: A',}},
        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','AGI+10','Weapon skill damage +10%','Phys. dmg. taken-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の名前や武器など教えていただけると幸いです。

管理人 へ返信する コメントをキャンセル

目次