プレイヤー探索プラグイン – MKR_PlayerSensor.js

タイトル
プレイヤー探索プラグイン
作者名
ヘルプ
= プレイヤー探索プラグイン =
MKR_PlayerSensor.js

対象イベント(以下、探索者)の視界の範囲を描画し、
範囲内にプレイヤーが存在した場合、
その探索者は発見状態となり指定されたスイッチをONにします。
(スイッチがONの間、探索者は話しかけられた方向に振り向かないようになります)

プレイヤーが視界範囲マス外に出た場合、
ロスト状態となりONになったスイッチがOFFになります。
(設定により状態移行までの時間が調整できます)

※ トリガー[自動実行]によるイベント動作中の場合、ゲーム動作負荷を考慮して
探索処理は停止します。
(イベントメモ欄で設定変更が可能です)


簡単な使い方説明:
探索者にしたいイベントのメモ欄を設定し、
探索者がいるマップでプラグインコマンド PSS start を実行すると、
そのマップにいる全ての探索者が探索を開始します。
(探索一時無効状態になっている探索者を除く)

探索者がいるマップでプラグインコマンド PSS force_start を実行すると、
そのマップにいる全ての探索者が探索を開始します。
(探索一時無効状態になっている探索者も探索を開始します)

探索者のイベント内でプラグインコマンド PSS t_start を実行すると、
その探索者が探索を開始します。
(探索一時無効状態となっている探索者に対しても探索を開始させます。)

探索者のイベント内でプラグインコマンド PSS t_stop を実行すると、
その探索者が探索を停止します。
(プレイヤーを未発見として状態が更新されます。)

探索者がいるマップでプラグインコマンド PSS stop を実行すると、
そのマップにいる全探索者が探索を停止します。
(プレイヤーを未発見として状態が更新されます。)


メモ欄_基本設定(Xは正の整数):
<PsensorL:X>
・探索者の前方Xマスを探索します。

<PsensorF:X>
・探索者を頂点として前方にXマス、
左右にXマス進んだ地点の点をそれぞれ結んで形成される
三角形の図形の範囲内を探索します。

<PsensorD:X>
・探索者から上下左右にXマス進んだ点を結んで形成される、
ひし形の図形の範囲内を探索します。

・この形状の場合、地形の通行可能状態を無視します。
(常にTdオプションが1の状態となります。)

<PsensorS:X>
・探索者から上下にXマス、
左右にXマス進んだ地点の点をそれぞれ結んで形成される
四角形の図形の範囲内を探索します。

・この形状の場合、地形の通行可能状態を無視します。
(常にTdオプションが1の状態となります)

<PsensorL:\V[n]>
・視界範囲マス数を指定する部分には、
変数を表す制御文字である \V[n] が使用可能です。
変数番号N番の変数に格納されている値を
範囲値として使用します。
(変数の変更はリアルタイムに反映されます)

<!PsensorL:X>
・探索者の前方Xマスが範囲ですが、
先頭に ! を付けると探索一時無効状態となります。

・この状態の場合、後述するプラグインコマンド:PSS start実行時点では
探索が開始されず、
プラグインコマンド:PSS t_start か
スクリプトコマンド:$gameSystem.onSensor(eventId) で
個別に探索を開始させる必要があります。


メモ欄_オプション(各オプションはスペースで区切る):
・各オプションはスペースで区切ること。
・指定しない場合は初期値の設定が適用されます。

Sw[数字またはA~D]
・探索者がプレイヤーを発見した際に
ONにするスイッチ番号またはセルフスイッチを
探索者毎に指定します。

・プレイヤーをロストした際にONになるスイッチは、
プレイヤーを発見したときに自動的にOFFになります。

例)
Sw10 : スイッチ番号10番のスイッチをONにします。
SwC : 探索者のセルフスイッチCをONにします。

Bo[0~1の数字、または\S[n]]
・探索者の両隣を探索範囲としない(0)/する(1)。
1 の場合、探索者の左右マスが探索範囲となります。

・\S[n]はスイッチの状態を取得する制御文字です。
Nには数値かA~Dのアルファベットが入ります。(A~Dはセルフスイッチです)
スイッチNの状態がON = 1を指定したことと同じです。

Rv[0~1の数字、または\S[n]]
・探索者の視界範囲を描画しない(0)/する(1)。
0 の場合、探索者の視界範囲が画面に描画されません。
(視覚的に見えなくなるだけで探索は行われます)

・\S[n]はスイッチの状態を取得する制御文字です。
Nには数値かA~Dのアルファベットが入ります。(A~Dはセルフスイッチです)
スイッチNの状態がON = 1を指定したことと同じです。

Td[0または1、または\S[n]]
・視界範囲の算出に視界範囲内の地形/イベントに対する
通行可能状態を考慮しない(0)/する(1)。
1 の場合、視界範囲内に通行不可マスがあると視界範囲が変化します。

・地形の通行可能状態を考慮する場合、
通行不可マスが視界範囲の対象にならず、
探索者から見て通行不可マスがあることによって
死角になるマスも視覚範囲の対象になりません。

・\S[n]はスイッチの状態を取得する制御文字です。
Nには数値かA~Dのアルファベットが入ります。(A~Dはセルフスイッチです)
スイッチNの状態がON = 1を指定したことと同じです。

Di[U,R,L,Dどれか1文字]
・探索者の向きを考慮せず、探索方向を固定します。
Uは上、Rは右、Lは左、Dは下を表します。

Ev[0または1、または\S[n]]
・探索者の視界範囲がマップ上の通行不可能なイベント
(プライオリティが「通常キャラと同じ」)の
影響を受ける(1)/受けない(0)。
1 の場合、視界範囲内に通行不可能なマップイベントがあると
視界範囲が変化します。

・[タイルセット B]以降のタイルをイベントの画像として指定し
イベントのプライオリティが「通常キャラの下」の場合、
タイルセットの通行可能設定が視界範囲に影響し、
タイルセットの設定が通行不可の場合、視界範囲外となります。

・視界範囲内の通行可能状態を考慮しない設定になっている場合、
この設定は無視されます。

Rg[リージョン番号、または\V[n]]
・指定した場合探索者の視界範囲がマップ上のリージョンタイルの
影響を受けます。
例えば 1 を指定すると、リージョン番号1番のタイルが置かれたマスが
壁扱いとなり、視界範囲外となります。

・視界範囲内の通行可能状態を考慮しない設定になっている場合、
この設定は無視されます。

Fb[フキダシ番号、または\V[n]]
・指定した場合、探索者がプレイヤーを発見したときに
探索者の頭上にフキダシが表示されます。

Fc[コモンイベント番号、または\V[n]]
・指定した場合、探索者がプレイヤーを発見したときに
指定したコモンイベントを実行します。

Fd[遅延フレーム数、または\V[n]]
・指定した場合、探索者がプレイヤーを発見するまでの時間が
フレーム数分遅れます。

Lb[フキダシ番号、または\V[n]]
・指定した場合、探索者がプレイヤーをロストしたときに
探索者の頭上にフキダシが表示されます。

Lc[コモンイベント番号、または\V[n]]
・指定した場合、探索者がプレイヤーをロストしたときに
指定したコモンイベントを実行します。

Ld[遅延フレーム数、または\V[n]]
・指定した場合、探索者がプレイヤーをロストするまでの時間が
フレーム数分遅れます。

Li
・指定した場合、プレイヤーが探索者の視界の外に出たとしても
探索者をプレイヤーロスト状態へと移行しません。

・1度見つかったら同じマップにいる限り
プレイヤーを追いかけ続けるイベント等にお使いください。

・スクリプト等を使い、プレイヤーロスト状態へ移行させることは可能です。

Am[0または1、または\S[n]]
・自動実行によるイベントが動作中、このオプションを設定された探索者の
探索処理を続行する(1)/続行しない(0)
デフォルトは0です。

・探索を続行する場合、自動実行イベントが動作中の場合でも
視界範囲にプレイヤーが居るかどうかの判定が行われます。
(対象の探索者が探索開始状態になっている場合に限ります)

・このオプションを1に設定された探索者は、探索開始状態の間
常に探索を続けるためゲーム動作負荷が上がります。
設定は慎重にお願いいたします。

Lsw[数字またはA~D]
・探索者がプレイヤーをロストした際に
ONにするスイッチ番号またはセルフスイッチを
探索者毎に指定します。

・プレイヤーを発見した際にONになるスイッチは、
プレイヤーをロストしたときに自動的にOFFになります。

例)
Lsw11 : スイッチ番号11番のスイッチをONにします。
LswB : 探索者のセルフスイッチBをONにします。


メモ欄の設定例:
<PsensorL:7>
・探索者の前方7マスの範囲を探索します。

<PsensorF:3>
・探索者を頂点に、前方3マス左右に3マス進んだ地点を
結んでできる三角形の図形の範囲内を探索します。

<PsensorL:\V[100]>
・探索者の前方[変数番号100番]マスの範囲を探索します。

<PsensorL:4 SwC>
・探索者の前方4マスの範囲を探索します。
プレイヤー発見時に探索者のセルフスイッチCをONにします。

<PsensorF:5 Bo1>
・探索者を頂点に、前方3マス左右に3マスの点を
結んでできる三角形の図形の範囲内を探索します。

・さらに探索者の両隣を探索範囲とします。

<PsensorL:10 Rv0>
・探索者の前方10マスの範囲を探索しますが、
視界範囲の描画をしません。

<PsensorL:10 Rv\s[20]>
・探索者の前方10マスの範囲を探索します。

・スイッチ20番の状態がOFFの場合は
視界範囲の描画をしません。

<PsensorL:10 Td0>
・探索者の前方10マスの範囲を探索しますが、
視界範囲内の通行可能マス状態を考慮しません。

<PsensorL:10 Td\s[A]>
・探索者の前方10マスの範囲を探索します。

・セルフスイッチAの状態がOFFの場合は
視界範囲内の通行可能マス状態を考慮しません。

<PsensorF:&2 Bo0 Sw1>
・探索者を頂点に、前方[変数番号2番]マス
左右に[変数番号2番]マス進んだ地点の点を結んでできる
三角形の図形の範囲内を探索しますが、
探索者の両隣を範囲としません。

・プレイヤー発見時にスイッチ番号1番のスイッチをONにします。

<PsensorL:7 DiR>
・探索者の右隣7マスの範囲を探索します。

<PsensorF:7 DiU>
・探索者を頂点に、上3マス左右に3マスの点を
結んでできる三角形の図形の範囲内を探索します。

<PsensorL:10 Ev1 Rg10>
・探索者の前方10マスの範囲を探索しますが、
視界範囲内のマップイベントの存在を考慮します。
さらにリージョン番号10番のタイルを壁として認識します。


プラグインコマンド:
PSS start
・コマンドを実行したマップ上に存在する全ての探索者が
探索開始処理になります。
(探索一時無効状態の探索者は対象外です)

PSS force_start
・コマンドを実行したマップ上に存在する全ての探索者が
探索開始処理になります。
(探索一時無効状態の探索者も対象となります)

PSS stop
・コマンドを実行したマップ上に存在する全ての探索者が
探索停止処理状態になります。
(プレイヤーを未発見として状態が更新されます。)

PSS reset X Y ...
・コマンドを実行したマップ上に存在する全ての探索者を対象に、
プラグインパラメーター[発見後操作スイッチ]で
指定した(セルフ)スイッチ、
またはSwオプションで指定した(セルフ)スイッチの
どちらかをOFFにします。(Swオプションの設定が優先されます)

・また、resetの後に指定した(セルフ)スイッチも
同様にOFFにします。まとめてOFFにしたい場合に指定してください。
(X,Y はセルフスイッチ/スイッチ番号。
スペース区切りで記載してください)

PSS lost
・コマンドを実行したマップ上に存在するプレイヤー発見状態の探索者を
ロスト状態へ強制移行させます。

PSS found
・コマンドを実行したマップ上に存在するプレイヤー未発見状態の探索者を
発見状態へ強制移行させます。

PSS t_start
・このコマンドを実行した探索者を
探索開始状態にします。

・実際に探索を行わせるためには事前にPSS startコマンドの
実行が必要です。

PSS t_stop
・このコマンドを実行した探索者を探索停止状態にします。
(プレイヤーを未発見として状態が更新されます。)

PSS t_reset X Y ...
・このコマンドを実行した探索者を対象に、
プラグインパラメーター[発見後操作スイッチ]で
指定した(セルフ)スイッチ、
またはメモ欄のSwオプションで指定した(セルフ)スイッチの
どちらかをOFFにします。(メモ欄の設定が優先されます)

・"X", "Y" は(セルフ)スイッチを表し、ここに記載した(セルフ)スイッチも
同様にOFFにします。まとめてOFFにしたい場合に指定してください。
(セルフスイッチ/スイッチ番号はスペース区切りで記載してください)

PSS t_lost
・このコマンドを実行したプレイヤー発見状態の探索者を
ロスト状態へ強制移行させます。

PSS t_find
・このコマンドを実行したプレイヤー未発見状態の探索者を
発見状態へ強制移行させます。

PSS t_move X
・このコマンドを実行した時点のプレイヤー位置に隣接する位置まで、
このコマンドを実行したイベントを移動させます。

・Xは移動速度。1~6まで対応し、
未指定の場合はイベントに設定されている速度を使用します。

・プラグインパラメーター[通行不可タイル考慮]がOFFまたは
メモ欄のTdオプションが0の場合は
正しく移動できない可能性があります。
(イベントのすり抜けを有効にすることで移動可能です)


スクリプトコマンド:
$gameSystem.getEventSensorStatus(eventId)
・指定したイベントIDを持つ探索者に対して探索状態を取得します。
[戻り値] | [意味]
-1 | 探索一時無効状態
0 | 探索停止状態
1 | 探索実行状態

$gameSystem.onSensor(eventId)
・指定したイベントIDを持つ探索者を探索開始状態にします。
探索停止/一時無効状態の探索者に対し探索を再開させる場合に使用します。

・探索を開始させるためには事前にPSS start(PSS force_start)コマンドの
実行が必要です。

$gameSystem.offSensor(eventId)
・指定したイベントIDを持つ探索者を探索停止状態にします。
(プレイヤーを未発見として状態が更新されます。)

$gameSystem.neutralSensor(eventId, ["X","Y",...])
・現在のマップに存在する、指定したイベントIDを持つ探索者に対し、
[発見後操作スイッチ]で指定した(セルフ)スイッチか、
またはSwオプションで指定したセルフスイッチの
どちらかをOFFにします。(メモ欄の設定が優先されます)

・"X", "Y" は(セルフ)スイッチを表し、ここに記載した(セルフ)スイッチも
同様にOFFにします。まとめてOFFにしたい場合に指定してください。
(カンマ区切りで指定してください)

$gameSystem.isFoundPlayer()
・現在のマップで、プレイヤーが探索者に発見されている場合にtrueを返します。
(それ以外ならfalse)

$gameSystem.allForceLost()
・現在のマップに存在する、プレイヤー発見状態の探索者を
ロスト状態へ強制移行させます。

$gameSystem.forceLost(eventId)
・指定したイベントIDを持つ探索者がプレイヤー発見状態である場合、
ロスト状態へ強制移行させます。

$gameSystem.allForceFound()
・現在のマップに存在する、プレイヤー未発見状態の探索者を
発見状態へ強制移行させます。

$gameSystem.forceFound(eventId)
・指定したイベントIDを持つ探索者がプレイヤー未発見状態である場合、
発見状態へ強制移行させます。


補足:
・このプラグインに関するメモ欄の設定、プラグインコマンド、
は大文字/小文字を区別していません。

・プラグインパラメーターの説明に、[初期値]と書かれているものは
メモ欄にて個別設定が可能です。
設定した場合、[初期値]よりメモ欄の設定が
優先されますのでご注意ください。

・プラグインパラメーターの説明に、[変数可]と書かれているものは
設定値に変数を表す制御文字である\V[n]を使用可能です。
変数を設定した場合、そのパラメーターの利用時に変数の値を
参照するため、パラメーターの設定をゲーム中に変更できます。

・プラグインパラメーターの説明に、[スイッチ可]と書かれているものは
設定値にスイッチを表す制御文字の\S[n]を使用可能です。(Nは数値)
指定したスイッチがONの場合はプラグインパラメーターに
ONまたは1,trueを指定したことと同じとなります。
スイッチを設定した場合、そのパラメーターの利用時にスイッチの値を
参照するため、パラメーターの設定をゲーム中に変更できます。


利用規約:
・作者に無断で本プラグインの改変、再配布が可能です。
(ただしヘッダーの著作権表示部分は残してください。)

・利用形態(フリーゲーム、商用ゲーム、R-18作品等)に制限はありません。
ご自由にお使いください。

・本プラグインを使用したことにより発生した問題について作者は一切の責任を
負いません。

・要望などがある場合、本プラグインのバージョンアップを行う
可能性がありますが、
バージョンアップにより本プラグインの仕様が変更される可能性があります。
ご了承ください。

パラメータ
param 探索設定
default ====================================

param Sensor_Switch
text 発見後操作スイッチ
desc [初期値] プレイヤー発見時にONにするスイッチ番号またはセルフスイッチを指定。(ロスト後操作スイッチはOFFになります)
type combo
option A
option B
option C
option D
default D
parent 探索設定

param Lost_Sensor_Switch
text ロスト後操作スイッチ
desc [初期値] プレイヤーロスト時にONにするスイッチ番号またはセルフスイッチを指定。(発見後操作スイッチはOFFになります)
type combo
option A
option B
option C
option D
default
parent 探索設定

param Both_Sensor
text 両隣の視界
desc [初期値:スイッチ可] 探索者の両隣を探索範囲とする場合はON、しない場合はOFFを指定してください。
type combo
option ON
option OFF
default OFF
parent 探索設定

param Terrain_Decision
text 通行不可タイル考慮
desc [初期値:スイッチ可] 視界範囲に通行不可タイルの存在を考慮させる場合はON、しない場合はOFFを指定してください。
type combo
option ON
option OFF
default ON
parent 探索設定

param Auto_Sensor
text 探索自動開始
desc マップ描画時に探索処理を自動的に開始する設定です。デフォルト:開始しない
type boolean
on 開始する
off 開始しない
default false
parent 探索設定

param Event_Decision
text 他イベント考慮
desc [初期値:スイッチ可] 視界範囲にマップイベントの存在を考慮させる場合はON、しない場合はOFFを指定してください。
type combo
option ON
option OFF
default OFF
parent 探索設定

param Region_Decision
text リージョン設定
desc [初期値:変数可] 視界範囲外(壁扱い)とするリージョン番号を指定してください。
type string[]
default []
parent 探索設定

param Real_Range_X
text 探索範囲X拡張
desc 探索範囲を指定した数値分、横に拡張します(視界描画はマス単位)。プレイヤーがピクセル単位で移動する場合に有効です。(デフォルト:0)
type number
decimals 3
max 0.999
min 0.000
default 0.000
parent 探索設定

param Real_Range_Y
text 探索範囲Y拡張
desc 探索範囲を指定した数値分、縦に拡張します(視界描画はマス単位)。プレイヤーがピクセル単位で移動する場合に有効です。(デフォルト:0)
type number
decimals 3
max 0.999
min 0.000
default 0.000
parent 探索設定

param 視界設定
default ====================================

param Range_Visible
text 視界範囲描画
desc [初期値:スイッチ可] 探索者の視界範囲を描画する場合はON、しない場合はOFFを指定してください。
type combo
option ON
option OFF
default ON
parent 視界設定

param Range_Color
text 視界範囲の色
desc 視界範囲を描画する際の色を選択してください。デフォルト:白
type select
option
value white
option
value red
option
value blue
option
value yellow
default white
parent 視界設定

param Range_Opacity
text 視界範囲の不透明度
desc 視界範囲を描画する際の不透明度を数字で指定してください。デフォルト:80(0-255)
type number
min 0
max 255
default 80
parent 視界設定

param Range_Position
text 視界範囲位置
desc 探索者の視界範囲を表示する位置を選択します。デフォルト:1(イベントの上に表示する)
type select
option イベントの上に表示する
value 1
option イベントの下に表示する
value 2
default 1
parent 視界設定

param Player_Found
text プレイヤー発見設定
desc 探索者のプレイヤー発見に関する設定です。
type struct<AlertFound>
default {"Ballon":"0","Se":"{\"Name\":\"\",\"Volume\":\"90\",\"Pitch\":\"100\",\"Pan\":\"0\"}","Common_Event":"0","Delay":"0"}

param Player_Lost
text プレイヤーロスト設定
desc 探索者のプレイヤーロストに関する設定です。
type struct<AlertLost>
default {"Ballon":"0","Se":"{\"Name\":\"\",\"Volume\":\"90\",\"Pitch\":\"100\",\"Pan\":\"0\"}","Common_Event":"0","Delay":"0","Invalid":"false"}

param マップ設定
default ====================================

param Tracking_Priority
text 追跡優先度
desc プレイヤー発見状態のイベントが他イベントの上または下を通行可能にするか設定します。(デフォルト:通行不可)
type boolean
on 通行可能
off 通行不可
default false
parent マップ設定

param Follower_Through
text フォロワー無視
desc プレイヤー発見状態のイベントがプレイヤーのフォロワー(隊列)をすり抜けるか設定します。(デフォルト:すり抜け不可)
type boolean
on すり抜け可
off すり抜け不可
default false
parent マップ設定

param Location_Reset
text マップ移動時リセット
desc 場所移動コマンド使用時、元のマップに配置された探索者の追跡状態をリセットするか設定します。(デフォルト:リセットしない)
type boolean
on リセットする
off リセットしない
default false
parent マップ設定

ライセンス表記
・作者に無断で本プラグインの改変、再配布が可能です。
(ただしヘッダーの著作権表示部分は残してください。)
・利用形態(フリーゲーム、商用ゲーム、R-18作品等)に制限はありません。
・本プラグインを使用したことにより発生した問題について作者は一切の責任を
Copyright (c) 2022 マンカインド
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php

紹介ページ https://github.com/mankindGames/RPGTkool/blob/master/MKR_PlayerSensor.js