Mote-libsはGearSwapのライブラリです。
GearSwapに付属しています。
魔法やウェポンスキル、アビリティで着替える装備を命名規則に沿ってsetsの中に設定しておくと、precastやmidcast、aftercastを記述しなくても、適切な装備を選択して着替えを行ってくれます。
また、モードの設定することで使用する装備を切り換えることが簡単にできます。
Mote-libsの存在は知っていましたが、GearSwapを使い始めた時はGearSwapがどういったものかもあまり理解できていなかったので、
まず素のGearSwapを使って、不満があればMote-libsのようなライブラリを使ってみようと思っていました。
色々なジョブでGearSwapのスクリプトを作ってみましたが、
私の使用用途では素のGearSwapでも十分でした。(FF11標準のマクロや装備セットの不足を解決する目的)
ただ、最初の方に作ったスクリプトはぐちゃぐちゃな感じがあり、GearSwapの要領はなんとなく分かったので、Mote-libsを使って少しずつ作り直してみようと思っています。
(Sel-libs"GearSwap/libs at master · Selindrile/GearSwap · GitHub"の方が高機能で主流かもしれませんが、最初はMote-libsを使用してみます。)
今回は、Mote-libsを使うにあたって、調べたことをまとめておきます。
set_language('japanese')に対応
GearSwapを日本語で使用する場合はset_language('japanese')を実行しますが、Mote-libsと併用するとうまく動作しない部分が出てきます。
まず、set_language('japanese')を実行しても動作するようにMote-libsを変更しました。
変更点
- 装備セット名に日本語が使用できるように、Mote-Mapping.luaやspell.englishとなっている部分を日本語化
- set_language('japanese')を設定することで、英語名から日本語名に換わる部分を修正(buffactiveやplayer.main_jobなど)
- Mote-Utility.luaなど英語名でハードコーディングされている部分を日本語化
本家(
GitHub - Kinematics/Mote-libs: Mote-* library files for GearSwap
)からforkして使用しています。
日本語に対応したMote-libs(jpというブランチにあります。すべての動作を確認できていないため、動かないところ、おかしいところがあるかもしれません。)
GitHub - yyoshisaur/Mote-libs at jp
日本語でできること
装備セット名に日本語が使用できる
sets.midcast['エンダークII'] = {} -- エンダークIIで使用される装備
※SellMapsのグルーピングは英語名のままにしています。
sets.midcast.Endark = {} -- エンダーク、 エンダークIIで使用される装備
バフ名に日本語が使用できる
state.Buff['ラストリゾート'] = buffactive['ラストリゾート'] or false state.Buff['ダークシール'] = buffactive['ダークシール'] or false state.Buff['ネザーヴォイド'] = buffactive['ネザーヴォイド'] or false
state.Buffはbuffactiveだけでなくprecast, aftercastで該当するアクションの実行も監視しているので、バフの有無の反映が早いです。
その他
set_language('japanese')とInclude('Mote-Include')の実行順番?
Windowerの日本語フォーラムにあった話題でset_language('japanese')をInclude('Mote-Include.lua')の前に実行すると、GearSwapが動作しなくなる問題があります。
gearswap スレその2 - 1547009802 - したらば掲示板 38番
gearswap スレその2 - 1547009802 - したらば掲示板 44番
set_language('japanese')を先に実行すると、その後のInclude('Mote-Include.lua')内でファイルのパスに日本語が入り、日本語が入ったパスを読み込んだ際に応答がなくなるので、
解決策として先にInclude('Mote-Include.lua')をすると良いようです。
今回、日本語に対応するにあたって、同じ問題が発生したので対処方法の1つを残しておきます。
原因?
ファイルのパスに日本語が入る部分は、Mote-Include.luaの
load_sidecar(player.main_job)
で、set_language('japanese')を実行している場合、player.main_jobは日本語になります。
load_sidecar()->optional_include()->gearswap.pathserch()と実行されていき、gearswap.pathserch内の
windower.dir_exists()で応答がなくなります。
windower.dir_existsやwindower.file_existsは引数のパス名に日本語が入っていると応答がなくなるようです。
例えば、windower.dir_exists('あああ')などを実行すると処理が帰ってこなくなります。windower.dir_exists('aaa')であれば、存在しない場合はfalseが帰ってきます。
対処
load_sidecar(gearswap.res.jobs[player.main_job_id].ens)
set_language('japanese')の環境でも英語名を指定するようにしました。
sidercarファイルの命名規則は、英語名なので問題はないと思います。
set_language('japanese')を先に実行しても動作するようになります。(処理的にはどちらを先に実行しても問題ないと思います。)
次回
長くなってしまたので、Mote-libsの使い方などについては次回にしたいと思います。