【解決済】時間制限付きの選択肢について

Apricot0723
記事: 8
登録日時: 2022年4月07日(木) 08:53

【解決済】時間制限付きの選択肢について

投稿記事by Apricot0723 » 2022年4月07日(木) 09:06

時間制限のある選択肢を作りたいです。
あらかじめセットしたタイマーの時間が来たら選択肢が終了して別の処理が走るようにしたいです。

そのためにやったこととして、一つの選択肢を条件分岐で
タイマーが0以下の場合は先に進めて、
タイマーがそれ以外の場合はその選択肢をループするようにしました。

◆タイマーのセット
 ◆ループ開始
  ◆選択肢
   ◆条件分岐:タイマーが0以下
         先に進む
         ループ解除
   ◆条件分岐:それ以外
         ループ開始に戻る
 ◆ここから別処理開始

という感じです
しかしこれでテストプレイをしたときに、タイマーが0になると
TypeError
Cannot read property'_timeLimit'of undefined
というエラーが出てしまいました。

このエラーはどういうエラーなのか、または時間制限付きの選択肢の実装方法について何か良いものがあれば教えていただきたいです
最後に編集したユーザー Apricot0723 on 2022年4月09日(土) 17:36 [ 編集 1 回目 ]

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 時間制限付きの選択肢について

投稿記事by ムノクラ » 2022年4月07日(木) 12:18

Apricot0723 さんが書きました:時間制限のある選択肢を作りたいです。
あらかじめセットしたタイマーの時間が来たら選択肢が終了して別の処理が走るようにしたいです。

そのためにやったこととして、一つの選択肢を条件分岐で
タイマーが0以下の場合は先に進めて、
タイマーがそれ以外の場合はその選択肢をループするようにしました。

◆タイマーのセット
 ◆ループ開始
  ◆選択肢
   ◆条件分岐:タイマーが0以下
         先に進む
         ループ解除
   ◆条件分岐:それ以外
         ループ開始に戻る
 ◆ここから別処理開始

という感じです
しかしこれでテストプレイをしたときに、タイマーが0になると
TypeError
Cannot read property'_timeLimit'of undefined
というエラーが出てしまいました。

このエラーはどういうエラーなのか、または時間制限付きの選択肢の実装方法について何か良いものがあれば教えていただきたいです

イベントコマンドで、タイマーの条件分岐で開いている選択肢を閉じさせることはできないようです。

スクリプトで、強引に選択肢を閉じる方法もあるはずです(MVとは仕様が異なるので、そのままでは動きません)が、下記のようなプラグインを使用するのが妥当だと思います。

GALV Message Timer MZ
https://fungamemake.com/archives/12689




余計なこと

イベントコマンドが手打ちしたのか、正確ではなく組んだ内容が不明です。
(ラベルジャンプ?ループの中断?)

https://fungamemake.com/archives/8079#% ... 5%E5%A0%B1
のように「テキストでコピー」すると、正確なコピペができます。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Apricot0723
記事: 8
登録日時: 2022年4月07日(木) 08:53

Re: 時間制限付きの選択肢について

投稿記事by Apricot0723 » 2022年4月07日(木) 22:53

丁寧なご回答ありがとうございます!!!
ツクール自体初めてでして、いろいろと至らぬところがあり、すみません。

貼っていただいたプラグインをDLして登録したのですが、
実際にプラグインコマンドとして出てこないです

確認したこととして、
・元の英語版をDL
・日本語化パッチを指定の場所に張り付けて保存
・UTF-8で保存
・ファイル名は元の英語名から変えない
・プラグイン管理に登録
・状態はONにチェック
・リストではエラーメッセージなし

ですが、いざプラグインの選択をしようとするとリスト内に出てこないという状況です
自分がまだプラグインの使用が2度目なのですが、何かミスをしているとしたら他にどこに気を付ければよいでしょうか
心当たりがございましたらご教授いただけますと幸いです
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 時間制限付きの選択肢について

投稿記事by ムノクラ » 2022年4月08日(金) 06:57

Apricot0723 さんが書きました:丁寧なご回答ありがとうございます!!!
ツクール自体初めてでして、いろいろと至らぬところがあり、すみません。

貼っていただいたプラグインをDLして登録したのですが、
実際にプラグインコマンドとして出てこないです

確認したこととして、
・元の英語版をDL
・日本語化パッチを指定の場所に張り付けて保存
・UTF-8で保存
・ファイル名は元の英語名から変えない
・プラグイン管理に登録
・状態はONにチェック
・リストではエラーメッセージなし

ですが、いざプラグインの選択をしようとするとリスト内に出てこないという状況です
自分がまだプラグインの使用が2度目なのですが、何かミスをしているとしたら他にどこに気を付ければよいでしょうか
心当たりがございましたらご教授いただけますと幸いです


プラグイン管理画面でヘルプが日本語表示されていれば、日本語化は成功しています。

このプラグインにはプラグインコマンドがありません。
あるのはスクリプトコマンドです。
ヘルプを読みましたか?

スクリプトコマンドは、イベント入力の「プラグインコマンド」の1つ上にある「スクリプト」から入力します。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Apricot0723
記事: 8
登録日時: 2022年4月07日(木) 08:53

Re: 時間制限付きの選択肢について

投稿記事by Apricot0723 » 2022年4月09日(土) 09:51

ヘルプは読んだのですが、プラグイン導入が2つ目、
スクリプトについてはまだ触れるには早いだろうと調べていなかったので、
「プラグインを導入したうえでスクリプトを使用する」というものがある想定ができませんでした
すみません

その上でヘルプを読み、スクリプト入力についても調べたのですが、
このプラグインとスクリプトの打ち方が全く分かりませんでした。

イベント入力の「プラグインコマンド」の1つ上にある「スクリプト」に、
ヘルプ内にあった
[*]

コード: 全て選択

[*]Galv.mTimer.visible(status);   // status : (true / false)
                               // true:表示 / false:非表示


というのを貼ったのですが、それ以降の操作手順が分かりません。

メッセージタイマーを起動して、
期限が切れたときに自動的にメッセージを閉じたり、
選択肢ウィンドウをキャンセルしたりすることができます。
ユーザーが選択できる時間が限られている場合に使用できます。


とあったのですが、このスクリプトを入力するだけでは、タイマーの操作や選択肢の表示などが出てきませんでした。
自分で追加したのですが、タイマーが0になっても特に選択肢がキャンセルされることなどもありませんでした。

コード: 全て選択

◆スクリプト:Galv.mTimer.visible(status);   // status : (true / false)
:     :                               // true:表示 / false:非表示
◆タイマーの操作:始動, 0分5秒
◆文章:なし, なし, ウィンドウ, 下
:  :5秒以内に答えて
◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
:はいのとき
  ◆文章:なし, なし, ウィンドウ, 下
  :  :5秒以内にはいと答えた
  ◆
:いいえのとき
  ◆文章:なし, なし, ウィンドウ, 下
  :  :5秒以内にいいえと答えた
  ◆
:分岐終了
◆文章:なし, なし, ウィンドウ, 下
:  :5秒以内に答えられなかった


本来の挙動としては、このスクリプトを入力した時点で専用のタイマー操作や選択肢表示が現れるのでしょうか
それとも追加で更に他のスクリプトを入力する必要があるのでしょうか

何度も申し訳ございませんが教えていただけますと幸いです
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 時間制限付きの選択肢について

投稿記事by ムノクラ » 2022年4月09日(土) 10:40

Apricot0723 さんが書きました:ヘルプは読んだのですが、プラグイン導入が2つ目、
スクリプトについてはまだ触れるには早いだろうと調べていなかったので、
「プラグインを導入したうえでスクリプトを使用する」というものがある想定ができませんでした
すみません

その上でヘルプを読み、スクリプト入力についても調べたのですが、
このプラグインとスクリプトの打ち方が全く分かりませんでした。

イベント入力の「プラグインコマンド」の1つ上にある「スクリプト」に、
ヘルプ内にあった
[*]

コード: 全て選択

[*]Galv.mTimer.visible(status);   // status : (true / false)
                               // true:表示 / false:非表示


というのを貼ったのですが、それ以降の操作手順が分かりません。

メッセージタイマーを起動して、
期限が切れたときに自動的にメッセージを閉じたり、
選択肢ウィンドウをキャンセルしたりすることができます。
ユーザーが選択できる時間が限られている場合に使用できます。


とあったのですが、このスクリプトを入力するだけでは、タイマーの操作や選択肢の表示などが出てきませんでした。
自分で追加したのですが、タイマーが0になっても特に選択肢がキャンセルされることなどもありませんでした。

コード: 全て選択

◆スクリプト:Galv.mTimer.visible(status);   // status : (true / false)
:     :                               // true:表示 / false:非表示
◆タイマーの操作:始動, 0分5秒
◆文章:なし, なし, ウィンドウ, 下
:  :5秒以内に答えて
◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
:はいのとき
  ◆文章:なし, なし, ウィンドウ, 下
  :  :5秒以内にはいと答えた
  ◆
:いいえのとき
  ◆文章:なし, なし, ウィンドウ, 下
  :  :5秒以内にいいえと答えた
  ◆
:分岐終了
◆文章:なし, なし, ウィンドウ, 下
:  :5秒以内に答えられなかった


本来の挙動としては、このスクリプトを入力した時点で専用のタイマー操作や選択肢表示が現れるのでしょうか
それとも追加で更に他のスクリプトを入力する必要があるのでしょうか

何度も申し訳ございませんが教えていただけますと幸いです


今回、やりたい事にはスクリプトコマンドは必要ないようです。
* \MT[x]
* // メッセージボックス (メッセージの中にある場合) や
* // 選択ウィンドウ (選択テキストに表示される場合) の
* // タイマーを設定するために使用されます。
* // x はタイマーを設定する秒数です。

にあるように、制御文字で、タイマーの時間を指定します。
選択肢の直前の文章に \MT[x](xを秒数に置き換える)を入れることで、タイマーがスタートします。
このタイマーはツクールのタイマーとは全く別のものですので、タイマーの設定は必要ありません。

スクリプトはタイマーのバーの表示・非表示を切り替える必要がある時に使用するのだと思います。

一応、スクリプトの補足をすると、ヘルプの書き方が良くなかったかも知れません。
ヘルプを
Galv.mTimer.visible(status);
// status : (true / false)
// true:表示 / false:非表示

としたら、少しは分かりやすくなるでしょうか?

スクリプトに下記のように入れると、表示になるという意味です。

コード: 全て選択

Galv.mTimer.visible(true);


つまり、statusの箇所を(true / false)のどちらかで書き換えます。
効果は true:表示 / false:非表示 となります。


ちなみに、GALVシリーズのプラグインのサンプルプロジェクトが下記にあります。
https://galvs-scripts.com/rpgmaker/rmmz-plugins/

>> DOWNLOAD MASTER DEMO <<
をクリックしてダウンロードできます。


サンプルを参考に、更に簡単なサンプルを下記に書きます。

コード: 全て選択

◆文章:Name Box, なし, ウィンドウ, 下
:  :\mt[5]5秒で答えてね!
◆選択肢の表示:なんてこった!, ウォー, 何も答えない (ウィンドウ, 右, #1, #3)
:なんてこった!のとき
  ◆文章:なし, なし, ウィンドウ, 下
  :  :なんてこった!
  ◆
:ウォーのとき
  ◆文章:なし, なし, ウィンドウ, 下
  :  :ウォー
  ◆
:何も答えないのとき
  ◆条件分岐:スクリプト:Galv.mTimer.autoCancelled
    ◆注釈:タイマーが自動キャンセルした場合にのみ表示されます
    ◆文章:Name Box, なし, ウィンドウ, 下
    :  :タイマーが切れました!
    :  :そして、自動的にキャンセルが選択されました!
    :  :これは、タイマーの期限が切れたことを確認するために
    :  :条件分岐のスクリプトを使用して表示されています。
    ◆
  :それ以外のとき
    ◆注釈:ユーザーが手動でキャンセルしたか、このオプションを選択したかを表示します
    ◆文章:なし, なし, ウィンドウ, 下
    :  :キャンセルを手動で選択したか、
    :  :キャンセルボタンを押しました。
    ◆
  :分岐終了
  ◆
:分岐終了
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Apricot0723
記事: 8
登録日時: 2022年4月07日(木) 08:53

Re: 時間制限付きの選択肢について

投稿記事by Apricot0723 » 2022年4月09日(土) 16:08

サンプル通り行ったところ、時間切れの時に3つある選択肢のうち、2番目の選択肢の結果になりました
そこで、2番目の選択肢の時に条件分岐で

コード: 全て選択

Galv.mTimer.autoCancelled

を入れることで、望んだとおり時間切れの時の挙動を入れ込むことができました。

これは2番目の選択肢が「キャンセル」に自動でなっているということでしょうか
それとも何かミスをしているのでしょうか
今回の挙動上は解決したのですが、今後の参考のためにお聞きしたいです。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 時間制限付きの選択肢について

投稿記事by ムノクラ » 2022年4月09日(土) 16:47

Apricot0723 さんが書きました:サンプル通り行ったところ、時間切れの時に3つある選択肢のうち、2番目の選択肢の結果になりました
そこで、2番目の選択肢の時に条件分岐で

コード: 全て選択

Galv.mTimer.autoCancelled

を入れることで、望んだとおり時間切れの時の挙動を入れ込むことができました。

これは2番目の選択肢が「キャンセル」に自動でなっているということでしょうか
それとも何かミスをしているのでしょうか
今回の挙動上は解決したのですが、今後の参考のためにお聞きしたいです。

サンプルの通り、キャンセルの指定を選択肢3にしていますか?
◆選択肢の表示:なんてこった!, ウォー, 何も答えない (ウィンドウ, 右, #1, #3)

ツクールのデフォルトの2のままではないでしょうか?
SS01.png
SS01.png (29.5 KiB) 閲覧数: 1981 回
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Apricot0723
記事: 8
登録日時: 2022年4月07日(木) 08:53

Re: 【解決済】時間制限付きの選択肢について

投稿記事by Apricot0723 » 2022年4月09日(土) 17:37

なるほど!そこで制御していたんですね
見落としでした。すみません!
解決済みとさせていただきますm(_ _)m

“MZ:質問” へ戻る