イベントA(味方)がイベントB(敵)を探して攻撃して倒す、といった事をしたいと思い、
Aが攻撃したときにBのセルフ変数をいじってHP減らそうと思ったのですが、外部のセルフ変数の操作で加算や減算の方法がわかりませんでした。代入はできます。
味方や敵は大量に出したいので、トリアコンタン様が作成されたテンプレートイベントプラグイン&イベント動的プラグインを使用しています。
もしも方法がわかる方がおりましたらアドバイスを頂けると幸いです。
【解決済】TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
【解決済】TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
最後に編集したユーザー kagami [ 2024年2月07日(水) 21:39 ], 累計 1 回
- DoujinRuis
- 記事: 166
- 登録日時: 2022年10月25日(火) 10:59
Re: TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
ご確認ください
https://www.youtube.com/watch?v=a_zYSfwEFF0
ツクール初心者の方質問し放題のディスコードです↓
https://discord.com/invite/dzUAC3CSMH
https://www.youtube.com/watch?v=a_zYSfwEFF0
ツクール初心者の方質問し放題のディスコードです↓
https://discord.com/invite/dzUAC3CSMH
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
Re: TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
>DoujinRuis様
わざわざ動画にして頂きありがとうございます。
同じようにイベントを作成し、「味方と敵が互いに索敵して攻撃する(倒す)」処理が実装できました。
ただ、このイベントを「イベント動的プラグイン」で別マップにイベント生成した所、お互い攻撃はするもののセルフ変数の数値が変わらなくなってしまいました。
最終的には別マップにこの味方と敵のイベントを複数生成して戦わせたいのですが、可能でしょうか?
(セルフ変数がイベントIDを参照してるので難しいような気がしてきました…)
わざわざ動画にして頂きありがとうございます。
同じようにイベントを作成し、「味方と敵が互いに索敵して攻撃する(倒す)」処理が実装できました。
ただ、このイベントを「イベント動的プラグイン」で別マップにイベント生成した所、お互い攻撃はするもののセルフ変数の数値が変わらなくなってしまいました。
最終的には別マップにこの味方と敵のイベントを複数生成して戦わせたいのですが、可能でしょうか?
(セルフ変数がイベントIDを参照してるので難しいような気がしてきました…)
- DoujinRuis
- 記事: 166
- 登録日時: 2022年10月25日(火) 10:59
Re: TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
すいません、現状苦戦してます。
一体だけなら出来るのですが、複数コピーすると・・・
よく分かってないです。
ただこのプラグインから考えるとこういう使い方を想定しているとしか思えないので、
一度作者のトリアコンタンさんに確認してみようと思います。
是非、期待せずお待ちください
一体だけなら出来るのですが、複数コピーすると・・・
よく分かってないです。
ただこのプラグインから考えるとこういう使い方を想定しているとしか思えないので、
一度作者のトリアコンタンさんに確認してみようと思います。
是非、期待せずお待ちください
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
Re: TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
>DoujinRuis様
お手数をおかけしてしまったようで申し訳ございません!
セルフ変数の加算などの方法がわかっただけでも非常に勉強になりました。
作者様にご確認頂くのは大変ありがたいのですが、お時間に余裕があればで良いですので!
お手数をおかけしてしまったようで申し訳ございません!
セルフ変数の加算などの方法がわかっただけでも非常に勉強になりました。
作者様にご確認頂くのは大変ありがたいのですが、お時間に余裕があればで良いですので!
Re: TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
こんばんは。
現状問題になっている点、マップが変わったときにセルフ変数の値が変わらないについて。
・原因について
恐らくセルフ変数のキーを正しく指定できていないことが原因かと推測します。
実際の実装が定かでないので恐縮ですが、前回答者様の動画を拝見いたしましたところ、
以下の部分で問題となってそうと思う部分がありました。
セルフ変数を取得する部分のコードですが、キーの指定が1,1,2のように定数で行われています。
[]内に指定すべき値は[マップID,イベントID,セルフ変数のインデックス]ですので、
別マップに実装した際、キーの部分を修正されていないのであれば、
『ID1のマップのセルフ変数にダメージ処理をしているが、見ている変数は今のマップ』という形になっているのかなと推測します。
見当違いなら申し訳ありません。
・解決策について
まず、複数イベントで動作させるのに、EventReSpawnにてイベントを生成する手を使うとして、
自動でイベントIDが割付されるので、
どのIDを指定してよいかわからないといった懸念を感じられたのだと想定します。
そこでマップID、イベントIDは動的に取得するという方法がありますので、その方法を使えば
マップ毎、イベント毎のIDの指定という意識は必要なくなります。
動画内のコードで例を示します。以下の例を参考に実装してみてください。
の部分を
というように変更を加えてください。
これで、隣接した敵のセルフ変数を処理する
という処理になるかと思います。
マップ毎、敵毎に手を加える必要はありません。
問題はまだまだあるかと思いますが、ひとまずどこか参考になれば幸いです。
現状問題になっている点、マップが変わったときにセルフ変数の値が変わらないについて。
・原因について
恐らくセルフ変数のキーを正しく指定できていないことが原因かと推測します。
実際の実装が定かでないので恐縮ですが、前回答者様の動画を拝見いたしましたところ、
以下の部分で問題となってそうと思う部分がありました。
コード: 全て選択
$gameSelfSwitches.getVariableValue([1,1,2]);
[]内に指定すべき値は[マップID,イベントID,セルフ変数のインデックス]ですので、
別マップに実装した際、キーの部分を修正されていないのであれば、
『ID1のマップのセルフ変数にダメージ処理をしているが、見ている変数は今のマップ』という形になっているのかなと推測します。
見当違いなら申し訳ありません。
・解決策について
まず、複数イベントで動作させるのに、EventReSpawnにてイベントを生成する手を使うとして、
自動でイベントIDが割付されるので、
どのIDを指定してよいかわからないといった懸念を感じられたのだと想定します。
そこでマップID、イベントIDは動的に取得するという方法がありますので、その方法を使えば
マップ毎、イベント毎のIDの指定という意識は必要なくなります。
動画内のコードで例を示します。以下の例を参考に実装してみてください。
コード: 全て選択
if(event3Exists){
let i = $gameSelfSwitches.getVariableValue([1,1,2]);
let z = i - 10;
$gameSelfSwitches.setVariableValue([1,1,2],z);
}
コード: 全て選択
if(event3Exists){
const mapId = $gameMap.mapId(); // 現在のマップIDを取得します。
const eventId = adjacentEvents[0].eventId(); // 攻撃対象のイベントIDを取得します。
const selfVarIndex = 2;
const key = [mapId, eventId, selfVarIndex];
const i = $gameSelfSwitches.getVariableValue(key);
const z = i - 10;
$gameSelfSwitches.setVariableValue(key, z);
}
これで、隣接した敵のセルフ変数を処理する
という処理になるかと思います。
マップ毎、敵毎に手を加える必要はありません。
問題はまだまだあるかと思いますが、ひとまずどこか参考になれば幸いです。
- DoujinRuis
- 記事: 166
- 登録日時: 2022年10月25日(火) 10:59
Re: TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
ご確認ください
https://www.youtube.com/watch?v=FxgP2xfMAys
ツクール初心者の方質問し放題のディスコードです↓
https://discord.com/invite/dzUAC3CSMH
ねこしゃりさんありがとうございました
今回のプログラム
let eventId = this._eventId; // このイベントのID
let event = $gameMap.event(eventId); // このイベントのオブジェクトを取得
let eventX = event.x; // このイベントのマップX座標
let eventY = event.y; // このイベントのマップY座標
// イベント2が特定の方向を向いている場合の隣接座標を計算
let targetX = eventX;
let targetY = eventY;
switch (event.direction()) {
case 2: // 下を向いている
targetY += 1;
break;
case 4: // 左を向いている
targetX -= 1;
break;
case 6: // 右を向いている
targetX += 1;
break;
case 8: // 上を向いている
targetY -= 1;
break;
default:
// その他の方向(通常はあり得ないが、念のため)
break;
}
// 隣接座標にイベントが存在するか確認
let adjacentEvents = $gameMap.eventsXy(targetX, targetY);
let eventExists = adjacentEvents.length > 0;
if ( eventExists ) {
const mapId = $gameMap.mapId(); // 現在のマップIDを取得します。
const eventId = adjacentEvents[0].eventId(); // 攻撃対象のイベントIDを取得します。
const selfVarIndex = 2;
const key = [mapId, eventId, selfVarIndex];
const i = $gameSelfSwitches.getVariableValue(key);
const z = i - 10;
$gameSelfSwitches.setVariableValue(key, z);
}
https://www.youtube.com/watch?v=FxgP2xfMAys
ツクール初心者の方質問し放題のディスコードです↓
https://discord.com/invite/dzUAC3CSMH
ねこしゃりさんありがとうございました
今回のプログラム
let eventId = this._eventId; // このイベントのID
let event = $gameMap.event(eventId); // このイベントのオブジェクトを取得
let eventX = event.x; // このイベントのマップX座標
let eventY = event.y; // このイベントのマップY座標
// イベント2が特定の方向を向いている場合の隣接座標を計算
let targetX = eventX;
let targetY = eventY;
switch (event.direction()) {
case 2: // 下を向いている
targetY += 1;
break;
case 4: // 左を向いている
targetX -= 1;
break;
case 6: // 右を向いている
targetX += 1;
break;
case 8: // 上を向いている
targetY -= 1;
break;
default:
// その他の方向(通常はあり得ないが、念のため)
break;
}
// 隣接座標にイベントが存在するか確認
let adjacentEvents = $gameMap.eventsXy(targetX, targetY);
let eventExists = adjacentEvents.length > 0;
if ( eventExists ) {
const mapId = $gameMap.mapId(); // 現在のマップIDを取得します。
const eventId = adjacentEvents[0].eventId(); // 攻撃対象のイベントIDを取得します。
const selfVarIndex = 2;
const key = [mapId, eventId, selfVarIndex];
const i = $gameSelfSwitches.getVariableValue(key);
const z = i - 10;
$gameSelfSwitches.setVariableValue(key, z);
}
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
Re: TemplateEventを使用して外部のセルフ変数を変更(加算など)したい
>ねこしゃり様
詳しいコードを教えて頂きありがとうございます。
こちらの記述に変更したところ、別マップでもセルフ変数の増減が機能しておりました。
ちゃんとコピー後のイベントIDを拾ってくれるのですね。
>DoujinRuis様
再度動画の方をありがとうございます。自分の方でも同様の動きが作成できました。
隣接マスのイベントのチェックはイベントコマンドで作っていましたが、こちらのコードの方がすっきりしていて使い勝手が良さそうですね。
お二方にアドバイスを頂いたおかげでやりたい仕様に1歩近づけました。
ありがとうございました!
詳しいコードを教えて頂きありがとうございます。
こちらの記述に変更したところ、別マップでもセルフ変数の増減が機能しておりました。
ちゃんとコピー後のイベントIDを拾ってくれるのですね。
>DoujinRuis様
再度動画の方をありがとうございます。自分の方でも同様の動きが作成できました。
隣接マスのイベントのチェックはイベントコマンドで作っていましたが、こちらのコードの方がすっきりしていて使い勝手が良さそうですね。
お二方にアドバイスを頂いたおかげでやりたい仕様に1歩近づけました。
ありがとうございました!