Project1

标题: 关于竖版战斗伤害数字显示 [打印本页]

作者: gududezhuazi    时间: 2022-10-10 17:44
标题: 关于竖版战斗伤害数字显示
MZ竖版战斗时,己方角色受伤没有数字显示。
请问有什么方便的办法添加么?
作者: 古树旋律    时间: 2022-10-12 12:25
本帖最后由 古树旋律 于 2022-10-12 12:29 编辑


搬运自Keke的创作插件。希望对LZ有所帮助。

JS 代码复制
  1. //=============================================================================
  2. //  Keke_FrontViewPlus - フロントビュープラス
  3. // バージョン: 1.0.0
  4. //=============================================================================
  5. // Copyright (c) 2022 ケケー
  6. // Released under the MIT license
  7. // http://opensource.org/licenses/mit-license.php
  8. //=============================================================================
  9.  
  10. /*:
  11. * @target MZ
  12. * @plugindesc 標準のフロントビュー戦闘の表示を強化
  13. * @author ケケー
  14. * @url http://kekeelabo.com
  15. *
  16. * @help
  17. * 【ver.1.0.0】
  18. * 標準のフロントビュー戦闘で味方側にもアニメーションとダメージポップを表示する
  19. *
  20. * ● 利用規約 ●
  21. * MITライセンスのもと、自由に使ってくれて大丈夫です
  22. *
  23. *
  24. *
  25. * Animations and damage pops for allies in standard front-view combat
  26. *
  27. * ● Terms of Use ●
  28. * Feel free to use it under the MIT license.
  29. *
  30. *
  31. *
  32. * @param ダメージポップX
  33. * @parent ■その他
  34. * @desc ダメージポップのX軸のずらし幅。5 なら右に 5ピクセル ずらす。初期値 0
  35. * @default 0
  36. *
  37. * @param ダメージポップY
  38. * @parent ■その他
  39. * @desc ダメージポップのY軸のずらし幅。5 なら下に 5ピクセル ずらす。初期値 0
  40. * @default 0
  41. */
  42.  
  43.  
  44.  
  45. (() => {
  46.     //- プラグイン名
  47.     const pluginName = document.currentScript.src.match(/^.*\/(.*).js$/)[1];
  48.  
  49.  
  50.     //- ツクールMVか
  51.     function isMv() {
  52.         return typeof(ColorManager) == "undefined";
  53.     };
  54.  
  55.  
  56.     //- ツクールMZか
  57.     function isMz() {
  58.         return typeof(ColorManager) != "undefined";
  59.     };
  60.  
  61.  
  62.     //==================================================
  63.     //--  パラメータ受け取り
  64.     //==================================================
  65.  
  66.     const parameters = PluginManager.parameters(pluginName);
  67.  
  68.     const keke_damagePopX = Number(parameters["ダメージポップX"]);
  69.     const keke_damagePopY = Number(parameters["ダメージポップY"]);
  70.  
  71.  
  72.  
  73.     //==================================================
  74.     //--  フロントビュープラス
  75.     //==================================================
  76.  
  77.     //- フロントビュー時もアクタースプライトを作る(コア追加)
  78.     const _Spriteset_Battle_createActors = Spriteset_Battle.prototype.createActors;
  79.     Spriteset_Battle.prototype.createActors = function() {
  80.         _Spriteset_Battle_createActors.apply(this);
  81.         if ($gameSystem.isSideView()) { return; }
  82.         if (this._actorSprites.length) { return; }
  83.         this._actorSprites = [];
  84.         for (let i = 0; i < $gameParty.maxBattleMembers(); i++) {
  85.             const sprite = new Sprite_Actor();
  86.             this._actorSprites.push(sprite);
  87.             this._battleField.addChild(sprite)
  88.             sprite.visible = false;
  89.        }
  90.     };
  91.  
  92.  
  93.     //- スプライトアクターの位置更新(コア追加)
  94.     if (isMz()) {
  95.     const _Sprite_Actor_updatePosition = Sprite_Actor.prototype.updatePosition;
  96.     Sprite_Actor.prototype.updatePosition = function() {
  97.         _Sprite_Actor_updatePosition.apply(this);
  98.         // フロントアクター位置の更新
  99.         updateFrontActorPos(this);
  100.     };
  101.     };
  102.  
  103.  
  104.     //- フロントアクター位置の更新
  105.     function updateFrontActorPos(sprite) {
  106.         if (!isFrontViewAdapt(sprite)) { return; }
  107.         const statusWindow = SceneManager._scene._statusWindow;
  108.         const i = $gameParty.allMembers().indexOf(sprite._actor);
  109.         const rect = statusWindow.faceRect(i);
  110.         sprite._homeX = statusWindow.x + rect.x + rect.width / 2;
  111.         sprite._homeY = statusWindow.y + rect.y;
  112.         sprite._offsetX = 0;
  113.         sprite._offsetY = 0;
  114.     };
  115.  
  116.  
  117.     //- フロントビュー時のアニメ条件(コア追加)
  118.     const _Spriteset_Battle_makeTargetSprites = Spriteset_Battle.prototype.makeTargetSprites;
  119.     Spriteset_Battle.prototype.makeTargetSprites = function(targets) {
  120.         let targetSprites = _Spriteset_Battle_makeTargetSprites.apply(this, arguments);
  121.         targetSprites = targetSprites.filter(sprite => {
  122.             if (sprite._isAsFaceKe) { return true; }
  123.             if (!sprite._battler) { return false; }
  124.             if ($gameSystem.isSideView()) { return true; }
  125.             if (sprite._enemy) { return true; }
  126.            return isFrontViewAdapt(sprite);
  127.         });
  128.         return targetSprites;
  129.     };
  130.  
  131.  
  132.     //- フロントビューでもダメージポップ有効に
  133.     const _Sprite_Battler_updateDamagePopup = Sprite_Battler.prototype.updateDamagePopup;
  134.     Sprite_Battler.prototype.updateDamagePopup = function() {
  135.         if (this._battler.isDamagePopupRequested()) {
  136.             if (isFrontViewAdapt(this)) {
  137.                 this.createDamageSprite();
  138.             }
  139.         }
  140.         _Sprite_Battler_updateDamagePopup.apply(this);
  141.     };
  142.  
  143.  
  144.     //- ダメージポップの位置変更(コア追加)
  145.     const _Sprite_Battler_damageOffsetX = Sprite_Battler.prototype.damageOffsetX;
  146.     Sprite_Battler.prototype.damageOffsetX = function() {
  147.         let result = _Sprite_Battler_damageOffsetX.apply(this);
  148.         const svActorOffsetXNo = !$gameSystem.isSideView() && this._actor ? 32 : 0;
  149.         result += keke_damagePopX + svActorOffsetXNo;
  150.         return result;
  151.     };
  152.  
  153.     const _Sprite_Battler_damageOffsetY = Sprite_Battler.prototype.damageOffsetY;
  154.     Sprite_Battler.prototype.damageOffsetY = function() {
  155.         let result = _Sprite_Battler_damageOffsetY.apply(this);
  156.         result += keke_damagePopY;
  157.         if (isFrontViewAdapt(this)) {
  158.             const statusWindow = SceneManager._scene._statusWindow;
  159.             const rect = statusWindow.faceRect(0);
  160.             result += rect.height;
  161.         }
  162.         return result;
  163.     };
  164.  
  165.  
  166.     //- ダメージポップのレイヤー変更(コア追加)
  167.     if (isMz()) {
  168.     const _Sprite_Actor_createDamageSprite = Sprite_Actor.prototype.createDamageSprite;
  169.     Sprite_Actor.prototype.createDamageSprite = function() {
  170.         _Sprite_Actor_createDamageSprite.apply(this);
  171.         if (!isFrontViewAdapt(this)) { return; }
  172.         // レイヤー変更
  173.         if (isFrontViewAdapt(this) && !$gameTemp._fullAnimeStatusKe) {
  174.             const sprite = this._damages[this._damages.length - 1];
  175.             SceneManager._scene._windowLayer.addChild(sprite);
  176.         }
  177.     };
  178.     };
  179.  
  180.  
  181.     //- フロントビュー対応か
  182.     function isFrontViewAdapt(sprite) {
  183.         const statusWindow = SceneManager._scene._statusWindow;
  184.         return !$gameSystem.isSideView() && sprite._actor && (statusWindow && statusWindow.visible) && isMz();
  185.     };
  186.  
  187.  
  188.     //- MV時のダメージポップ位置補整(コア追加)
  189.     if (isMv()) {
  190.     const _Sprite_Battler_setupDamagePopup = Sprite_Battler.prototype.setupDamagePopup;
  191.     Sprite_Battler.prototype.setupDamagePopup = function() {
  192.         const requested = this._battler.isDamagePopupRequested();
  193.         const damages = this._damages.map(d => d);
  194.         _Sprite_Battler_setupDamagePopup.apply(this);
  195.         if (requested) {
  196.             if (this._battler.isSpriteVisible()) {
  197.                 const last = damages[damages.length - 1];
  198.                 if (last && last.children.length) {
  199.                     const cur = this._damages[this._damages.length - 1];
  200.                     cur.x = last.x + 8;
  201.                     cur.y = last.y - 16;
  202.                 }
  203.             }
  204.         }
  205.     };
  206.     }
  207.  
  208. })();


作者: 古树旋律    时间: 2022-10-12 12:27


补一张上面插件的效果图。

补一个原创作者的网站:http://kekeelabo.com/
作者: gududezhuazi    时间: 2022-10-14 18:13
古树旋律 发表于 2022-10-12 12:25
搬运自Keke的创作插件。希望对LZ有所帮助。

//======================================================= ...

非常感谢!这正是我需要的功能!




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