何が原因でエラーになっているのか、どうやって直せばいいのかが分からない人向けに、プログラミングの基本を解説します。
基本的に、何かしらの文法や処理エラーが一つでもあるとGearSwapは動きません。
エラーになる要因としてありがちなケースが次のものです。
- 変数名などのスペル間違い
- 括弧によるブロックの間違い
- 記述方法の間違い
- 変数にセットされている(されていない)場合の動作エラー
これらの特定方法と対処方法について説明します。
if文やforなどの制御についてはググった方が早いので、これらについての基礎知識は割愛させていただきます。
コードを丸写ししてもエラーが出る人へ
ブログに掲載している各種ジョブコードを丸写ししても、エラーが出る場合があります。
基本的に、私の環境で問題なく稼働しているコードをアップしていますので、動くはずなのですが、エラーが出る場合があります。
考えられる原因は、環境面。
特に日本語が絡むケースに多いように思えますので、私が使用しているライブラリ(\GearSwap\libs)をダウンロードできるようにしました。
エラーが出る人はこのライブラリでご自身の環境を更新してみてください。
GearSwapLib
GearSwapでエラーが出ているかどうかを確認する方法
Windowerのコンソール(インサートキーで表示非表示切り替え)にエラーの有無は表示されます。
GearSwapファイルをロードした時点でエラーがなければ正常にロードされますが、何かしらのエラーがある場合はGearSwapで着替えることができません。
正常な場合
ジョブチェンジやGearSwapファイルがロードされた際にエラーが起きなければ、上記のようなメッセージが出力されます。
エラーがある場合
何かしらのエラーがある場合、上記のようなメッセージが出力されます。
エラーが起きている原因となっている箇所はメッセージに表示されますので、この場合、該当する箇所を確認します。
今回エラーが起きている箇所は「D:\Windower\addons\GearSwap\data\THF.luaの71行目ですから、該当ファイルの71行目を見てみます。
send_command('input /lockstyleset '..lockstyleset)
lockstylesetは変数です。lockstylesetがnil(値がない)というメッセージが出ていることから、lockstylesetに値をセットしている箇所を確認しなければいけません。
Mote-libsを使っている場合は、ロジックファイルと装備定義ファイルの両方を確認する必要がありまして、今回のケースでは装備定義ファイルにlockstylesetをセットしている箇所がなかったため、起きたエラーでした。
このようにエラー箇所をコンソールに出力されているログから確認して、エラー箇所を修正していきます。
変数名を検索してどういう処理をしているのか辿っていけば原因が分かるかと思います。
nilエラーが起きているのなら、変数にセットしている箇所を探す。構文エラーなら、正しい構文で記述する。
エラーの原因は様々ですが、文法間違いやスペルミスなど考えられる原因はたくさんありますので、エラー原因を一つづつ確認して直していくしかありません。
変数などの中身を確認する方法
print()で変数の中身にセットされているデータを確認してデバッグする方法があります。
printは全角文字の出力ができませんので、日本語で確認したい場合は、windower.add_to_chat(167,変数名や定数)で確認してください。
if文で処理が正しく分岐されていることを確認したり、デバッグする場面は結構多いです。
便利なので覚えておいて損はありません。
コメント
コメント一覧 (8件)
丸写しでエラー出まくるので調べてみましたが難しいですね・・・ご教示頂ければ幸いです
尚、コルセアも同様のエラーが出たので戻していますが、ジョブロジック以外に干渉している部分が人それぞれで違うからおきるのでしょうか?
とりあえず、今回PLDですが、エラーっぽいのは2つかな?
PLDの37行目⇒FF11ライフ様のPLD.lua
local weapon = sets.weapons[state.Weapons.value]
どこかの大手?サーバの汎用サンプル品 Flow.luaの321行目にエラー
if not bool then error(‘\nGearSwap has detected an error in the user function ‘..str..’:\n’..err) end
> GearSwap: Lua runtime error: GearSwap/flow.lua:321:
> …m Files (x86) Windower/addons/GearSwap/data/PLD.lua:37: attempt to index field ‘weapons” (a
> GearSwap: Lua runtime error: GearSwap/flow.lua:321:
> …m Files (x86) Windower/addons/GearSwap/data/PLD.lua:37: attempt to index field weapons ni valu > GearSwap: Lua runtime error: GearSwap/flow.lua:321:
…m Files (x86)Windower/addons/GearSwap/data/PLD.lua:37: attempt to index field weapons a nil alu GearSwap: Lua runtime error: GearSwap/flow.lua:321:
> …m Files (x86) Windower/addons/GearSwap/data/PLD.lua:37: attempt to index field weapons > GearSwap: Lua runtime error: GearSwap/flow.lua:321:
コード丸写しでもエラーが出る場合、他の方同様に、環境面が原因の可能性があります。
装備コードの方も一応該当箇所も確認しましたが、sets.weaponsは定義してありますので、問題はないはずなんです。
なにぶん、私の環境で動いているので、何が原因か分からない状態です。
環境面の更新方法について下記記事に追記しましたので、お試しください。
GearSwapのエラー特定と修正方法について
有難うございます。帰宅次第やってみようかと思います
残りのエラーはここの管轄外のCurePleadeですね
恐らくファイルが普通に足らないだけのエラーなのでしょうが
このアドオンは導入が難しすぎる?のでご利用でしたら記事が有ると助かります
> CurePlease_addon: Lua runtime error: CurePlease addon/CurePlease_addon.lua:12: module ‘common’ not found: > no field package.preload[‘common’]
> no file ‘C:/Program Files (x86)/Windower//addons/CurePlease_addon/common.
no file ‘C:/Program Files (x86)/Windower//addons/libs/common.lua
> no file/common.dll
> no file “C:/Program Files (x86)/Windower//plugins/libs/common.dll’
プライベートサーバーで遊んでいるときに使ったことはありますが、CurePleaseは動作があまりにもBOTなので、使わない方が無難です。
導入もそれなりに難しく、設定項目も英語ばかりなので簡単に使えるものではありませんね。
>CurePlease
設定とか日本語版が有りますよ
使わない方が良さげなら削除しておきましょう
>Pld.lua
Libフォルダをコピペしてみましたが、やはりエラー吐きます
もしかするとFlow.luaを修正しないとだめかも?
一応現行版作成しました
https://xgf.nu/jBVru 0120
PLDファイル確認しました。
エラーの原因ですが、PLD_gearにsets.weaponsの定義がありません。
https://greeds.net/gearswap-motelibs-pld/ の装備セットからコピペし直してください。
また、Flow.luaはGearSwapのシステムファイルですから、ユーザーが変更する場所ではありませんし、GearSwapのアップデートがあると変更が消える可能性があります。
あと、CurePleaseについて私、どこかで触れましたかね?
どこからキュアプリの話が出てきているのか分からないので、教えていただけますか?
>PLD
有難うございます。 後程試してみます
>キュアプリの話
エラーで出てきたので【管轄外の】と前置きさせて頂きました。
エラーをつぶせなかったのと、挙動が完全BOTというお話なので削除致しました、お騒がせして申し訳ありません
>PLD
動きました(今の所)
ロイエはつかわないかなーと解らず削除したのがダメでした
同じように他のジョブも行数変えずにいらないところは全部コピペしなおして 〇〇〇{} にした所 正常に動きました。
有難うございます