【解決済み】敵がメッセージを持っていて、それを表示する機能

返信する
ランダム
記事: 9
登録日時: 2024年8月01日(木) 21:59

【解決済み】敵がメッセージを持っていて、それを表示する機能

投稿記事 by ランダム »

敵が1キャラにつき任意のひとつのヒントメッセージをもっていて、戦闘時にプレイヤーのスキルやアイテムで
そのヒントを表示させるようなゲームをつくりたいのですが、なにか方法はありますでしょうか。

敵の個別メモ欄にヒントメッセージを記述して、それを表示させるスキルと対応させるイメージです。
いろんなプラグインを探したり試したりしてみたのですが、実現できそうなものがありません。
よろしくお願いいたします。
最後に編集したユーザー ランダム [ 2024年8月14日(水) 21:28 ], 累計 1 回
アバター
くろうど
記事: 318
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡する:

Re: 敵がメッセージを持っていて、それを表示する機能

投稿記事 by くろうど »

スキルやアイテムからコモンイベントを呼び出し、コモンイベントで以下のような処理を記述すれば、文章の表示コマンドにてメモ欄情報を表示できると思います。
以下の例の場合、メモ欄のタグは <敵情報> です。

コード: 全て選択

◆変数の操作:#0021 しらべる 敵index = 直前に対象となった敵キャラのインデックス
◆スクリプト:const インデックス = $gameVariables.value(21) - 1;
:     :const 敵データ = $gameTroop.members()[インデックス].enemy();
:     :const テキスト = 敵データ.meta["敵情報"];
:     :$gameVariables.setValue(22, テキスト);
◆文章:なし, なし, ウィンドウ, 下
:  :これが\V[21]のデータだ!!
:  :\V[22]
スクリプト部

コード: 全て選択

const インデックス = $gameVariables.value(21) - 1;
const 敵データ = $gameTroop.members()[インデックス].enemy();
const テキスト = 敵データ.meta["敵情報"];
$gameVariables.setValue(22, テキスト);
スクリプトの解説が必要な場合はその旨お知らせください。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
ランダム
記事: 9
登録日時: 2024年8月01日(木) 21:59

Re: 敵がメッセージを持っていて、それを表示する機能

投稿記事 by ランダム »

回答くださり本当にありがとうございます。
今現在いろいろ試しているのですが、
TypeError Cannot read property 'enemy' of undefined
とでてしまいます。
 
初心者の返信で申し訳ありません。
-1の部分を0にしたらエラーはなくなりましたが、「0は0だ」となりました。
アバター
くろうど
記事: 318
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡する:

Re: 敵がメッセージを持っていて、それを表示する機能

投稿記事 by くろうど »

どうやらこちらの環境と挙動が違うようなので、まずは、使用しているプラグインを全てOFFにするか、新規プロジェクトで動作確認してもらってもよろしいでしょうか?
今現在いろいろ試しているのですが、
TypeError Cannot read property 'enemy' of undefined
とでてしまいます。
『いろいろ』では分からないので試したことを全て列挙してもらってもよろしいでしょうか?
「0は0だ」となりました。
いつどこの何がこうなったのか記述してもらってもよろしいでしょうか?
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
アバター
ムノクラ
記事: 2118
登録日時: 2018年2月23日(金) 11:41
連絡する:

Re: 敵がメッセージを持っていて、それを表示する機能

投稿記事 by ムノクラ »

くろうど さんが書きました:スキルやアイテムからコモンイベントを呼び出し、コモンイベントで以下のような処理を記述すれば、文章の表示コマンドにてメモ欄情報を表示できると思います。
以下の例の場合、メモ欄のタグは <敵情報> です。

コード: 全て選択

◆変数の操作:#0021 しらべる 敵index = 直前に対象となった敵キャラのインデックス
◆スクリプト:const インデックス = $gameVariables.value(21) - 1;
:     :const 敵データ = $gameTroop.members()[インデックス].enemy();
:     :const テキスト = 敵データ.meta["敵情報"];
:     :$gameVariables.setValue(22, テキスト);
◆文章:なし, なし, ウィンドウ, 下
:  :これが\V[21]のデータだ!!
:  :\V[22]
スクリプト部

コード: 全て選択

const インデックス = $gameVariables.value(21) - 1;
const 敵データ = $gameTroop.members()[インデックス].enemy();
const テキスト = 敵データ.meta["敵情報"];
$gameVariables.setValue(22, テキスト);
スクリプトの解説が必要な場合はその旨お知らせください。
補足させていただきます。

メモ欄のタグは
<敵情報:SampleText>
というように記述します。

< > : は半角を使用してください。
SampleTextの部分は、普通の日本語で表示したいテキストを記入してください。
ここがないと、metaが取得できるのはタグの有無だけになってしまいます。

- 1 は必要な処理なので、変更しないでください。

なお、1ターン目で実行すると下記のエラーになります。

コード: 全て選択

rmmz_managers.js:2036 TypeError: Cannot read property 'enemy' of undefined
    at eval (eval at Game_Interpreter.command355 (rmmz_objects.js:11296), <anonymous>:3:42)
    at Game_Interpreter.command355 (rmmz_objects.js:11296)
    at Game_Interpreter.executeCommand (rmmz_objects.js:9658)
    at Game_Interpreter.update (rmmz_objects.js:9563)
    at Game_Troop.updateInterpreter (rmmz_objects.js:5876)
    at Function.BattleManager.updateEventMain (rmmz_managers.js:2385)
    at Function.BattleManager.updateEvent (rmmz_managers.js:2378)
    at Function.BattleManager.update (rmmz_managers.js:2341)
    at Scene_Battle.updateBattleProcess (rmmz_scenes.js:3090)
    at Scene_Battle.update (rmmz_scenes.js:3077)
再現サンプルを付けます。
リードの強撃を使用してください。
添付ファイル
sample.zip
(38.45 KiB) ダウンロード数: 3 回
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: 敵がメッセージを持っていて、それを表示する機能

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。

なんだか紛糾しそうな感じもあるので、
プラグインコマンドで表示できる形にしてみました。
EnemyThought.js
(5.75 KiB) ダウンロード数: 4 回
設定例です。
001.jpg
まず、敵の思考を画像の①ように設定してください。

<ET_思考:文字列> もしくは、 <ET_Thought:文字列> で設定します。
文字列は、途中で改行してかまいません。
また、イベントコマンドの『文章の表示』と同様に制御文字が使用できます。

メッセージに顔を表示したい場合は、
<ET_顔画像:顔画像ファイル名, インデックス>
もしくは、
<ET_FaceSettings:顔画像ファイル名, インデックス>
で、顔画像の表示設定を行ってください。
img/faces/ フォルダのファイル名を指定してください。拡張子は不要です。
インデックスは通常、左上から 右方向に 0, 1, 2, ... と続き、右下が 7 です。

次に、コモンイベントを画像の②のように設定してください。
プラグインコマンドを呼ぶだけです。
引数としてパラメータが二つあります。
パラメータの説明を読んで設定してください。
通常のメッセージと同じ表示で良ければ、何も変更せず、そのままの値で大丈夫です。

最後に、思考を表示するスキルで、先程作成した、コモンイベントを呼び出すように設定してください。(画像の⓷)

ダメージの設定が無く、使用効果にコモンイベントの呼び出しのみ設定されている場合に、
効果が無かった という表示がされてしまうので、ダミーのステートを用意し、
付与と解除を設定してください。(同時に設定して大丈夫です)

以上の設定をし、戦闘で、スキルを使用すると
002.jpg
画像のような表示がされると思います。
(設定例の画像通りに作ると画面中央にメッセージウィンドウが表示されるようになってます。
デフォルトのままいじらなければ、画面下に表示されます。)

後の細かい部分は、プラグインのヘルプをご参照ください。

以上、ご確認ください。
ランダム
記事: 9
登録日時: 2024年8月01日(木) 21:59

Re: 敵がメッセージを持っていて、それを表示する機能

投稿記事 by ランダム »

皆様、丁寧に解説いただき本当にありがとうございます。

くろうど様
回答の際、こちらの環境や手法を十分に説明できずご迷惑おかけいたしました。
その後、自分の設定ミスがあったこともエラーの原因とわかりました。
(スキル対象者を敵単体にしていなかった)
ご迷惑お手間をおかけして本当にすみませんでした。

ムノクラ様
丁寧に解説いただき本当にありがとうございます。
メモのタグの描き方など再度確認することができましたことと
スクリプトを素人がいじることはエラーにつながることも再認識いたしました。

ecf5DTTzl6h6lJj02様
お忙しい中プラグインを作成いただき本当にありがとうございました。
プラグインは、完全に自分の希望どおりのうごきでした。
ウィンドウ位置調節までできるようになっていて本当に助かります。


解決済みにさせていただきます。
皆様本当にありがとうございました。
返信する

“MZ:質問”に戻る