本作の色々な所で多用している、
文字列のスクロール効果を持つヘルプウインドウの機能を提供するスクリプトです。
文字列が長い場合は自動的にスクロールし、
Aボタン(シフトキー等)の押下によってスクロール速度が高速化します。
←例のこのウインドウですよ
こちらのスクリプトは
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
#==============================================================================
トラックバック
コメント
「目盛り1」とかのことでしたら、あれは単に使い捨てのローカル変数にパッと見て判り易い名前を付けてあるだけなので、日本語でもアルファベットでも何でも良いです。
特に設定などは必要なく、普通にツクールのデフォルトの状態でも使用できると思います。
ただ、"$"、"@"、"@@"、"A~Zのどれか(アルファベット大文字)"、が識別子(変数名の最初の文字)である場合はローカル変数にはなりません。
「actor.愛」とかのことでしたら、Game_ActorもしくはGame_Battlerの方で、メソッドを追加しています。
デフォルトではhp、sp、atk、pdef、mdef、eva、str、dex、agi、int等が
ステータス値として設定されていますが、私はこれらを使っていません。
本作ではhp、sp、攻撃、守備、敏捷、霊力、抵抗、知性、命中、回避、必殺、愛、その他色々とパラメータを設定する必要があるため、独自に拡張しています。
ローカル変数をつかうんですね。
自分もまだシナリオを構築している段階ですが頑張って作っていきます。
戦闘中にも機能させたいのですが、如何すれば
良いのでしょうか?
スクリプトは初めてなので質問してみました。