ページ 11

【解決済】特定のステートにかかったアクターに対してコモンイベント呼び出し

Posted: 2024年10月11日(金) 11:37
by しまー
お世話になっております。
実装したい挙動としては、
・特定のステートXにかかっているアクターに対して敵が特定のスキルAを使用した時、即死+テキストイベント発生(それ以外のアクターにスキルAを使用しても即死効果・イベントは発生しない)
という内容になります。
探した範囲では適切なプラグインなど見つからず、分からないなりにスクリプトを模索しているのですが、
①敵スキルで以下のコモンイベント呼び出し
if(攻撃対象となっているアクター.isStateAffected(特定のステートX)){reserveCommonEvent(あ);}

②以下のコモンイベントあを呼び出し
(コモンイベントあ)
1行目:イベント用テキスト
2行目:スクリプト
if(攻撃対象となっているアクター.isStateAffected(特定のステートX)){攻撃対象となっているアクター.addState(戦闘不能ステートID);}

という処理でやれないかと思いつつ、肝心の攻撃対象となっているアクターを指定するスクリプトが分からず苦戦しております…。
(そもそもスクリプトいじり初心者ゆえ、他の部分のお作法も間違っていそうな気はしますが…)

攻撃対象となっているアクターを上記構文に当てはめる場合のスクリプトについてご教示願えれば幸いです。
あるいはもう少しシンプルにまとめるうまいやり方などございましたらお知恵をお借りできましたら幸いです。
よろしくお願いします。

Re: 特定のステートにかかったアクターに対してコモンイベント呼び出し

Posted: 2024年10月11日(金) 14:16
by ゆわか
無理に条件文のすべてをスクリプトにしなくてもいいんじゃないかな。
デフォルトでは取得が難しい部分だけスクリプトを使うと、以下のようになります。


敵のスキルに紐づけるコモンイベント

◆変数の操作:#0007 対象アクター = 直前に対象となったアクターのID
◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value( 7 )).isStateAffected(5)
◆コモンイベント:あ

:分岐終了


コモンイベントあの内容

◆文章:なし, なし, ウィンドウ, 下
:  :ぎゃふーん
◆スクリプト:$gameActors.actor($gameVariables.value( 7 )).addState(1)


補足説明。
$gameVariables.value( 7 )は、変数7番のことです。任意の番号に変更してください。
直前に対象となったアクターのIDは、変数の操作の「ゲームデータ」から「直前」を選択すると出てきます。
StateAffected(5)は、ステートIDが5番のステートのことです。任意の番号に変更してください。

また、コモンイベントあ は、対象になったアクターのステートが特定の物だった時しか呼び出されないので
ステートを変更するために再度条件分岐する必要はないと思います。
ので、$gameActors.actor($gameVariables.value( 7 )).addState(1)
は、対象アクターのステートの変更をするだけのスクリプトです。

Re: 特定のステートにかかったアクターに対してコモンイベント呼び出し

Posted: 2024年10月11日(金) 14:32
by ecf5DTTzl6h6lJj02
タイミングがかぶったので、書き直しました。

ゆわかさんのおっしゃる通りで、
スキルの対象となったアクターのIDは、
変数の操作のオペランドで
『ゲームデータ』> 『直前』> 『直前に対象となったアクターのID』
と選択することで、取得することができます。

ゆわかさんはスクリプトを使用して、アクターにステートを付与していますが、
アクターにステートを付与する場合は、変数でアクターのIDを指定することができるので、
スクリプトではなく、普通にステート変更のイベントコマンドで、付与することができます。

また、スクリプトでステートを付与・解除するときは、
付与・解除後に clearResult メソッドを実行しておかないと、
その後のステートの付与・解除が正しく行われなくなることがあるので、注意してください。

Re: 特定のステートにかかったアクターに対してコモンイベント呼び出し

Posted: 2024年10月11日(金) 16:15
by しまー
ゆわか さんが書きました:無理に条件文のすべてをスクリプトにしなくてもいいんじゃないかな。
デフォルトでは取得が難しい部分だけスクリプトを使うと、以下のようになります。


敵のスキルに紐づけるコモンイベント

◆変数の操作:#0007 対象アクター = 直前に対象となったアクターのID
◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value( 7 )).isStateAffected(5)
◆コモンイベント:あ

:分岐終了


コモンイベントあの内容

◆文章:なし, なし, ウィンドウ, 下
:  :ぎゃふーん
◆スクリプト:$gameActors.actor($gameVariables.value( 7 )).addState(1)


補足説明。
$gameVariables.value( 7 )は、変数7番のことです。任意の番号に変更してください。
直前に対象となったアクターのIDは、変数の操作の「ゲームデータ」から「直前」を選択すると出てきます。
StateAffected(5)は、ステートIDが5番のステートのことです。任意の番号に変更してください。

また、コモンイベントあ は、対象になったアクターのステートが特定の物だった時しか呼び出されないので
ステートを変更するために再度条件分岐する必要はないと思います。
ので、$gameActors.actor($gameVariables.value( 7 )).addState(1)
は、対象アクターのステートの変更をするだけのスクリプトです。
ゆわか様 ecf5DTTzl6h6lJj02様
おかげさまで思っていたような挙動が実現しました……! 変数の部分で処理できたのですね。
そしてこうするとそもそもコモンイベント2つにしなくても1つで足りるという…。
お二方、本当にありがとうございました!!