スクリプト初心者です。
自分なりに色々と調べてはみたのですが、
どうしても解決できないのでお助け下さい。
実行しようとしていることは
「アクターn番の装備している武器IDを、変数kに格納する」です。
困っている部分は
「武器の非装備時にエラーでフリーズする」です。
組んだスクリプトが以下になります。
------------------------------------------------------------------------------------------------------------------------------
if ( $gameActors.actor ( $gameVariables.value( n ) ) . equips()[0] . id == null )
{
$gameVariables.setValue ( k , 0 );
} else {
$gameVariables.setValue ( k , $gameActors.actor ( $gameVariables.value( n ) ) . equips()[0] . id );
}
------------------------------------------------------------------------------------------------------------------------------
武器を装備している時は、falseの処理が正常に行われます。
しかし非装備時には "Cannot read property 'id' of null" が返ってきます。
true時の0代入は行われません。
三項演算子に変えても、1行目の "id" を "name" にしてもダメでした。
また、データ無しのことを null と呼ばないのかもと思い
" nil " " undefined " " 0 "……などと試してみましたが、いずれも同じ結果になりました。
スクリプトの組み方で間違った部分があるのでしょうか?
" null "の正しい判定名があるのでしょうか?
それとも、nullが格納された時点でスクリプトは実行されないもの(諦め案件)なのでしょうか?
何番煎じとも分からない質問で申し訳ないですが、ぜひ教えて下さい。
よろしくお願いいたします。
【解決】武器の非装備時にスクリプトを実行したい
【解決】武器の非装備時にスクリプトを実行したい
最後に編集したユーザー 戸塚 雨樋 [ 2021年1月03日(日) 11:11 ], 累計 1 回
Re: 武器の非装備時にスクリプトを実行したい
改善案(idの手前でnullなので、.idを削除)戸塚 雨樋 さんが書きました:スクリプト初心者です。
自分なりに色々と調べてはみたのですが、
どうしても解決できないのでお助け下さい。
実行しようとしていることは
「アクターn番の装備している武器IDを、変数kに格納する」です。
困っている部分は
「武器の非装備時にエラーでフリーズする」です。
組んだスクリプトが以下になります。
------------------------------------------------------------------------------------------------------------------------------
if ( $gameActors.actor ( $gameVariables.value( n ) ) . equips()[0] . id == null )
{
$gameVariables.setValue ( k , 0 );
} else {
$gameVariables.setValue ( k , $gameActors.actor ( $gameVariables.value( n ) ) . equips()[0] . id );
}
------------------------------------------------------------------------------------------------------------------------------
武器を装備している時は、falseの処理が正常に行われます。
しかし非装備時には "Cannot read property 'id' of null" が返ってきます。
true時の0代入は行われません。
三項演算子に変えても、1行目の "id" を "name" にしてもダメでした。
また、データ無しのことを null と呼ばないのかもと思い
" nil " " undefined " " 0 "……などと試してみましたが、いずれも同じ結果になりました。
スクリプトの組み方で間違った部分があるのでしょうか?
" null "の正しい判定名があるのでしょうか?
それとも、nullが格納された時点でスクリプトは実行されないもの(諦め案件)なのでしょうか?
何番煎じとも分からない質問で申し訳ないですが、ぜひ教えて下さい。
よろしくお願いいたします。
コード: 全て選択
if ($gameActors.actor($gameVariables.value(n)).equips()[0] === null) {
$gameVariables.setValue(k, 0);
} else {
$gameVariables.setValue(k, $gameActors.actor($gameVariables.value(n)).equips()[0].id);
}
どうやって調べたかと言うと、デベロッパーツール(コンソール)を使いました。
テストプレイ中にF8(またはF12)キーを押すと出てきます。
今回は結果的には後ろから削っていきましたが、前から足していって値を探ることが出来ます。
下記記事の「コンソールログの使い方」が参考になります。
https://ci-en.net/creator/6284/article/404316
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 武器の非装備時にスクリプトを実行したい
ムノクラ様、ご教授ありがとうございます。
実際に " id " を消してみたところ、たしかにtrue分岐もできました。
エラーの「'id' of null 」を「id という null値(id = null)」だと思っておりましたが
「null の id(直前の段階で既に空っぽ)」という意味だったんですね。
デベロッパーツールも今ひとつ使い方が分からなかったので、非常に参考になりました。
サイトの紹介もありがとうございます。
僕のスクリプトと同じコマンドを打ち込んでみたところ、
equips までで止めた時はちゃんと' null 'が返ってくるのに対して
id も含めるとしっかりエラーを吐いてくれました。
改めて、助けていただき本当にありがとうございました。
お陰様でまた1つ、できることが増えました。
実際に " id " を消してみたところ、たしかにtrue分岐もできました。
エラーの「'id' of null 」を「id という null値(id = null)」だと思っておりましたが
「null の id(直前の段階で既に空っぽ)」という意味だったんですね。
デベロッパーツールも今ひとつ使い方が分からなかったので、非常に参考になりました。
サイトの紹介もありがとうございます。
僕のスクリプトと同じコマンドを打ち込んでみたところ、
equips までで止めた時はちゃんと' null 'が返ってくるのに対して
id も含めるとしっかりエラーを吐いてくれました。
改めて、助けていただき本当にありがとうございました。
お陰様でまた1つ、できることが増えました。