見出し画像

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ファイルを開いてください。

導入方法


この記事が気に入ったらサポートをしてみませんか?