(解決)装備中の武器のメモ欄文字列を表示させる記述

玄米茶

(解決)装備中の武器のメモ欄文字列を表示させる記述

投稿記事by 玄米茶 » 2017年1月22日(日) 17:38

はじめまして。
Javascript初心者です。慣れる為にステータス画面をいじっています。

ステータス画面に、アクターが装備中の武器のメモ欄に記述した文字列(例えば<あいうえお>)を表示させたいのですが、Javascriptでどのように書いたらいいのか分からず、質問させて頂きました。
検索等して答えに近い記述は見つけられたのですが、どう組み立てればよいか分からず…。

ステータス画面のどこに表示させるかは、ひとまず置いておいて…(Window_Status.prototype.drawParametersに突っ込むと思いますが)文字列を表示する為に必要な、Javascriptの記述を教えて頂けないでしょうか。

前提として、パーティーは複数人います。
文字列は同じか、違う文字列が入り、文字列がない事は無いです。
もし足りない情報がありましたらご指摘下さい。よろしくお願いします。
最後に編集したユーザー 玄米茶 on 2017年1月22日(日) 20:30 [ 編集 1 回目 ]

アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 装備中の武器のメモ欄文字列を表示させる記述

投稿記事by トリアコンタン » 2017年1月22日(日) 17:47

こんにちは!
文字列が表示される位置は気にしなくてもいいとのことなので、レイアウトは無視して
メモ欄の取得方法のサンプルのみを提示します。
よろしければ参考にしてください。

・アクターのメモ欄

コード: 全て選択

<EXTEND:aaaaaaaa>


・コードサンプル

コード: 全て選択

(function() {
    'use strict';

    var _Window_Status_drawBasicInfo = Window_Status.prototype.drawBasicInfo;
    Window_Status.prototype.drawBasicInfo = function(x, y) {
        _Window_Status_drawBasicInfo.apply(this, arguments);
        var noteValue = this._actor.actor().meta['EXTEND'];
        this.drawTextEx(noteValue, x, y + this.lineHeight() * 4);
    };
})();


・実行結果
image_20170122_174441.jpg
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
玄米茶

Re: 装備中の武器のメモ欄文字列を表示させる記述

投稿記事by 玄米茶 » 2017年1月22日(日) 19:24

トリアコンタンさん

ありがとうございます。
var noteValue = this._actor.equips()[0].meta['EXTEND'];
とすることで、武器のメモから文字列を取得できました!

もう一つ、件名とずれてしまうのですが…
装備していないとき(すっかり忘れていた)にステータス画面を見るとエラーになってしまうので、装備していないときは、this.drawText('---', x, y + this.lineHeight() * 4); としたいのですが、これの記述方法を教えて頂けませんでしょうか。何度も申し訳ありません。
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 装備中の武器のメモ欄文字列を表示させる記述

投稿記事by トリアコンタン » 2017年1月22日(日) 20:11

すみません。上の回答、装備ではなくアクターのことについて書いていました……
こちらが装備していない場合を考慮した場合の記述方法の一例です。

コード: 全て選択

(function() {
    'use strict';

    var _Window_Status_drawBasicInfo = Window_Status.prototype.drawBasicInfo;
    Window_Status.prototype.drawBasicInfo = function(x, y) {
        _Window_Status_drawBasicInfo.apply(this, arguments);
        var weapon = this._actor.equips()[0];
        var noteValue = weapon ? weapon.meta['EXTEND'] : '---';
        this.drawTextEx(noteValue, x, y + this.lineHeight() * 4);
    };
})();


三項演算子(条件演算子)という書き方をしています。
これはデフォルトのスクリプトにも多用されている書き方で、「weapon」の実体が存在する場合は
「weapon.meta['EXTEND']」が、そうでない場合は、「'---'」が変数「noteValue 」に設定されます。

コード: 全て選択

var noteValue = weapon ? weapon.meta['EXTEND'] : '---';
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
玄米茶

Re: 装備中の武器のメモ欄文字列を表示させる記述

投稿記事by 玄米茶 » 2017年1月22日(日) 20:28

トリアコンタンさん

ありがとうございます。
丁寧に教えて下さり、無事に表示することが出来ました。

三項演算子についても、一度意味と書き方が分かれば、いろんな場面で使えそうですね。
とても勉強になりました!

“MV:質問” へ戻る