ページ 11

戦闘中、ステート変化など(文字列)をポップアップする機能(解決済み)

Posted: 2016年5月07日(土) 22:41
by terunon
お世話になっております。

現在制作中のゲーム(フロントビュー環境です)は状態異常のログが目まぐるしく表示され煩雑なため、
戦闘中、ダメージポップアップと同じ感覚でステート変化やクリティカルヒット、弱点属性などを
ポップアップできる機能があったら……と考えています。

理想的な形式としては、自由な文字列がダメージポップアップと同じように跳ねてくれるものだと嬉しいです。


ステート変化などをポップアップさせる機能自体は、
VE_DamagePopupさん(https://drive.google.com/file/d/0B0cSp2lASM9wWllDVF9OQ1pBdXM/view?pref=2&pli=1)が既に存在していることは確認しているのですが、
独自要素・改変箇所がかなり多く、収拾をつけられないレベルの競合を起こしてしまうため使用できないのが現状です……。

Sprite_Battler.prototype.setupDamagePopup をいじる等を試みてはみたものの、どうしてもうまくいかず……。
どうかお力を貸していただけないでしょうか?

Re: 戦闘中、ステート変化など(文字列)をポップアップする機能

Posted: 2016年5月08日(日) 08:50
by 名無し蛙
お疲れ様です。

少ない改変量を重視するならSprite_Damageを改造してChildを追加する方法でしょうかね。
ダメージ(アクション結果)を修飾する形になります。
弱点属性判定を追加する為にGame_ActionResultも少し弄る必要がありますが
基本的にSprite_Damageの改変だけで全て事足りるはずです。

問題は表示位置や表示タイミングの調整の方なんですが、制約はつくものの多少の自由は利くはず…
とりあえず雛形作ってみましょうか。「ステート変化」「クリティカル」「弱点属性」の3点だけ実装してみます。
フォントや文字サイズを変えたり表示種類を増やしても良いですけど何か要望や質問とかありますか?
長期的なサポートとかは考えてないですが簡単な改変なので自力での保守管理も容易だと思います。

Re: 戦闘中、ステート変化など(文字列)をポップアップする機能

Posted: 2016年5月08日(日) 18:48
by terunon
名無し蛙様

素敵な雛形をありがとうございます!
いただいた雛形を基に、おかげさまで自分の作品にあった理想的なポップアップが作れました。
新規キャンバス.jpg
この度作ってくださった雛形について、利用規約等ございましたらお知らせください。

また、もし差し支えなければ本件の感謝を込めまして
拙作エイリアスエイク(http://plicy.net/GamePlay/19919 全年齢向け、フリーゲームです)のスペシャルサンクス項に
名無し蛙様のお名前を入れてもよろしいでしょうか?

よろしくお願い申し上げます。

Re: 戦闘中、ステート変化など(文字列)をポップアップする機能

Posted: 2016年5月08日(日) 21:50
by 名無し蛙
terunon様

お役に立ったようで何よりで。
大して独自性があるコードでもないのでMITライセンス、というよりも著作権は放棄します。
自由に改造して使用してください。
それとは別にクレジットの末席にでも記名してもらえると嬉しいですね。

Re: 戦闘中、ステート変化など(文字列)をポップアップする機能

Posted: 2016年5月09日(月) 03:44
by 名無し蛙
すいません。追記で。
見返していたらステート付与に関する処理を豪快に勘違いしていた事に気付きました。
バフ/デバフをステートと混同していましたがこちらに入っているのはstateIdではなくparamIdですね。
また、removedBuffsはバフ解除だけでなくデバフ解除のparamIdも一緒に入ってるようです。
恥ずかしいので直しておいてください。

コード: 全て選択

Sprite_Damage.prototype.createStatusAffected = function(result) {
    var addStates = result.addedStates.concat(result.addedBuffs, result.addedDebuffs);
    var remStates = result.removedStates.concat(result.removedBuffs);
    
    // 戦闘不能の排除
    addStates = addStates.filter(function(stateId){
        return stateId !== Game_BattlerBase.prototype.deathStateId();
    });
    
    addStates.forEach(function(stateId) {
        var state = $dataStates[stateId];
        this.createModSprite(state.name + "付与");        
    }, this);
    
    remStates.forEach(function(stateId) {
        var state = $dataStates[stateId];
        this.createModSprite(state.name + "解除");        
    }, this);        
};

コード: 全て選択

Sprite_Damage.prototype.createStatusAffected = function(result) {
    // 戦闘不能の排除
    var addStates = result.addedStates.filter(function(stateId){
        return stateId !== Game_BattlerBase.prototype.deathStateId();
    });    
    // ステート付与
    addStates.forEach(function(stateId) {
        var state = $dataStates[stateId];
        this.createModSprite(state.name + "付与");
    }, this);
    // バフ付与
    result.addedBuffs.forEach(function(paramId) {
        var paramName = TextManager.param(paramId);
        this.createModSprite(paramName + "強化");        
    }, this);
    // デバフ付与
    result.addedDebuffs.forEach(function(paramId) {
        var paramName = TextManager.param(paramId);
        this.createModSprite(paramName + "弱化");
    }, this);
    // ステート解除
    result.removedStates.forEach(function(stateId) {
        var state = $dataStates[stateId];
        this.createModSprite(state.name + "解除");        
    }, this);
    // バフ/デバフ解除
    result.removedBuffs.forEach(function(paramId) {
        var paramName = TextManager.param(paramId);
        this.createModSprite(paramName + "変化解除");
    }, this);
};

Re: 戦闘中、ステート変化など(文字列)をポップアップする機能

Posted: 2016年5月10日(火) 09:20
by terunon
名無し蛙様

ありがとうございます。
規約について、かしこまりました。
拙作のスペシャルサンクスに名無し蛙様を記載させていただきました。
http://plicy.net/GamePlay/19919

追記についてもありがとうございます。

自力ではまず解決に至れなかったであろう課題だったので、大変助かりました。
心より感謝申し上げます。

Re: 戦闘中、ステート変化など(文字列)をポップアップする機能(解決済み)

Posted: 2018年9月06日(木) 07:10
by クララJ
あのーすみません自分も使いたいのですがサイドビューでもこれは使えますか?