RPG Developer BAKIN用C#プラグインプレイヤーの近くのイベントを検出
RPG Developer BAKIN用のC#プラグインです。
プレイヤーの近くにいるイベントを名前と距離で検出します。
イベントからの呼び出し部の抜粋
[BakinFunction(Description = "指定の文字列を含むイベントがプレイヤーの\n" +
"近くにいるかどうかを検索します\n" +
"引数はイベントに含まれる文字列と距離を\n" +
"半角スペースで区切った文字列を指定\n\n" +
"条件を満たすイベントがいれば戻り値は 1\n" +
"いなければ 0 、引数の形式に誤りがある場合は -1")]
public int SearchEventNameDistance(string arg)
{
string[] data = arg.Split(' ');
if (data.Length == 2)
{
data[0] = data[0].Trim();
float contactDistance;
if (float.TryParse(data[1], out contactDistance) && data[0].Length > 0)
{
var heroPos = mapScene.hero.getPosition();
foreach (var chr in mapScene.mapCharList)
{
if (chr.rom?.name.IndexOf(data[0]) >= 0)
{
var diffPos = heroPos - chr.getPosition();
var distance = Math.Sqrt(Math.Pow(diffPos.X, 2) +
Math.Pow(diffPos.Y, 2) + Math.Pow(diffPos.Z, 2));
if (distance <= contactDistance)
{
return 1;
}
}
}
return 0;
}
}
return -1;
}
使い方
指定された文字列を名前に含むイベントが、指定された距離(ブロック数)よりもプレイヤーの近くにいた場合に1を、いない場合は0を返します。
(距離は正の整数あるいは少数で指定できます)
文字列変数ボックスに、検出するイベントの名前と検出距離を半角スペース区切りで代入し、イベントの「C#プログラムの呼び出しコマンド」で SearchEventNameDistance を指定し、引数に先ほどの文字列変数を指定してください。
下記の例では「ゴブリン」を名前に含むイベントがプレイヤーから3ブロック以内の距離にいるかどうかを検出します。
ダウンロード
(2つめのファイルはChromeで.csファイルをダウンロードすると警告がでてしまう対策として拡張子を.txtにしたファイルです。こちらはダウンロード後に拡張子を.csに書き換えてお使いください)
RPG Developer BAKINへの導入方法
RPG Developer BAKINのイベントエディタの左下にある「C#プログラムの割り当て」の下矢印を左クリックし、表示されるメニューの「追加」を選んでダウンロードしたSearchEvent.csファイルを開いてください。
この記事が気に入ったらサポートをしてみませんか?