スクリプトでのスキル使用

トラル
記事: 13
登録日時: 2017年5月01日(月) 21:20

スクリプトでのスキル使用

投稿記事by トラル » 2017年7月24日(月) 00:45

お世話になります。

現在、戦闘中で特定のアクターが特定のタイミングで通常の行動とは別にスキルを使用する、
という動作をさせようと考えています。
そこでYanfly様のBuff & States Coreプラグインを使用して、
ステートのメモ欄のスクリプトを処理する機能を利用し
各ターン終了時や一定ターン後といったタイミングで
イベントの戦闘行動の強制を起動してスキルを使用させようと思っていますが、
ステートがかかっているアクターのIDをうまく取得する事ができず
戦闘行動の強制を使用させることができません。
全てのアクターが使用する関係上、条件分岐では処理が大量になってしまうため
可能な限り処理の直前にアクターIDを取得する形にしたいのです。

アクターIDの取得方法、もしくは上記の動作の代替案があれば
ご教授頂けましたら幸いです。

よろしくお願い致します。

アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: スクリプトでのスキル使用

投稿記事by しぐれん » 2017年7月25日(火) 08:45

まだ説明を整備していませんが、以下のプラグインで行えます。

コード: 全て選択

https://raw.githubusercontent.com/Sigureya/RPGmakerMV/master/Mano_AfterCounter.js


説明は、こちらのスレにある程度書いてあります。
http://tm.lucky-duet.com/viewtopic.php?f=49&t=4192

intersectActorActionFromId()で、アクターにスキルを使わせることができます。
指定したスキルは可能な限り早いタイミングで実行されます。
数ターン後に使わせたい場合、コモンイベントで調整してください。

YEP系プラグインと一緒に使うと競合の可能性はありますが、可能な限り対応します。
現在、プラグイン依頼はお休み中です。
トラル
記事: 13
登録日時: 2017年5月01日(月) 21:20

Re: スクリプトでのスキル使用

投稿記事by トラル » 2017年7月26日(水) 14:01

お世話になります。
プラグインのご提案ありがとうございます。
導入してみようとしましたが、

Error
Uncaught TypeError: Cannot read property 'length' of null

とエラーが表示され起動できませんでした。
他のプラグインを全てOFFにしましたが同様のエラーが表示されました。
新規プロジェクトを作成して使用した際は問題なく起動できましたのですが
エラーの原因はわかりませんでした。
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: スクリプトでのスキル使用

投稿記事by しぐれん » 2017年7月26日(水) 18:31

そのエラーだけでは原因を特定できないので、
エラーを発生させた状況でF8を押して、スタックトレースをコピーしてください。
対応します。
(参考:http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

状況的に、既存プロジェクトのセーブデータを読み込んだものと思われますが、合ってますか?
現在、プラグイン依頼はお休み中です。
トラル
記事: 13
登録日時: 2017年5月01日(月) 21:20

Re: スクリプトでのスキル使用

投稿記事by トラル » 2017年7月27日(木) 01:01

お世話になります。
返信ありがとうございます。
情報不足ですみません。スタックトレースでの出力は以下になります。

画像.jpg
 ※保存しているローカルアドレスの部分を塗りつぶしています。
 

認識の通り、作成中の既存プロジェクトに追加しています。
また、プロジェクトのコアスクリプトは最新のバージョンです。
お手数お掛けしますが、ご対応お願いします。
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: スクリプトでのスキル使用

投稿記事by しぐれん » 2017年7月27日(木) 04:51

調べたところ、以下の個所が怪しいと判明しました。
setCounterTrait_ForObjectList()という関数を以下のように書き換えてください。
nullチェックを入れたので、これで落ちることはなくなると思います。

コード: 全て選択

function setCounterTrait_ForObjectList(objList,intersect_type){
    if(!objList){return;}

    const len = objList.length;
    for(var i =1; i< len;i+=1){
        const obj = objList[i];
        obj[intersect_type.targetMember]=after_counter.fetchIntersectTrait(obj,intersect_type);
    }
}
現在、プラグイン依頼はお休み中です。
トラル
記事: 13
登録日時: 2017年5月01日(月) 21:20

Re: スクリプトでのスキル使用

投稿記事by トラル » 2017年7月28日(金) 00:35

お世話になっております。
ご対応ありがとうございます。
テストしてみましたが今のところエラーは発生していないので
問題は解消されたと思います。
質問なのですが、intersectActorActionFromId()はどの箇所に記述すればよろしいのでしょうか?
また、ステートが発生したタイミングでスキルを発動させる事は可能でしょうか?
回答頂けたら幸いです。よろしくお願いします。
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: スクリプトでのスキル使用

投稿記事by しぐれん » 2017年7月28日(金) 01:51

intersectActorActionFromId()は、コモンイベントを戦闘中に呼び出し、そこから使います。
intersectEnemyActionFromId()とほぼ同じです。(ActorとEnemyが違うだけ)
ステート発生時にスキルを呼び出すことも可能です。

コモンイベントからの指定方法は、以下の2つの書き込みに説明があります。
viewtopic.php?f=49&t=4192&start=10#p14870
viewtopic.php?f=49&t=4192&start=10#p14930

わからなかったら再度質問どうぞ。
現在、プラグイン依頼はお休み中です。
トラル
記事: 13
登録日時: 2017年5月01日(月) 21:20

Re: スクリプトでのスキル使用

投稿記事by トラル » 2017年7月31日(月) 00:13

回答ありがとうございます。
色々と試してみます。
何かありましたらまた質問や報告をしたいと思いますので
よろしくお願いします。

“MV:質問” へ戻る