2016年9月9日金曜日

プレイヤー探索プラグイン:使い方

自作プラグイン「プレイヤー探索プラグイン」の使い方を紹介します。

以下の記事からプラグインをダウンロードすることができます。

プレイヤー探索プラグイン:公開

[説明]

プラグインを導入し、イベント(以下、探索者)のメモ欄を設定することで、ゲーム画面上に探索者を起点に1マス単位でプレイヤーの侵入を検知する範囲(以下、視界範囲)を描画できます。

(デフォルトの設定では探索者正面に描画されている、白く半透明な部分が視界範囲を表します)

プラグインパラメーター:

探索者に探索を行わせるための共通設定を行います。基本的にはデフォルトの状態で利用可能です。

パラメーター説明文に書かれている以下の文字について
初期値 同様の設定をイベントやアクター毎にメモ欄で個別に行うことができ、個別に設定した場合はその値が優先されます。
変数可 本来設定する値とは別に、変数を示す制御文字の \V[n] が使用可能です。 nは数値で、例えばn=7のとき7番の変数に格納されている値を使用します。
スイッチ可 本来設定する値とは別に、セルフスイッチ/スイッチを示す制御文字の \S[n] が使用可能です。 nは数値またはA~Dのアルファベット1文字で、例えばn=7のとき、7番のスイッチの状態(ON=1, OFF=0)を使用します。例えばn=Cのとき、イベント毎に持つセルフスイッチCの状態(ON=1, OFF=0)を使用します。
[Default_Sensor_Switch]
(初期値)
プレイヤーが視界範囲に侵入した場合にONにするセルフスイッチ/スイッチです。セルフスイッチ(A~Dのアルファベット1文字)またはスイッチ(1~の数字)を設定することができます。
スイッチがOFFになる スイッチがONになる
[Default_Both_Sensor]
(初期値:スイッチ可)
探索者の左右1マスを視界範囲に含める場合はON、含めない場合はOFFを指定してください。 ONの場合、プレイヤーが探索者の左右のマスに侵入することでも設定されたスイッチがONになります。
パラメーターがOFFのとき パラメーターがONのとき
[Default_Range_Visible]
(初期値:スイッチ可)
視界範囲を表示する場合はON、非表示にする場合はOFFを指定してください。非表示にした場合でも探索は実行していますので、非表示状態の視界範囲内にプレイヤーが侵入すると指定されたスイッチがONになります。
パラメーターがOFFのとき パラメーターがONのとき
[Default_Terrain_Decision]
(初期値:スイッチ可)
視界範囲が地形の通行可能状態の影響を受けるようにする場合はONを、影響を受けないようにする場合はOFFを指定してください。 OFFを指定すると、視界範囲は通行不可能な障害物を超えて描画されます。もちろん、その状態でも視界範囲内に侵入した場合は指定されたスイッチがONになります。
パラメーターがOFFのとき パラメーターがONのとき
[Default_Range_Color]
視界範囲の描画色を英語で指定します。色の例を挙げると、white(白)、red(赤)、black(黒)、green(緑)、yellow(黄)、gray(灰)などがあります。
パラメーターが"white"のとき パラメーターが"red"のとき
[Default_Range_Opacity]
視界範囲の描画するときの不透明度を指定します。 0~255の間で、数字が大きくなるほど不透明になります。
値が80のとき 値が160のとき
[Default_Auto_Sensor]
マップ描画時、自動的に探索処理を開始する場合はON、開始タイミングを自分で制御する場合はOFFを指定します。ONにした場合、プラグインコマンド[PSS start]が自動的に実行されます。
[Default_Event_Decision]
視界範囲がマップイベントの通行可能状態の影響を受けるようにする場合はONを、影響を受けないようにする場合はOFFを指定してください。 ONを指定すると、視界範囲は通行不可能なイベントによって制限されるようになります。
前提マップ配置
値がOFFのとき 値がONのとき
[Default_Region_Decision]
リージョンタイルを視界範囲外とする場合は1以上のリージョン番号を指定します。(0でリージョンタイルによる影響無効)
前提マップ配置
値が0のとき 値が3のとき

メモ欄の設定:

探索者に視界範囲を設定するには、メモ欄に設定を記述します。

基本的な設定は以下のとおりです。

メモ欄の設定 動作
<PsensorL:X> 探索者の前方Xマスの範囲を視覚範囲とします。
<PsensorF:X> 探索者の前方、斜めにXマスの地点を結んでできる三角形の範囲を視覚範囲とします。
<PsensorD:X> 探索者を中心に前後左右Xマスの地点を結んでできるひし形の範囲を視覚範囲とします。(この視覚範囲は地形通行可能状態を考慮しません)
<PsensorS:X> 探索者を中心に半径Xマスの四角形を視覚範囲とします。(この視覚範囲は地形通行可能状態を考慮しません)
<!PsensorL:X> Psensorの前に !(エクスクラメーション) を設定された探索者は探索無効状態となり、探索を開始するプラグインコマンド[PSS start](後述します)実行時に探索を開始せず、個別に探索を開始させるプラグインコマンド[PSS t_start]を実行すると探索を開始します。探索開始タイミングを他の探索者とずらしたい場合などに設定します。

メモ欄に設定した時の動作イメージはこんな感じになります。

<PsensorL:3> <PsensorF:3>
<PsensorD:3> <PsensorS:3>

また、上記設定で視界範囲のマス数を表すXの部分には変数を使うことができます。

Xの部分を\v[100]という制御文字と置き換えました。変数100番に格納されている数値を使い視界範囲が描画されます。

変数の値は3 視界範囲も3マス

変数に格納されている数値が変更されると、視界範囲も変更されます。

変数の値を6に変更 視界範囲も6マスになる

続いて、メモ欄のオプション設定について解説します。オプションは<PsensorS:X~に続けて記述するもので、探索者毎にプラグインパラメーターでの設定を変える場合などに使用します。プラグインパラメーターよりオプション設定が優先されますので注意してください。

メモ欄のオプション設定 動作
Sw[数字] プラグインパラメーター[Default_Sensor_Switch]の設定を上書きします。探索者毎にONにするセルフスイッチ/スイッチを変更する場合に設定します。
Sw[A~Dの1文字]
Bo[0~1] プラグインパラメーター[Default_Both_Sensor]の設定を上書きします。探索者毎に両隣を視覚範囲に含めるか指定する場合に設定します。1=ONの状態です。スイッチを指定することもでき、スイッチ番号n番のON/OFFによって状態が切り替わります。
Bo\S[n]
Rv[0~1] プラグインパラメーター[Default_Range_Visible]の設定を上書きします。探索者毎に視界範囲の表示を行うか指定する場合に設定します。1=ONの状態です。スイッチを指定することもでき、スイッチ番号n番のON/OFFによって状態が切り替わります。
Rv\S[n]
Td[0~1] プラグインパラメーター[Default_Terrain_Decision]の設定を上書きします。探索者毎に視界範囲の地形通行状態を考慮させるか指定する場合に設定します。1=ONの状態です。スイッチを指定することもでき、スイッチ番号n番のON/OFFによって状態が切り替わります。
Td\S[n]
Di[U,R,L,Dどれか1文字] 通常、探索者の正面に対してプレイヤー探索を行い視界範囲を描画しますが、探索者毎に探索方向を指定する場合に設定します。Uが上方向、Rが右方向、Lが左方向、Dが下方向に対してプレイヤー探索、視界範囲の描画を行います。
Ev[0~1] プラグインパラメーター[Default_Event_Decision]の設定を上書きします。探索者毎に視界範囲内にいるイベントの通行可能状態を考慮させるか指定する場合に設定します。1=ONの状態です。スイッチを指定することもでき、スイッチ番号n番のON/OFFによって状態が切り替わります。
Ev\S[n]
Rg[1~] プラグインパラメーター[Default_Region_Decision]の設定に追加して設定します。パラメーターの設定では足りない場合や、探索者毎に視界範囲内のリージョンタイル設置状態を考慮させる場合に設定します。1=リージョン番号1番です。変数を指定することもでき、変数番号n番の値によって視界範囲外となるリージョンタイルが変化します。
Rg\V[n]

プラグインコマンド:

探索者の設定を行っただけでは探索が開始されません。探索の開始/停止などをプラグインコマンドで制御します。

PSS start
全探索者に対し探索を開始させます。探索無効状態(<!Psensor~>)の探索者はこのコマンドによって探索が開始されません。
PSS stop
全探索者に対し探索を停止させます。
PSS reset [X Y …]
全探索者に対して、プレイヤー発見時にONになるセルフスイッチ/スイッチと、コマンドの後に指定したセルフスイッチ/スイッチ(スペースで区切って指定)をOFFにします。例えば、PSS reset A 12というプラグインコマンドを実行した場合、プレイヤー発見時にONになるセルフスイッチ/スイッチ(デフォルトではセルフスイッチD)と、同じくセルフスイッチのAとスイッチ1番がOFFになります。
PSS t_start
このプラグインコマンドを実行した探索者に対し探索を開始させます。探索無効状態(<!Psensor~>)の探索者はこのコマンドによって探索を開始させます。
PSS t_stop
このプラグインコマンドを実行した探索者に対し探索を停止させます。セルフスイッチなどの状態は変わりませんので、必要に応じてPSS t_resetなどのプラグインコマンドを実行してください。
PSS t_reset [X Y …]
このプラグインコマンドを実行した探索者に対しプレイヤー発見時にONになるセルフスイッチ/スイッチと、コマンドの後に指定したセルフスイッチ/スイッチ(スペースで区切って指定)をOFFにします。例えば、PSS reset A B C 10というプラグインコマンドを実行した場合、プレイヤー発見時にONになるセルフスイッチ/スイッチ(デフォルトではセルフスイッチD)と、同じくセルフスイッチのA~C、スイッチ10番がOFFになります。
PSS t_move
このプラグインコマンドを実行した探索者をプレイヤーに隣接するマップ位置まで徒歩で移動させます。Xにはイベントが移動する速度を指定してください。(指定しない場合はイベントに設定されている速度で移動) このプラグインコマンドは探索者がプレイヤーを発見時、プレイヤーに近づくための手段として想定しています。そのため、あまりにも遠い距離だったり、間に障害物などがある場合、探索者がうまく移動できない場合があります。

スクリプトコマンド:

プラグインコマンドでは実行できない処理(イベントIDを指定して探索状態を変更する等)を実行する場合にスクリプトコマンドを実行します。

$gameSystem.getEventSensorStatus(eventId)
指定したイベントIDを持つ探索者の探索状態を数値で取得します。取得できる数値と意味は次のとおりです。
数値 意味
-1 探索無効(<!Psensor~>)
0 探索停止
1 探索中
$gameSystem.onSensor(eventId)
指定したイベントIDを持つ探索者に探索を開始させます。このスクリプトコマンドを使用するためには、事前にプラグインコマンド[PSS start]の実行が必要なため、探索を停止している/探索無効状態の探索者に対し探索を再開させる場合に使用します。
$gameSystem.offSensor(eventId)
指定したイベントIDを持つ探索者の探索を停止させます。
$gameSystem.neutralSensor(eventId, ["X","Y",...])
コマンドを実行したマップに存在する、指定したイベントIDを持つ探索者がプレイヤー発見時にONになるセルフスイッチ/スイッチと、コマンドの後に指定したセルフスイッチ/スイッチ(カンマで区切って指定)をOFFにします。例えば、$gameSystem.neutralSensor(3, "A","10")というスクリプトコマンドを実行した場合、コマンドを実行したマップに存在するイベント番号3番のプレイヤー発見時にONになるセルフスイッチ/スイッチ(デフォルトではセルフスイッチD)と、同じくセルフスイッチのA、スイッチ10番がOFFになります。

メモ欄の設定例:

例えば、探索者のメモ欄に以下のように設定した場合、ゲーム上ではどう表示されるのか? いくつか画像付きで紹介します。なお、プラグインパラメーターはデフォルトの状態とします。

<PsensorF:3 DiR> <PsensorL:7 Bo1 Td0>

[ダウンロード]

以下の記事からプラグインをダウンロードすることができます。

プレイヤー探索プラグイン:公開

18 件のコメント:

  1. こんにちは
    メタルギアのような作品が作れないかと試行錯誤していたところ
    こちらのサイトに辿り着きました。すばらしいプラグインです!
    しかし、一点うまくいかない点があるようで、
    複数の探索者を出し、スイッチを切り替える際、イベントIDの一番大きなモノしか反応しないようです。
    よろしければご確認いただけますと幸いです。

    返信削除
    返信
    1. こんにちわ。
      コメントありがとうございます。
      プラグインのご利用ありがとうございます。

      ご質問の件ですが、
      状況としては複数の探索者の視界範囲に同時に侵入した場合に、
      イベントIDの一番大きな探索者しかセルフスイッチがオンにならない、ということでしょうか?

      詳しい状況を教えていただけるとありがたいです。
      (探索者のメモ欄の設定や、その時の画面上の状態、
      プレイヤーを発見した際に探索者がどのような処理を行うようになっているのか等)

      一応、お使いの本プラグインのバージョンをご確認ください。
      現時点での最新バージョンは2.2.2になっています。
      (プラグイン管理の説明欄先頭にv2.2.2と書かれています)

      削除
    2. ご返信ありがとうございます。

      状況としましてはセルフスイッチの操作の場合は問題ないのですが、
      ・スイッチの操作のとき
      ・複数の探索者がいる
      という状況で、IDの一番大きなイベントの視界でしか反応が起こらないという状況です。バージョンはv2.2.2で間違いありません。

      キャプチャ画像と、プロジェクトデータを貼ります。
      https://drive.google.com/open?id=0B90hmYBL3xkCSm5aRmowdk9EdU0
      https://drive.google.com/open?id=0B90hmYBL3xkCNEtQWHRKNEljbUE
      https://drive.google.com/open?id=0B90hmYBL3xkCYUUxeGt4dk5vUnM
      https://drive.google.com/open?id=0B90hmYBL3xkCendycE80R2NCdjg

      https://drive.google.com/file/d/0B90hmYBL3xkCZFU3R2VCdnE3R3M/view?usp=sharing

      スライムのメモ欄にはスイッチ0001の操作を命令するを記入。
      猫に話しかけると、プラグインコマンドPSS startが送られ探索がスタート。
      スイッチ0001がオンになると猫は鶏になります。

      この際、イベントID1~4のスライムのうち、ID4のスライムの視界でのみ、猫が鶏になります。

      私の方で何か見落としていたら大変申し訳無いのですが、
      こういった状態です。
      大変お手数ですがご確認いただけると幸いです。

      削除
    3. コメントありがとうございます。

      わざわざプロジェクトやスクリーンショットを貼付していただきありがとうございました。解析作業が楽に進みました。

      該当の問題を修正したver 2.2.3をアップロードしましたので、お手数ですがプラグインの再ダウンロードをお願いいたします。

      削除
    4. 迅速な対応ありがとうございます!
      ありがたく使用させていただきます

      削除
  2. 初書き込みで失礼します。
    当スクリプトが一番安定して探索が使いやすいのですが、
    最初から探索ONに出来る方法はありますでしょうか?
    出来ればプラグインコマンドを使わずに済むとありがたいのでよろしくお願い致します。

    返信削除
    返信
    1. こんにちわ。
      コメントありがとうございます。
      プラグインのご利用ありがとうございます。

      プレイヤー探索プラグインをver2.2.4に更新し、マップ描画時に探索開始プラグインコマンドである[PSS start]を自動的に実行させるためのプラグインパラメーターを追加しました。

      お手数ですがプラグインの再ダウンロードをお願いいたします。

      削除
  3. 返信ありがとうございます(*^^*)
    無理を言ってすみませんでした。
    自動実行本当にありがとうございましたm(__)m!

    返信削除
  4. このコメントは投稿者によって削除されました。

    返信削除
  5. このコメントは投稿者によって削除されました。

    返信削除
  6. このコメントは投稿者によって削除されました。

    返信削除
  7. こんにちは。
    素晴らしいプラグインをありがとうございます。

    1つリクエストさせていただきたいのですが、
    探索者がプレイヤーをロストした際、
    そのイベントのスイッチやセルフスイッチがONになる仕様を追加願えないでしょうか。

    プレイヤーを見失った際、
    指定された元の位置に戻るためのページが作れるようになればと思っています。

    もしよろしければご一考ください。

    返信削除
    返信
    1. こんばんわ、返信が遅れてしまい申し訳ありません。
      プラグインをバージョンアップ(ver 2.3.4)し、探索者がプレイヤーをロストした場合にONにする(セルフ)スイッチを
      設定できるようプラグインパラメータを追加いたしました。
      お手数ですがプラグインの再DLをお願いいたします。

      削除
    2. 機能を追加いただきありがとうございます!
      おかげさまで思っていた動きが実装できそうです
      使いやすいプラグインで重宝させていただいてます

      削除
  8. こんにちわ、丁度欲しかった機能なのでとても重宝しています!
    しかし、少し問題が発生していまして、プラグインコマンドPSS start,PSS stop等を使おうとすると、
    Cannot read property 'toLowerCase' of undefined と表示され、ゲームが止まってしまいます。
    当方スクリプトに詳しくないため、八方ふさがりです。対処法などはありますでしょうか?

    返信削除
    返信
    1. コメントありがとうございます。
      その現象は新規作成したプロジェクトで本プラグインのみ導入した状態でも発生しますでしょうか?
      お手数ですが、現象が確認できるプロジェクトをどこかにアップしていただくことは可能でしょうか?

      削除
  9. 初めまして、私は現在RPGツクールMVでゲームを作成している者です。

    スニーキング系のゲームを作ってみようと思いこのスクリプトにたどり着きました。
    大変使いやすく、重宝していたのですが、ロスト時間の操作方法がわからず質問させていただきました。
    現在、ロスト時間を長めにとることにより探索状態の延長ができないかと考えているのですが何処を操作すればよいかわからず、
    質問させていただいた次第です。

    player_found,player_lostの項目をいじることで実現できるのではないかと考え、操作してみたのですが自身プログラミングに関して初心者であることもありうまくいかず、もし打開案等助言していただければと思います。

    お忙しい中失礼しました。お返事お待ちしております。

    返信削除
  10. すいません自己解決いたしました。お騒がせして申し訳ございませんでした。

    返信削除