查看: 2256|回复: 3

[有事请教] 关于竖版战斗伤害数字显示

[复制链接]
梦石
0
星屑
239
在线时间
38 小时
注册时间
2022-9-14
回帖
1
发表于 2022-10-10 17:44:21 | 显示全部楼层 |阅读模式

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

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

×
MZ竖版战斗时,己方角色受伤没有数字显示。
请问有什么方便的办法添加么?
梦石
0
星屑
1445
在线时间
181 小时
注册时间
2022-9-17
回帖
99
发表于 2022-10-12 12:25:48 | 显示全部楼层
本帖最后由 古树旋律 于 2022-10-12 12:29 编辑


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

[pre lang="js"]//=============================================================================
//  Keke_FrontViewPlus - フロントビュープラス
// バージョン: 1.0.0
//=============================================================================
// Copyright (c) 2022 ケケー
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
* @target MZ
* @plugindesc 標準のフロントビュー戦闘の表示を強化
* @author ケケー
* @url http://kekeelabo.com
*
* @help
* 【ver.1.0.0】
* 標準のフロントビュー戦闘で味方側にもアニメーションとダメージポップを表示する
*
* ● 利用規約 ●
* MITライセンスのもと、自由に使ってくれて大丈夫です
*
*
*
* Animations and damage pops for allies in standard front-view combat
*
* ● Terms of Use ●
* Feel free to use it under the MIT license.
*
*
*
* @param ダメージポップX
* @parent ■その他
* @desc ダメージポップのX軸のずらし幅。5 なら右に 5ピクセル ずらす。初期値 0
* @default 0
*
* @param ダメージポップY
* @parent ■その他
* @desc ダメージポップのY軸のずらし幅。5 なら下に 5ピクセル ずらす。初期値 0
* @default 0
*/



(() => {
    //- プラグイン名
    const pluginName = document.currentScript.src.match(/^.*\/(.*).js$/)[1];

   
    //- ツクールMVか
    function isMv() {
        return typeof(ColorManager) == "undefined";
    };
   
   
    //- ツクールMZか
    function isMz() {
        return typeof(ColorManager) != "undefined";
    };


    //==================================================
    //--  パラメータ受け取り
    //==================================================

    const parameters = PluginManager.parameters(pluginName);
   
    const keke_damagePopX = Number(parameters["ダメージポップX"]);
    const keke_damagePopY = Number(parameters["ダメージポップY"]);


   
    //==================================================
    //--  フロントビュープラス
    //==================================================
   
    //- フロントビュー時もアクタースプライトを作る(コア追加)
    const _Spriteset_Battle_createActors = Spriteset_Battle.prototype.createActors;
    Spriteset_Battle.prototype.createActors = function() {
        _Spriteset_Battle_createActors.apply(this);
        if ($gameSystem.isSideView()) { return; }
        if (this._actorSprites.length) { return; }
        this._actorSprites = [];
        for (let i = 0; i < $gameParty.maxBattleMembers(); i++) {
            const sprite = new Sprite_Actor();
            this._actorSprites.push(sprite);
            this._battleField.addChild(sprite)
            sprite.visible = false;
       }
    };
   
   
    //- スプライトアクターの位置更新(コア追加)
    if (isMz()) {
    const _Sprite_Actor_updatePosition = Sprite_Actor.prototype.updatePosition;
    Sprite_Actor.prototype.updatePosition = function() {
        _Sprite_Actor_updatePosition.apply(this);
        // フロントアクター位置の更新
        updateFrontActorPos(this);
    };
    };
   
   
    //- フロントアクター位置の更新
    function updateFrontActorPos(sprite) {
        if (!isFrontViewAdapt(sprite)) { return; }
        const statusWindow = SceneManager._scene._statusWindow;
        const i = $gameParty.allMembers().indexOf(sprite._actor);
        const rect = statusWindow.faceRect(i);
        sprite._homeX = statusWindow.x + rect.x + rect.width / 2;
        sprite._homeY = statusWindow.y + rect.y;
        sprite._offsetX = 0;
        sprite._offsetY = 0;
    };
   
   
    //- フロントビュー時のアニメ条件(コア追加)
    const _Spriteset_Battle_makeTargetSprites = Spriteset_Battle.prototype.makeTargetSprites;
    Spriteset_Battle.prototype.makeTargetSprites = function(targets) {
        let targetSprites = _Spriteset_Battle_makeTargetSprites.apply(this, arguments);
        targetSprites = targetSprites.filter(sprite => {
            if (sprite._isAsFaceKe) { return true; }
            if (!sprite._battler) { return false; }
            if ($gameSystem.isSideView()) { return true; }
            if (sprite._enemy) { return true; }
           return isFrontViewAdapt(sprite);
        });
        return targetSprites;
    };


    //- フロントビューでもダメージポップ有効に
    const _Sprite_Battler_updateDamagePopup = Sprite_Battler.prototype.updateDamagePopup;
    Sprite_Battler.prototype.updateDamagePopup = function() {
        if (this._battler.isDamagePopupRequested()) {
            if (isFrontViewAdapt(this)) {
                this.createDamageSprite();
            }
        }
        _Sprite_Battler_updateDamagePopup.apply(this);
    };


    //- ダメージポップの位置変更(コア追加)
    const _Sprite_Battler_damageOffsetX = Sprite_Battler.prototype.damageOffsetX;
    Sprite_Battler.prototype.damageOffsetX = function() {
        let result = _Sprite_Battler_damageOffsetX.apply(this);
        const svActorOffsetXNo = !$gameSystem.isSideView() && this._actor ? 32 : 0;
        result += keke_damagePopX + svActorOffsetXNo;
        return result;
    };
   
    const _Sprite_Battler_damageOffsetY = Sprite_Battler.prototype.damageOffsetY;
    Sprite_Battler.prototype.damageOffsetY = function() {
        let result = _Sprite_Battler_damageOffsetY.apply(this);
        result += keke_damagePopY;
        if (isFrontViewAdapt(this)) {
            const statusWindow = SceneManager._scene._statusWindow;
            const rect = statusWindow.faceRect(0);
            result += rect.height;
        }
        return result;
    };
   
   
    //- ダメージポップのレイヤー変更(コア追加)
    if (isMz()) {
    const _Sprite_Actor_createDamageSprite = Sprite_Actor.prototype.createDamageSprite;
    Sprite_Actor.prototype.createDamageSprite = function() {
        _Sprite_Actor_createDamageSprite.apply(this);
        if (!isFrontViewAdapt(this)) { return; }
        // レイヤー変更
        if (isFrontViewAdapt(this) && !$gameTemp._fullAnimeStatusKe) {
            const sprite = this._damages[this._damages.length - 1];
            SceneManager._scene._windowLayer.addChild(sprite);
        }
    };
    };
   
   
    //- フロントビュー対応か
    function isFrontViewAdapt(sprite) {
        const statusWindow = SceneManager._scene._statusWindow;
        return !$gameSystem.isSideView() && sprite._actor && (statusWindow && statusWindow.visible) && isMz();
    };
   
   
    //- MV時のダメージポップ位置補整(コア追加)
    if (isMv()) {
    const _Sprite_Battler_setupDamagePopup = Sprite_Battler.prototype.setupDamagePopup;
    Sprite_Battler.prototype.setupDamagePopup = function() {
        const requested = this._battler.isDamagePopupRequested();
        const damages = this._damages.map(d => d);
        _Sprite_Battler_setupDamagePopup.apply(this);
        if (requested) {
            if (this._battler.isSpriteVisible()) {
                const last = damages[damages.length - 1];
                if (last && last.children.length) {
                    const cur = this._damages[this._damages.length - 1];
                    cur.x = last.x + 8;
                    cur.y = last.y - 16;
                }
            }
        }
    };
    }
   
})();[/pre]

评分

参与人数 1赞 +1 收起 理由
gududezhuazi + 1 认可答案

查看全部评分

回复 1 0

使用道具 举报

梦石
0
星屑
1445
在线时间
181 小时
注册时间
2022-9-17
回帖
99
发表于 2022-10-12 12:27:40 | 显示全部楼层
32_i1.jpg

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

补一个原创作者的网站:http://kekeelabo.com/
回复

使用道具 举报

梦石
0
星屑
239
在线时间
38 小时
注册时间
2022-9-14
回帖
1
 楼主| 发表于 2022-10-14 18:13:13 | 显示全部楼层
古树旋律 发表于 2022-10-12 12:25
搬运自Keke的创作插件。希望对LZ有所帮助。

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

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

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部