2025/3/26 Mote-Mappings.lua を公式のものに入れ替えました。それに伴い各種ジョブロジック見直し動作確認中。エラーが出るものがあるかもしれません。

【GearSwap】黒魔道士のMote-libs用コード

黒魔道士のMote-libsコードです。

黒魔道士はあまり力を入れてないので、本気で組んでいません。とりあえずのコードです。

目次

ソースコード

ファイル構成

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

ジョブロジック

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

function job_setup()
    include('Common.lua')

    state.Buff["魔力の泉"]       = buffactive["魔力の泉"] or false
end

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

    --gs c cycle IdleMode
    state.IdleMode:options('Normal')
    
    -- gs c cycle MainWeapons
    state.MainWeapons  = M{'BunzisRod'}

    -- gs c cycle SubWeapons
    state.SubWeapons  = M{'AmmurapiShield'}
    
    --gs c cycle MPsavings
    state.MPsavings = M(true, 'MP節約')

    include(player.name .. '/weather_obi') 
    send_command('wait 5; gs c set IdleMode Normal; gs c lockstyleset;')
end

function job_post_midcast(spell, action, spellMap, eventArgs)
    for buff,active in pairs(state.Buff) do
        if active and sets.buff[buff] then
            equip(sets.buff[buff])
        end
        if spell.skill == '精霊魔法' then
            if not state.Buff["魔力の泉"] then
                if state.MPsavings.value then
                    equip(sets.midcast['精霊魔法'].MPsavings)
                end
            end

            equip(get_hachirin(spell.element))
        end
    end
end

function job_buff_change(buff, gain)
    if buff == "マナウォール" then
        if gain then
            equip(sets.buff['マナウォール'])
            disable('feet')
        else
            enable('feet')
            if player.status == 'Idle'then 
                equip(get_idle_set()) 
            else
                equip(get_melee_set()) 
            end
        end
    end
end

function customize_idle_set(idleSet)
    local weapon = customize_weapon_set()
    idleSet = set_combine(idleSet,weapon)
    return idleSet
end

function customize_melee_set(meleeSet)
    local weapon = customize_weapon_set()
    meleeSet = set_combine(meleeSet,weapon)
    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]})
    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 BunzisRod')
    send_command('gs c set SubWeapons AmmurapiShield')
end
function init_gear_sets()
    lockstyleset = 121

    sets.buff['マナウォール']           = {feet="WCサボ+3"}

    sets.Weapons = {}
    sets.Weapons.BunzisRod             = {name="ブンジロッド"}
    sets.Weapons.AmmurapiShield        = {name="アムラピシールド"}

    sets.idle = {
        main="ブンジロッド",
        sub="アムラピシールド",
        ammo="ストンチタスラム",
        head="無の面",
        body="WCコート+3",
        hands="ニャメガントレ",
        legs="ニャメフランチャ",
        feet="ニャメソルレット",
        neck="ソーサラストール+2",
        waist="無の腰当",
        left_ear="ハーティーピアス",
        right_ear={ name="ウィッケピアス+1", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+12','Enmity-2',}},
        left_ring="守りの指輪",
        right_ring="シュネデックリング",
        back="無の外装",
    }

    sets.precast.FC = {
        ammo="サピエンスオーブ",
        head={ name="マーリンフード", augments={'"Fast Cast"+5','DEX+9','Mag. Acc.+9',}},
        body={ name="マーリンジュバ", augments={'Mag. Acc.+26','"Fast Cast"+6','MND+1',}},
        hands={ name="マーリンダスタナ", augments={'"Mag.Atk.Bns."+8','"Fast Cast"+5','CHR+6',}},
        legs={ name="サイクロスラッパ", augments={'MP+80','Mag. Acc.+15','"Fast Cast"+7',}},
        feet={ name="マーリンクラッコー", augments={'"Mag.Atk.Bns."+2','"Fast Cast"+5','AGI+6','Mag. Acc.+14',}},
        neck="オルンミラトルク",
        waist="エンブラサッシュ",
        left_ear="マリグナスピアス",
        right_ear="ロケイシャスピアス",
        left_ring="キシャールリング",
        back={ name="フィフォレケープ+1", augments={'Path: A',}},
    }
    
    sets.midcast['強化魔法']={
        sub="アムラピシールド",
        head={ name="テルキネキャップ", augments={'"Cure" potency +7%','Enh. Mag. eff. dur. +10',}},
        body={ name="テルキネシャジュブ", augments={'"Cure" potency +7%','Enh. Mag. eff. dur. +10',}},
        hands={ name="テルキネグローブ", augments={'"Cure" potency +8%','Enh. Mag. eff. dur. +10',}},
        legs={ name="テルキネブラコーニ", augments={'"Cure" potency +7%','Enh. Mag. eff. dur. +10',}},
        feet={ name="テルキネピガッシュ", augments={'"Cure" potency +8%','Enh. Mag. eff. dur. +10',}},
        neck="インカンタートルク",
        waist="エンブラサッシュ",
        right_ear="ミミルピアス",
        back={ name="フィフォレケープ+1", augments={'Path: A',}},
    }

    sets.midcast.magic_acc = {
        main="ブンジロッド",
        sub="アムラピシールド",
        ammo="ペムフレドタスラム",
        head="WCペタソス+3",
        body="WCコート+3",
        hands="WCグローブ+3",
        legs="WCショウス+3",
        feet="WCサボ+3",
        neck="無の喉輪",
        waist="無の腰当",
        left_ear="マリグナスピアス",
        right_ear="王将の耳飾り",
        left_ring="キシャールリング",
        right_ring={ name="メタモルリング+1", augments={'Path: A',}},
        back="無の外装",
    }

    sets.precast.WS.Mp={
        ammo="ガストリタスラム",
        head="WCペタソス+3",
        body="WCコート+3",
        hands="WCグローブ+3",
        legs="WCショウス+3",
        feet="WCサボ+3",
        neck={ name="ソーサラストール+2", augments={'Path: A',}},
        waist="エスカンストーン",
        left_ear="エテオレートピアス",
        right_ear="王将の耳飾り",
        left_ring={ name="メタモルリング+1", augments={'Path: A',}},
        right_ring="アルコンリング",
        back={ name="フィフォレケープ+1", augments={'Path: A',}},
    }

    sets.precast.WS['ミルキル'] = sets.precast.WS.Mp
    
    sets.precast.JA['魔力の泉'] = { body="ARコート+3"}

    --精霊弱体系
    sets.midcast.ElementalEnfeeble = set_combine(sets.midcast.magic_acc,{legs="ARトンバン+3",feet="ARサボ+3"})
    sets.midcast['弱体魔法'] = sets.midcast.magic_acc
    sets.midcast['暗黒魔法'] = sets.midcast.magic_acc

    sets.midcast['精霊魔法'] = {
        main="ブンジロッド",
        sub="アムラピシールド",
        ammo="ペムフレドタスラム",
        head="WCペタソス+3",
        body="WCコート+3",
        hands="WCグローブ+3",
        legs="WCショウス+3",
        feet="WCサボ+3",
        neck="水影の首飾り",
        waist="チャネラーストーン",
        left_ear="マリグナスピアス",
        right_ear="王将の耳飾り",
        left_ring="フレキリング",
        right_ring={ name="メタモルリング+1", augments={'Path: A',}},
        back={ name="タラナスケープ", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},    
    }

    sets.midcast['デス'] = {
        ammo="ガストリタスラム",
        head="WCペタソス+3",
        body="WCコート+3",
        hands="WCグローブ+3",
        legs="WCショウス+3",
        feet="WCサボ+3",
        neck={ name="ソーサラストール+2", augments={'Path: A',}},
        waist="闇輪の帯",
        left_ear="エテオレートピアス",
        right_ear="王将の耳飾り",
        left_ring={ name="メタモルリング+1", augments={'Path: A',}},
        right_ring="アルコンリング",
        back={ name="フィフォレケープ+1", augments={'Path: A',}},
    }
    sets.midcast.Cure={
        head={ name="ヴァニヤフード", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
        body={ name="ヴァニヤローブ", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
        hands={ name="テルキネグローブ", augments={'"Cure" potency +8%','Enh. Mag. eff. dur. +10',}},
        legs={ name="ヴァニヤスロップス", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
        feet={ name="ヴァニヤクロッグ", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
        neck="インカンタートルク",
        waist="コーネリアの黒帯",
        left_ear="メンデカントピアス",
        right_ear="エテオレートピアス",
        left_ring="スティキニリング+1",
        right_ring="レベッチェリング",
        back="ソレムニティケープ",
    }
    sets.midcast['精霊魔法'].MPsavings = {
        body="SPコート+3",
    }

end

コメント

コメント一覧 (16件)

  • 有難うございます。
    新旧ファイルを比べてみておかしい所を調べてみます
    しっかし、Mote-libs難しいですね(==;

    恐らく他のジョブもサンプルコードを改修して使った方がよさそうですね
    年末年始が終わったr本腰入れてやってみようと思います

    • デバッグというか、エラー箇所の見つけ方と直し方をまとめて記事にしておきます。
      がんばってください!

  • お手数かけます、年末で触れませんでした・・・
    ——-
    相変わらず動かないですねぇ

    八帯置き換えました
    https://xgf.nu/EjPNE 0120

    1IqUIg7NHJK2Nun1735449697_1735449746.png⇒1枚目
    eAFkIcVcSqGBWZ21735449901_1735449925.png⇒2枚目(4~5秒後)

    • エラーの原因が何かを理解して修正できるようにならなければ、Mote-libsは扱えません。

      とりあえず、エラー箇所を取り除いた最低限のコードをアップしました。
      ご自身の環境に上書きしてお使いください。
      https://xgf.nu/MRtzx
      0120

  • weather_obiはヨシザウルスさんの所のコードを丸写しして使っています
    GearSwapの下にweather_obi⇒直下です?
    そこかもしれない・・・

    今使ってるフォルダ置いておきます
    【https://xgf.nu/u2g4N】 0120

  • 稼働結果訂正⇒【 https://xgf.nu/zXf8j 】【0120】
    エラーログらしきものを追記しました

    • エラーログを見る限り、次の処理で失敗していますね。
      equip(set_combine(sets.midcast[‘精霊魔法’],get_hachirin(spell.element)))

      get_hachirinが呼び出せていない。
      インクルードはしているので、単純にGearSwapの下にweather_obiがないか、weather_obiがおかしいかのどちらかだと思います。
      GearSwapフォルダを丸々確認できれば早いのですが。

  • ご確認有難う御座いました

    Mote-libsフォルダのほうで起動はしました
    ①⇒ファイル名が間違っておりました
    ②⇒大丈夫でした

    雷天候 土曜日 砂塵の陣 を使用した所、帯効果は出ませんでした
    ストーン と サンダー で検証
    稼働結果⇒【https://xgf.nu/kCSmf】【0120】

  • 管理人様 毎度ありがとうございます
    色々やってみる前にコピペで動くか試した所

    Nocturnal SoulsにあったGearSwapサンプルコード⇒帯とかは動かず
    上のコードほぼコピー(装備以外)⇒//gs showswapsで反応せず、装備も切り替わらず
    の状態になりました

    一応使ってるコードを12/31期限でDLできるように【https://xgf.nu/RBTp1】【パス0120】にアップロードしておりますのでお手数でなければご確認いただけると幸いです

    • Mote-libsフォルダの方で確認しました。

      1.weather_obi.luaは「GearSwap\data」フォルダに設置していますか?
      2.キャラ名のフォルダを実際のキャラクターの名前に変更されてますか?
      実際のキャラクター名が「Abcde」ならキャラ名のフォルダは「Abcde」になります。

      この二点を確認して再度お試しください。

      あと、GearSwap用にあるファイルですが、次の一行があるために、Mote-libsとして起動すると思います。
      ・include(‘Mote-Include.lua’)

      この一行を消すと動かないファンクションなど出てくると思いますし、コピペのせいなのか、書いてある内容がぐちゃぐちゃになっていて、GearSwap単体でも動かせる実装にはなっていません。
      こちらのコードは使わないでください。

  • (‘◇’)ゞありがとうございます
    ジョブロジックとか装備セットの所をどの部分をさすのか勉強してから使わせて頂きたいと思います
    基本的な質問の方でもさせて頂きましたが、ジョブロジック=〇〇〇.lua 装備セット=〇〇〇_gear.luaかな?

    初心者すぎる質問で申し訳ありません( ;∀;)

    • ジョブロジック=〇〇〇.lua 装備セット=〇〇〇_gear.luaかな?
      で合っています。

      ジョブロジックは全キャラ共通の処理をまとめたものです。
      装備セットはキャラによって所持品が違うので、〇〇〇_gear.luaがキャラ毎にできあがります。

      具体的には、hogeとhugaというキャラで、コルセアをやる場合のファイル構成は次のようになります。
      GearSwap\data\COR.lua
      GearSwap\data\hoge/COR_gear.lua
      GearSwap\data\huga/COR_gear.lua

      この辺の話、整理して記事にまとめておきます。

  • 八帯からスピーディなブログ作成有難うございました

    ここやらWIKIやら参考に勉強させて頂きましたが、未だに着弾時の帯装備が(陣中含む)発動しません・・・
    どこにどう組み込むのかすらw

    BLM_gear.luaの中に sets.buff[‘砂塵の陣’] = {waist=”土輪の帯”,} と無理やり代用しても動きませんでした
    これはBLM.luaの中に砂塵の陣に関する何かが必要なのでしょうか?

    あと、Mote-libsも勉強しようと色々しらべてみましたが、初心者には難しいレベルの物しか有りませんね・・・
    もし、お手隙の時間がございましたら「サルでも解るMote-libs」とかあれば助かります

    • 今コメントに気付きました。
      できるだけわかりやすい記事用意してみます。

    • とりあえず、黒魔道士用のMote-libsコードをコピペして、ロードすれば帯装備は自動に着替えられるようになりますよ。

      帯の着替えは、【GearSwap】属性帯の自動着替えコードにあるweather_obi.luaで行っていますので、job_setup()でinclude(‘weather_obi’) して、次の処理を組めば、あとは天候に応じて自動で着替えてくれるようになっています。

      function job_post_midcast(spell, action, spellMap, eventArgs)
      if spell.skill == ‘精霊魔法’ then
      equip(set_combine(sets.midcast[‘精霊魔法’],get_hachirin(spell.element)))
      end
      end
      一度お試しください。

コメントする

目次