PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Rpgmaker XP] Suche ein Script für ein CG Menü



Yukari
30.04.2010, 16:54
Hi! :)
Da ich derzeit mit dem Rpgmaker XP an einer Visual Novel arbeite und leider nur wenig Ahnung von RGSS hab, suche ich ein Script der im Titelbildschirm neben Neu,Laden,Beenden noch CG Menü einfügt wo man eben freigeschaltete Bilder ansehen kann.
Ich hab schon einige englische Seiten durchsucht und auch google befragt aber gab leider keine Ergebnisse :(
Kann mir jemand helfen? lf ;)

XGazudin
30.04.2010, 17:01
Das hinzufügen eines weiteren Menüpunkts im Titelbildschirm ist kein Problem, aber wie genau soll der Rest aussehen also die Anzeige der Bilder, vom Prinzip her?
Wird dann einfach nacheinander jedes freigeschaltete Bild angezeigt, per tastendruck, (enter, pfeiltasten), oder gibt es für jedes Bild einen "Platzhalter" an denen man sich vorbeiklicken muss?

Mehr Details bitte :)

Yukari
30.04.2010, 17:18
Es sollte ähnlich wie hier aussehen:
http://npshare.de/files/85340b8a/dc.png

Kann auch simpler sein reicht eigentlich, wenn am rand die Charakternamen steht man mit Enter den Charakter auswählt und die Bilder die bereits freigeschalten sind werden als kleine Vorschau angezeigt und wenn man Enter drückt werden sie groß angezeigt.

Cepanks
30.04.2010, 18:31
Das einzige, das ich kenne, ist das hier (http://www.lemon-slice.net/rgss_sound5.html), wobei das keine Unterteilung für einzelne Charaktere hat (der zweite Menüpunkt ist ein Musikplayer :/), aber das sollte sich bei Interesse eigentlich recht einfach umschreiben lassen.

# 自動読み込み型サウンドテスト&CG鑑賞 Ver.2.01
# 制作:神鏡学斗
# http://www.lemon-slice.net/
# イベント>スクリプトで $extra_flag = true と記述すると
# エクストラが使用可能になります。
# CGが閲覧可能かどうかは $extra_cg で定義します。
# $extra_cg[index(好きな数字)]で指定した番号のイラストが閲覧可能になります(最初が0であることに注意)。
# サムネイル画像は自動生成しますので、用意する必要はありません。
# 一度に表示できる枚数16枚を超えた場合、LRボタンでページの切り替えができるようになります。

#==============================================================================
# ■ カスタマイズ
#==============================================================================
class Scene_Title
alias sud_customize customize
def customize
#--------------------------------------------------------------------------
# ● コマンドウィンドウの再設定(必要ないなら変更せずとも可)
# 既存のコマンドウィンドウを一度削除し、音楽鑑賞の項が入った
# コマンドウィンドウを再度作成します。
#--------------------------------------------------------------------------
sud_customize
# コマンドウィンドウを解放
@command_window.dispose
# コマンドウィンドウを再設定
s1 = "ニューゲーム"
s2 = "コンティニュー"
s3 = "エクストラ"
s4 = "シャットダウン"
@command_window = Window_Command.new(192, [s1, s2, s3, s4])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
# エクストラ有効判定
# $extra_flagがエクストラ画面の許可フラグ。
# イベント>スクリプトに$extra_flag = trueと記述すればエクストラが使用可能になります。
# はじめからエクストラを使用させたい場合は、6行下を$extra_flag = trueに変えてください。
if FileTest.exist?("AllSave.rxdata")
file = File.open("AllSave.rxdata", "rb")
read_all_data(file)
file.close
else
$extra_flag = false
$extra_cg = Array.new
$play_true = Array.new
end
unless $extra_flag
@command_window.disable_item(2)
end
sud_customize01
end
def sud_customize01
#--------------------------------------------------------------------------
# ● 曲目登録
# 再生する曲ファイル名を入力(m1などは曲番号)
# 曲のファイル名は正確に入力されている必要があります(大文字小文字も別に認識されます)。
# 上手く再生されない場合は、ファイル名を直接コピーしてください。拡張子は不要です。
# また、必要な分だけ曲のリストを追加して下さい。
#--------------------------------------------------------------------------
m0 = "001-Battle01"
m1 = "002-Battle02"
m2 = "011-LastBoss03"
m3 = "012-Theme01"
# 再生する曲のリストを入力
$play_list = [m0,m1,m2,m3]
end
end
class Scene_MusicTest
def sud_customize02
#--------------------------------------------------------------------------
# ● 曲タイトル登録
# 再生する曲のタイトルを入力(手動。配列のインデックスは曲番号に一致)
# 再設定しない場合は、ファイル名がそのまま表示されます。
#--------------------------------------------------------------------------
@play_title[2] = "The Final Duel"
@play_title[3] = "Orpheus -メインテーマ-"
end
def sud_customize03
#--------------------------------------------------------------------------
# ● 著作者登録
# 著作者、(および原題)を入力。曲番号と対応したヘルプウィンドウとなります。
# 製作者の方の著作権明記・保護のため、必ず入力してください。
# 名前、リストの入力方法は曲目登録と同じです。
#--------------------------------------------------------------------------
h0 = "作:エンターブレイン"
h1 = "作:エンターブレイン"
h2 = "作:エンターブレイン"
h3 = "作:エンターブレイン"
# 著作者リストを入力
$copyright_list = [h0,h1,h2,h3]
end
def sud_customize04
#--------------------------------------------------------------------------
# ● 音楽鑑賞画面の背景設定
# 背景を設定します。好きな画像を設定してください。
# 初期状態ではタイトル画面がそのまま表示されるようになっています。
# ピクチャーから画像を呼び出す時は、
# @sprite.bitmap = RPG::Cache.picture("***(ファイル名)")
# と記述します。
#--------------------------------------------------------------------------
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
end
end
class Scene_CG
def cg_customize01
#--------------------------------------------------------------------------
# ● CG登録
# 再生するCGファイル名を入力(m1などはCG番号)
# 曲のファイル名は正確に入力されている必要があります。
# 上手く再生されない場合は、ファイル名を直接コピーしてください。拡張子は不要です。
# また、必要な分だけCGのリストを追加して下さい。
#--------------------------------------------------------------------------
@cg_list = Array.new
m0 = "test0"
m1 = "test0"
m2 = "test1"
m3 = "test2"
m4 = "test2"
m5 = "test3"
m6 = "test4"
m7 = "test5"
m8 = "test5"
m9 = "test5"
m10 = "test6"
m11 = "test7"
m12 = "test7"
m13 = "test7"
m14 = "test7"
m15 = "test8"
m16 = "test9"
m17 = "test9"
m18 = "test9"
m19 = "test9"
m20 = "test9"
m21 = "test9"
m22 = "test9"
m23 = "test9"
m24 = "test9"
m25 = "test9"
m26 = "test9"
m27 = "test9"
m28 = "test9"
m29 = "test9"
m30 = "test9"
m31 = "test9"
m32 = "test9"
# 再生するCGのリストを入力
# 閲覧可能かどうかは、$extra_cgで定義
#(定義は自動で行います。後は、イベント>スクリプトでtureにすると閲覧可能になります)
@cg_list = [m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,
m18,m19,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m30,m31,m32]
end
end
class Sprite_CG < Sprite
def cg_customize02
#--------------------------------------------------------------------------
# ● 閲覧不能時のCG登録
# $extra_cg = false 時に使用。閲覧できないCGの代わりとなります。
# 初期状態ではタイトル画面が縮小されて表示されるようになっています。
# ピクチャーから画像を呼び出す時は、
# self.bitmap = RPG::Cache.picture("***(ファイル名)")
# と記述します。
#--------------------------------------------------------------------------
self.bitmap = RPG::Cache.title($data_system.title_name)
end
end
class Spriteset_CG < RPG::Sprite
def cg_customize03
#--------------------------------------------------------------------------
# ● CG閲覧画面の背景を設定
# 背景を設定します。好きな画像を設定してください。
# 初期状態ではタイトル画面がそのまま表示されるようになっています。
# ピクチャーから画像を呼び出す時は、
# @back_sprite.bitmap = RPG::Cache.picture("***(ファイル名)")
# と記述します。
#--------------------------------------------------------------------------
@back_sprite.bitmap = RPG::Cache.title($data_system.title_name)
end
end
#==============================================================================
# ■ オールセーブ・システム
# オリジナルの改造を施さないなら、変更の必要なし。
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# ● オールセーブデータの書き込み
# file : 書き込み用ファイルオブジェクト (オープン済み)
# イベントで認識している変数をグローバル変数に変換する場合は
# (例)$extra_variable = $game_variables[x]のような記述を
# 追加してください(例として変数1番を記録するようになっています)
# 他に保存したい変数がある場合、自由に増やす事が出来ます。
#--------------------------------------------------------------------------
def write_all_data(file)
Marshal.dump($extra_flag, file) # エクストラフラッグの保存
Marshal.dump($extra_cg, file) # CGリストの保存
Marshal.dump($play_true, file) # 再生可能な曲のリスト
end
end
class Interpreter
#--------------------------------------------------------------------------
# ● オールセーブ実行
# イベント>スクリプトで all_save と記述すると実行される。
#--------------------------------------------------------------------------
def all_save
# 外部データ作成
file = File.open("AllSave.rxdata", "wb")
# 上で記録するものと同じにする。
Marshal.dump($extra_flag, file) # エクストラフラッグの保存
Marshal.dump($extra_cg, file) # CGリストの保存
Marshal.dump($play_true, file) # 再生可能な曲のリスト
# ここまで
file.close
end
end
class Scene_Title
#--------------------------------------------------------------------------
# ● オールセーブデータの読み込み
# file : 読み込み用ファイルオブジェクト (オープン済み)
# ここでオールセーブデータとして保存してあるグローバル変数を読み込む。
# なお、変数を読み込む順番は書き込んだ順番と同じにする事。
#--------------------------------------------------------------------------
def read_all_data(file)
$extra_flag = Marshal.load(file)
$extra_cg = Marshal.load(file)
$play_true = Marshal.load(file)
end
end
#==============================================================================
# オールセーブここまで
#==============================================================================
# ■ カスタマイズここまで
#==============================================================================
#
#
#==============================================================================
# ■ Sprite_CG
#------------------------------------------------------------------------------
#  CG表示用のスプライトです。
#==============================================================================

class Sprite_CG < Sprite
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# viewport : ビューポート
#--------------------------------------------------------------------------
def initialize(viewport, cg, index)
super(viewport)
@cg = cg
@index = index
# 画像を設定
cg_true = ($cg_page-1) * 16 + @index
if $extra_cg[cg_true] == true
self.bitmap = RPG::Cache.picture(@cg)
else
cg_customize02
end
# スプライトを可視に設定
self.visible = true
# 転送元原点を設定
self.ox = 0
self.oy = 0
# スプライトの座標を設定
cg_x = @index % 4 * (96 + 40) + 68
cg_y = @index / 4 * 84 + 54
self.x = cg_x
self.y = cg_y
# 拡大率、不透明度、ブレンド方法を設定
self.zoom_x = 0.15
self.zoom_y = 0.15
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
end
#==============================================================================
# ■ Spriteset_CG
#------------------------------------------------------------------------------
#  CG画面のスプライトをまとめたクラスです。
#==============================================================================

class Spriteset_CG < RPG::Sprite
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :viewport1 # 背景表示用のビューポート
attr_reader :viewport2 # CG表示用のビューポート
attr_reader :viewport3 # サムネイル表示用のビューポート
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# viewport1 サムネイル
# viewport2 メインCG
#--------------------------------------------------------------------------
def initialize(cg_list)
@CG_list = cg_list
@cg_page = 0
# ビューポートを作成
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport1.z = 0
@viewport2.z = 3000
@viewport3.z = 101
# 背景を作成
@back_sprite = Sprite.new(@viewport1)
cg_customize03
# サムネイルスプライトを作成(初期処理)
@CG_sprites = []
index = 0
for cg in @CG_list
@CG_sprites.push(Sprite_CG.new(@viewport3, cg, index))
index += 1
if index == 16
break
end
end
# メインCGを作成
@main_sprite = Sprite.new(@viewport2)
@main_sprite.visible = false
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
# 背景ビットマップが存在していたら解放
if @back_sprite.bitmap != nil
@back_sprite.bitmap.dispose
end
# 背景スプライトを解放
@back_sprite.dispose
# CGスプライトを解放
for sprite in @CG_sprites
sprite.dispose
end
# メインビットマップが存在していたら解放
if @main_sprite.bitmap != nil
@main_sprite.bitmap.dispose
end
# メインスプライトを解放
@main_sprite.dispose
# ビューポートを解放
@viewport1.dispose
@viewport2.dispose
@viewport3.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update(cg_name)
@cg_name = cg_name
# メインCGを更新
if $play_cg and $cg_showing == false
@main_sprite.bitmap = RPG::Cache.picture(@cg_name)
@main_sprite.opacity = 5
@main_sprite.visible = true
while @main_sprite.opacity < 255
@main_sprite.opacity += 25
# ゲーム画面を更新
Graphics.update
end
$cg_showing = true
elsif $play_cg == false and $cg_showing == false
while @main_sprite.opacity >= 5
@main_sprite.opacity -= 25
# ゲーム画面を更新
Graphics.update
end
@main_sprite.visible = false
$cg_showing = true
end
# ビューポートを更新
@viewport1.update
@viewport2.update
@viewport3.update
end
end
#==============================================================================
# ■ Window_CGSelect
#------------------------------------------------------------------------------
#  カーソルの移動やスクロールの機能を持つウィンドウクラスです。
#==============================================================================

class Window_CGSelect < Window_Base
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :index # カーソル位置
attr_reader :help_window # ヘルプウィンドウ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
# width : ウィンドウの幅
# height : ウィンドウの高さ
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@item_max = 1
@column_max = 1
@index = -1
end
#--------------------------------------------------------------------------
# ● カーソル位置の設定
# index : 新しいカーソル位置
#--------------------------------------------------------------------------
def index=(index)
@index = index
# ヘルプテキストを更新 (update_help は継承先で定義される)
if self.active and @help_window != nil
update_help
end
# カーソルの矩形を更新
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 行数の取得
#--------------------------------------------------------------------------
def row_max
# 項目数と列数から行数を算出
return (@item_max + @column_max - 1) / @column_max
end
#--------------------------------------------------------------------------
# ● 先頭の行の取得
#--------------------------------------------------------------------------
def top_row
# ウィンドウ内容の転送元 Y 座標を、1 行の高さ 84 で割る
return self.oy / 84
end
#--------------------------------------------------------------------------
# ● 先頭の行の設定
# row : 先頭に表示する行
#--------------------------------------------------------------------------
def top_row=(row)
# row が 0 未満の場合は 0 に修正
if row < 0
row = 0
end
# row が row_max - 1 超の場合は row_max - 1 に修正
if row > row_max - 1
row = row_max - 1
end
# row に 1 行の高さ 84 を掛け、ウィンドウ内容の転送元 Y 座標とする
self.oy = row * 84
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
# ウィンドウの高さから、フレームの高さ 84 を引き、1 行の高さ 84 で割る
return (self.height - 84) / 84
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる項目数の取得
#--------------------------------------------------------------------------
def page_item_max
# 行数 page_row_max に 列数 @column_max を掛ける
return page_row_max * @column_max
end
#--------------------------------------------------------------------------
# ● ヘルプウィンドウの設定
# help_window : 新しいヘルプウィンドウ
#--------------------------------------------------------------------------
def help_window=(help_window)
@help_window = help_window
# ヘルプテキストを更新 (update_help は継承先で定義される)
if self.active and @help_window != nil
update_help
end
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
# カーソル位置が 0 未満の場合
if @index < 0
self.cursor_rect.empty
return
end
# カーソルの幅を計算
cursor_width = self.width / @column_max - 32
# カーソルの座標を計算
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 84 - self.oy
# カーソルの矩形を更新
self.cursor_rect.set(x, y, cursor_width, 84)
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
# カーソルの移動が可能な状態の場合
if self.active and @item_max > 0 and @index >= 0
# 方向ボタンの下が押された場合
if Input.repeat?(Input::DOWN)
# 列数が 1 かつ 方向ボタンの下の押下状態がリピートでない場合か、
# またはカーソル位置が(項目数 - 列数)より前の場合
if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
@index < @item_max - @column_max
# カーソルを下に移動
$game_system.se_play($data_system.cursor_se)
@index = (@index + @column_max) % @item_max
end
end
# 方向ボタンの上が押された場合
if Input.repeat?(Input::UP)
# 列数が 1 かつ 方向ボタンの上の押下状態がリピートでない場合か、
# またはカーソル位置が列数より後ろの場合
if (@column_max == 1 and Input.trigger?(Input::UP)) or
@index >= @column_max
# カーソルを上に移動
$game_system.se_play($data_system.cursor_se)
@index = (@index - @column_max + @item_max) % @item_max
end
end
# 方向ボタンの右が押された場合
if Input.repeat?(Input::RIGHT)
# 列数が 2 以上で、カーソル位置が(項目数 - 1)より前の場合
if @column_max >= 2 and @index < @item_max - 1
# カーソルを右に移動
$game_system.se_play($data_system.cursor_se)
@index += 1
end
end
# 方向ボタンの左が押された場合
if Input.repeat?(Input::LEFT)
# 列数が 2 以上で、カーソル位置が 0 より後ろの場合
if @column_max >= 2 and @index > 0
# カーソルを左に移動
$game_system.se_play($data_system.cursor_se)
@index -= 1
end
end
# R ボタンが押された場合
if Input.repeat?(Input::R)
# 現在表示されているページ数*16枚より総CG数が多い場合
if @cg_max > $cg_page * 16
# カーソルを 1 ページ後ろに移動
$game_system.se_play($data_system.cursor_se)
$cg_page += 1
end
end
# L ボタンが押された場合
if Input.repeat?(Input::L)
# ページが2以上の場合
if $cg_page >= 2
# カーソルを 1 ページ前に移動
$game_system.se_play($data_system.cursor_se)
$cg_page -= 1
end
end
end
page_max = @cg_max / 16
if @cg_max % 16 > 0
page_max += 1
end
@page_help = "Page " + $cg_page.to_s + " / " + page_max.to_s + " "
if $cg_page >= 2 and @cg_max > $cg_page * 16
@page_help += "← L  R →"
elsif $cg_page >= 2 and @cg_max <= $cg_page * 16
@page_help += "← L"
elsif $cg_page = 1 and @cg_max > $cg_page * 16
@page_help += "      R →"
end
# ヘルプテキストを更新 (update_help は継承先で定義される)
if self.active and @help_window != nil
update_help
end
# カーソルの矩形を更新
update_cursor_rect
end
end
#==============================================================================
# ■ Window_CG
#------------------------------------------------------------------------------
#  CG鑑賞で使用するウィンドウです。
#==============================================================================

class Window_CG < Window_CGSelect
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(item_max)
super(48, 32, 544, 366)
# 表示するCGの総枚数
@item_max = item_max
@cg_max = item_max
@cg_page = 0
# 一行に表示するCGの枚数
@column_max = 4
update
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
if @cg_page != $cg_page
# 一ページに表示するCGの枚数
if $cg_page * 16 < @cg_max
@item_max = 16
else
@item_max = @cg_max - ($cg_page - 1) * 16
end
@cg_page = $cg_page
end
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
if @help_window.visible == true
@help_window.set_text(@page_help)
end
end
end
#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Title
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# menu_index : コマンドのカーソル初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# 戦闘テストの場合
if $BTEST
battle_test
return
end
# データベースをロード
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# システムオブジェクトを作成
$game_system = Game_System.new
# タイトルグラフィックを作成
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# コマンドウィンドウを作成
s1 = "ニューゲーム"
s2 = "コンティニュー"
s3 = "シャットダウン"
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
# カスタマイズ挿入ポイント
customize
# コンティニュー有効判定
# セーブファイルがひとつでも存在するかどうかを調べる
# 有効なら @continue_enabled を true、無効なら false にする
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# コンティニューが有効な場合、カーソルをコンティニューに合わせる
# 無効な場合、コンティニューの文字をグレー表示にする
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
# タイトル BGM を演奏
$game_system.bgm_play($data_system.title_bgm)
# ME、BGS の演奏を停止
Audio.me_stop
Audio.bgs_stop
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# コマンドウィンドウを解放
@command_window.dispose
# タイトルグラフィックを解放
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# コマンドウィンドウを更新
@command_window.update
# C ボタンが押された場合
if Input.trigger?(Input::C)
# コマンドウィンドウのカーソル位置で分岐
case @command_window.index
when 0 # ニューゲーム
command_new_game
when 1 # コンティニュー
command_continue
when 2 # エクストラ
command_extra
when 3 # シャットダウン
command_shutdown
end
end
end
#--------------------------------------------------------------------------
# ● コマンド : エクストラ
#--------------------------------------------------------------------------
def command_extra
# コンティニューが無効の場合
unless $extra_flag
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# エクストラ画面に切り替え
$scene = Scene_Extra.new
end
end
#==============================================================================
# ■ Scene_Save
#------------------------------------------------------------------------------
#  セーブ画面の処理を行うクラスです。
#==============================================================================

class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super("どのファイルにセーブしますか?")
# オールセーブデータの書き込み
file = File.open("AllSave.rxdata", "wb")
write_all_data(file)
file.close
end
end
#==============================================================================
# ■ Scene_Extra
#------------------------------------------------------------------------------
#  エクストラ画面の処理を行うクラスです。
#==============================================================================

class Scene_Extra
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# menu_index : コマンドのカーソル初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# コマンドウィンドウを作成
s1 = "CG"
s2 = "音楽"
s3 = "戻る"
@command_window = Window_Command.new(160, [s1, s2, s3])
@command_window.x = 0
@command_window.index = @menu_index
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@command_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ウィンドウを更新
@command_window.update
update_command
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_command
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# マップ画面に切り替え
$scene = Scene_Title.new(3)
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# コマンドウィンドウのカーソル位置で分岐
case @command_window.index
when 0 # CG
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# CG画面に切り替え
$scene = Scene_CG.new
when 1 # 音楽
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# 音楽鑑賞画面に切り替え
$scene = Scene_MusicTest.new
when 2 # 戻る
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# タイトル画面に切り替え
$scene = Scene_Title.new(3)
end
return
end
end
end
#==============================================================================
# ■ Window_MusicTest
#------------------------------------------------------------------------------
#  音楽鑑賞で使用するウィンドウです。
#==============================================================================

class Window_MusicTest < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(play_title)
@play_title = play_title
super(64, 32, 512, 354)
@column_max = 2
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
# ビットマップを作成し、全項目を描画
@item_max = @play_title.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
if $play_true[i] == true
draw_title(i)
else
draw_false(i)
end
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_title(index)
music_name = @play_title[index]
x = index % 2 * (220 + 40)
y = index / 2 * 32
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 220, 32, music_name, 1)
end
#--------------------------------------------------------------------------
# ● 項目の描画(false)
#--------------------------------------------------------------------------
def draw_false(index)
x = index % 2 * (220 + 40)
y = index / 2 * 32
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 220, 32, "???", 1)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
if $play_true[self.index] == true
@help_window.set_text($copyright_list[self.index])
else
@help_window.set_text("???")
end
end
end
#==============================================================================
# ■ Scene_MusicTest
#------------------------------------------------------------------------------
#  音楽鑑賞画面の処理を行うクラスです。
#==============================================================================

class Scene_MusicTest
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# menu_index : コマンドのカーソル初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
@play_title = []
# 再生する曲のタイトルを入力
@play_title[0,0] = $play_list
sud_customize02
sud_customize03
# BGM、ME、BGS の演奏を停止
Audio.bgm_stop
Audio.me_stop
Audio.bgs_stop
# 背景を作成
@sprite = Sprite.new
sud_customize04
# コマンドウィンドウを作成
@command_window = Window_MusicTest.new(@play_title)
@command_window.back_opacity = 160
@command_window.index = 0
# ヘルプウィンドウを作成
@help_window = Window_Help.new
@help_window.y = 416
@help_window.back_opacity = 160
# ヘルプウィンドウを関連付け
@command_window.help_window = @help_window
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# 背景を解放
@sprite.dispose
# ウィンドウを解放
@command_window.dispose
@help_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ウィンドウを更新
@command_window.update
update_command
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_command
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# エクストラ画面に切り替え
$scene = Scene_Extra.new
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
play = $play_true[@command_window.index]
if play == true
Audio.bgm_stop
play_bgm = $play_list[@command_window.index]
# 音楽を演奏
Audio.bgm_play("Audio/BGM/" + play_bgm)
else
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
#==============================================================================
# ■ Scene_CG
#------------------------------------------------------------------------------
#  CG鑑賞画面の処理を行うクラスです。
#==============================================================================

class Scene_CG
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# menu_index : コマンドのカーソル初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
$play_cg = false
$cg_page = 1
@now_page = 1
cg_customize01
# cg_listから1ページ表示分16枚を抜き出す。
@now_list = @cg_list[0,16]
# スプライトセットを作成
@spriteset = Spriteset_CG.new(@now_list)
# コマンドウィンドウを作成
item_max = @cg_list.size
@command_window = Window_CG.new(item_max)
@command_window.back_opacity = 160
@command_window.index = 0
@command_window.visible = true
# ヘルプウィンドウを作成
@help_window = Window_Help.new
@help_window.y = 416
@help_window.back_opacity = 160
# ヘルプウィンドウを関連付け
@command_window.help_window = @help_window
# 表示するCGが16枚以下(1ページ)なら、ヘルプウィンドウを消す。
if item_max <= 16
@help_window.visible = false
end
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# スプライトセットを解放
@spriteset.dispose
# ウィンドウを解放
@command_window.dispose
@help_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# スプライトセットを更新
@spriteset.update(@cg_name)
# ページが変わっていたら@now_listを書き換え。
if @now_page != $cg_page
# 前のスプライトセットを解放
@spriteset.dispose
# cg_listから1ページ表示分16枚を抜き出す。
s = ($cg_page - 1) * 16
@now_list = @cg_list[s,16]
# スプライトセットを作成
@spriteset = Spriteset_CG.new(@now_list)
@now_page = $cg_page
@command_window.index = 0
end
# ウィンドウを更新
@command_window.update
update_command
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_command
if $play_cg != true
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# エクストラ画面に切り替え
$scene = Scene_Extra.new
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
index = @command_window.index + ($cg_page - 1) * 16
if $extra_cg[index] == true
@cg_name = @cg_list[index]
$play_cg = true
$cg_showing = false
@command_window.active = false
else
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
end
return
end
else
# B ボタンか C ボタンが押された場合
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
$play_cg = false
$cg_showing = false
@command_window.active = true
end
end
end
end
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
#  システム周りのデータを扱うクラスです。BGM などの管理も行います。このクラス
# のインスタンスは $game_system で参照されます。
#==============================================================================

class Game_System
#--------------------------------------------------------------------------
# ● BGM の演奏
# bgm : 演奏する BGM
#--------------------------------------------------------------------------
def bgm_play(bgm)
@playing_bgm = bgm
if bgm != nil and bgm.name != ""
if $play_list != nil
play = $play_list.index(bgm.name)
end
if play != nil
$play_true[play] = true
end
Audio.bgm_play("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch)
else
Audio.bgm_stop
end
Graphics.frame_reset
end
end

Yukari
30.04.2010, 18:51
Danke das ist sogar noch besser wegen dem Musikplayer :)
Wie füge ich das ein wenn ich ein anderen Titelbildschirm als den Standart benutze?

Cepanks
30.04.2010, 19:15
Am besten das Titel-Script mal posten, sonst wird's ein wildes rumraten (:

Und Musikplayer find ich doof, wenn man auch einfach den Audioorder öffnen kann :D

Yukari
30.04.2010, 20:16
Ich benutze dieses Script:
#==============================================================================
# ++ Title Screen Edit ver. 1.10 ++
#  Script by ParaDog
#  http://2d6.parasite.jp/
#------------------------------------------------------------------------------
# Edits the title menu by replacing the menu options with picture graphics.
#==============================================================================
module PARA_TITLE_CUSTOM

# The picture is used in menu command ( true / false )
IMG_MENU = true
# ---Settings if using images for the menu options---
# The graphics file name which is used in menu command(In "Graphics/Titles" import)
#( As for the prescribed form when [ default, highlighted] )

# New Game
IMG_NEWGAME = ["newgame", "newgame_active"]
IMG_NEWGAME_X = 450 # Horizontal position
IMG_NEWGAME_Y = 320 # Vertical position

# Continue
IMG_LOAD = ["continue", "continue_active"]
IMG_LOAD_X = 450 # Horizontal position
IMG_LOAD_Y = 360 # Vertical position

# Shutdown
IMG_END = ["shutdown", "shutdown_active"]
IMG_END_X = 450 # Horizontal position
IMG_END_Y = 400 # Vertical position


# When continuity new invalid ( 0:Translucency / 1:Appointing the picture )
LOAD_DISABLED_TYPE = 0

# Picture when continuing invalid
IMG_LOAD_DISABLED = ["continue_disabled", "continue_disabled_active"]

# Blending method of picture ( 0:Normal / 1:Addition / 2:Subtraction )
BLEND_TYPE = 0
# ---Settings if using text for the menu options---

# Character string of menu command
MENU_NEWGAME = "New Game" # New Game
MENU_LOAD = "Continue" # Continue
MENU_END = "Shutdown" # Shutdown
# Window framework non indication ( true / false )
WINDOW_TRANS = false
# When transparency of the window (indicating the window framework, appointment)
WINDOW_OPACITY = 160
# Width of window
WINDOW_WIDTH = 192
# Horizontal alignment of window ( 0: by Coordinates / 1: Left / 2: Center / 3:Right )
WINDOW_ALIGN = 2
# If "by coordinates", positions the window horizontally
WINDOW_POS_X = 0
# Vertical position of window (0: by Coordinates / 1: Top / 2: Center / 3: Bottom )
WINDOW_VALIGN = 0
# If "by coordinates", positions the window vertically
WINDOW_POS_Y = 288
end
# End of the config section
#------------------------------------------------------------------------------
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
# Make title graphic
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# Make command window
s1 = PARA_TITLE_CUSTOM::MENU_NEWGAME
s2 = PARA_TITLE_CUSTOM::MENU_LOAD
s3 = PARA_TITLE_CUSTOM::MENU_END
w = PARA_TITLE_CUSTOM::WINDOW_WIDTH
@command_window = Window_Command.new(w, [s1, s2, s3])
if PARA_TITLE_CUSTOM::WINDOW_TRANS
@command_window.opacity = 0
else
@command_window.back_opacity = PARA_TITLE_CUSTOM::WINDOW_OPACITY
end
# Positioning the window
case PARA_TITLE_CUSTOM::WINDOW_ALIGN
when 0
@command_window.x = PARA_TITLE_CUSTOM::WINDOW_POS_X
when 1
@command_window.x = 0
when 2
@command_window.x = ( 640 - @command_window.width ) / 2
when 3
@command_window.x = 640 - @command_window.width
end
case PARA_TITLE_CUSTOM::WINDOW_VALIGN
when 0
@command_window.y = PARA_TITLE_CUSTOM::WINDOW_POS_Y
when 1
@command_window.y = 0
when 2
@command_window.y = ( 480 - @command_window.height ) / 2
when 3
@command_window.y = 480 - @command_window.height
end
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
# Pictures used in the command menu
if PARA_TITLE_CUSTOM::IMG_MENU
@command_window.visible = false
@command_img0 = Sprite.new
@command_img0.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img0.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img0.x = PARA_TITLE_CUSTOM::IMG_NEWGAME_X
@command_img0.y = PARA_TITLE_CUSTOM::IMG_NEWGAME_Y
@command_img1 = Sprite.new
@command_img1.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
@command_img1.x = PARA_TITLE_CUSTOM::IMG_LOAD_X
@command_img1.y = PARA_TITLE_CUSTOM::IMG_LOAD_Y
@command_img2 = Sprite.new
@command_img2.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
@command_img2.x = PARA_TITLE_CUSTOM::IMG_END_X
@command_img2.y = PARA_TITLE_CUSTOM::IMG_END_Y
# If the continue option is available, the cursor is adjusted
# Otherwise, the continue option is made translucent
if @continue_enabled
select_img_item(1)
else
case PARA_TITLE_CUSTOM::LOAD_DISABLED_TYPE
when 0
@command_img1.opacity = 160
when 1
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD_DISABLED[0])
end
end
end
# Play title BGM
$game_system.bgm_play($data_system.title_bgm)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of command window
@command_window.dispose
if PARA_TITLE_CUSTOM::IMG_MENU
@command_img0.dispose
@command_img1.dispose
@command_img2.dispose
end
# Dispose of title graphic
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias update_para_tcst update
def update
update_para_tcst
if PARA_TITLE_CUSTOM::IMG_MENU
if Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
# Change picture
select_img_item(@command_window.index)
end
end
end
#--------------------------------------------------------------------------
# * Change Picture when menu select
#--------------------------------------------------------------------------
def select_img_item(index)
@command_img0.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
case PARA_TITLE_CUSTOM::LOAD_DISABLED_TYPE
when 0
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
when 1
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD_DISABLED[0])
end
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
case @command_window.index
when 0 # New Game
@command_img0.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[1])
when 1 # Continue
case PARA_TITLE_CUSTOM::LOAD_DISABLED_TYPE
when 0
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[1])
when 1
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD_DISABLED[1])
end
when 2 # Shutdown
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[1])
end
end
end

Cepanks
01.05.2010, 12:07
Okay, ersetz das Titlescreen-Script mit dem hier:

#==============================================================================
# ++ Title Screen Edit ver. 1.10 ++
#  Script by ParaDog
#  http://2d6.parasite.jp/
#------------------------------------------------------------------------------
# Edits the title menu by replacing the menu options with picture graphics.
#==============================================================================
module PARA_TITLE_CUSTOM

# The picture is used in menu command ( true / false )
IMG_MENU = true
# ---Settings if using images for the menu options---
# The graphics file name which is used in menu command(In "Graphics/Titles" import)
#( As for the prescribed form when [ default, highlighted] )

# New Game
IMG_NEWGAME = ["newgame", "newgame_active"]
IMG_NEWGAME_X = 450 # Horizontal position
IMG_NEWGAME_Y = 320 # Vertical position

# Continue
IMG_LOAD = ["continue", "continue_active"]
IMG_LOAD_X = 450 # Horizontal position
IMG_LOAD_Y = 360 # Vertical position

# Extra
IMG_EXTRA = ["extra", "extra_active"]
IMG_EXTRA_X = 450 # Horizontal position
IMG_EXTRA_Y = 400 # Vertical position

# Shutdown
IMG_END = ["shutdown", "shutdown_active"]
IMG_END_X = 450 # Horizontal position
IMG_END_Y = 440 # Vertical position


# When continuity new invalid ( 0:Translucency / 1:Appointing the picture )
LOAD_DISABLED_TYPE = 0

# Picture when continuing invalid
IMG_LOAD_DISABLED = ["continue_disabled", "continue_disabled_active"]

# When extra is disabled ( 0:Translucency / 1:Appointing the picture )
EXTRA_DISABLED_TYPE = 0

# Picture when extra is disabled
IMG_EXTRA_DISABLED = ["extra_disabled", "extra_disabled_active"]

# Blending method of picture ( 0:Normal / 1:Addition / 2:Subtraction )
BLEND_TYPE = 0
# ---Settings if using text for the menu options---

# Character string of menu command
MENU_NEWGAME = "New Game" # New Game
MENU_LOAD = "Continue" # Continue
MENU_EXTRA = "Extra"
MENU_END = "Shutdown" # Shutdown
# Window framework non indication ( true / false )
WINDOW_TRANS = false
# When transparency of the window (indicating the window framework, appointment)
WINDOW_OPACITY = 160
# Width of window
WINDOW_WIDTH = 192
# Horizontal alignment of window ( 0: by Coordinates / 1: Left / 2: Center / 3:Right )
WINDOW_ALIGN = 2
# If "by coordinates", positions the window horizontally
WINDOW_POS_X = 0
# Vertical position of window (0: by Coordinates / 1: Top / 2: Center / 3: Bottom )
WINDOW_VALIGN = 0
# If "by coordinates", positions the window vertically
WINDOW_POS_Y = 288
end
# End of the config section
#------------------------------------------------------------------------------

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
if FileTest.exist?("AllSave.rxdata")
file = File.open("AllSave.rxdata", "rb")
read_all_data(file)
file.close
else
$extra_flag = false
$extra_cg = Array.new
$play_true = Array.new
end
# Make title graphic
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# Make command window
s1 = PARA_TITLE_CUSTOM::MENU_NEWGAME
s2 = PARA_TITLE_CUSTOM::MENU_LOAD
s3 = PARA_TITLE_CUSTOM::MENU_EXTRA
s4 = PARA_TITLE_CUSTOM::MENU_END
w = PARA_TITLE_CUSTOM::WINDOW_WIDTH
@command_window = Window_Command.new(w, [s1, s2, s3, s4])
if PARA_TITLE_CUSTOM::WINDOW_TRANS
@command_window.opacity = 0
else
@command_window.back_opacity = PARA_TITLE_CUSTOM::WINDOW_OPACITY
end
# Positioning the window
case PARA_TITLE_CUSTOM::WINDOW_ALIGN
when 0
@command_window.x = PARA_TITLE_CUSTOM::WINDOW_POS_X
when 1
@command_window.x = 0
when 2
@command_window.x = ( 640 - @command_window.width ) / 2
when 3
@command_window.x = 640 - @command_window.width
end
case PARA_TITLE_CUSTOM::WINDOW_VALIGN
when 0
@command_window.y = PARA_TITLE_CUSTOM::WINDOW_POS_Y
when 1
@command_window.y = 0
when 2
@command_window.y = ( 480 - @command_window.height ) / 2
when 3
@command_window.y = 480 - @command_window.height
end
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
if !$extra_flag
@command_window.disable_item(2)
end
# Pictures used in the command menu
if PARA_TITLE_CUSTOM::IMG_MENU
@command_window.visible = false
@command_img0 = Sprite.new
@command_img0.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img0.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img0.x = PARA_TITLE_CUSTOM::IMG_NEWGAME_X
@command_img0.y = PARA_TITLE_CUSTOM::IMG_NEWGAME_Y
@command_img1 = Sprite.new
@command_img1.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
@command_img1.x = PARA_TITLE_CUSTOM::IMG_LOAD_X
@command_img1.y = PARA_TITLE_CUSTOM::IMG_LOAD_Y
@command_img2 = Sprite.new
@command_img2.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_EXTRA[0])
@command_img2.x = PARA_TITLE_CUSTOM::IMG_EXTRA_X
@command_img2.y = PARA_TITLE_CUSTOM::IMG_EXTRA_Y
@command_img3 = Sprite.new
@command_img3.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
@command_img3.x = PARA_TITLE_CUSTOM::IMG_END_X
@command_img3.y = PARA_TITLE_CUSTOM::IMG_END_Y
# If the continue option is available, the cursor is adjusted
# Otherwise, the continue option is made translucent
if @continue_enabled
select_img_item(1)
else
@command_img0.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[1])
case PARA_TITLE_CUSTOM::LOAD_DISABLED_TYPE
when 0
@command_img1.opacity = 160
when 1
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD_DISABLED[0])
end
end
if !$extra_flag
case PARA_TITLE_CUSTOM::LOAD_DISABLED_TYPE
when 0
@command_img2.opacity = 160
when 1
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_EXTRA_DISABLED[0])
end
end
end
sud_customize01
# Play title BGM
$game_system.bgm_play($data_system.title_bgm)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of command window
@command_window.dispose
if PARA_TITLE_CUSTOM::IMG_MENU
@command_img0.dispose
@command_img1.dispose
@command_img2.dispose
@command_img3.dispose
end
# Dispose of title graphic
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias update_para_tcst update
def update
update_para_tcst
if PARA_TITLE_CUSTOM::IMG_MENU
if Input.repeat?(Input::UP) || Input.repeat?(Input::DOWN)
# Change picture
select_img_item(@command_window.index)
end
end
end
#--------------------------------------------------------------------------
# * Change Picture when menu select
#--------------------------------------------------------------------------
def select_img_item(index)
@command_img0.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
case PARA_TITLE_CUSTOM::LOAD_DISABLED_TYPE
when 0
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
when 1
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD_DISABLED[0])
end
case PARA_TITLE_CUSTOM::EXTRA_DISABLED_TYPE
when 0
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_EXTRA[0])
when 1
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_EXTRA_DISABLED[0])
end
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
case @command_window.index
when 0 # New Game
@command_img0.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[1])
when 1 # Continue
case PARA_TITLE_CUSTOM::LOAD_DISABLED_TYPE
when 0
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[1])
when 1
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD_DISABLED[1])
end
when 2 # Extra
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_EXTRA[1])
when 3 # Shutdown
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[1])
end
end
end
Benötigt zwei zusätzliche Bilder extra und extra_active (bzw. noch extra_disabled und extra_disabled_active, wenn die Kostante EXTRA_DISABLED_TYPE auf 1 gesetzt ist).
Sollte eigentlich funktionieren.