【解決済み】スクリプトで…

アバター
草津たぬきち
記事: 36
登録日時: 2015年12月05日(土) 14:08

Re: スクリプトで…

投稿記事by 草津たぬきち » 2017年9月25日(月) 12:16

しぐれん様
ありがとうございます。

申し訳ないです。記述する場所や順番を変えたりしながらトライ&エラーを繰り返したのですが、
どうしても「Cannot read property 'name' of null」が出てしまいます。
これはもう、私が少しずつ段階を踏みながら、コレができたから次はコレ…というふうに
作っているせいで、全体を見た最適な形で記述できていないのが原因のようなきがします。

該当するプラグインが無く、スクリプトとイベントを駆使してやるしかないと思いはじめましたが
やりたい処理の仕様を再考することも視野に入れつつ、努力は続けたいと思います。
がんばります。



まっつUP様
お返事ありがとうございます。

新規プロジェクトで原文のまま使用しました。
キャラクターに話しかけたとき、まずステート04を付与します。
スクリプトを実行し、メッセージで「\V[7]」を記入します。
ステート04を解除します。
新規プロジェクトのときデフォのハロルド服、盾、靴を装備しています。
話しかけるたびその三つのどれかのIDが表示され、該当する装備が消えていきます。
四度目に話しかけたときに前記エラーが表示されます。
はじめから何も装備していない状態で話しかけても同じエラーが出ます。
プレイヤーがゲームプレイ中に何度もステート04になり、そのたびに装備をなくして行く場合
何も装備するものがなくなっても、ステート04になる可能性があるためです。

アバター
しぐれん
記事: 972
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: スクリプトで…

投稿記事by しぐれん » 2017年9月25日(月) 13:56

「Cannot read property 'name' of null」エラーが出る場合、変数にnullが含まれるのでnullチェックが必要です。
.nameでデータを取得する前に、以下のような形でnullチェックをしてください。
変数の部分はこのパターンだと$dataArmors[]でしょうか?

コード: 全て選択

if(変数){
  変数.name;
}


nullエラーが発生している場所はF8でconsoleを開き、スタックトレースを表示すれば見られます。
**.js(line1234)のような表示があるので、そのあたりの行数を調べればできます。
私はVScodeというエディタを使っていますが、Ctrl+Gで特定の行数にジャンプできるのでこれを使って探しています。
現在、プラグイン依頼はお休み中です。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: スクリプトで…

投稿記事by まっつUP » 2017年9月25日(月) 17:44

草津たぬきち様
なるほど、それでは全ての部位に防具が装備されていない場合の処理を
追加する必要がありますね。
ここの仕様は提示されていないので、
スクリプトコマンドを書き直してとりあえずの処理を追加しておきました。
お手数ですがこれで再度お試しください。
追記:条件分岐で変数が0でない時破壊した旨の文章を表示するといいと思います。

コード: 全て選択

var actor = $gameParty.members()[0];
if(actor.isStateAffected(4)){
    var equip = actor.armors();
    var sabislot = Math.randomInt(equip.length);
    var item = equip[sabislot];
    if(item){
        actor.discardEquip(item);
        $gameVariables.setValue(7,item.name);
    }else{
        $gameVariables.setValue(7,0);
    }
}
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
草津たぬきち
記事: 36
登録日時: 2015年12月05日(土) 14:08

Re: スクリプトで…

投稿記事by 草津たぬきち » 2017年10月05日(木) 21:33

まっつUP様
ありがとうございます。

何度かテストした結果思っていた処理が出来ました。
ありがとうございました。



しぐれん様。
ありがとうございます。
あのあと別のところでnullが出たりで
自分の組み立てたスクリプトでは実現ず、
まっつUP様のスクリプトによって思っていた処理が可能となったため
一旦解決済みとさせていただきます。

ご教授くださったしぐれん様に対し大変心苦しく不甲斐ない次第ではありますが
教えていただいたスクリプトについてはいくつか今後に活用できそうです。
ありがとうございました。

“MV:質問” へ戻る