Type Error functionについて

ろっぷ
記事: 5
登録日時: 2018年11月11日(日) 12:15

Type Error functionについて

投稿記事by ろっぷ » 2019年2月06日(水) 12:09

こんにちは
ただいま作成しているRPGにオリジナルティを出すべく、バトル中に表示されるステータスのHP・MP・TPゲージや、名前・ステータスのフォントの高さ(文字の大きさではなく位置)を設定したくてrpg_windows.js v1.6.1内を初心者ながら試行錯誤しています。最終的に添付ファイルのようなステータスの位置にしたいのですが、どのようにすればゲージや文字の高さが設定できますでしょうか?どなたか回答をよろしくお願いします。
添付ファイル
スクリーンショット 2019-02-06 12.25.05.png
スクリーンショット 2019-02-06 12.21.00.png
名称未設定 1.png
最後に編集したユーザー ろっぷ on 2019年2月06日(水) 21:00 [ 編集 5 回目 ]

アバター
にゃたま
記事: 579
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国
連絡を取る:

Re: Type Error functionについて

投稿記事by にゃたま » 2019年2月06日(水) 12:14

ろっぷ様

こんにちは。

おそらくrpg_windows.js v1.6.1内のスクリプトのどこかを修正したのかと思われますが、
どこをどのように修正したのかを書かないと回答するほうとしてはまったくわかりかねると思います。
あとゲーム画面のエラーのキャプチャはほとんどと言っていいほど役に立たないので
F8を押したときに表示されるデバッグ画面を提示したほうがわかりやすく回答が得られやすいかと思います。

参考までに。
ろっぷ
記事: 5
登録日時: 2018年11月11日(日) 12:15

Re: Type Error functionについて

投稿記事by ろっぷ » 2019年2月06日(水) 12:19

にゃたま様返信ありがとうございます。
添付ファイルが確かに不足していました。追加させていただきます。
ご指摘ありがとうございました。
アバター
剣崎 宗二
記事: 214
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: Type Error functionについて

投稿記事by 剣崎 宗二 » 2019年2月06日(水) 14:29

元々添付していただいたコードの意図が良くわかりませんでしたが…
(文字の高さを変更しようとしている、にしては全く数字類がどこにも描かれていなかったので)
要望が「文字のフォントの高さを変えようとしている」と仮定して回答させていただきます。

フォントという物は高さだけ変えられるものではありません。
フォントサイズを変動する場合、縦横同時に(同じ倍率)増減します。

それを踏まえると

コード: 全て選択

Window_Base.prototype.standardFontSize = function() {
    return 28;
};

ここの28を変更する
(ただしこれは文章の表示を含む全てのウィンドウ類に影響を与えます)

或いは

コード: 全て選択

Window_Base.prototype.drawCurrentAndMax = function(current, max, x, y,
                                                   width, color1, color2) {
    var labelWidth = this.textWidth('HP');
    var valueWidth = this.textWidth('0000');
    var slashWidth = this.textWidth('/');
    var x1 = x + width - valueWidth;
    var x2 = x1 - slashWidth;
    var x3 = x2 - valueWidth;
    this.contents.fontSize = 20;      //←ここに追加し、数値を変更
    if (x3 >= x + labelWidth) {
        this.changeTextColor(color1);
        this.drawText(current, x3, y, valueWidth, 'right');
        this.changeTextColor(color2);
        this.drawText('/', x2, y, slashWidth, 'right');
        this.drawText(max, x1, y, valueWidth, 'right');
    } else {
        this.changeTextColor(color1);
        this.drawText(current, x1, y, valueWidth, 'right');
    }
   this.resetFontSettings();    //←ほかに影響が出ないようここに追加
};

と言う形になるかと思います
(こちらは最大値最小値があるものを描く時のみ影響が出る)



元コードがエラーを出した原因としては純粋にWindow_Base.prototype.textHeightが存在しないからです。
(同ファイル内で検索すればわかりますが、Window_Base.prototype.textWidthは存在します)
また、Window_Base.prototype.textWidthは、横幅を「設定」するものではなく、特定の文字列の横幅を「測る」functionとなります。
これを使って設定しようとするのは、例えるならば温度計にエアコンの機能を期待するような物となります…
ろっぷ
記事: 5
登録日時: 2018年11月11日(日) 12:15

Re: Type Error functionについて

投稿記事by ろっぷ » 2019年2月06日(水) 20:47

剣崎 宗二 さんが書きました:元々添付していただいたコードの意図が良くわかりませんでしたが…
(文字の高さを変更しようとしている、にしては全く数字類がどこにも描かれていなかったので)
要望が「文字のフォントの高さを変えようとしている」と仮定して回答させていただきます。

フォントという物は高さだけ変えられるものではありません。
フォントサイズを変動する場合、縦横同時に(同じ倍率)増減します。

それを踏まえると

コード: 全て選択

Window_Base.prototype.standardFontSize = function() {
    return 28;
};

ここの28を変更する
(ただしこれは文章の表示を含む全てのウィンドウ類に影響を与えます)

或いは

コード: 全て選択

Window_Base.prototype.drawCurrentAndMax = function(current, max, x, y,
                                                   width, color1, color2) {
    var labelWidth = this.textWidth('HP');
    var valueWidth = this.textWidth('0000');
    var slashWidth = this.textWidth('/');
    var x1 = x + width - valueWidth;
    var x2 = x1 - slashWidth;
    var x3 = x2 - valueWidth;
    this.contents.fontSize = 20;      //←ここに追加し、数値を変更
    if (x3 >= x + labelWidth) {
        this.changeTextColor(color1);
        this.drawText(current, x3, y, valueWidth, 'right');
        this.changeTextColor(color2);
        this.drawText('/', x2, y, slashWidth, 'right');
        this.drawText(max, x1, y, valueWidth, 'right');
    } else {
        this.changeTextColor(color1);
        this.drawText(current, x1, y, valueWidth, 'right');
    }
   this.resetFontSettings();    //←ほかに影響が出ないようここに追加
};

と言う形になるかと思います
(こちらは最大値最小値があるものを描く時のみ影響が出る)



元コードがエラーを出した原因としては純粋にWindow_Base.prototype.textHeightが存在しないからです。
(同ファイル内で検索すればわかりますが、Window_Base.prototype.textWidthは存在します)
また、Window_Base.prototype.textWidthは、横幅を「設定」するものではなく、特定の文字列の横幅を「測る」functionとなります。
これを使って設定しようとするのは、例えるならば温度計にエアコンの機能を期待するような物となります…


回答ありがとうございます。質問内容がわかりにくくて申し訳ありません。
文字のフォントの高さ(大きさ)を変えようとしているのではなく、位置としての高さを変えようと考えていました。最終的には横位置と縦位置を操作して添付画像の通りにしたいと思っております。
よく確認せずに質問を投稿してしまい誤解を招いてしまって申し訳ありません。
再度質問を訂正させていただきます。
添付ファイル
名称未設定 1.png
アバター
剣崎 宗二
記事: 214
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: Type Error functionについて

投稿記事by 剣崎 宗二 » 2019年2月06日(水) 23:14

であれば、こちらでフトコロさんが提供しているプラグインを使用するか、その内容を確認しやり方を理解するのが良いのではないでしょうか。
viewtopic.php?t=3555
ろっぷ
記事: 5
登録日時: 2018年11月11日(日) 12:15

Re: Type Error functionについて

投稿記事by ろっぷ » 2019年2月14日(木) 19:57

剣崎 宗二 さんが書きました:であれば、こちらでフトコロさんが提供しているプラグインを使用するか、その内容を確認しやり方を理解するのが良いのではないでしょうか。
viewtopic.php?t=3555


剣崎 宗二様
返信ありがとうございます。時間が空いてしまい申し訳ありません。
フトコロ様が提供しているプラグインを使用してみようと思います。
回答ありがとうございました。

“MV:質問” へ戻る