Project1

标题: 请问有路过的大佬知道怎么使用这个难度插件吗 [打印本页]

作者: j296196585    时间: 2019-8-12 05:36
标题: 请问有路过的大佬知道怎么使用这个难度插件吗
本帖最后由 j296196585 于 2019-8-12 05:37 编辑

虽然汉化了但是就是不明白怎么使用好无语

JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // Vitsuno_Difficulty.js
  3. //-----------------------------------------------------------------------------
  4. // Copyright (c) 2016 Tsuno Ozumi
  5. // Released under the MIT license
  6. // [url]http://opensource.org/licenses/mit-license.php[/url]
  7. //=============================================================================
  8.  
  9. var Vitsuno = Vitsuno || {};
  10. Vitsuno.Difficulty = {};
  11. Vitsuno.Difficulty.version = 1.00;
  12.  
  13. /*:
  14.  * @plugindesc 根据难易度可以变更能力值和报酬倍率。
  15.  * @author 尾角 つの (Tsuno Ozumi)
  16.  *
  17.  * @param Init Difficulty ID
  18.  * @desc 难度ID的初始值。
  19.  * @default 2
  20.  *
  21.  * @param Use Option
  22.  * @desc 选项是否修改难度。0:否1:
  23.  * @default 1
  24.  *
  25.  * @param Option Name
  26.  * @desc 选项中的显示名称。
  27.  * @default 難易度
  28.  *
  29.  * @param --(Difficulty ID:1)--
  30.  *
  31.  * @param 1 : Name
  32.  * @desc 难易度名。(如果不使用的话请无记入。)
  33.  * @default イージー
  34.  *
  35.  * @param 1 : Param Rate
  36.  * @desc 難易度によるステータス倍率です。
  37.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  38.  * @default 0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7
  39.  *
  40.  * @param 1 : Drop Rate
  41.  * @desc 難易度による報酬倍率です。
  42.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  43.  * @default 1.0,1.0,1.0,1.0,1.0
  44.  *
  45.  * @param --(ID:2)-------------
  46.  *
  47.  * @param 2 : Name
  48.  * @desc 難易度名です。(使用しない場合は無記入にしてください。)
  49.  * @default ノーマル
  50.  *
  51.  * @param 2 : Param Rate
  52.  * @desc 難易度によるステータス倍率です。
  53.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  54.  * @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
  55.  *
  56.  * @param 2 : Drop Rate
  57.  * @desc 難易度による報酬倍率です。
  58.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  59.  * @default 1.0,1.0,1.0,1.0,1.0
  60.  *
  61.  * @param --(ID:3)-------------
  62.  *
  63.  * @param 3 : Name
  64.  * @desc 難易度名です。(使用しない場合は無記入にしてください。)
  65.  * @default ハード
  66.  *
  67.  * @param 3 : Param Rate
  68.  * @desc 難易度によるステータス倍率です。
  69.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  70.  * @default 1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3
  71.  *
  72.  * @param 3 : Drop Rate
  73.  * @desc 難易度による報酬倍率です。
  74.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  75.  * @default 1.2,1.2,1.2,1.2,1.2
  76.  *
  77.  * @param --(ID:4)-------------
  78.  *
  79.  * @param 4 : Name
  80.  * @desc 難易度名です。(使用しない場合は無記入にしてください。)
  81.  * @default ベリーハード
  82.  *
  83.  * @param 4 : Param Rate
  84.  * @desc 難易度によるステータス倍率です。
  85.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  86.  * @default 1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6
  87.  *
  88.  * @param 4 : Drop Rate
  89.  * @desc 難易度による報酬倍率です。
  90.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  91.  * @default 1.4,1.4,1.4,1.4,1.4
  92.  *
  93.  * @param --(ID:5)-------------
  94.  *
  95.  * @param 5 : Name
  96.  * @desc 難易度名です。(使用しない場合は無記入にしてください。)
  97.  * @default マニア
  98.  *
  99.  * @param 5 : Param Rate
  100.  * @desc 難易度によるステータス倍率です。
  101.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  102.  * @default 1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9
  103.  *
  104.  * @param 5 : Drop Rate
  105.  * @desc 難易度による報酬倍率です。
  106.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  107.  * @default 1.6,1.6,1.6,1.6,1.6
  108.  *
  109.  * @param --(ID:6)-------------
  110.  *
  111.  * @param 6 : Name
  112.  * @desc 難易度名です。(使用しない場合は無記入にしてください。)
  113.  *
  114.  * @param 6 : Param Rate
  115.  * @desc 難易度によるステータス倍率です。
  116.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  117.  * @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
  118.  *
  119.  * @param 6 : Drop Rate
  120.  * @desc 難易度による報酬倍率です。
  121.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  122.  * @default 1.0,1.0,1.0,1.0,1.0
  123.  *
  124.  * @param --(ID:7)-------------
  125.  *
  126.  * @param 7 : Name
  127.  * @desc 難易度名です。(使用しない場合は無記入にしてください。)
  128.  *
  129.  * @param 7 : Param Rate
  130.  * @desc 難易度によるステータス倍率です。
  131.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  132.  * @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
  133.  *
  134.  * @param 7 : Drop Rate
  135.  * @desc 難易度による報酬倍率です。
  136.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  137.  * @default 1.0,1.0,1.0,1.0,1.0
  138.  *
  139.  * @param --(ID:8)-------------
  140.  *
  141.  * @param 8 : Name
  142.  * @desc 難易度名です。(使用しない場合は無記入にしてください。)
  143.  *
  144.  * @param 8 : Param Rate
  145.  * @desc 難易度によるステータス倍率です。
  146.  * 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
  147.  * @default 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
  148.  *
  149.  * @param 8 : Drop Rate
  150.  * @desc 難易度による報酬倍率です。
  151.  * 経験値,お金,アイテム1,アイテム2,アイテム3
  152.  * @default 1.0,1.0,1.0,1.0,1.0
  153.  *
  154.  * @help
  155.  *
  156.  * プラグインコマンド:
  157.  *    Difficulty SetID 難易度ID     # 更改难度ID
  158.  *    Difficulty Next              # 提高难易度ID
  159.  *    Difficulty Previous          # 降低难度ID
  160.  */
  161.  
  162. // ● プラグインの設定値を取得
  163. (function($) {
  164.     $.parameters = PluginManager.parameters('Vitsuno_Difficulty');
  165.     $.initDifficultyId = Number($.parameters['Init Difficulty ID']) || 2;
  166.     $.useOption = Number($.parameters['Use Option']) === 1;
  167.     $.optionName = $.parameters['Option Name'];
  168.     $.data = [];
  169.     $.data[0] = null;
  170.  
  171.     // ● セットアップ用の一時関数
  172.     var setup = function(id) {
  173.         // 設定値の取得
  174.         var idText = '%1 : '.format(id);
  175.         var nameData = $.parameters[idText + 'Name'] || '';
  176.         var paramData = $.parameters[idText + 'Param Rate'];
  177.         var dropData = $.parameters[idText + 'Drop Rate'];
  178.         if (nameData === '' || paramData === undefined || dropData === undefined) {
  179.             return false;
  180.         }
  181.         // データの準備
  182.         var paramRate = paramData ? paramData.split(',').map(Number) : [];
  183.         var dropRate = dropData ? dropData.split(',').map(Number) : [];
  184.         var getRate = function(rate) {
  185.             return typeof rate === 'number' ? rate : 1.0;
  186.         };
  187.         // 難易度オブジェクトの作成
  188.         var difficulty = {};
  189.         difficulty.name = nameData;
  190.         difficulty.paramRate = [];
  191.         for (var i = 0; i < 8; i++) {
  192.             difficulty.paramRate[i] = getRate(paramRate[i]);
  193.         }
  194.         difficulty.expRate = getRate(dropRate[0]);
  195.         difficulty.goldRate = getRate(dropRate[1]);
  196.         difficulty.dropItemRate = [];
  197.         for (var i = 0;; i++) {
  198.             if (typeof dropRate[i + 2] === 'number' || i < 3) {
  199.                 difficulty.dropItemRate[i] = getRate(dropRate[i + 2]);
  200.             } else {
  201.                 break;
  202.             }
  203.         }
  204.         $.data[id] = difficulty;
  205.         return true;
  206.     };
  207.  
  208.     for (var i = 1;; i++) {
  209.         if (!setup(i)) {
  210.             break;
  211.         }
  212.     }
  213.  
  214. })(Vitsuno.Difficulty);
  215.  
  216. //-----------------------------------------------------------------------------
  217. // DataManager
  218. //-----------------------------------------------------------------------------
  219.  
  220. // ● ニューゲームのセットアップ
  221. Vitsuno.Difficulty.DataMgr_setupNewGame = DataManager.setupNewGame;
  222. DataManager.setupNewGame = function() {
  223.     Vitsuno.Difficulty.DataMgr_setupNewGame.call(this);
  224.     SceneManager.setDifficultyMutable();
  225. };
  226.  
  227. // ● 戦闘テストのセットアップ
  228. Vitsuno.Difficulty.DataMgr_setupBattleTest = DataManager.setupBattleTest;
  229. DataManager.setupBattleTest = function() {
  230.     Vitsuno.Difficulty.DataMgr_setupBattleTest.call(this);
  231.     SceneManager.setDifficultyMutable();
  232. };
  233.  
  234. // ● イベントテストのセットアップ
  235. Vitsuno.Difficulty.DataMgr_setupEventTest = DataManager.setupEventTest
  236. DataManager.setupEventTest = function() {
  237.     Vitsuno.Difficulty.DataMgr_setupEventTest.call(this);
  238.     SceneManager.setDifficultyMutable();
  239. };
  240.  
  241. // ● ゲームのロード
  242. Vitsuno.Difficulty.DataMgr_loadGame = DataManager.loadGame;
  243. DataManager.loadGame = function(savefileId) {
  244.     var result = Vitsuno.Difficulty.DataMgr_loadGame.call(this, savefileId);
  245.     if (result) {
  246.         SceneManager.setDifficultyMutable();
  247.     }
  248.     return result;
  249. };
  250.  
  251. //-----------------------------------------------------------------------------
  252. // TextManager
  253. //-----------------------------------------------------------------------------
  254.  
  255. // ● 難易度表示名を取得
  256. Object.defineProperty(TextManager, 'difficulty', {
  257.     get: function() { return Vitsuno.Difficulty.optionName; },
  258.     configurable: true
  259. });
  260.  
  261. //-----------------------------------------------------------------------------
  262. // SceneManager
  263. //-----------------------------------------------------------------------------
  264.  
  265. // ● クラス変数
  266. SceneManager._isDifficultyMutable = false;
  267.  
  268. // ● 難易度変更可能判定
  269. SceneManager.isDifficultyMutable = function() {
  270.     return SceneManager._isDifficultyMutable;
  271. };
  272.  
  273. // ● 難易度変更可能に設定
  274. SceneManager.setDifficultyMutable = function() {
  275.     SceneManager._isDifficultyMutable = true;
  276. };
  277.  
  278. // ● 難易度変更可能設定を削除
  279. SceneManager.removeDifficultyMutable = function() {
  280.     SceneManager._isDifficultyMutable = false;
  281. };
  282.  
  283. //-----------------------------------------------------------------------------
  284. // Game_System
  285. //-----------------------------------------------------------------------------
  286.  
  287. // ● 初期化
  288. Vitsuno.Difficulty.GSystem_initialize = Game_System.prototype.initialize;
  289. Game_System.prototype.initialize = function() {
  290.     Vitsuno.Difficulty.GSystem_initialize.call(this);
  291.     this._difficultyId = Vitsuno.Difficulty.initDifficultyId;
  292. };
  293.  
  294. // ● 難易度IDの取得
  295. Game_System.prototype.difficultyId = function() {
  296.     if (this._difficultyId === undefined) {
  297.         this._difficultyId = Vitsuno.Difficulty.initDifficultyId;
  298.     }
  299.     return this._difficultyId;
  300. };
  301.  
  302. // ● 難易度IDの設定
  303. Game_System.prototype.setDifficultyId = function(difficultyId) {
  304.     if (Vitsuno.Difficulty.data[difficultyId]) {
  305.         this._difficultyId = difficultyId;
  306.     }
  307. };
  308.  
  309. // ● 難易度の設定
  310. Game_System.prototype.setDifficulty = function(difficulty) {
  311.     var id = Vitsuno.Difficulty.data.indexOf(difficulty);
  312.     if (id >= 0) {
  313.         this.setDifficultyId(id);
  314.     }
  315. };
  316.  
  317. // ● 難易度オブジェクトの取得
  318. Game_System.prototype.difficultyObject = function() {
  319.     return Vitsuno.Difficulty.data[this.difficultyId()];
  320. };
  321.  
  322. // ● 難易度名の取得
  323. Game_System.prototype.difficultyName = function() {
  324.     var difficulty = this.difficultyObject();
  325.     return difficulty ? difficulty.name : '';
  326. };
  327.  
  328. // ● 難易度オブジェクト配列の取得
  329. Game_System.prototype.difficulties = function() {
  330.     return Vitsuno.Difficulty.data.filter(function(difficulty) {
  331.         return difficulty;
  332.     });
  333. };
  334.  
  335. // ● 次の難易度に変更
  336. Game_System.prototype.nextDifficulty = function(wrap) {
  337.     var lastDifficulty = this.difficultyObject();
  338.     var difficulties = this.difficulties();
  339.     var index = difficulties.indexOf(lastDifficulty);
  340.     index = index < 0 ? 0 : index + 1;
  341.     index = wrap ? index % difficulties.length : index;
  342.     if (index >= 0 && index < difficulties.length) {
  343.         this.setDifficulty(difficulties[index]);
  344.     }
  345.     return lastDifficulty !== this.difficultyObject();
  346. };
  347.  
  348. // ● 前の難易度に変更する
  349. Game_System.prototype.previousDifficulty = function(wrap) {
  350.     var lastDifficulty = this.difficultyObject();
  351.     var difficulties = this.difficulties();
  352.     var index = difficulties.indexOf(lastDifficulty);
  353.     index = index < 0 ? 0 : index - 1;
  354.     index = wrap ? index % difficulties.length : index;
  355.     if (index >= 0 && index < difficulties.length) {
  356.         this.setDifficulty(difficulties[index]);
  357.     }
  358.     return lastDifficulty !== this.difficultyObject();
  359. };
  360.  
  361. //-----------------------------------------------------------------------------
  362. // Game_Enemy
  363. //-----------------------------------------------------------------------------
  364.  
  365. // ● 能力値倍率の取得
  366. Vitsuno.Difficulty.GEnemy_paramRate = Game_Enemy.prototype.paramRate;
  367. Game_Enemy.prototype.paramRate = function(paramId) {
  368.     var rate = Vitsuno.Difficulty.GEnemy_paramRate ?
  369.         Vitsuno.Difficulty.GEnemy_paramRate.call(this, paramId) :
  370.         Game_Battler.prototype.paramRate.call(this, paramId);
  371.     var difficulty = $gameSystem.difficultyObject();
  372.     if (difficulty) {
  373.         rate *= difficulty.paramRate[paramId];
  374.     }
  375.     return rate;
  376. };
  377.  
  378. // ● 経験値の取得
  379. Vitsuno.Difficulty.GEnemy_exp = Game_Enemy.prototype.exp;
  380. Game_Enemy.prototype.exp = function() {
  381.     var exp = Vitsuno.Difficulty.GEnemy_exp.call(this);
  382.     var difficulty = $gameSystem.difficultyObject();
  383.     if (difficulty) {
  384.         exp *= difficulty.expRate;
  385.     }
  386.     return Math.floor(exp);
  387. };
  388.  
  389. // ● お金の取得
  390. Vitsuno.Difficulty.GEnemy_gold = Game_Enemy.prototype.gold;
  391. Game_Enemy.prototype.gold = function() {
  392.     var gold = Vitsuno.Difficulty.GEnemy_gold.call(this);
  393.     var difficulty = $gameSystem.difficultyObject();
  394.     if (difficulty) {
  395.         gold *= difficulty.goldRate;
  396.     }
  397.     return Math.floor(gold);
  398. };
  399.  
  400. // ● ドロップアイテムの作成 (再定義)
  401. Game_Enemy.prototype.makeDropItems = function() {
  402.     return this.enemy().dropItems.reduce(function(r, di, i) {
  403.         if (di.kind > 0 && Math.random() * di.denominator < this.dropItemRateFromIndex(i)) {
  404.             return r.concat(this.itemObject(di.kind, di.dataId));
  405.         } else {
  406.             return r;
  407.         }
  408.     }.bind(this), []);
  409. };
  410.  
  411. // ● インデック付きドロップアイテムレートの取得
  412. Game_Enemy.prototype.dropItemRateFromIndex = function(index) {
  413.     var rate = this.dropItemRate();
  414.     var difficulty = $gameSystem.difficultyObject();
  415.     if (difficulty) {
  416.         rate *= difficulty.dropItemRate[index];
  417.     }
  418.     return rate;
  419. };
  420.  
  421. //-----------------------------------------------------------------------------
  422. // Game_Interpreter
  423. //-----------------------------------------------------------------------------
  424.  
  425. // ● プラグインコマンドの実行
  426. Vitsuno.Difficulty.GInterpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  427. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  428.     Vitsuno.Difficulty.GInterpreter_pluginCommand.call(this, command, args);
  429.     if (command === 'Difficulty') {
  430.         switch (args[0]) {
  431.             case 'SetID':
  432.                 $gameSystem.setDifficultyId(Number(args[1]));
  433.                 break;
  434.             case 'Next':
  435.                 $gameSystem.nextDifficulty(false);
  436.                 break;
  437.             case 'Previous':
  438.                 $gameSystem.previousDifficulty(false);
  439.                 break;
  440.         }
  441.     }
  442. };
  443.  
  444. //-----------------------------------------------------------------------------
  445. // Window_Options
  446. //-----------------------------------------------------------------------------
  447.  
  448. // ● コマンドリストの作成
  449. Vitsuno.Difficulty.WOptions_makeCommandList = Window_Options.prototype.makeCommandList;
  450. Window_Options.prototype.makeCommandList = function() {
  451.     Vitsuno.Difficulty.WOptions_makeCommandList.call(this);
  452.     this.addDifficultyOptions();
  453. };
  454.  
  455. // ● 難易度を表示するか判定
  456. Window_Options.prototype.isDifficultyDisplayed = function() {
  457.     return Vitsuno.Difficulty.useOption;
  458. };
  459.  
  460. // ● 難易度が有効かどうか
  461. Window_Options.prototype.isDifficultyEnabled = function() {
  462.     return $gameSystem && SceneManager.isDifficultyMutable();
  463. };
  464.  
  465. // ● 難易度コマンドの追加
  466. Window_Options.prototype.addDifficultyOptions = function() {
  467.     if (this.isDifficultyDisplayed()) {
  468.         var enabled = this.isDifficultyEnabled();
  469.         this.addCommand(TextManager.difficulty, 'difficulty', enabled);
  470.     }
  471. };
  472.  
  473. // ● 状態文字の取得
  474. Vitsuno.Difficulty.WOptions_statusText = Window_Options.prototype.statusText;
  475. Window_Options.prototype.statusText = function(index) {
  476.     if (this.commandSymbol(index) === 'difficulty') {
  477.         return this.isDifficultyEnabled() ? $gameSystem.difficultyName() : '';
  478.     } else {
  479.         return Vitsuno.Difficulty.WOptions_statusText.call(this, index);
  480.     }
  481. };
  482.  
  483. // ● 決定時の処理
  484. Vitsuno.Difficulty.WOptions_processOk = Window_Options.prototype.processOk;
  485. Window_Options.prototype.processOk = function() {
  486.     if (this.commandSymbol(this.index()) === 'difficulty') {
  487.         if (this.isDifficultyEnabled()) {
  488.             if ($gameSystem.nextDifficulty(true)) {
  489.                 this.redrawItem(this.findSymbol('difficulty'));
  490.                 SoundManager.playCursor();
  491.             }
  492.         }
  493.     } else {
  494.         Vitsuno.Difficulty.WOptions_processOk.call(this);
  495.     }
  496. };
  497.  
  498. // ● カーソルを右に移動
  499. Vitsuno.Difficulty.WOptions_cursorRight = Window_Options.prototype.cursorRight;
  500. Window_Options.prototype.cursorRight = function(wrap) {
  501.     if (this.commandSymbol(this.index()) === 'difficulty') {
  502.         if (this.isDifficultyEnabled()) {
  503.             if ($gameSystem.nextDifficulty(false)) {
  504.                 this.redrawItem(this.findSymbol('difficulty'));
  505.                 SoundManager.playCursor();
  506.             }
  507.         }
  508.     } else {
  509.         Vitsuno.Difficulty.WOptions_cursorRight.call(this, wrap);
  510.     }
  511. };
  512.  
  513. // ● カーソルを左に移動
  514. Vitsuno.Difficulty.WOptions_cursorLeft = Window_Options.prototype.cursorLeft;
  515. Window_Options.prototype.cursorLeft = function(wrap) {
  516.     if (this.commandSymbol(this.index()) === 'difficulty') {
  517.         if (this.isDifficultyEnabled()) {
  518.             if ($gameSystem.previousDifficulty(false)) {
  519.                 this.redrawItem(this.findSymbol('difficulty'));
  520.                 SoundManager.playCursor();
  521.             }
  522.         }
  523.     } else {
  524.         Vitsuno.Difficulty.WOptions_cursorLeft.call(this, wrap);
  525.     }
  526. };
  527.  
  528. //-----------------------------------------------------------------------------
  529. // Scene_Title
  530. //-----------------------------------------------------------------------------
  531.  
  532. // ● シーン開始
  533. Vitsuno.Difficulty.STitle_start = Scene_Title.prototype.start;
  534. Scene_Title.prototype.start = function() {
  535.     Vitsuno.Difficulty.STitle_start.call(this);
  536.     SceneManager.removeDifficultyMutable();
  537. };





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1