【解決済み】動作テスト時たまにでるエラーについて

ねこちゃ
記事: 6
登録日時: 2018年9月12日(水) 10:40

【解決済み】動作テスト時たまにでるエラーについて

投稿記事by ねこちゃ » 2018年9月12日(水) 11:37

ツクールMVを買って2週間ほどになります
Javaのことまだまだ全然わかっていませんがアクションRPGを制作しております
今までのトラブルは検索したり先人の知恵により解決(ここの書き込みやブログ等)してきましたが、
ここ最近発見したエラーがどうにも直せず3日間ほど頭を悩ませております
状況としましては
トリアコンタンさんのテンプレートイベントプラグイン及びイベント動的生産プラグインを使い
フィールド上に敵イベントをランダムにポップさせています
敵はまっつUPさんのEvenntEnemiesにて敵データベースを参照しダメージを与え倒します
テスト時にはじめからプレイを始めフィールドのモンスターを狩っているとしばらくしてから
Cannot read property 'damage' of undefinedというエラーがでて動作がとまります
エラーの情報やプラグインの中を見て考えたりほかのプラグインの動作を消したりして
試行錯誤しているのですが、Javaがわからずどうしても治せません
ツクールMVはSTEAMからのインストールで1.6.1です
動作検証の為なるべくプラグインは消しているのですがいろいろ組み合わせてしまっているので、
最低限必要なものを残した状態で確認しております
関係のありそうなプラグインは以下の通りです
わかる方いませんか?
必要な情報があれば追記します
知恵のある方どうか助けてくださいお願いします

使用プラグイン
トリアコンタンさん
 TemplateEvent.js 1.8.0
 EventReSpawn.js 1.8.2
 CharacterPopupDamage.js 1.5.1
 HalfMove.js 1.12.0
 FloatVariables.js 1.1.0
まっつUPさん
 EventEnemies.js 1.02
添付ファイル
新しいビットマップ イメージ3.jpg
新しいビットマップ イメージ2.jpg
新しいビットマップ イメージ.jpg
最後に編集したユーザー ねこちゃ on 2018年9月15日(土) 00:09 [ 編集 1 回目 ]

アバター
まっつUP
記事: 946
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 動作テスト時たまにでるエラーについて

投稿記事by まっつUP » 2018年9月12日(水) 20:36

ねこちゃ様
お世話になります。
拙作のプラグインのご利用ありがとうございます。

エラーの現象ですが、EvenntEnemies.jsのみの導入では再現できるものではないということですか?
EvenntEnemies.jsですが、トリアコンタン様のそれらのプラグインとの同時使用は
想定しておりませんので、競合の場合は対応は難しいと思われます。
(エラーはプラグインコマンド実行の際にマップイベントを取得できていないというものですが
 拙作のものはともかく他プラグインのパラメータやエディタでの実行内容で再現方法が変わると思うため
 エラーの再現が難しい状況です。)
RPGで笑顔を・・・

拙作「Dragon Claw」
http://www.freem.ne.jp/win/game/12816

↑の続編「Dragon Claw Blast」←NEW!!
https://www.freem.ne.jp/win/game/15676

昨日初めてcodeタグの設定を知った男のツイッター
https://twitter.com/mattuup
ねこちゃ
記事: 6
登録日時: 2018年9月12日(水) 10:40

Re: 動作テスト時たまにでるエラーについて

投稿記事by ねこちゃ » 2018年9月12日(水) 22:16

お世話になっております他にもプラグイン等使わせてもらっています
返信ありがとうございます!

おっしゃる通りいくつかのプラグイン同時使用時現象がでるのです
早いときはマップ移動してからすぐの時もありましたが
約五分前後無作為に敵を倒し続けるとエラーがでることがあります
(エラーはプラグイン削除しなら試行錯誤して30回位は確認しております)
フィールド上に敵自体は固定で出しておらずMMORPGのように敵を地域ごとにランダムに出現するようにするために
トリアコンタンさんのプラグインを併用しております
試行数が足りないだけかもしれませんがプラグイン単体での動作は今の所問題はでませんでした
(トリアコンタンさんのプラグインを使わず敵イベントを直接配置)
自分の求める動作を得るために複数のプラグインを使っております
プラグインが競合しているのかもしれませんが、
Javaやスクリプトの理解度が低いので自分のイベント記述ミスも大いにあると思い1から見直している最中であります

ちなみにダメージの出し方は
変数操作 0041 ダメージ計算値 = 
Math.max(($gameActors.actor(1).param(2) * 4 - this.character(0).param(3) * 2) * $gameVariables.value(5) / 1000,1);
(変数5には攻撃力補正値100などが入ってます)
このあとスクリプトで
this.character(0).damage($gameVariables.value(41));
としております
なにかお気づきになられましたら返信していただければ幸いです

それと別の質問になるのですが
プラグインコマンドEE dropにて敵イベントを倒したときにアイテムを入手するようにしているのですが
三個設定されているアイテムをそれぞれ三つ入手した時入手したアイテムを文章で表示する方法ありますか?
自分のやり方ですと一つだけは表示されるのですが複数入手したときに最後?の一つだけしか表示されません
(実装できなかったので見送り試行錯誤した道中の記述を忘れてしまいました)
なにかいい方法ありましたらよろしくおねがいします
アバター
トリアコンタン
記事: 1391
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 動作テスト時たまにでるエラーについて

投稿記事by トリアコンタン » 2018年9月12日(水) 22:43

こんにちは!
プラグインのご利用ありがとうございます。

お話しを聞く限りイベント動的生成関連のような気がしますが、こちらで再現環境を構築するのは少し難しそうです。
もし現象の再現するプロジェクトを頂ければこちらで確認することも可能です。ただ、現在いくつかのご依頼、ご要望を並行して対応しているので、少しお時間をいただくことになります。

また、「EE damage」実行時に「マップ上に存在しないイベントID」を変数指定すると当該エラーで落ちる場合があるようなので指定している変数値をもう一度確認してみるのはどうでしょうか。
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
ねこちゃ
記事: 6
登録日時: 2018年9月12日(水) 10:40

Re: 動作テスト時たまにでるエラーについて

投稿記事by ねこちゃ » 2018年9月12日(水) 23:21

返信ありがとうございます!
Javaや英語が不得手な自分にとって日本のプラグイン製作者さんがいなくてはゲーム作りどころではなく
ありがたく数々のプラグイン使わせてもらっています
まさか一日で御二方の製作者さんから返信があるとは思っておらずこのような交流の場があることにも感謝しております

今日は自分のプラグインの設定やイベント情報のミスを疑い調査しておりました
攻撃の仕方も一つではなく2種類の攻撃方法があり当たり判定やダメージ判定も違う為ややこしくなってます
(いろんな情報から抜粋してその場その場で追加しているため)
検証するのもエラーを出すために時間を取られる為にまだあまり進んでいない状態です
今一度アドバイスを元に変数やプラグインの使い方を1から確認してみます
まだまだ不慣れな為間違った記述や間違った認識も多数あると思っております

今一度自分で頑張って見ます
試行錯誤してみてどうしても改善しないわからないときは現状のプロジェクトは大きすぎるため
シェイプアップしたプロジェクトを用意して助言を戴くかもしれませんがその時はどうかよろしくおねがいします
アバター
まっつUP
記事: 946
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 動作テスト時たまにでるエラーについて

投稿記事by まっつUP » 2018年9月14日(金) 00:23

ねこちゃ様

プラグインをver1.03に更新しました。
詳しくはプラグインヘルプをご覧ください。

ただし、この更新はデフォルトのプロジェクトにこのプラグインのみで導入した場合を
想定したものです。(おそらく本題のエラーには影響しないと思われます。)

※更新内容の内のドロップアイテム処理に関して
ドロップアイテムは最後に入手したアイテムについて変数へ代入するなどしていましたが
このバージョンからは入手したアイテムの分、連続するIDの変数に代入するようになります。
添付ファイル
EventEnemies.js
(14.71 KiB) ダウンロード数: 2 回
RPGで笑顔を・・・

拙作「Dragon Claw」
http://www.freem.ne.jp/win/game/12816

↑の続編「Dragon Claw Blast」←NEW!!
https://www.freem.ne.jp/win/game/15676

昨日初めてcodeタグの設定を知った男のツイッター
https://twitter.com/mattuup
ねこちゃ
記事: 6
登録日時: 2018年9月12日(水) 10:40

Re: 動作テスト時たまにでるエラーについて

投稿記事by ねこちゃ » 2018年9月14日(金) 02:02

御二方先日はありがとうございました!
あの後イベントIDの取得失敗であるという情報を元に色々と検証してみた結果
当たり判定ダメージ判定ともに違う2つの攻撃があるのですが2つともにイベントID取得方法を
攻撃1側の処理の流用をしていたために想定外の動作が起こっていた様なのです
攻撃1と攻撃2の変数を2つに分けることで今の所エラーの再現はなくなりました
(未だにどうして概ね問題なく動きたまにエラーがでるという動作をするのか理由はわかってません・・・)
プラグインの競合等ではなく私の記述ミスということでお騒がせしてすいませんでした
助言がなければ解決に何倍もの時間を使って嫌になっていたことと思います
早期解決できたのも助言のおかげであります、この度はありがとうございました!

まっつUPさんプラグインの更新ありがとうございます!!
早速急ぎではありますが以下のように記述し想定通りの動作を確認しております!
ただ自分の記述の仕方がスマートな書き方ではないような気がしているのですが、
もっといい記述の仕方及び間違い等ありましたら教えてもらえないでしょうか?
ちなみに最上段の変数に300を入れてるのは動作毎にリセットさせる為で数字の300は何が適切かわからないので適当です
以上よろしくおねがいします
添付ファイル
3.jpg
アバター
まっつUP
記事: 946
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 動作テスト時たまにでるエラーについて

投稿記事by まっつUP » 2018年9月14日(金) 18:11

ねこちゃ様

ドロップアイテムの文章処理に関して、そのままだとドロップアイテムが3つに満たない場合
不適切な処理が行われる可能性が高いです。

そのため、私の方で一例を考えてみました。
YEP_MessageCore等の制御文字を利用することも考えましたが
ねこちゃ様の元の処理との差異が少なくなるように組みました。

一例は以下の通りです。

◆変数の操作:#0047..0052 = 0
◆プラグインコマンド:EE drop 0 47
◆注釈:諸事情によりインデントは省略
◆スクリプト:

コード: 全て選択

var firid = 47;
for(var i = 0; i < 3; i++){
if($gameVariables.value(firid + i * 2) === 0){
var item = $dataItems;
}else if($gameVariables.value(firid + i * 2) === 1){
var item = $dataWeapons;
}else{
var item = $dataArmors;
}
var dropid = $gameVariables.value(firid + 1 + i * 2);
if(dropid > 0) $gameMessage.add(item[dropid].name + 'を入手\\.\\^');
}
RPGで笑顔を・・・

拙作「Dragon Claw」
http://www.freem.ne.jp/win/game/12816

↑の続編「Dragon Claw Blast」←NEW!!
https://www.freem.ne.jp/win/game/15676

昨日初めてcodeタグの設定を知った男のツイッター
https://twitter.com/mattuup
ねこちゃ
記事: 6
登録日時: 2018年9月12日(水) 10:40

Re: 動作テスト時たまにでるエラーについて

投稿記事by ねこちゃ » 2018年9月14日(金) 23:57

すばやい返信ありがとうございます!
自分のJava理解力ではどういう様にして動作しているのかを理解するのに
時間がかかりましたがスムーズで無駄のないスクリプトに驚きました
さっそく教えていただいた記述を参考に自分用の処理に変換し正しく動作していることを確認しました
いままで試行錯誤したが諦めていたドロップ時のアイテム名表示をスムーズに行うことができ感激です!

他にも頭を悩ませてる処理等多数あり自分1人では解決できないことがたくさん出てくることと思います
その時はまた助けていただければ幸いです
長々とお付き合いいただきありがとうございました
これにて解決とさせていただきます

“MV:質問” へ戻る