Project1

标题: 强化能力的图标怎么用数字显示持续时间? [打印本页]

作者: 南瓜阿呆    时间: 2022-10-26 01:44
标题: 强化能力的图标怎么用数字显示持续时间?
我想要的效果:

1.战斗界面,人物使用强化攻击力的技能后,强化图标上有数字显示强化效果持续时间,以及强化效果的叠加层数;
2.原版的强化机制好像是一次加25%,可以叠加两次,我想减少每层强化能力的幅度,提高强化能叠加的上限。

有什么方法、或者插件能实现这个效果?

在这里先提前谢过各位大佬了,新人刚加入论坛,给不了多少星屑,非常抱歉
作者: 古树旋律    时间: 2022-10-26 01:44
先回答第一个问题,给LZ找了一个这个脚本插件。
原作者为NUUN系列。
  1. /*:-----------------------------------------------------------------------------------
  2. * NUUN_StateTurn.js
  3. *
  4. * Copyright (C) 2021 NUUN
  5. * This software is released under the MIT License.
  6. * http://opensource.org/licenses/mit-license.php
  7. * -------------------------------------------------------------------------------------
  8. */
  9. /*:
  10. * @target MZ
  11. * @plugindesc 异常状态剩余回合数显示
  12. * @author NUUN
  13. * @version 1.1.0
  14. *
  15. * @help
  16. * ステートアイコンに残りターンを表示します。
  17. *
  18. * 表示ターンモード
  19. * 'remaining'指定時のデフォルトの補正値は1です。
  20. * 'elapsed'指定時はターン数補正を-1に設定してください。
  21. * 経過ターンを表示させるにはステート経過ターンカウントプラグインが必要です。
  22. *
  23. * 利用規約
  24. * このプラグインはMITライセンスで配布しています。
  25. *
  26. * 更新履歴
  27. * 2022/1/21 Ver.1.1.0
  28. * ステートのターンの表示方法に経過ターンを追加。(要ステート経過ターンカウント)
  29. * 2021/9/16 Ver.1.0.2
  30. * 競合が起きにくいよう一部の関数名を変更。
  31. * 不要な処理を削除。
  32. * 2021/9/15 Ver.1.0.1
  33. * ターン表示が正常に取得できていなかった問題を修正。
  34. * 自動解除のないステートのターンが表示されていた問題を修正。
  35. * 2021/9/9 Ver.1.0.0
  36. * 初版
  37. *
  38. * @param TurnMode
  39. * @desc 表示するターンモードを指定します。
  40. * @text 表示ターンモード
  41. * @type select
  42. * @option 残りターン
  43. * @value 'remaining'
  44. * @option 経過ターン(要ステート経過ターンカウント)
  45. * @value 'elapsed'
  46. * @default 'remaining'
  47. *
  48. * @param ActorStateIconVisible
  49. * @desc 味方のステートに残りターンの表示。
  50. * @text 味方ステート残りターン表示
  51. * @type boolean
  52. * @default true
  53. *
  54. * @param EnemyStateIconVisible
  55. * @desc 敵のステートに残りターンの表示。
  56. * @text 敵ステート残りターン表示
  57. * @type boolean
  58. * @default true
  59. *
  60. * @param TurnX
  61. * @desc ターン座標X(相対)
  62. * @text ターン座標X(相対)
  63. * @type number
  64. * @default 0
  65. * @min -9999
  66. *
  67. * @param TurnY
  68. * @desc ターン座標Y(相対)
  69. * @text ターン座標Y(相対)
  70. * @type number
  71. * @default -4
  72. * @min -9999
  73. *
  74. * @param TurnFontSize
  75. * @desc ターンのフォントサイズ。(メインフォントから)
  76. * @text ターンフォントサイズ
  77. * @type number
  78. * @default -4
  79. * @min -9999
  80. *
  81. * @param TurnCorrection
  82. * @text ターン数補正
  83. * @desc ターン数の表示を補正します。
  84. * @default 1
  85. * @type number
  86. * @min -9999
  87. * @max 9999
  88. *
  89. */

  90. var Imported = Imported || {};
  91. Imported.NUUN_StateTurn = true;

  92. (() => {
  93.   const parameters = PluginManager.parameters('NUUN_StateTurn');
  94.   const ActorStateIconVisible = eval(parameters['ActorStateIconVisible'] || 'true');
  95.   const EnemyStateIconVisible = eval(parameters['EnemyStateIconVisible'] || 'true');
  96.   const TurnFontSize = Number(parameters['TurnFontSize'] || -4);
  97.   const TurnX = Number(parameters['TurnX'] || 0);
  98.   const TurnY = Number(parameters['TurnY'] || -4);
  99.   const TurnCorrection = Number(parameters['TurnCorrection'] || 1);
  100.   const TurnMode = eval(parameters['TurnMode'] || 'remaining');

  101.   const _Sprite_StateIcon_initialize = Sprite_StateIcon.prototype.initialize;
  102.   Sprite_StateIcon.prototype.initialize = function() {
  103.     _Sprite_StateIcon_initialize.call(this);
  104.     this.textTurn();
  105.   };

  106.   Sprite_StateIcon.prototype.textTurn = function() {
  107.     const sprite = new Sprite();
  108.     this.addChild(sprite);
  109.     this.textSprite = sprite;
  110.     this.textSprite.x = this.x + TurnX;
  111.     this.textSprite.y = this.y + TurnY;
  112.     this.textSprite.bitmap = new Bitmap(this.bitmap.width, this.bitmap.height);
  113.   };

  114.   const _Sprite_StateIcon_updateIcon = Sprite_StateIcon.prototype.updateIcon;
  115.   Sprite_StateIcon.prototype.updateIcon = function() {
  116.     _Sprite_StateIcon_updateIcon.call(this);
  117.     const icons = [];
  118.     if (this.shouldDisplay()) {
  119.       icons.push(...this._battler.allIcons());
  120.       if (this._battler.isActor() && ActorStateIconVisible) {
  121.         turns = this._battler.allStateTurns();
  122.       } else if (this._battler.isEnemy() && EnemyStateIconVisible) {
  123.         turns = this._battler.allStateTurns();
  124.       }
  125.     }
  126.     this.createStateIcons(icons, turns);
  127.   };

  128.   Sprite_StateIcon.prototype.createStateIcons = function(icons, turns) {
  129.     this._stateBuffTurns = turns[this._animationIndex] || 0;
  130.   };

  131.   const _Sprite_StateIcon_updateFrame = Sprite_StateIcon.prototype.updateFrame;
  132.   Sprite_StateIcon.prototype.updateFrame = function() {
  133.     _Sprite_StateIcon_updateFrame.call(this);
  134.     this.textSprite.bitmap.clear();
  135.     if (this._stateBuffTurns > 0) {
  136.       this.setupFont();
  137.       this.textSprite.bitmap.drawText(this._stateBuffTurns, 0, 0, ImageManager.iconWidth, ImageManager.iconHeight);
  138.     }
  139.   };
  140.   
  141.   Game_BattlerBase.prototype.allStateTurns = function() {
  142.     return this.nuun_stateTurns().concat(this.allBuffTurns());
  143.   };
  144.   
  145.   Game_BattlerBase.prototype.allBuffTurns = function() {
  146.     return this.nuun_buffTurns();
  147.   };

  148.   Game_BattlerBase.prototype.nuun_stateTurns = function() {
  149.     return this.states().reduce((r, state) => {
  150.       if (state.iconIndex > 0) {
  151.         return r.concat([this.nuun_isNonRemoval(state) ? 0 : this.nuun_getStateTurn(state.id)]);
  152.       }
  153.       return r;
  154.     }, []);
  155.   };
  156.   
  157.   Game_BattlerBase.prototype.nuun_buffTurns = function() {
  158.     return this._buffs.reduce((r, buff, i) => {
  159.       if (buff !== 0) {
  160.         return r.concat([this.nuun_getBuffTurn(i)]);
  161.       } else {
  162.         return r;
  163.       }
  164.     }, []);
  165.   };

  166.   Game_BattlerBase.prototype.nuun_isNonRemoval = function(state) {
  167.     return state.autoRemovalTiming === 0;
  168.   };
  169.   
  170.   Game_BattlerBase.prototype.nuun_getStateTurn = function(id) {
  171.     return (Imported.NUUN_StateTurnCount && TurnMode === 'elapsed' ? this.isStateNowTurn(id) : this._stateTurns[id]) + TurnCorrection;
  172.   };
  173.   
  174.   Game_BattlerBase.prototype.nuun_getBuffTurn = function(id) {
  175.     return (Imported.NUUN_StateTurnCount && TurnMode === 'elapsed' ? this.getBuffNowTurn(id) : this._buffTurns[id]) + TurnCorrection;
  176.   };

  177.   Sprite_StateIcon.prototype.setupFont = function() {
  178.     this.textSprite.bitmap.fontSize = this.nuun_fontSize() + TurnFontSize;
  179.     this.textSprite.bitmap.textColor = this.nuun_textColor();
  180.     this.textSprite.bitmap.outlineColor = this.nuun_outlineColor();
  181.     this.textSprite.bitmap.outlineWidth = this.nuun_outlineWidth();
  182.   };

  183.   Sprite_StateIcon.prototype.nuun_textColor = function() {
  184.     return ColorManager.normalColor();
  185.   };

  186.   Sprite_StateIcon.prototype.nuun_outlineColor = function() {
  187.     return ColorManager.outlineColor();
  188.   };

  189.   Sprite_StateIcon.prototype.nuun_outlineWidth = function() {
  190.     return 3;
  191.   };

  192.   Sprite_StateIcon.prototype.nuun_fontSize = function() {
  193.     return $gameSystem.mainFontSize();
  194.   };

  195. })();
复制代码

作者: 南瓜阿呆    时间: 2022-10-26 01:52
顺便问个额外问题,为什么我无论怎么上传头像都是黑的……
作者: 古树旋律    时间: 2022-10-26 10:24

论坛比较慢,一句话掰开好几个回帖说。
这是刚才脚本插件的截图。“缝合尖塔”用的就是这个,效果OK~
作者: 古树旋律    时间: 2022-10-26 10:33
回答第2个问题。在游戏目录js文件夹中,使用编程软件或者是txt打开rmmz_objects.js。
搜索找到这一段。
  1. Game_BattlerBase.prototype.paramBuffRate = function(paramId) {
  2.     return this._buffs[paramId] * 0.25 + 1.0;
  3. };
复制代码

这个0.25就是每层的系数。
作者: 古树旋律    时间: 2022-10-26 10:41
叠加BUFF的层数上限,用这个脚本。
再次感谢NUUN……
  1. /*:-----------------------------------------------------------------------------------
  2. * NUUN_BuffMaxLevel.js
  3. *
  4. * Copyright (C) 2022 NUUN
  5. * This software is released under the MIT License.
  6. * http://opensource.org/licenses/mit-license.php
  7. * -------------------------------------------------------------------------------------
  8. */
  9. /*:
  10. * @target MZ
  11. * @plugindesc バフ、デバフ重ね掛け上限変更
  12. * @author NUUN
  13. * @version 1.0.0
  14. *
  15. * @help
  16. * バフ、デバフの重ね掛けの上限値を変更します。
  17. * また表示するアイコンの開始インデックス番号も変更できます。
  18. *
  19. * アイコンの設定
  20. * バフ、デバフのアイコンインデックスは1段階につき指定した開始インデックス + バフ(デバフ)レベル * 8になっています。
  21. * デフォルトだとバフの開始インデックスが32、強化バフが40、デバフの開始インデックスが48、強化デバフが56になっています。
  22. * 3段階以上のアイコンを設定するには、強化デバフから連番でHP、MP、攻撃力、防御力、魔法力、魔法防御、敏捷性、運の順で設定します。
  23. *
  24. * 更新履歴
  25. * 2022/2/11 Ver.1.0.0
  26. * 初版
  27. *
  28. * @param BuffIconIndex
  29. * @text BUFF起始图标
  30. * @desc バフ開始アイコンインデックスID
  31. * @type number
  32. * @default 32
  33. *
  34. * @param DebuffIconIndex
  35. * @text DEBUFF起始图标
  36. * @desc デバフ開始アイコンインデックスID
  37. * @type number
  38. * @default 48
  39. *
  40. * @param HPBuffMaxLevel
  41. * @text HPバフ最大レベル
  42. * @desc HPバフ時の重ね掛けの最大レベル
  43. * @type number
  44. * @default 2
  45. * @min 1
  46. *
  47. * @param HPDebuffMaxLevel
  48. * @text HPデバフ最大レベル
  49. * @desc HPデバフ時の重ね掛けの最大レベル
  50. * @type number
  51. * @default 2
  52. * @min 1
  53. *
  54. * @param MPBuffMaxLevel
  55. * @text MPバフ最大レベル
  56. * @desc MPバフ時の重ね掛けの最大レベル
  57. * @type number
  58. * @default 2
  59. * @min 1
  60. *
  61. * @param MPDebuffMaxLevel
  62. * @text MPデバフ最大レベル
  63. * @desc MPデバフ時の重ね掛けの最大レベル
  64. * @type number
  65. * @default 2
  66. * @min 1
  67. *
  68. * @param AtkBuffMaxLevel
  69. * @text 攻撃力バフ最大レベル
  70. * @desc 攻撃力バフ時の重ね掛けの最大レベル
  71. * @type number
  72. * @default 2
  73. * @min 1
  74. *
  75. * @param AtkDebuffMaxLevel
  76. * @text 攻撃力デバフ最大レベル
  77. * @desc 攻撃力デバフ時の重ね掛けの最大レベル
  78. * @type number
  79. * @default 2
  80. * @min 1
  81. *
  82. * @param DefBuffMaxLevel
  83. * @text 防御力バフ最大レベル
  84. * @desc 防御力バフ時の重ね掛けの最大レベル
  85. * @type number
  86. * @default 2
  87. * @min 1
  88. *
  89. * @param DefDebuffMaxLevel
  90. * @text 防御力デバフ最大レベル
  91. * @desc 防御力デバフ時の重ね掛けの最大レベル
  92. * @type number
  93. * @default 2
  94. * @min 1
  95. *
  96. * @param MatBuffMaxLevel
  97. * @text 魔法力バフ最大レベル
  98. * @desc 魔法撃力バフ時の重ね掛けの最大レベル
  99. * @type number
  100. * @default 2
  101. * @min 1
  102. *
  103. * @param MatkDebuffMaxLevel
  104. * @text 魔法力デバフ最大レベル
  105. * @desc 魔法力デバフ時の重ね掛けの最大レベル
  106. * @type number
  107. * @default 2
  108. * @min 1
  109. *
  110. * @param MdffBuffMaxLevel
  111. * @text 魔法防御バフ最大レベル
  112. * @desc 魔法防御バフ時の重ね掛けの最大レベル
  113. * @type number
  114. * @default 2
  115. * @min 1
  116. *
  117. * @param MdfDebuffMaxLevel
  118. * @text 魔法防御デバフ最大レベル
  119. * @desc 魔法防御デバフ時の重ね掛けの最大レベル
  120. * @type number
  121. * @default 2
  122. * @min 1
  123. *
  124. * @param AgiBuffMaxLevel
  125. * @text 敏捷性バフ最大レベル
  126. * @desc 敏捷性バフ時の重ね掛けの最大レベル
  127. * @type number
  128. * @default 2
  129. * @min 1
  130. *
  131. * @param AgikDebuffMaxLevel
  132. * @text 敏捷性デバフ最大レベル
  133. * @desc 敏捷性デバフ時の重ね掛けの最大レベル
  134. * @type number
  135. * @default 2
  136. * @min 1
  137. *
  138. * @param LukfBuffMaxLevel
  139. * @text 運バフ最大レベル
  140. * @desc 運バフ時の重ね掛けの最大レベル
  141. * @type number
  142. * @default 2
  143. * @min 1
  144. *
  145. * @param LukDebuffMaxLevel
  146. * @text 運デバフ最大レベル
  147. * @desc 運デバフ時の重ね掛けの最大レベル
  148. * @type number
  149. * @default 2
  150. * @min 1
  151. *
  152. */
  153. var Imported = Imported || {};
  154. Imported.NUUN_BuffMaxLevel = true;

  155. (() => {
  156. const parameters = PluginManager.parameters('NUUN_BuffMaxLevel');
  157. const buffParams = [];
  158. const debuffParams = [];
  159. const BuffIconIndex = Number(parameters['BuffIconIndex'] || 32);
  160. const DebuffIconIndex = Number(parameters['DebuffIconIndex'] || 48);
  161. buffParams[0] = Number(parameters['HPBuffMaxLevel'] || 2);
  162. debuffParams[0] = Number(parameters['HPDebuffMaxLevel'] || 2);
  163. buffParams[1] = Number(parameters['MPBuffMaxLevel'] || 2);
  164. debuffParams[1] = Number(parameters['MPDebuffMaxLevel'] || 2);
  165. buffParams[2] = Number(parameters['AtkBuffMaxLevel'] || 2);
  166. debuffParams[2] = Number(parameters['AtkDebuffMaxLevel'] || 2);
  167. buffParams[3] = Number(parameters['DefBuffMaxLevel'] || 2);
  168. debuffParams[3] = Number(parameters['DefDebuffMaxLevel'] || 2);
  169. buffParams[4] = Number(parameters['MatBuffMaxLevel'] || 2);
  170. debuffParams[4] = Number(parameters['MatDebuffMaxLevel'] || 2);
  171. buffParams[5] = Number(parameters['MatBuffMaxLevel'] || 2);
  172. debuffParams[5] = Number(parameters['MatDebuffMaxLevel'] || 2);
  173. buffParams[6] = Number(parameters['AgiBuffMaxLevel'] || 2);
  174. debuffParams[6] = Number(parameters['AgiDebuffMaxLevel'] || 2);
  175. buffParams[7] = Number(parameters['LukBuffMaxLevel'] || 2);
  176. debuffParams[7] = Number(parameters['LukDebuffMaxLevel'] || 2);

  177. Game_BattlerBase.ICON_BUFF_START = BuffIconIndex;
  178. Game_BattlerBase.ICON_DEBUFF_START = DebuffIconIndex;


  179. Game_BattlerBase.prototype.isMaxBuffAffected = function(paramId) {//再定義
  180.     return this._buffs[paramId] === buffParams[paramId];
  181. };

  182. Game_BattlerBase.prototype.isMaxDebuffAffected = function(paramId) {//再定義
  183.     return this._buffs[paramId] === debuffParams[paramId] * -1;
  184. };

  185. })();
复制代码

作者: 古树旋律    时间: 2022-10-26 10:49
如果只是想给某一个角色单独设置buff的加成的话,用这个脚本插件。
看说明,在角色或职业或敌人的备注栏中,加入:
<BuffBoost[BuffId]:[rate]>
其中:
[BuffId]: 0:HP 1:MP 2:攻撃力 3:防御力 4:魔法力 5:魔法防御 6:敏捷 7:幸运
[rate]:倍率(正数) 100就是1.0倍 ,80就是0.8倍

  1. /*:-----------------------------------------------------------------------------------
  2. * NUUN_BuffBoost.js
  3. *
  4. * Copyright (C) 2022 NUUN
  5. * This software is released under the MIT License.
  6. * http://opensource.org/licenses/mit-license.php
  7. * -------------------------------------------------------------------------------------
  8. */
  9. /*:
  10. * @target MZ
  11. * @plugindesc バフ、デバフ倍率効果率増減特徴
  12. * @author NUUN
  13. * @version 1.0.0
  14. *
  15. * @help
  16. * バフ、デバフの倍率の効果率を増減する特徴を設定できます。
  17. * 通常のバフ、デバフの倍率は1段階につき25%になっていますが、特徴によって倍率を増減させます。
  18. * 倍率が1.2倍の時はバフまたはデバフの倍率が30%になります。
  19. *
  20. * 特徴を有するメモ欄
  21. * <BuffBoost[BuffId]:[rate]>
  22. * [BuffId]:バフID 0:HP 1:MP 2:攻撃力 3:防御力 4:魔法力 5:魔法防御 6:敏捷性 7:運
  23. * [rate]:倍率(正数) 100で1.0倍 120ならバフ時に1.2倍
  24. *
  25. * <DebuffBoost[BuffId]:[rate]>
  26. * [BuffId]:デバフID 0:HP 1:MP 2:攻撃力 3:防御力 4:魔法力 5:魔法防御 6:敏捷性 7:運
  27. * [rate]:倍率(正数) 100で1.0倍 80ならバフ時に0.8倍
  28. *
  29. * 更新履歴
  30. * 2022/2/12 Ver.1.0.0
  31. * 初版
  32. *
  33. */
  34. var Imported = Imported || {};
  35. Imported.NUUN_BuffBoost = true;

  36. (() => {
  37. const parameters = PluginManager.parameters('NUUN_BuffBoost');

  38. const _Game_BattlerBase_paramBuffRate = Game_BattlerBase.prototype.paramBuffRate;
  39. Game_BattlerBase.prototype.paramBuffRate = function(paramId) {
  40.     return ((_Game_BattlerBase_paramBuffRate.call(this, paramId) - 1.0) * this.buffBoostRate(paramId)) + 1.0;
  41. };

  42. Game_BattlerBase.prototype.buffBoostRate = function(paramId) {
  43.     if (this._buffs[paramId] !== 0) {
  44.         let tag = '';
  45.         tag = this._buffs[paramId] > 0 ? 'BuffBoost' : 'DebuffBoost';
  46.         return this.traitObjects().reduce((r, trait) => {
  47.             if (trait.meta[tag + paramId]) {
  48.                 return r * Number(trait.meta[tag + paramId]) / 100;
  49.             } else {
  50.                 return r;
  51.             }
  52.         }, 1.0);
  53.     }
  54.     return 1.0;
  55. };

  56. })();
复制代码

作者: 南瓜阿呆    时间: 2022-10-26 16:07
古树旋律 发表于 2022-10-26 10:14
先回答第一个问题,给LZ找了一个这个脚本插件。
原作者为NUUN系列。

非常感谢大佬的回答!
BUFF持续时间这个插件我遇到了错误,无法进入游戏,显示信息如下:

Reference error
remaining is not defined

即使我关闭其他所有插件,这个错误依然存在,
作者: 我是大仙    时间: 2022-10-26 18:58
南瓜阿呆 发表于 2022-10-26 16:07
非常感谢大佬的回答!
BUFF持续时间这个插件我遇到了错误,无法进入游戏,显示信息如下:

使用这个插件的时候,确保插件的文件名称一定要是"NUUN_StateTurn.js",否则会读不出文件。
作者: 南瓜阿呆    时间: 2022-10-26 19:39
我是大仙 发表于 2022-10-26 18:58
使用这个插件的时候,确保插件的文件名称一定要是"NUUN_StateTurn.js",否则会读不出文件。 ...

哦哦!原来如此,问题解决了,感谢!




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