質問させてください。
バトル中に、ターゲットの現在HPを変数に代入するスクリプトってありますか?
変数の操作→ゲームデータから敵キャラを選択は出来ますが、ID指定しか無かったので……。
色々調べたのですが、ちょっとわからなかったので書き込ませていただきました。
【解決済】敵の現在のターゲットのHPを変数に代入したい
【解決済】敵の現在のターゲットのHPを変数に代入したい
最後に編集したユーザー たつし [ 2023年9月07日(木) 00:45 ], 累計 1 回
- DoujinRuis
- 記事: 166
- 登録日時: 2022年10月25日(火) 10:59
Re: 敵の現在のターゲットのHPを変数に代入したい
こんなのはどうでしょうか?
敵が分かっている前提
ゴブリンのID0001を検索してhpを変数に入れます
ランダムエンカウントで敵も不確定なら、もう少しいじる必要がありますが
const goblin = $gameTroop.members().find(enemy => enemy.enemyId() === 1);
if (goblin) {
$gameVariables.setValue(1, goblin.hp);
}
$gameMessage.add($gameVariables.value(1).toString());
敵が分かっている前提
ゴブリンのID0001を検索してhpを変数に入れます
ランダムエンカウントで敵も不確定なら、もう少しいじる必要がありますが
const goblin = $gameTroop.members().find(enemy => enemy.enemyId() === 1);
if (goblin) {
$gameVariables.setValue(1, goblin.hp);
}
$gameMessage.add($gameVariables.value(1).toString());
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
Re: 敵の現在のターゲットのHPを変数に代入したい
返信ありがとうございます。
敵を検索できるのは知らなかったです。
やりたかったのはイベントの起動条件に、「攻撃が当たった瞬間」を使いたく、敵のHPが変わった瞬間を取得したかったです。
$gameTroop.members()[BattleManager._subject._lastTargetIndex
こんな感じので、ラストターゲット(かな?)の敵の現在HPを取得して変数に代入したい感じなのですが……。
もし方法があれば教えていただきたいです。
今はとりあえず、敵全8体のHPを変数に代入して、並列で走らせてHPが変わった瞬間に起動、という風にやってますが、ラストターゲットのHPがあ取得できれば楽だなと思い、質問させていただきました。
敵を検索できるのは知らなかったです。
やりたかったのはイベントの起動条件に、「攻撃が当たった瞬間」を使いたく、敵のHPが変わった瞬間を取得したかったです。
$gameTroop.members()[BattleManager._subject._lastTargetIndex
こんな感じので、ラストターゲット(かな?)の敵の現在HPを取得して変数に代入したい感じなのですが……。
もし方法があれば教えていただきたいです。
今はとりあえず、敵全8体のHPを変数に代入して、並列で走らせてHPが変わった瞬間に起動、という風にやってますが、ラストターゲットのHPがあ取得できれば楽だなと思い、質問させていただきました。
- DoujinRuis
- 記事: 166
- 登録日時: 2022年10月25日(火) 10:59
Re: 敵の現在のターゲットのHPを変数に代入したい
確認お願いします
https://www.youtube.com/watch?v=qO6ZxlCx10M
敵がダメージを受けたときに指定したスイッチをONにします
/*
2023 DoujinRuis
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
*/
/*:
* @plugindesc 敵がダメージを受けたときに指定したスイッチをONにします
* @author DoujinRuis
*
* @param DamageSwitch
* @text ダメージスイッチ
* @desc 敵がダメージを受けたときにONにするスイッチの番号
* @type switch
* @default 1
*
* @help
* このプラグインを有効にすると、バトルシーンで敵がダメージを受けたときに
* 指定したスイッチをONにします。
*/
(() => {
const parameters = PluginManager.parameters('TurnOnSwitchWhenEnemyDamaged');
const damageSwitchId = Number(parameters['DamageSwitch']);
const _Game_Enemy_performDamage = Game_Enemy.prototype.performDamage;
Game_Enemy.prototype.performDamage = function() {
// スイッチをONにする
$gameSwitches.setValue(damageSwitchId, true);
_Game_Enemy_performDamage.call(this);
};
})();
バトルシーンで最後に攻撃した敵のHPを変数に入れます
/*
2023 DoujinRuis
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
*/
/*:
* @plugindesc バトルシーンで最後に攻撃した敵のHPを変数に入れます
* @author ChatGPT
*
* @param HPVariableID
* @text HPの変数ID
* @desc 最後に攻撃した敵のHPを保存する変数のID
* @type variable
* @default 1
*
* @help
* このプラグインを有効にすると、バトルシーンでアクターによって最後に攻撃された
* 敵の現在のHPが指定したゲーム変数に保存されます。
*/
(() => {
const parameters = PluginManager.parameters('SaveLastAttackedEnemyHP');
const hpVariableId = Number(parameters['HPVariableID']);
const _Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
_Game_Action_apply.call(this, target);
if(target.isEnemy()) {
$gameVariables.setValue(hpVariableId, target.hp);
}
};
})();
https://www.youtube.com/watch?v=qO6ZxlCx10M
敵がダメージを受けたときに指定したスイッチをONにします
/*
2023 DoujinRuis
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
*/
/*:
* @plugindesc 敵がダメージを受けたときに指定したスイッチをONにします
* @author DoujinRuis
*
* @param DamageSwitch
* @text ダメージスイッチ
* @desc 敵がダメージを受けたときにONにするスイッチの番号
* @type switch
* @default 1
*
* @help
* このプラグインを有効にすると、バトルシーンで敵がダメージを受けたときに
* 指定したスイッチをONにします。
*/
(() => {
const parameters = PluginManager.parameters('TurnOnSwitchWhenEnemyDamaged');
const damageSwitchId = Number(parameters['DamageSwitch']);
const _Game_Enemy_performDamage = Game_Enemy.prototype.performDamage;
Game_Enemy.prototype.performDamage = function() {
// スイッチをONにする
$gameSwitches.setValue(damageSwitchId, true);
_Game_Enemy_performDamage.call(this);
};
})();
バトルシーンで最後に攻撃した敵のHPを変数に入れます
/*
2023 DoujinRuis
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
*/
/*:
* @plugindesc バトルシーンで最後に攻撃した敵のHPを変数に入れます
* @author ChatGPT
*
* @param HPVariableID
* @text HPの変数ID
* @desc 最後に攻撃した敵のHPを保存する変数のID
* @type variable
* @default 1
*
* @help
* このプラグインを有効にすると、バトルシーンでアクターによって最後に攻撃された
* 敵の現在のHPが指定したゲーム変数に保存されます。
*/
(() => {
const parameters = PluginManager.parameters('SaveLastAttackedEnemyHP');
const hpVariableId = Number(parameters['HPVariableID']);
const _Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
_Game_Action_apply.call(this, target);
if(target.isEnemy()) {
$gameVariables.setValue(hpVariableId, target.hp);
}
};
})();
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
Re: 敵の現在のターゲットのHPを変数に代入したい
プラグインを作っていただきありがとうございます。
コピーして入れてみましたが、なぜか両方無反応でした…。
スイッチの方と変数の方を、両方試しています。
プロジェクトは新規で、他のプラグイン等は何も入れてない状態で試しました。
コアスクリプトは、最新の1.70にしています。


コピーして入れてみましたが、なぜか両方無反応でした…。
スイッチの方と変数の方を、両方試しています。
プロジェクトは新規で、他のプラグイン等は何も入れてない状態で試しました。
コアスクリプトは、最新の1.70にしています。


Re: 敵の現在のターゲットのHPを変数に代入したい
目的がはっきりしているのなら迂遠な事をせずにたつし さんが書きました:返信ありがとうございます。
敵を検索できるのは知らなかったです。
やりたかったのはイベントの起動条件に、「攻撃が当たった瞬間」を使いたく、敵のHPが変わった瞬間を取得したかったです。
直接「攻撃が当たった瞬間にイベントを起動する」方法を採用した方が良いと思いますよ。
特定の戦闘(チュートリアルか何か?)限定の話ですよね。
自分ならバトルログに小細工を仕掛けます。
バトルイベントの0ターン目、つまり戦闘開始時に一度だけ以下のコードを実行してください。
コード: 全て選択
const commonEventId = 2;
const logWindow = SceneManager._scene._logWindow;
logWindow.__tempMethod = logWindow.displayActionResults;
logWindow.displayActionResults = function(subject, target){
this.__tempMethod.apply(this, arguments);
if (subject.isActor() && target.isEnemy() && target.result().isHit()) {
$gameTemp.reserveCommonEvent(commonEventId);
this.displayActionResults = this.__tempMethod;
this.__tempMethod = null;
}
};
一行目で指定されたコモンイベントを起動予約する、という処理です。
一度起動予約した時点で処理を元に戻します。
欠点は一撃で敵を殲滅してしまうと戦闘終了後にコモンイベントが起動する、というところですか。
もしもそういうケースが想定される場合は!$gameParty.inBattle()で
非戦闘中か否かの真偽判定が返ってくるのでコモンイベントの方で条件分岐させて中断してください。
あとは使用効果「コモンイベント」の処理を流用しているのでそちらと被った場合競合しますね。
コード: 全て選択
◆条件分岐:スクリプト:!$gameParty.inBattle()
◆イベント処理の中断
◆
:分岐終了
- DoujinRuis
- 記事: 166
- 登録日時: 2022年10月25日(火) 10:59
Re: 敵の現在のターゲットのHPを変数に代入したい
ちなみに私のはプラグインの名前を修正してみてください
名前で識別しています
敵がダメージを受けたときに指定したスイッチをONにします
TurnOnSwitchWhenEnemyDamaged
バトルシーンで最後に攻撃した敵のHPを変数に入れます
SaveLastAttackedEnemyHP
名前で識別しています
敵がダメージを受けたときに指定したスイッチをONにします
TurnOnSwitchWhenEnemyDamaged
バトルシーンで最後に攻撃した敵のHPを変数に入れます
SaveLastAttackedEnemyHP
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
Re: 敵の現在のターゲットのHPを変数に代入したい
>>名無し蛙様
アドバイスありがとうございます。
早速試してみます。
書き方が分かりづらくて大変失礼致しました。
やっているのはチェインコンボの改良版みたいな感じで、説明が難しく省略してしまいました。
>> DoujinRuis様
ありがとうございます。
試したところ、作動しました!
これで思った通りのイベントが作れそうです。
ご返事くださった方々、ありがとうございました。
アドバイスありがとうございます。
早速試してみます。
書き方が分かりづらくて大変失礼致しました。
やっているのはチェインコンボの改良版みたいな感じで、説明が難しく省略してしまいました。
>> DoujinRuis様
ありがとうございます。
試したところ、作動しました!
これで思った通りのイベントが作れそうです。
ご返事くださった方々、ありがとうございました。