ロト君のサイト by lotokunn

L'sCore ロト君のサイトへようこそ!

  1. TOP
  2. パソコン
  3. ツクールMV プラグイン LotokunnBattleAfterSe

ツクールMV プラグイン LotokunnBattleAfterSe

皆さん今日は、今晩は!ロト君です。
今回は、ツクールMVのプラグインを自作しましたので掲載致します。

1.プラグイン

私が自作したプラグインはMVのプレーンな状態での戦闘を行ってレベルが上がった際に、レベルアップSEと、アップステータスを表示するものです。

コードは下記のモノです。

//=============================================================================
// LotokunnBattleAfterSe.js
//=============================================================================

/*:ja
 * @plugindesc 戦闘時にレベルアップしたらサウンドを鳴らします。
 * @author Taisei Yamanokuchi@lotokunn
 *
 * @param Sounds
 * @desc レベルアップ時の音です。
 * @default Up1
 * @require 1
 * @dir audio/se
 * @type file
 *
 * @param ShowText
 * @desc ステータス表示有無の許可
 * @default true
 * @require 1
 * @type select
 * @option true
 * @value true
 * @option false
 * @value false
 * 
 * @help
 * 詳細:
 *  戦闘終了直後にレベルが上がっとけばSoundsを流します。
 *  その後、上がったステータスなどを表記します。
 *
 */
(function () {
    'use strict';   //  scriptの厳格化

    var pluginName = "LotokunnBattleAfterSe";         	// plagin name

    var pars = PluginManager.parameters(pluginName);
    var sounds = String(pars['Sounds']);                // String text
    var show_text = Boolean(pars['ShowText']);          // true or fales

    SoundManager.playLevelUp = function() {
        var Se = {
            "name": sounds,
            "pan": 0,
            "pitch": 100,
            "volume": 90
        };
        AudioManager.playSe(Se);
    };

Game_Actor.prototype.changeExp = function(exp, show) {
    this._exp[this._classId] = Math.max(exp, 0);
    var lastLevel = this._level;
    var lastSkills = this.skills();
    while (!this.isMaxLevel() && this.currentExp() >= this.nextLevelExp()) {
        var _last_actor = $gameActors.actor(this._actorId);
        var _last_myStatus = {
            0 : _last_actor.mhp,
            1 : _last_actor.mmp,
            2 : _last_actor.atk,
            3 : _last_actor.def,
            4 : _last_actor.mat,
            5 : _last_actor.mdf,
            6 : _last_actor.agi,
            7 : _last_actor.luk
        };
        this.levelUp();
    }
    while (this.currentExp() < this.currentLevelExp()) {
        this.levelDown();
    }
    if (show && this._level > lastLevel) {
        this.displayLevelUp(this.findNewSkills(lastSkills));
        var _actor = $gameActors.actor(this._actorId);
        var _myStatus = {
            0 : _actor.mhp,
            1 : _actor.mmp,
            2 : _actor.atk,
            3 : _actor.def,
            4 : _actor.mat,
            5 : _actor.mdf,
            6 : _actor.agi,
            7 : _actor.luk
        };
        for(var i=0;i<8;i++){
            _myStatus[i] = _myStatus[i] - _last_myStatus[i];
        }

        var text = $dataSystem.terms.params[0] + "+" + _myStatus[0] + "  " + $dataSystem.terms.params[1] + "+" + _myStatus[1]
        + "\n" + $dataSystem.terms.params[2] + "+" + _myStatus[2] + "  " + $dataSystem.terms.params[3] + "+" + _myStatus[3]
        + "\n" + $dataSystem.terms.params[4] + "+" + _myStatus[4] + "  " + $dataSystem.terms.params[5] + "+" + _myStatus[5]
        + "\n" + $dataSystem.terms.params[6] + "+" + _myStatus[6] + "  " + $dataSystem.terms.params[7] + "+" + _myStatus[7];

        // ShowTextがtrueの時、表示します。
        if(show_text == true){
            $gameMessage.newPage();
            $gameMessage.add(text);
        }
        SoundManager.playLevelUp();
    }
    this.refresh();
};

})();

SoundsShowTextの値を変える事によって、レベルアップの際にSEを鳴らし、ステータス上昇の表示・非表示が行えます。

ダウンロード先は下記のモノです。

LotokunnBattleAfterSe.js

2.面白い計算式

2-1.ダメージ計算

通常のダメージ計審式はこちらです。

a.atk * 4 - b.def * 2

この上の計算式だと『攻撃力』が弱い時に必ず、『0ダメージ』になってしまいます。
『攻撃力』が弱い時に、『運』とランダム関数を使って少しダメージが与えられる式は下記のモノです。

if(  a.atk * 4 - b.def * 2 >= 0 ){ Math.max( a.atk * 4 - b.def * 2 ) }else{ if( a.luk > b.luk ){ Math.max( a.luk - b.luk ) }else{ Math.max( Math.floor( Math.random () * 4 ) + 0 ) } }

上記の場合、『攻撃力』が弱い時に『運』が強ければ『運』の値を差し引いたモノがダメージになる場合と、『運』が弱ければ0~3ダメージをランダムに発生させる様にしています。

2-2.レベル5デスの計算式

他にもファイナルファンタジーの『レベル5デス』ような式は下記のモノです。

if ( b.level%5 == 0 ) {9999} else {0}

レベルが5で割り切れる際に『9999ダメージ』与える事が出来ますね!

3.まとめ

初めて自作しましたが、色々とjsonファイルを開いたりして、情報を取得できました。

テストプレーの際にF8キーを押すと、console.log()が参照できます。
恐らく、デバッグモードですね。

他にもF5キーでリロード。F9キーでスイッチ・変数チェックが可能です。

プロジェクト作成中にはかなり強力に使える機能ですね!

では、今回はここまでで(>ω<)ノシ


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA



Hello!!

皆さんこんにちは!こんばんは!!ロト君です。

このサイトは私が興味を持ったモノやコトについて掲載をしていくサイトです。

主にパソコン関係やアニメ・ゲーム等について掲載すたいと思いますので、 どうぞ宜しくお願い致します!

コメント等はTwitter等を活用して頂けると有り難いです!!

Twitter: ロト君@lotokunn