敵IDの取得について

返信する
kag
記事: 4
登録日時: 2017年8月07日(月) 19:31

敵IDの取得について

投稿記事 by kag »

rpg_managers.js の BattleManager.displayStartMessages の部分で、
敵の出現コメントと一緒にその敵のデーターベースのID番号を表示したいです!
色々試してみましたが取得できませんでした!
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 敵IDの取得について

投稿記事 by しぐれん »

まず問題を分けましょう。
敵のIDをconsole.log()で出力はできましたか?
また、適当な数字を仮に画面に出すのはどうでしょうか?
敵のIDが取れないなら代わりに「234」のような適当な数字を画面に出すのも有効な手です。
それから次に進んでみてはどうでしょうか?

なお、画面に表示を出す部分はBattleManager内でthis._logWindow.push()などで表示します。
logWindowは少し複雑なのでご注意を。
現在、プラグイン依頼はお休み中です。
kag
記事: 4
登録日時: 2017年8月07日(月) 19:31

Re: 敵IDの取得について

投稿記事 by kag »

$gameMessage.add(TextManager.emerge.format(name));
ここの()の中に適当な数字を入れたらその数字が出てきますね
ここに敵のIDの番号を入力できたら理想的です!
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 敵IDの取得について

投稿記事 by しぐれん »

敵の管理番号は.enemyId()で取得できます。

調べましたが、本体スクリプトを改造する必要があります。

コード: 全て選択

BattleManager.displayStartMessages = function() {
    $gameTroop.enemyNames().forEach(function(name) {
        $gameMessage.add(TextManager.emerge.format(name));
    });
    if (this._preemptive) {
        $gameMessage.add(TextManager.preemptive.format($gameParty.name()));
    } else if (this._surprise) {
        $gameMessage.add(TextManager.surprise.format($gameParty.name()));
    }
};
この部分が出現時に敵モンスターの名前を表示する処理ですが、これは名前の一覧だけですので敵のIDなどの情報が欠落しています。
.enemyNames()をmembers()にして、Game_Enemy型に対してforEachする必要があります。
改造して元と同じ動きになるよう改造すると、大体こんな感じです。

コード: 全て選択

BattleManager.displayStartMessages = function() {
    $gameTroop.members().forEach(function(enemy) {
        $gameMessage.add(TextManager.emerge.format(enemy.name()));
    });
    if (this._preemptive) {
        $gameMessage.add(TextManager.preemptive.format($gameParty.name()));
    } else if (this._surprise) {
        $gameMessage.add(TextManager.surprise.format($gameParty.name()));
    }
};
名前表示部分は把握しているようなので、enemy.enamyId() +':'+enemy.name() のような記述にして試してみてください。
現在、プラグイン依頼はお休み中です。
kag
記事: 4
登録日時: 2017年8月07日(月) 19:31

Re: 敵IDの取得について

投稿記事 by kag »

なるほど
.enamyIdと入力しても表示されないのはそういう事だったのですね
教えていただき有難うございます!

BattleManager.displayStartMessages = function () {
$gameTroop.members().forEach(function (enemy) {
$gameMessage.add(enemy.enamyId() + ':' + enemy.name());
});
if (this._preemptive) {
$gameMessage.add(TextManager.preemptive.format($gameParty.name()));
} else if (this._surprise) {
$gameMessage.add(TextManager.surprise.format($gameParty.name()));
}
};

ただ、しぐれん様のを参考にしこのように書き換えましたが、undefined is not a functionと出てしまいます
どこがいけないのでしょうか?
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 敵IDの取得について

投稿記事 by しぐれん »

Visual Studio Codeでステップ実行して試してみるのがいいと思います。
導入用の資料はネットにあるので、調べてみてください。
ツクールMV vscodeあたりでググると出てきます。
現在、プラグイン依頼はお休み中です。
アバター
まっつUP
記事: 1149
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 敵IDの取得について

投稿記事 by まっつUP »

kag様

enamyIdと言う名の関数はないので
enemy.enemyId()でいくと思います。
追記:誤字であることに気付いてませんでした。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
kag
記事: 4
登録日時: 2017年8月07日(月) 19:31

Re: 敵IDの取得について

投稿記事 by kag »

何故か上手くいかないと思ったらenemy.enemyId()の部分を誤字していました!
直したらちゃんとIDが表示されました!
教えて頂いてありがとうございます :!:
返信する

“MV:質問”に戻る