忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。




2024/04/20 07:45 |
Window_ScrollHelp

本作の色々な所で多用している、
文字列のスクロール効果を持つヘルプウインドウの機能を提供するスクリプトです。
文字列が長い場合は自動的にスクロールし、
Aボタン(シフトキー等)の押下によってスクロール速度が高速化します。
af73d6d2.PNG


←例のこのウインドウですよ




こちらのスクリプトは
KGC Software さん (http://ytomy.sakura.ne.jp/) のスクリプトを流用して
私が一部改造したものです。
ただし、これに関する質問は、 KGC Software さんの方には投げないようにお願いします。



#==============================================================================
# ■ Window_ScrollHelp
#------------------------------------------------------------------------------
#  文字が流れるヘルプウィンドウです。
#------------------------------------------------------------------------------
#  ◆使い方◆
#
#
# デフォでヘルプウインドウが使われている各シーン(Scene_Itemとか)の
# def main 内の
# @help_window = Window_Help.new
# と書かれている行を
# @help_window = Window_ScrollHelp.new
# と書き換えれば大体そのままで使えます。
# ヘルプウインドウに表示する文字列が短い場合はそのまま表示し、
# 文字列が長い場合は自動的にスクロールします。
#
# set_text は Window_Help の物と同様に使えます。
# ただし、set_text(text) のあとに set_text(text,wait,speed) と
# ウェイトとスピードの数値を指定する事で
# スクロールのスピードをより詳細に調節できます。
# (指定しない場合のデフォルト値はウェイトが60、スピードが2)
#------------------------------------------------------------------------------
#==============================================================================

class Window_ScrollHelp < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    @dummy_bmp = Bitmap.new(32, 32)
    self.windowskin = RPG::Cache.windowskin("001-Blue01")
    self.stretch = true
    self.contents = Bitmap.new(32, 32)
    @contents_width = 0
    @scroll = false
    @wait_time = 0
    @speed = 2
  end
  #--------------------------------------------------------------------------
  # ● 破棄
  #--------------------------------------------------------------------------
  def dispose
    @dummy_bmp.dispose
    super()
  end
  #--------------------------------------------------------------------------
  # ● テキスト設定
  #     text  : ウィンドウに表示する文字列
  #     wait  : スクロール開始までのウェイト
  #     speed : スクロールのスピード
  #--------------------------------------------------------------------------
  def set_text(text ,wait = 60 ,speed = 2)
    # 再描画
    if !text.equal?(@text)
      @contents_width = @dummy_bmp.text_size(text).width + 16
      self.contents.dispose
      self.contents = Bitmap.new(@contents_width, 32)
      self.contents.draw_text(4, 0, @contents_width, 32, text, 0)
      @text = text
      @scroll = @contents_width > self.width - 32
      @wait_time = wait
      @speed = speed
      self.ox = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------
  def update
    super
    if @scroll
      update_scroll
    end
  end
  #--------------------------------------------------------------------------
  # ● スクロール更新
  #--------------------------------------------------------------------------
  def update_scroll
    # Aボタン(シフトキー)押下状態でスクロールを高速化
    if @wait_time > 0
      if Input.press?(Input::A)
        @wait_time -= 5
      else
        @wait_time -= 1
      end
    else
      if Input.press?(Input::A)
        self.ox += 5
      else
        self.ox += @speed
      end
      if self.ox > @contents_width
        self.ox = 0
        @wait_time = 60
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    text = @text
    @text = nil
    set_text(text)
  end
end
#==============================================================================

PR

2009/03/29 13:21 | Comments(5) | TrackBack() | テクニック

トラックバック

トラックバックURL:

コメント

テクニックで公開されているゲージの描画の所で全角文字で記述されておられますが何か他のスクリプトで記述方法を変えておられるのでしょうか?
スクリプトは初めてなので質問してみました。

posted by DOTWL at 2009/03/30 18:45 [ コメントを修正する ]
>DOTWLさん

「目盛り1」とかのことでしたら、あれは単に使い捨てのローカル変数にパッと見て判り易い名前を付けてあるだけなので、日本語でもアルファベットでも何でも良いです。
特に設定などは必要なく、普通にツクールのデフォルトの状態でも使用できると思います。
ただ、"$"、"@"、"@@"、"A~Zのどれか(アルファベット大文字)"、が識別子(変数名の最初の文字)である場合はローカル変数にはなりません。

「actor.愛」とかのことでしたら、Game_ActorもしくはGame_Battlerの方で、メソッドを追加しています。
デフォルトではhp、sp、atk、pdef、mdef、eva、str、dex、agi、int等が
ステータス値として設定されていますが、私はこれらを使っていません。
本作ではhp、sp、攻撃、守備、敏捷、霊力、抵抗、知性、命中、回避、必殺、愛、その他色々とパラメータを設定する必要があるため、独自に拡張しています。
posted by  ! at 2009/03/30 23:31 [ コメントを修正する ]
返信ありがとうございます。
ローカル変数をつかうんですね。
自分もまだシナリオを構築している段階ですが頑張って作っていきます。
posted by DOTWL at 2009/03/31 07:18 [ コメントを修正する ]
こんにちは、このスクロールするヘルプを
戦闘中にも機能させたいのですが、如何すれば
良いのでしょうか?
posted by taiki at 2010/04/01 18:15 [ コメントを修正する ]
あ、すいません
上の書き込みはやっぱりスルーでお願いします。
posted by taiki at 2010/04/01 18:19 [ コメントを修正する ]

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<人形のマウスカーソル | HOME | Part17アップ>>
忍者ブログ[PR]