レーネ様のアイテム入手インフォについて質問です。

銀河。
記事: 2
登録日時: 2021年1月30日(土) 09:59

レーネ様のアイテム入手インフォについて質問です。

投稿記事by 銀河。 » 2021年1月30日(土) 10:20

レーネ様の「アイテム入手インフォ」と使ってゲームを作っているのですが、
文字数が多いと、枠の中からはみ出してしまいます。
どうにか、文字数を変えずに枠の中に収めることはできないでしょうか?
スクリプトには疎いので、分かる方は教えてくださいお願いします。

使用しているのは「誰かへの宣戦布告」様でダウンロードした物で、
<info:任意の文字列>の方で設定しても使用してもとくに変わりませんでした。
使用しているツクールは「RPGツクールVXace」です。
添付ファイル
2021-01-30 (3).png
2021-01-30 (3).png (29.76 KiB) 閲覧数: 3387 回

DEDEN
記事: 58
登録日時: 2018年8月25日(土) 15:06

Re: レーネ様のアイテム入手インフォについて質問です。

投稿記事by DEDEN » 2021年1月30日(土) 12:43

銀河。 様こんにちは
少しWindow関連のコードを見てみたんですがどうやら制御文字を使用するメソッドは
自動で幅を調整する機能がないのが原因のようですね
少しオリジナルで作ってみます
少々お待ちください
DEDEN
記事: 58
登録日時: 2018年8月25日(土) 15:06

Re: レーネ様のアイテム入手インフォについて質問です。

投稿記事by DEDEN » 2021年1月30日(土) 13:54

銀河。様お待たせしました
自動でヘルプメッセージの幅を調整するスクリプトを作成してみました
レーネ様の入手インフォメーションより下に導入してください
なおレーネ様の入手インフォメーション専用で他の制御文字には影響を与えません
また、自動で縮小するようにはしましたが文字が長すぎると潰れてしまって読めなくなるので限界はあると思います
その点はご了承ください
スクリプト初心者なので不備があるかもしれません
何かあればいつでもどうぞ

コード: 全て選択

#==============================================================================
# ■ 制御文字自動縮小(レーネ様入手インフォメーション専用) Ver:1.00
#------------------------------------------------------------------------------
#  レーネ様作入手インフォメーションのヘルプメッセージの幅を自動で調整します
#==============================================================================
#==============================================================================
#  〇使い方
#------------------------------------------------------------------------------
#  ●レーネ様の入手インフォメーションより下に導入してください
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 制御文字つきテキストの描画
  #--------------------------------------------------------------------------
  def draw_text_ex2(x, y, width, text)
    base = width / 18
    check = width * 1.0 / text.size
    base > check ? w = check : w = 18
    reset_font_settings
    text = convert_escape_characters(text)
    pos = {:x => x, :y => y, :new_x => x,
    :width => w, :height => calc_line_height(text)}
    process_character2(text.slice!(0, 1), text, pos) until text.empty?
  end
  #--------------------------------------------------------------------------
  # ● 文字の処理
  #     c    : 文字
  #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  #     pos  : 描画位置 {:x, :y, :new_x, :height}
  #--------------------------------------------------------------------------
  def process_character2(c, text, pos)
    case c
    when "\n"   # 改行
      process_new_line(text, pos)
    when "\f"   # 改ページ
      process_new_page(text, pos)
    when "\e"   # 制御文字
      process_escape_character(obtain_escape_code(text), text, pos)
    else        # 普通の文字
      process_normal_character2(c, pos)
    end
  end
  #--------------------------------------------------------------------------
  # ● 通常文字の処理
  #--------------------------------------------------------------------------
  def process_normal_character2(c, pos)
    text_width = pos[:width]
    draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
    text_width == 18 ? pos[:x] += text_width : pos[:x] += text_width * 1.6
  end
end
class Window_Getinfo < Window_Base
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh(id, type, text = "")
    case type
    when 0 ; data = $data_items[id]
    when 1 ; data = $data_weapons[id]
    when 2 ; data = $data_armors[id]
    when 3 ; data = $data_skills[id]
    when 4 ; data = id
    else   ; p "typeの値がおかしいです><;"
    end
    c = B_COLOR
    self.contents.fill_rect(0, 14, 544, 24, c)
    if type < 4
      draw_item_name(data, 4, 14)
      draw_text_ex2(204, 14, 210, description(data))
    else
      draw_icon(G_ICON, 4, 14)
      draw_text(28, 14, 176, line_height,
      data.to_s + Vocab.currency_unit)
      $game_party.gain_gold(id) if GET
    end
    self.contents.font.size = 14
    w = contents.text_size(text).width
    change_color(normal_color)
    contents.fill_rect(0, 0, w + 4, 14, c)
    contents.draw_text_f(4, 0, 340, 14, text)
    $game_party.gain_item(data,1) if type <= 2 && GET
    Graphics.frame_reset
  end
end
銀河。
記事: 2
登録日時: 2021年1月30日(土) 09:59

Re: レーネ様のアイテム入手インフォについて質問です。

投稿記事by 銀河。 » 2021年1月30日(土) 23:20

無事解決しました!
わざわざありがとうございます!

“VX / Ace:質問” へ戻る