【解決済み】メニュー画面のアクター情報にステータス情報を表示したい

muraichi
記事: 8
登録日時: 2024年4月04日(木) 22:49

【解決済み】メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by muraichi » 2024年4月04日(木) 23:20

お忙しいところ失礼いたします。恐縮ですが質問させてください。

ツクールMZではメニュー画面を表示すると、アイテムやステータスなどの選択肢と、アクターの名前やレベルなどのアクター情報が表示されると思います。
ステータスを選択すると、二つ名や装備、攻撃力などのパラメーターが表示されます。

このステータスの表示を、アクター情報に表示することは可能でしょうか。
つまり、メニュー画面を開くとアクターの名前やレベルに加えて、二つ名や攻撃力などのパラメーターも表示されるようにしたいです。

メニュー画面はルルの教会様の「LL_MenuScreenCustom.js」を使用して改変しています。
このメニュー画面を活かしながら上記の質問内容を実現する場合、rmmz_windowsのスクリプトを書き換える必要があるような気がしています。

大変恐縮ですがご教授いただけますと幸いです。
最後に編集したユーザー muraichi on 2024年4月06日(土) 21:27 [ 編集 1 回目 ]

アバター
DoujinRuis
記事: 136
登録日時: 2022年10月25日(火) 10:59

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by DoujinRuis » 2024年4月05日(金) 13:05

確認お願いします
https://www.youtube.com/watch?v=0sG97n4CzVE

ツクール初心者の方質問し放題のディスコードです↓
https://discord.com/invite/dzUAC3CSMH

// アクターの攻撃力を「攻撃力:数値」という形式で表示するメソッドを追加
Window_StatusBase.prototype.drawActorAttack = function(actor, x, y, width) {
width = width || 186; // 幅が指定されていない場合のデフォルト値
const attack = actor.atk; // アクターの攻撃力を取得
const attackText = `攻撃力:${attack}`; // 「攻撃力:数値」という形式のテキストを作成
this.drawText(attackText, x, y, width, 'center'); // 攻撃力をテキストとして表示
};

Window_StatusBase.prototype.exDrawActorSimpleStatus = function(actor, x, y, width) {
const lineHeight = this.lineHeight();
if (actorNameLH > -1) this.drawActorName(actor, x + actorNameX, y + lineHeight * actorNameLH, width - actorNameX);
if (actorLevelLH > -1) this.drawActorLevel(actor, x + actorLevelX, y + lineHeight * actorLevelLH);
if (actorIconLH > -1) this.drawActorIcons(actor, x + actorIconX, y + lineHeight * actorIconLH, width - actorIconX);
if (actorClassLH > -1) this.drawActorClass(actor, x + actorClassX, y + lineHeight * actorClassLH, width - actorClassX);
if (actorGaugeLH > -1) this.placeBasicGauges(actor, x + actorGaugeX, y + lineHeight * actorGaugeLH);
// 攻撃力を表示する
this.drawActorAttack(actor, x, y + lineHeight * 3, width);
};
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/channel/UCQV4_A ... ZxTrkLKbyg

Twitter
https://twitter.com/kQ1NG4MmNGK1lRw
muraichi
記事: 8
登録日時: 2024年4月04日(木) 22:49

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by muraichi » 2024年4月05日(金) 19:27

迅速にご教授頂き誠にありがとうございます。
動画、大変参考になりました。
Ruisさんに書いていただいたスクリプトは私のイメージ通りでした。

攻撃力に加え、防御力や魔法力、魔法防御や俊敏性、運も追加したいです。

例えば防御力を追加したい場合は、以下のスクリプトを追加するのだと思われます(門外漢なので間違っていたらご容赦ください…)。
―――――――――――――――――――――――――――――
// アクターの防御力を「防御力:数値」という形式で表示するメソッドを追加
Window_StatusBase.prototype.drawActor● = function(actor, x, y, width) {
width = width || 186; // 幅が指定されていない場合のデフォルト値
const attack = actor.●; // アクターの攻撃力を取得
const ●Text = `防御力:${●}`; // 「攻撃力:数値」という形式のテキストを作成
this.drawText(●Text, x, y, width, 'center'); // 攻撃力をテキストとして表示
};

// 攻撃力を表示する
this.drawActor●(actor, x, y + lineHeight * 3, width);
};
―――――――――――――――――――――――――――――
この場合、●の部分が分かりません…。
つまり、攻撃ならば「atk」や「attack」が書かれていましたが、防御力だと何を使えば良いのでしょうか。
魔法力や魔法防御、俊敏性、運に対応する文字列を教えていただけると幸いです。

その他、下記画面の「二つ名」と「次の経験値」、「次のレベルまで」、「装備」が表示できればありがたいですが、可能なのでしょうか。もし難しいようでしたら大丈夫です。

質問ばかりで大変恐縮ですがご教授いただけましたら幸いです。
何卒よろしくお願い申し上げます。
最後に編集したユーザー muraichi on 2024年4月17日(水) 17:43 [ 編集 1 回目 ]
アバター
DoujinRuis
記事: 136
登録日時: 2022年10月25日(火) 10:59

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by DoujinRuis » 2024年4月05日(金) 19:53

全て可能ですが、murakiti8823さんのメニュー画面のレイアウトを見せて頂けたらと思います。

狭いスペースなら文字を小さくしないと入りきらないですね
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/channel/UCQV4_A ... ZxTrkLKbyg

Twitter
https://twitter.com/kQ1NG4MmNGK1lRw
muraichi
記事: 8
登録日時: 2024年4月04日(木) 22:49

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by muraichi » 2024年4月05日(金) 22:43

お世話になります。
ご対応頂き誠にありがとうございます。
メニュー画面は以下の通りです。

写真赤丸の部分にステータス情報を表示したいと考えています。
「二つ名」と「次の経験値」、「次のレベルまで」は必ず表示したいのですが、装備については可能であれば表示したいという感じです(装飾品は表示したいかもです…)。

大変恐縮ですがご教授いただけましたら幸いです。
最後に編集したユーザー muraichi on 2024年4月17日(水) 17:43 [ 編集 3 回目 ]
アバター
DoujinRuis
記事: 136
登録日時: 2022年10月25日(火) 10:59

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by DoujinRuis » 2024年4月06日(土) 15:49

今製作中なのですが、ゲームに関して質問です。

パーティーメンバーは複数仲間になりますか?
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/channel/UCQV4_A ... ZxTrkLKbyg

Twitter
https://twitter.com/kQ1NG4MmNGK1lRw
muraichi
記事: 8
登録日時: 2024年4月04日(木) 22:49

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by muraichi » 2024年4月06日(土) 20:06

パーティーメンバーは複数にはなりません。
最後まで一人です。
アバター
DoujinRuis
記事: 136
登録日時: 2022年10月25日(火) 10:59

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by DoujinRuis » 2024年4月06日(土) 20:51

確認お願いします
https://www.youtube.com/watch?v=VdrTA5Lv_Rc


// アクターのすべてのステータスを表示するメソッド
Window_StatusBase.prototype.drawActorParameter = function(x, y, width) {
const lineHeight = this.lineHeight();
const attack_dr = $gameParty.leader().atk; // 攻撃力
const defense_dr = $gameParty.leader().def; // 防御力
const magicAttack_dr = $gameParty.leader().mat; // 魔法力
const magicDefense_dr = $gameParty.leader().mdf; // 魔法防御
const agility_dr = $gameParty.leader().agi; // 敏捷性
const luck_dr = $gameParty.leader().luk; // 運

const params = [
{ name: "攻撃力", value: attack_dr },
{ name: "防御力", value: defense_dr },
{ name: "魔法力", value: magicAttack_dr },
{ name: "魔法防御", value: magicDefense_dr },
{ name: "敏捷性", value: agility_dr },
{ name: "運", value: luck_dr }
];

params.forEach((param, index) => {
const paramText = `${param.name}:${param.value}`;
this.drawText(paramText, x, y + lineHeight * index, width, 'left');
});
};

Window_StatusBase.prototype.drawActorDetails = function(x, y, width) {
const lineHeight = this.lineHeight();
const actor_dr = $gameParty.leader(); // パーティーリーダーを取得

// 表示したい情報を配列にまとめる
const details = [
{ label: "職業", value: actor_dr.currentClass().name },
{ label: "二つ名", value: actor_dr.nickname() },
{ label: "現在の経験値", value: actor_dr.currentExp() - actor_dr.currentLevelExp() },
{ label: "次のレベルまで", value: actor_dr.nextRequiredExp() || '---' } // nextRequiredExpがundefinedの場合は'---'と表示
];

// 配列をループして、各情報を画面に表示
details.forEach(detail => {
this.drawText(`${detail.label}:${detail.value}`, x, y, width, 'left');
y += lineHeight; // 次の項目を表示する位置を下げる
});
};

Window_StatusBase.prototype.drawActorEquips = function(x, y, width) {
const lineHeight = this.lineHeight();
const actor_dr = $gameParty.leader(); // パーティーリーダーを取得
const equips = actor_dr.equips(); // 装備品の配列を取得

const equipTypes = ["武器", "盾", "頭", "身体", "装飾品"];

equipTypes.forEach((type, index) => {
// 装備品があればその名前を、なければ「なし」と表示
const equipName = equips[index] ? equips[index].name : "なし";
this.drawText(`${type}:${equipName}`, x, y, width, 'left');
y += lineHeight; // 次の項目を表示する位置を下げる
});
};

Window_StatusBase.prototype.exDrawActorSimpleStatus = function(actor, x, y, width) {
console.log(actor.atk); // アクターの攻撃力をログに出力
const lineHeight = this.lineHeight();
if (actorNameLH > -1) this.drawActorName(actor, x + actorNameX, y + lineHeight * actorNameLH, width - actorNameX);
if (actorLevelLH > -1) this.drawActorLevel(actor, x + actorLevelX, y + lineHeight * actorLevelLH);
if (actorIconLH > -1) this.drawActorIcons(actor, x + actorIconX, y + lineHeight * actorIconLH, width - actorIconX);
if (actorClassLH > -1) this.drawActorClass(actor, x + actorClassX, y + lineHeight * actorClassLH, width - actorClassX);
if (actorGaugeLH > -1) this.placeBasicGauges(actor, x + actorGaugeX, y + lineHeight * actorGaugeLH);

this.drawActorParameter(8, 250 + lineHeight * 1, width);
this.drawActorDetails(250,0 + lineHeight * 1, width);
this.drawActorEquips(250 ,250 + lineHeight * 1, width);
};
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/channel/UCQV4_A ... ZxTrkLKbyg

Twitter
https://twitter.com/kQ1NG4MmNGK1lRw
muraichi
記事: 8
登録日時: 2024年4月04日(木) 22:49

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by muraichi » 2024年4月06日(土) 21:25

お世話になります。
今しがた確認いたしました。私の思い通りのステータス情報になりました!
お手数おかけして大変申し訳ありませんでした。そして誠にありがとうございました!
本当にすごいです…!

ツクールでのゲーム作りは初めてなので試行錯誤しておりますが、無事完成までこぎつけるよう頑張りたいと思います。

改めてお忙しい中スクリプトを組んで下さり誠にありがとうございました!
muraichi
記事: 8
登録日時: 2024年4月04日(木) 22:49

Re: メニュー画面のアクター情報にステータス情報を表示したい

投稿記事by muraichi » 2024年4月17日(水) 17:35

muraichi さんが書きました:お世話になります。
ご対応頂き誠にありがとうございます。
メニュー画面は以下の通りです。


写真赤丸の部分にステータス情報を表示したいと考えています。
「二つ名」と「次の経験値」、「次のレベルまで」は必ず表示したいのですが、装備については可能であれば表示したいという感じです(装飾品は表示したいかもです…)。

大変恐縮ですがご教授いただけましたら幸いです。
最後に編集したユーザー muraichi on 2024年4月17日(水) 17:41 [ 編集 1 回目 ]

“MZ:質問” へ戻る