ボスとして登場するようなエネミーの名前をゲーム中の任意のタイミングで変更できる方法を探しています.
(例:「???」や「謎の男」といったぼかした名前から本当の名前に変更)
条件としては
・ゲーム終了後にも変更が維持される
・変更された、ということがセーブデータ間で共通されない
・「変身」機能を用いない(バトルで戦うエネミーをID05→ID06に変えて名前が変わったように見せる、という方法ではない)
dataEnemies.name='...'で出来るのかと思っていたのですが、ゲーム終了後に維持されないということで、
自分では解決策が分からずにいます.
教えていただけると幸いです.
エネミー名変更の仕方
Re: エネミー名変更の仕方
セーブ内容に含まれるゲームオブジェクトの中に記録用ハッシュを作るのが適当じゃないですか
MVなら$gameSystemあたりがマシですかね
$gameSystem.setEnemyName(enemyId, "新しい名前");で名前の設定。
$gameSystem.cancelEnemyName(enemyId);で設定した名前の取り消しを可能にします。
※少し気になるところがあったのでコードをリファクタリング。機能に変更はないです。
MVなら$gameSystemあたりがマシですかね
コード: 全て選択
(() => {
'use strict'
const _Game_System_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
_Game_System_initialize.apply(this, arguments);
this._enemyNameHash = {};
};
Game_System.prototype.setEnemyName = function(enemyId, enemyName) {
this._enemyNameHash[enemyId] = enemyName;
};
Game_System.prototype.cancelEnemyName = function(enemyId) {
delete this._enemyNameHash[enemyId];
};
Game_System.prototype.enemyName = function(enemyId) {
return this._enemyNameHash[enemyId];
};
const _Game_Enemy_originalName = Game_Enemy.prototype.originalName;
Game_Enemy.prototype.originalName = function() {
return return $gameSystem.enemyName(this._enemyId) || _Game_Enemy_originalName.apply(this, arguments);
};
})();
$gameSystem.setEnemyName(enemyId, "新しい名前");で名前の設定。
$gameSystem.cancelEnemyName(enemyId);で設定した名前の取り消しを可能にします。
※少し気になるところがあったのでコードをリファクタリング。機能に変更はないです。
最後に編集したユーザー 名無し蛙 on 2022年8月04日(木) 00:55 [ 編集 1 回目 ]
Re: エネミー名変更の仕方
一発で解決してくださって誠にありがとうございます!
欲しかった機能ドンピシャで本当に助かりました!
欲しかった機能ドンピシャで本当に助かりました!