#============================================================================== # ○汎用スタッフロール Ver1.00 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # お手軽にスタッフロールを作成します。 #============================================================================== # スタッフロールに流したい文字をSR_TXTに入れ、 # イベントコマンドのスクリプトで「staffroll」と入れると # スタッフロールが始まります。 # SPACEnと入れることでnピクセル分のスペースを挿入することが出来ます。 module SNF SR_TXT = "■製作 SPACE10 西瓜 SPACE10 ■グラフィック SPACE10 西瓜 かぼちゃ メロン キューカンバー SPACE10 ■音楽 SPACE10 へちま 冬瓜 ゴーヤ ズッキーニ SPACE100 Thank you for your playing! " SR_BG = "gameover" # Systemフォルダに入った、スタッフロール画面の背景 SR_BGM = "Audio/BGM/theme4" # BGM SR_COLOR = Color.new(255, 255, 255, 255) #フォントカラー(R, G, B, α) SR_FONTSIZE = 24 # フォントサイズ SR_PLUSX = 16 # スタッフロールのX座標補正 SR_ALIGN = 0 # 文字の位置 0:左寄せ 1:中央寄せ 2:右寄せ SR_SPEED = 1 # 小さいほどスクロール速度が速くなる(1が最小) SR_SPACE = 6 # 各行の間に挿入されるスペース SR_BEGINWAIT = 200 # スタッフロールが流れ始めるまでの時間 SR_ENDWAIT = 500 # スタッフロールが流れ終わってから画面を閉じるまでの時間 SR_BACKSCENE = 1 # 終了後 0:タイトル画面へ戻す 1:マップ画面に戻す end class Game_Interpreter def staffroll $scene = Scene_Staffroll.new return false end end class Scene_Staffroll < Scene_Base #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super RPG::BGM.stop RPG::BGS.stop Graphics.transition(120) #~ Graphics.freeze @end = false @wait = SNF::SR_BEGINWAIT @spacing = 0 @text = SNF::SR_TXT.split(/\s*\n\s*/) @moving = false # スクロール許可 create_staffrole_graphic end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate super dispose_staffroll_graphic end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super @sprite.opacity += 1 unless @sprite.disposed? # 背景グラフィックの不透明度を徐々に上げる if @moving if @wait <= 0 and @end RPG::BGM.fade(2000) Graphics.fadeout(100) case SNF::SR_BACKSCENE when 0 $scene = Scene_Title.new when 1 $scene = Scene_Map.new end elsif @roll[@roll.size - 1].y == 0 and not @end @end = true @wait = SNF::SR_ENDWAIT elsif @wait > 0 @wait -= 1 else for i in 0..@text.size - 1 @roll[i].y -= 1 @roll[i].opacity += 8 if @roll[i].y < 416 and @roll[i].y >= 384 @roll[i].opacity -= 8 if @roll[i].y < 32 @wait = SNF::SR_SPEED end end end if Input.trigger?(Input::C) end end def perform_transition Graphics.transition(180) end def create_staffrole_graphic @sprite = Sprite.new @sprite.opacity = 0 @sprite.bitmap = Cache.system(SNF::SR_BG) @roll = [] # SPACE for i in 0..@text.size - 1 space = @text[i].scan(/SPACE(\d+)/) space = space.flatten unless space.empty? space = space[0].to_i else space = 0 end @roll[i] = Sprite.new @roll[i].bitmap = Bitmap.new(544, SNF::SR_FONTSIZE) @roll[i].opacity = 0 @roll[i].y = i * (SNF::SR_FONTSIZE + SNF::SR_SPACE) + @spacing + 416 @roll[i].x = SNF::SR_PLUSX @roll[i].bitmap.font.color = SNF::SR_COLOR @roll[i].bitmap.font.size = SNF::SR_FONTSIZE unless space == 0 @roll[i].bitmap.draw_text(0, 0, 544, SNF::SR_FONTSIZE, " ") @spacing += (space - SNF::SR_FONTSIZE) else @roll[i].bitmap.draw_text(0, 0, 544, SNF::SR_FONTSIZE, @text[i], SNF::SR_ALIGN) end end @moving = true Audio.bgm_play(SNF::SR_BGM) end def dispose_staffroll_graphic @sprite.bitmap.dispose @sprite.dispose for i in 0..@roll.size - 1 @roll[i].dispose end end end