RPGツクールXP/VX用のRGSS素材です。
一部英語版対応です。
(A few materials can be used for English RPG MAKER XP/VX.)
競合率はルファーの独断と偏見なのでたまにハズレます。
#==============================================================================
# ■ オープニングムービー
#------------------------------------------------------------------------------
# オープニングに AVI 動画のようなムービーを流せるようにします。まさにアニメー
# ターのための素材。動画を変換したい人は自分で調べてね!
# (C) ルファー
# WebSite https://tkoolerlufar.pages.dev/
#==============================================================================
=begin
=対応RGSS
1 2
=必要なライブラリ
ルファー作スクリプト素材共通ライブラリ
=他の素材との競合の可能性
... ないに等しい
=RPGツクールXPでの導入方法
Scene_Save より下に新セクションを作成して、
このプログラムをそこにコピーする
= 使い方
(1) 「Opening***」(***は6桁の数字。桁が余る場合は0を入れる。最初は000001)
という連番の画像をコマ数分用意してください。JPEG 推奨。
AVI が用意されてるなら BMP 連番を抽出して JPEG に変換したりしてください。
画像の大きさは勝手に合わせるのでいくらでもいいです。
(2) 「Opening」という音声ファイルを用意してください。OGG 推奨。なければ結構。
AVI が用意されてるなら WAVE を抽出して OGG Vorbis に変換したりしてください。
(3) それぞれ「Graphics/Pictures」、「Audio/BGM」にインポート。
(4) 79 行目の「秒間のフレーム数」の数値を適当に調節して完成!
ちなみにテレビ番組は30[FPS]、映画は24[FPS]、ゲーム機は60[FPS]くらいです。
= 桁数について
動画変換ソフトによってはいろんな桁数の連番画像を吐き出すので、
それに対応しました。
80 行目の「連番の桁数」の数値が 6 になってるので、これを変更してください。
=更新履歴
2010/04/25 音声が再生されないバグを修正
メモリ不足などのときにムービーを表示しないようにしてないバグを修正
連番の桁数を変更できるようにした
2010/04/13 使用ライブラリ変更
音声入りのムービーを再生するときにエラーを出す致命的バグを修正
2010/03/31 ムービー再生開始直後にスキップした際に
エラーを出して強制終了してしまうバグを修正
2010/03/01 RPGツクールVXに対応
最大フレーム数を千枚から百万枚に拡張
映像・音声の形式を無制限にした
メモリ不足などのときにムービーを表示しないようにした
2009/06/08 再定義しているメソッドと導入方法の記述に誤りがありました。
深くお詫びいたします。
2009/05/13 音が鳴るだけで画が映らないバグと、
戦闘テストするときにも流れる仕様を修正
2009/05/12 他の素材と競合しにくくした
2009/05/12 公開
=再定義しているメソッド
Scene_Title#main (エイリアス使用)
=新規定義しているメソッド
なし
=end
#----------------------------------------------------------------------------
# ◇ Lufar モジュール
#----------------------------------------------------------------------------
module Lufar
#--------------------------------------------------------------------------
# ○ 定数
#--------------------------------------------------------------------------
OPENINGMOVIE_RATE = 24 # 秒間のフレーム数 [FPS] (10-120)
OPENINGMOVIE_FIGURE = 6 # 連番の桁数
end
#----------------------------------------------------------------------------
# ◇ Scene_Opening クラス
#----------------------------------------------------------------------------
class Scene_Opening
#--------------------------------------------------------------------------
# ○ メイン処理
#--------------------------------------------------------------------------
def main
@sprite = Sprite.new
@sprite.x = screen_width / 2
@sprite.y = screen_height / 2
create_bitmaps
file_exist = false
for ext in ["mid", "mp3", "ogg", "wav", "wma"]
file_exist ||=
FileTest.exist?("Audio/BGM/Opening." + ext) &&
FileTest.file?("Audio/BGM/Opening." + ext) &&
FileTest.readable?("Audio/BGM/Opening." + ext)
end
Graphics.transition(0)
frame_rate = Graphics.frame_rate
Graphics.frame_rate = Lufar::OPENINGMOVIE_RATE
Graphics.frame_reset
if file_exist
Audio.me_play("Audio/BGM/Opening", 100, 100)
end
while $scene.equal?(self)
update
Graphics.frame_count &= ~1 # ちょっと危険な裏技 : 滑らかを強制させる
Graphics.update
Input.update
end
Audio.me_stop
Graphics.freeze
Graphics.frame_rate = frame_rate
dispose_bitmaps
@sprite.dispose
$_Lufar_Om_Seen = true
end
#--------------------------------------------------------------------------
# ○ ビットマップの作成
#--------------------------------------------------------------------------
def create_bitmaps
@bitmaps = Array.new()
for i in 1 .. (10 ** Lufar::OPENINGMOVIE_FIGURE - 1)
begin
bitmap = Bitmap.new(sprintf(
"Graphics/Pictures/Opening%0#{Lufar::OPENINGMOVIE_FIGURE}d", i))
rescue SystemCallError, RGSSError
$scene = Scene_Title.new unless $!.instance_of?(Errno::ENOENT)
break
end
@bitmaps.push(bitmap)
end
end
#--------------------------------------------------------------------------
# ○ ビットマップの解放
#--------------------------------------------------------------------------
def dispose_bitmaps
@bitmaps.each {|bitmap| bitmap.dispose }
@sprite.bitmap.dispose unless @sprite.bitmap.nil?
end
#--------------------------------------------------------------------------
# ○ フレーム更新
#--------------------------------------------------------------------------
def update
@sprite.bitmap.dispose unless @sprite.bitmap.nil?
if @bitmaps.empty? or Input.press?(Input::C)
$scene = Scene_Title.new
return
end
@sprite.bitmap = @bitmaps.shift
@sprite.ox = @sprite.bitmap.width / 2
@sprite.oy = @sprite.bitmap.height / 2
@sprite.zoom_x = @sprite.zoom_y =
[screen_width.to_f / @sprite.bitmap.width.to_f,
screen_height.to_f / @sprite.bitmap.height.to_f].min
end
end
#----------------------------------------------------------------------------
# ◆ Scene_Title クラス
#----------------------------------------------------------------------------
class Scene_Title
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias _Lufar_Om_old_main main
def main
unless $BTEST or $_Lufar_Om_Seen
$scene = Scene_Opening.new
return
end
_Lufar_Om_old_main
end
end
#----------------------------------------------------------------------------
# ○ グローバル変数
#----------------------------------------------------------------------------
$_Lufar_Om_Seen = false
戻る