查看: 4961|回复: 4

[已经过期] MV难度插件

[复制链接]
梦石
2
星屑
1239
在线时间
355 小时
注册时间
2014-9-27
回帖
98
发表于 2016-12-24 16:09:30 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×


话说......有哪位大佬可以教我一下怎么在游戏的选项设置里面加一项难度的设置(分为简单、普通、困难三种难度)。
最好是有插件,并且各个难度的怪物生命、攻击、金钱、经验等百分比可以自己调整......(话说要求是不是有点太多了)
在此拜谢各位大佬。
梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2016-12-24 16:21:09 | 显示全部楼层
https://raw.githubusercontent.co ... DifficultyExtend.js

叧一個
Vitsuno_Difficulty.js[pre lang="javascript"]//=============================================================================
// Vitsuno_Difficulty.js
//-----------------------------------------------------------------------------
// Copyright (c) 2016 Tsuno Ozumi
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

var Vitsuno = Vitsuno || {};
Vitsuno.Difficulty = {};
Vitsuno.Difficulty.version = 1.00;

/*:
* @plugindesc 難易度により能力値や報酬倍率を変更できるようになります。
* @author 尾角 つの (Tsuno Ozumi)
*
* @param Init Difficulty ID
* @desc 難易度IDの初期値です。
* @default 2
*
* @param Use Option
* @desc オプションで難易度変更するかどうか。0:しない 1:する
* @default 1
*
* @param Option Name
* @desc オプションでの表示名です。
* @default 難易度
*
* @param --(Difficulty ID:1)--
*
* @param 1 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
* @default イージー
*
* @param 1 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7
*
* @param 1 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.0,1.0,1.0,1.0,1.0
*
* @param --(ID:2)-------------
*
* @param 2 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
* @default ノーマル
*
* @param 2 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
*
* @param 2 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.0,1.0,1.0,1.0,1.0
*
* @param --(ID:3)-------------
*
* @param 3 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
* @default ハード
*
* @param 3 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3
*
* @param 3 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.2,1.2,1.2,1.2,1.2
*
* @param --(ID:4)-------------
*
* @param 4 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
* @default ベリーハード
*
* @param 4 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6
*
* @param 4 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.4,1.4,1.4,1.4,1.4
*
* @param --(ID:5)-------------
*
* @param 5 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
* @default マニア
*
* @param 5 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9
*
* @param 5 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.6,1.6,1.6,1.6,1.6
*
* @param --(ID:6)-------------
*
* @param 6 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
*
* @param 6 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
*
* @param 6 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.0,1.0,1.0,1.0,1.0
*
* @param --(ID:7)-------------
*
* @param 7 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
*
* @param 7 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
*
* @param 7 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.0,1.0,1.0,1.0,1.0
*
* @param --(ID:8)-------------
*
* @param 8 : Name
* @desc 難易度名です。(使用しない場合は無記入にしてください。)
*
* @param 8 : Param Rate
* @desc 難易度によるステータス倍率です。
* 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
*
* @param 8 : Drop Rate
* @desc 難易度による報酬倍率です。
* 経験値,お金,アイテム1,アイテム2,アイテム3
* @default 1.0,1.0,1.0,1.0,1.0
*
* @help
*
* プラグインコマンド:
*    Difficulty SetID 難易度ID     # 難易度IDを変更する
*    Difficulty Next              # 難易度IDを上げる
*    Difficulty Previous          # 難易度IDを下げる
*/

// ● プラグインの設定値を取得
(function($) {
    $.parameters = PluginManager.parameters('Vitsuno_Difficulty');
    $.initDifficultyId = Number($.parameters['Init Difficulty ID']) || 2;
    $.useOption = Number($.parameters['Use Option']) === 1;
    $.optionName = $.parameters['Option Name'];
    $.data = [];
    $.data[0] = null;
   
    // ● セットアップ用の一時関数
    var setup = function(id) {
        // 設定値の取得
        var idText = '%1 : '.format(id);
        var nameData = $.parameters[idText + 'Name'] || '';
        var paramData = $.parameters[idText + 'Param Rate'];
        var dropData = $.parameters[idText + 'Drop Rate'];
        if (nameData === '' || paramData === undefined || dropData === undefined) {
            return false;
        }
        // データの準備
        var paramRate = paramData ? paramData.split(',').map(Number) : [];
        var dropRate = dropData ? dropData.split(',').map(Number) : [];
        var getRate = function(rate) {
            return typeof rate === 'number' ? rate : 1.0;
        };
        // 難易度オブジェクトの作成
        var difficulty = {};
        difficulty.name = nameData;
        difficulty.paramRate = [];
        for (var i = 0; i < 8; i++) {
            difficulty.paramRate = getRate(paramRate);
        }
        difficulty.expRate = getRate(dropRate[0]);
        difficulty.goldRate = getRate(dropRate[1]);
        difficulty.dropItemRate = [];
        for (var i = 0;; i++) {
            if (typeof dropRate[i + 2] === 'number' || i < 3) {
                difficulty.dropItemRate = getRate(dropRate[i + 2]);
            } else {
                break;
            }
        }
        $.data[id] = difficulty;
        return true;
    };
   
    for (var i = 1;; i++) {
        if (!setup(i)) {
            break;
        }
    }
   
})(Vitsuno.Difficulty);

//-----------------------------------------------------------------------------
// DataManager
//-----------------------------------------------------------------------------

// ● ニューゲームのセットアップ
Vitsuno.Difficulty.DataMgr_setupNewGame = DataManager.setupNewGame;
DataManager.setupNewGame = function() {
    Vitsuno.Difficulty.DataMgr_setupNewGame.call(this);
    SceneManager.setDifficultyMutable();
};

// ● 戦闘テストのセットアップ
Vitsuno.Difficulty.DataMgr_setupBattleTest = DataManager.setupBattleTest;
DataManager.setupBattleTest = function() {
    Vitsuno.Difficulty.DataMgr_setupBattleTest.call(this);
    SceneManager.setDifficultyMutable();
};

// ● イベントテストのセットアップ
Vitsuno.Difficulty.DataMgr_setupEventTest = DataManager.setupEventTest
DataManager.setupEventTest = function() {
    Vitsuno.Difficulty.DataMgr_setupEventTest.call(this);
    SceneManager.setDifficultyMutable();
};

// ● ゲームのロード
Vitsuno.Difficulty.DataMgr_loadGame = DataManager.loadGame;
DataManager.loadGame = function(savefileId) {
    var result = Vitsuno.Difficulty.DataMgr_loadGame.call(this, savefileId);
    if (result) {
        SceneManager.setDifficultyMutable();
    }
    return result;
};

//-----------------------------------------------------------------------------
// TextManager
//-----------------------------------------------------------------------------

// ● 難易度表示名を取得
Object.defineProperty(TextManager, 'difficulty', {
    get: function() { return Vitsuno.Difficulty.optionName; },
    configurable: true
});

//-----------------------------------------------------------------------------
// SceneManager
//-----------------------------------------------------------------------------

// ● クラス変数
SceneManager._isDifficultyMutable = false;

// ● 難易度変更可能判定
SceneManager.isDifficultyMutable = function() {
    return SceneManager._isDifficultyMutable;
};

// ● 難易度変更可能に設定
SceneManager.setDifficultyMutable = function() {
    SceneManager._isDifficultyMutable = true;
};

// ● 難易度変更可能設定を削除
SceneManager.removeDifficultyMutable = function() {
    SceneManager._isDifficultyMutable = false;
};

//-----------------------------------------------------------------------------
// Game_System
//-----------------------------------------------------------------------------

// ● 初期化
Vitsuno.Difficulty.GSystem_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
    Vitsuno.Difficulty.GSystem_initialize.call(this);
    this._difficultyId = Vitsuno.Difficulty.initDifficultyId;
};

// ● 難易度IDの取得
Game_System.prototype.difficultyId = function() {
    if (this._difficultyId === undefined) {
        this._difficultyId = Vitsuno.Difficulty.initDifficultyId;
    }
    return this._difficultyId;
};

// ● 難易度IDの設定
Game_System.prototype.setDifficultyId = function(difficultyId) {
    if (Vitsuno.Difficulty.data[difficultyId]) {
        this._difficultyId = difficultyId;
    }
};

// ● 難易度の設定
Game_System.prototype.setDifficulty = function(difficulty) {
    var id = Vitsuno.Difficulty.data.indexOf(difficulty);
    if (id >= 0) {
        this.setDifficultyId(id);
    }
};

// ● 難易度オブジェクトの取得
Game_System.prototype.difficultyObject = function() {
    return Vitsuno.Difficulty.data[this.difficultyId()];
};

// ● 難易度名の取得
Game_System.prototype.difficultyName = function() {
    var difficulty = this.difficultyObject();
    return difficulty ? difficulty.name : '';
};

// ● 難易度オブジェクト配列の取得
Game_System.prototype.difficulties = function() {
    return Vitsuno.Difficulty.data.filter(function(difficulty) {
        return difficulty;
    });
};

// ● 次の難易度に変更
Game_System.prototype.nextDifficulty = function(wrap) {
    var lastDifficulty = this.difficultyObject();
    var difficulties = this.difficulties();
    var index = difficulties.indexOf(lastDifficulty);
    index = index < 0 ? 0 : index + 1;
    index = wrap ? index % difficulties.length : index;
    if (index >= 0 && index < difficulties.length) {
        this.setDifficulty(difficulties[index]);
    }
    return lastDifficulty !== this.difficultyObject();
};

// ● 前の難易度に変更する
Game_System.prototype.previousDifficulty = function(wrap) {
    var lastDifficulty = this.difficultyObject();
    var difficulties = this.difficulties();
    var index = difficulties.indexOf(lastDifficulty);
    index = index < 0 ? 0 : index - 1;
    index = wrap ? index % difficulties.length : index;
    if (index >= 0 && index < difficulties.length) {
        this.setDifficulty(difficulties[index]);
    }
    return lastDifficulty !== this.difficultyObject();
};

//-----------------------------------------------------------------------------
// Game_Enemy
//-----------------------------------------------------------------------------

// ● 能力値倍率の取得
Vitsuno.Difficulty.GEnemy_paramRate = Game_Enemy.prototype.paramRate;
Game_Enemy.prototype.paramRate = function(paramId) {
    var rate = Vitsuno.Difficulty.GEnemy_paramRate ?
        Vitsuno.Difficulty.GEnemy_paramRate.call(this, paramId) :
        Game_Battler.prototype.paramRate.call(this, paramId);
    var difficulty = $gameSystem.difficultyObject();
    if (difficulty) {
        rate *= difficulty.paramRate[paramId];
    }
    return rate;
};

// ● 経験値の取得
Vitsuno.Difficulty.GEnemy_exp = Game_Enemy.prototype.exp;
Game_Enemy.prototype.exp = function() {
    var exp = Vitsuno.Difficulty.GEnemy_exp.call(this);
    var difficulty = $gameSystem.difficultyObject();
    if (difficulty) {
        exp *= difficulty.expRate;
    }
    return Math.floor(exp);
};

// ● お金の取得
Vitsuno.Difficulty.GEnemy_gold = Game_Enemy.prototype.gold;
Game_Enemy.prototype.gold = function() {
    var gold = Vitsuno.Difficulty.GEnemy_gold.call(this);
    var difficulty = $gameSystem.difficultyObject();
    if (difficulty) {
        gold *= difficulty.goldRate;
    }
    return Math.floor(gold);
};

// ● ドロップアイテムの作成 (再定義)
Game_Enemy.prototype.makeDropItems = function() {
    return this.enemy().dropItems.reduce(function(r, di, i) {
        if (di.kind > 0 && Math.random() * di.denominator < this.dropItemRateFromIndex(i)) {
            return r.concat(this.itemObject(di.kind, di.dataId));
        } else {
            return r;
        }
    }.bind(this), []);
};

// ● インデック付きドロップアイテムレートの取得
Game_Enemy.prototype.dropItemRateFromIndex = function(index) {
    var rate = this.dropItemRate();
    var difficulty = $gameSystem.difficultyObject();
    if (difficulty) {
        rate *= difficulty.dropItemRate[index];
    }
    return rate;
};

//-----------------------------------------------------------------------------
// Game_Interpreter
//-----------------------------------------------------------------------------

// ● プラグインコマンドの実行
Vitsuno.Difficulty.GInterpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
    Vitsuno.Difficulty.GInterpreter_pluginCommand.call(this, command, args);
    if (command === 'Difficulty') {
        switch (args[0]) {
            case 'SetID':
                $gameSystem.setDifficultyId(Number(args[1]));
                break;
            case 'Next':
                $gameSystem.nextDifficulty(false);
                break;
            case 'Previous':
                $gameSystem.previousDifficulty(false);
                break;
        }
    }
};

//-----------------------------------------------------------------------------
// Window_Options
//-----------------------------------------------------------------------------

// ● コマンドリストの作成
Vitsuno.Difficulty.WOptions_makeCommandList = Window_Options.prototype.makeCommandList;
Window_Options.prototype.makeCommandList = function() {
    Vitsuno.Difficulty.WOptions_makeCommandList.call(this);
    this.addDifficultyOptions();
};

// ● 難易度を表示するか判定
Window_Options.prototype.isDifficultyDisplayed = function() {
    return Vitsuno.Difficulty.useOption;
};

// ● 難易度が有効かどうか
Window_Options.prototype.isDifficultyEnabled = function() {
    return $gameSystem && SceneManager.isDifficultyMutable();
};

// ● 難易度コマンドの追加
Window_Options.prototype.addDifficultyOptions = function() {
    if (this.isDifficultyDisplayed()) {
        var enabled = this.isDifficultyEnabled();
        this.addCommand(TextManager.difficulty, 'difficulty', enabled);
    }
};

// ● 状態文字の取得
Vitsuno.Difficulty.WOptions_statusText = Window_Options.prototype.statusText;
Window_Options.prototype.statusText = function(index) {
    if (this.commandSymbol(index) === 'difficulty') {
        return this.isDifficultyEnabled() ? $gameSystem.difficultyName() : '';
    } else {
        return Vitsuno.Difficulty.WOptions_statusText.call(this, index);
    }
};

// ● 決定時の処理
Vitsuno.Difficulty.WOptions_processOk = Window_Options.prototype.processOk;
Window_Options.prototype.processOk = function() {
    if (this.commandSymbol(this.index()) === 'difficulty') {
        if (this.isDifficultyEnabled()) {
            if ($gameSystem.nextDifficulty(true)) {
                this.redrawItem(this.findSymbol('difficulty'));
                SoundManager.playCursor();
            }
        }
    } else {
        Vitsuno.Difficulty.WOptions_processOk.call(this);
    }
};

// ● カーソルを右に移動
Vitsuno.Difficulty.WOptions_cursorRight = Window_Options.prototype.cursorRight;
Window_Options.prototype.cursorRight = function(wrap) {
    if (this.commandSymbol(this.index()) === 'difficulty') {
        if (this.isDifficultyEnabled()) {
            if ($gameSystem.nextDifficulty(false)) {
                this.redrawItem(this.findSymbol('difficulty'));
                SoundManager.playCursor();
            }
        }
    } else {
        Vitsuno.Difficulty.WOptions_cursorRight.call(this, wrap);
    }
};

// ● カーソルを左に移動
Vitsuno.Difficulty.WOptions_cursorLeft = Window_Options.prototype.cursorLeft;
Window_Options.prototype.cursorLeft = function(wrap) {
    if (this.commandSymbol(this.index()) === 'difficulty') {
        if (this.isDifficultyEnabled()) {
            if ($gameSystem.previousDifficulty(false)) {
                this.redrawItem(this.findSymbol('difficulty'));
                SoundManager.playCursor();
            }
        }
    } else {
        Vitsuno.Difficulty.WOptions_cursorLeft.call(this, wrap);
    }
};

//-----------------------------------------------------------------------------
// Scene_Title
//-----------------------------------------------------------------------------

// ● シーン開始
Vitsuno.Difficulty.STitle_start = Scene_Title.prototype.start;
Scene_Title.prototype.start = function() {
    Vitsuno.Difficulty.STitle_start.call(this);
    SceneManager.removeDifficultyMutable();
};[/pre]

点评

第二個比較接近你的要求  发表于 2016-12-24 16:22
回复 1 0

使用道具 举报

梦石
2
星屑
1239
在线时间
355 小时
注册时间
2014-9-27
回帖
98
 楼主| 发表于 2016-12-24 17:23:29 | 显示全部楼层
tseyik 发表于 2016-12-24 16:21
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/DifficultyExtend.js

叧一個

多谢大佬,问题成功解决了{:2_249:}
回复

使用道具 举报

梦石
0
星屑
4221
在线时间
1104 小时
注册时间
2008-5-17
回帖
199

开拓者

发表于 2018-6-3 20:06:58 | 显示全部楼层
tseyik 发表于 2016-12-24 16:21
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/DifficultyExtend.js

叧一個

亲,这个难度插件要怎么才能生效??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部