レベルアップのタイミングを制御

tanaka1105
記事: 46
登録日時: 2020年12月28日(月) 23:16

レベルアップのタイミングを制御

投稿記事by tanaka1105 » 2022年12月09日(金) 14:05

いつもお世話になっております。
rpgツクールのデフォルトの仕様において、主なレベルアップのタイミングは戦闘終了時などで経験値が一定数を超えた時に実行されていますが、レベルアップのタイミングを制御する手段を探しております。
WIZなどのRPGでは、アクターのレベルアップタイミングが宿屋に泊まった時に実行されていて、これと同じようなことを実現したいです。
具体的には、
・戦闘などで経験値を得たタイミングではレベルアップしない。
・設定した任意のタイミングで(蓄積している経験値分)レベルアップする(イベントでスクリプト実行時にレベルアップするかどうか判定する)
としたいです。
何卒お力添え頂けますよう宜しくお願いします。

アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: レベルアップのタイミングを制御

投稿記事by 剣崎 宗二 » 2022年12月14日(水) 01:59

実質的には経験値加算の部分を、レベルアップから分割するだけの話かと考えます。
以下を新規プラグインとしてお試しください。


コード: 全て選択

Game_Actor.prototype.changeExp = function(exp, show) {
    this._exp[this._classId] = Math.max(exp, 0);
};

Game_Actor.prototype.checkLeveling = function() {
    const lastLevel = this._level;
    const lastSkills = this.skills();
    while (!this.isMaxLevel() && this.currentExp() >= this.nextLevelExp()) {
        this.levelUp();
    }
    while (this.currentExp() < this.currentLevelExp()) {
        this.levelDown();
    }
    if (this._level > lastLevel) {
        this.displayLevelUp(this.findNewSkills(lastSkills));
    }
    this.refresh();
}


レベルアップ判定(例で挙げられました宿屋)の場合は、アクターのcheckLevelingを実行するだけです。
例としてスクリプトで

コード: 全て選択

$gameActors.actor(1).checkLeveling();

で、ID1のアクターが(EXPが十分な場合はその分)LvUpします。

判定の簡略化のため非表示レベルアップの機能は切っております。
そちらを再実装する場合は元コードのshowの部分の使い方をご確認ください。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
tanaka1105
記事: 46
登録日時: 2020年12月28日(月) 23:16

Re: レベルアップのタイミングを制御

投稿記事by tanaka1105 » 2022年12月15日(木) 10:57

返信が遅くなり申し訳ございません。
剣崎様、ご対応頂き誠にありがとうございます。これでWIZっぽいレベルアップが実現できます(宿屋のありがたみ向上+町への帰還の達成感向上)

“MZ:プラグイン素材のリクエスト” へ戻る