71 lines
3 KiB
JavaScript
71 lines
3 KiB
JavaScript
/*:
|
||
* @target MZ
|
||
* @plugindesc タグ付きイベントへ移動するプラグイン
|
||
* @author IvI
|
||
*
|
||
* @help
|
||
* 【使い方】
|
||
* 1. このプラグインをプロジェクトのjs/pluginsフォルダに配置し、
|
||
* プラグイン管理から読み込みます。
|
||
* 2. イベントのメモ欄に、下記のようにタグを記述します。
|
||
* 例: <Treasure>
|
||
* 3. イベントコマンド「プラグインコマンド」から、
|
||
* 「タグ付きイベントへ移動」コマンドを選択し、タグ名を入力します。
|
||
* 4. 該当タグを持つ最初のイベントの座標へプレイヤーを移動します。
|
||
*
|
||
* もし同じタグを持つイベントが複数ある場合、最初に見つかったイベントが対象となります。
|
||
* タグを持つイベントが見つからなかった場合は、場所移動は行われません。
|
||
*
|
||
* @command moveToTaggedEvent
|
||
* @text タグ付きイベントへ移動
|
||
* @desc イベントのメモ欄に指定したタグを検索し、そのイベントへプレイヤーを移動します。
|
||
*
|
||
* @arg tag
|
||
* @text タグ名
|
||
* @desc イベントのメモ欄に書かれているタグを指定してください。例:Treasure
|
||
* @default
|
||
*/
|
||
|
||
(() => {
|
||
'use strict';
|
||
|
||
// プラグインコマンド登録
|
||
PluginManager.registerCommand(document.currentScript.src.match(/([^/]+)\.js$/)[1],
|
||
"moveToTaggedEvent",
|
||
args => {
|
||
const tagName = args.tag.trim();
|
||
if (!tagName) {
|
||
console.warn("タグ名が指定されていません。");
|
||
return;
|
||
}
|
||
|
||
// カレントマップ内のイベント一覧を取得
|
||
const events = $dataMap.events;
|
||
if (!events) {
|
||
console.warn("イベントデータが取得できませんでした。");
|
||
return;
|
||
}
|
||
|
||
// タグが含まれるイベントを検索(メモ欄に <タグ名> と書かれているか)
|
||
const targetEvent = events.find(e => {
|
||
return e && e.note && e.note.includes(`<${tagName}>`);
|
||
});
|
||
|
||
// 見つからなければ処理終了
|
||
if (!targetEvent) {
|
||
console.warn(`タグ「${tagName}」を持つイベントが見つかりませんでした。`);
|
||
return;
|
||
}
|
||
|
||
// 場所移動を実行(向き:保持、フェード:なし)
|
||
// 向きやフェードを変更したい場合は、第4引数・第5引数を変更してください。
|
||
$gamePlayer.reserveTransfer(
|
||
$gameMap.mapId(), // 現在のマップID
|
||
targetEvent.x, // イベントのX座標
|
||
targetEvent.y, // イベントのY座標
|
||
$gamePlayer.direction(), // プレイヤーの向き(保持する場合)
|
||
0 // フェード(0=なし, 1=白, 2=黒)
|
||
);
|
||
}
|
||
);
|
||
})();
|