Project1
标题:
Cache脚本出现问题?
[打印本页]
作者:
qiji19980124
时间:
2010-9-23 16:31
标题:
Cache脚本出现问题?
未命名.jpg
(18.38 KB, 下载次数: 1)
下载附件
保存到相册
2010-9-23 16:30 上传
就是在日站找了个菜单自定义化的脚本,
之后在菜单点击退出就会出现这个……
作者:
wsmyzc
时间:
2010-9-23 16:59
缺少pointer图片,估计还会缺别的素材。。
作者:
qiji19980124
时间:
2010-9-23 17:11
回复
wsmyzc
的帖子
可是我并没有看到脚本说明里说什么pointer额……
作者:
wsmyzc
时间:
2010-9-23 19:27
有范例的话最好下范例,然后按位置把素材放好
作者:
小鱼子
时间:
2010-9-23 20:04
嗯,你的文件夹怎么会在
system里???
放错地了吧?
作者:
qiji19980124
时间:
2010-9-24 09:13
回复
wsmyzc
的帖子
範例是什麼?
作者:
qiji19980124
时间:
2010-9-24 09:27
#==============================================================================
# ■ VX-RGSS2-2 タイトルカスタマイズ [Ver.1.0.3] by Claimh
#------------------------------------------------------------------------------
# タイトル表示時の付属機能の詰め合わせ
# <機能>
# ★ロゴ表示
# タイトル前にロゴ(絵or文字)の表示をします。
# ★タイトル名表示
# タイトル名(メインタイトル/サブタイトル)の表示をします。
# ★フェードイン
# タイトル名、タイトルコマンドのフェードイン
# ★タイムアウト
# タイトル表示中に一定時間なにも操作にないとタイトル表示をやり直します。
# ★エフェクト
# ニューゲームなどのタイトルコマンドを選択したときのちょっとした演出効果。
# ★テキストデモ
# 文字のみのデモを表示します。
# 自動で進みます(スキップも可能)
# ★イベントデモ
# イベントによって組まれたデモを表示します。
# イベントの組み方は自由。ただし、自動実行にする必要有り
# メッセージの自動送りなどの機能は入ってません。
# ★アナザーオープニング(イベントデモ)
# 特定のスイッチがON状態にあるときのみ表示されるイベントデモです。
#==============================================================================
module Title_Custom
DISP_W = 544 # 画面幅
DISP_H = 416 # 画面高さ
#----------------------------------------------------------------------------
# カスタマイズSTART
#----------------------------------------------------------------------------
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# タイトルスキップ(デバッグ用) #
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# いつもニューゲームから始める
TITLE_SKIP_ALL = false
# セーブファイルがあればコンティニュー、なければニューゲームから始める
TITLE_SKIP_CONTINUE = false
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# 機能選択(true:有効、false:無効) #
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# ロゴ表示
LOGO = false
# テキストデモ機能
TEXT_DEMO = false
# イベントデモ機能
EVENT_DEMO = false
# アナザーオープニング機能
AOP_DEMO = false
#-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# 参考値(機能ではない) #
#-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# セーブファイル最大数
SAVE_FILE_MAX = 38
#-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# デモ表示順序設定 #
#-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# 0: テキストデモ → イベントデモ ※タイムアウト時:ロゴ
# 1: イベントデモ → テキストデモ ※タイムアウト時:ロゴ
# 2: 通常:テキストデモ、タイムアウト時:イベントデモ(ロゴなし)
# 3: 通常:イベントデモ、タイムアウト時:テキストデモ(ロゴなし)
DEMO_PATTERN = 3
#-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# 各種機能別設定 #
#-*-*-*-*-*-*-*-*-*-*-*-*-*-#
#--------------------------------------------------------------------------
# ● ロゴ(表示位置は自動的に中央になります)
#--------------------------------------------------------------------------
# ロゴ時のMEファイル名(nil:不要)
LOGO_ME = "BGM2_001"
# ロゴ表示フレーム数
LOGO_F_CNT = 120
# ロゴ表示タイプ(true:テキスト、false:画像)
LOGO_TYPE = true
# ロゴ表示前のトランジションファイル名(nil:不要)
LOGO_TRN = "GUODU.png"
#---<テキストロゴ設定>---#
LT_NAME = "Made by Qiji19980124" # 表示文字(\n:改行)
LT_EDGE = true # 縁文字(true:有効、false:無効)
LT_FONT = ["微软雅黑"] # 表示フォント [第1Font,第2Font・・・]
LT_SIZE = 48 # フォントサイズ
LT_ITALIC = false # イタリック(true:有効、false:無効)
LT_BOLD = true # ボールド(true:有効、false:無効)
LT_COLOR = Color.new(255,255,255,255) # 色:Color.new(red,green,blue,alpha)
#---<画像ロゴ設定>---#
LG_FILE = "logo" # ロゴ画像ファイル名(Graphics/Titles)
#--------------------------------------------------------------------------
# ● テキストデモ演出
#--------------------------------------------------------------------------
# テキストデモ中のBGM(nil:不要)
TD_BGM = "BGM2_005"
# テキストデモ表示前のトランジションファイル名(nil:不要)
TD_TRN = "GUODU.png"
# フォント設定
TD_EDGE = true # 縁文字(true:有効、false:無効)
TD_FONT = ["UmePlus Gothic"] # 表示フォント [第1Font,第2Font・・・]
TD_SIZE = 22 # フォントサイズ
TD_ITALIC = false # イタリック(true:有効、false:無効)
TD_BOLD = true # ボールド(true:有効、false:無効)
TD_COLOR = Color.new(255,255,255,255) # 色:Color.new(red,green,blue,alpha)
#-=-=-=-=-=-=-=-#
# 背景設定 #
#-=-=-=-=-=-=-=-#
# バック絵表示タイプ(0:黒背景 1:パノラマ 2:一枚絵)
TD_BACK_TYPE = 1
#--<パノラマタイプ設定>--#
# パノラマ絵(Graphics/System)
TD_PAN_BACK = "Title"
#--<一枚絵タイプ設定>--#
# バック絵(Graphics/System)
TD_PCT_BACK = "Title2"
# バック絵表示位置(X座標)
TD_BACK_X = 0
# バック絵表示位置(Y座標)
TD_BACK_Y = 0
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
# フェードアウト機能設定 #
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
# フェードアウト機能(true:有効 false:無効)
# (テキスト切り替え時にフェードアウトさせる)
TD_FADEOUT = true
# フェードアウト期間フレーム数
TDF_CNT = 10
#-=-=-=-=-=-=-=-=-=-=-=-#
# 表示テキスト設定 #
#-=-=-=-=-=-=-=-=-=-=-=-#
# 1テキストあたりの表示フレーム数(フェードアウト期間除く)
TD_F_CNT = 20
# 表示テキスト(表示順に配列に入れる)
TD_TEXT = [
# ["表示文字(\n改行)", 表示X位置, 表示Y位置
# (,X方向移動, Y方向移動, ズームX, ズームY)]
# ※()内はフェードアウト有効時のみ使用するので必須ではない
["表示1", 320, 240, 1, 2, 0.3, 0.4],
["表示2", 200, 100, 0, 2, 0.1, -0.1],
["表示3", 10, 50, 2, 2],
["表示4", 20, 300, ],
["表示5", 400, 380, -1, -2, 0.1, 0.2]
]
#--------------------------------------------------------------------------
# ● イベントデモ演出
#--------------------------------------------------------------------------
# イベントデモマップID
ED_MAP_ID = 5
# パーティー位置
ED_START_X = 14 # X軸方向
ED_START_Y = 23 # Y軸方向
#--------------------------------------------------------------------------
# ● アナザーオープニング(イベントデモと差し替え実行)
#--------------------------------------------------------------------------
# アナザーオープニング起動用スイッチ
AOP_SW = 10
# イベントデモマップID
AOP_MAP_ID = 3
# パーティー位置
AOP_START_X = 10 # X軸方向
AOP_START_Y = 5 # Y軸方向
#--------------------------------------------------------------------------
# ● タイトル表示
#--------------------------------------------------------------------------
# タイトル表示前のトランジションファイル名(nil:不要)
TITLE_TRN = "GUODU.png"
# タイトル背景のファイル名(Graphics/System)
TITLE_BACK = "Title"
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# メインタイトル設定 #
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# メインタイトル表示有効?(true:有効 false:無効)
TM = true
# 表示位置(X軸方向)
TM_X = 140
# 表示位置(Y軸方向)
TM_Y = 40
# メインタイトル表示タイプ(true:テキスト false:画像)
TM_TYPE = true
#--<テキストタイトル設定>--#
TMT_NAME = "哆啦A梦与大雄的~恋爱物语~" # タイトル名(改行不可)
TMT_EDGE = true # 縁文字(true:有効、false:無効)
TMT_FONT = ["微软雅黑"] # 表示フォント [第1Font,第2Font・・・]
TMT_SIZE = 32 # フォントサイズ
TMT_ITALIC = false # イタリック(true:有効、false:無効)
TMT_BOLD = true # ボールド(true:有効、false:無効)
TMT_COLOR = Color.new(255,100,85,255) # 色:Color.new(red,green,blue,alpha)
#--<グラフィックタイトル設定>--#
# タイトル画像名(Graphics/System)
TMG_FILE = "main_title"
#-=-=-=-=-=-=-=-=-=-=-=-#
# サブタイトル設定 #
#-=-=-=-=-=-=-=-=-=-=-=-#
# サブタイトル表示有効?(true:有効 false:無効)
TS = true
# 表示位置(X軸方向)
TS_X = 350
# 表示位置(Y軸方向)
TS_Y = 80
# サブタイトル表示タイプ(true:テキスト false:画像)
TS_TYPE = true
#--<テキストタイトル設定>--#
TST_NAME = "~Love Story~" # タイトル名(改行不可)
TST_EDGE = true # 縁文字(true:有効、false:無効)
TST_FONT = ["UmePlus Gothic"] # 表示フォント [第1Font,第2Font・・・]
TST_SIZE = 24 # フォントサイズ
TST_ITALIC = false # イタリック(true:有効、false:無効)
TST_BOLD = false # ボールド(true:有効、false:無効)
TST_COLOR = Color.new(75,235,210,255) # 色:Color.new(red,green,blue,alpha)
#--<グラフィックタイトル設定>--#
# タイトル画像名(Graphics/System)
TSG_FILE = "sub_title"
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# タイトルコマンド設定 #
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# 表示順定義
# 0: ニューゲーム
# 1: コンティニュー
# 2: シャットダウン
CMD_BOX = [0, 1, 2]
# 表示位置(X軸方向)
CT_WIN_X = 420
# 表示位置(Y軸方向)
CT_WIN_Y = 240
# 各コマンドの横ずれ値
CT_WIN_SLIDE = 30
# コマンドタイプ(true:テキスト false:画像)
CMD_TYPE = true
#--<テキストコマンド設定>--#
# ニューゲームコマンド名
CT_NEWGAME = "New lover"
# コンティニューコマンド名
CT_CONTINUE = "Load lover"
# シャットダウンコマンド名
CT_SHUTDOWN = "Exit"
CT_EDGE = true # 縁文字(true:有効、false:無効)
CT_FONT = [] # 表示フォント [第1Font,第2Font・・・]
CT_SIZE = 22 # フォントサイズ
CT_ITALIC = false # イタリック(true:有効、false:無効)
CT_BOLD = false # ボールド(true:有効、false:無効)
CT_COLOR = Color.new(255,255,255,255) # 色:Color.new(red,green,blue,alpha)
CT_ALIGN = 0 # 0=左揃え 1=中央 2=右揃え
# ウィンドウ透明度
CT_WIN_OPACITY = 0
# ウィンドウ背景透明度
CT_WIN_BACKOPACITY = 160
#--<画像コマンド設定>--#
#-**注意事項**-#
# コマンド用の画像は全て同じサイズ(幅、高さ)にしてください。
# ニューゲームファイル名(Graphics/System)
CG_NEWGAME = "newgame"
# コンティニューファイル名(Graphics/System)
CG_CONTINUE = "continue"
# シャットダウンファイル名(Graphics/System)
CG_SHUTDOWN = "shutdown"
# カーゾルが当たってるときに画像チェンジ(true:有効+カーソル消 false:無効)
CG_CHANGE = false
# ニューゲームファイル名(Graphics/System)
CGS_NEWGAME = "newgame_s"
# コンティニューファイル名(Graphics/System)
CGS_CONTINUE = "continue_s"
# シャットダウンファイル名(Graphics/System)
CGS_SHUTDOWN = "shutdown_s"
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# フェードイン設定 #
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# フェードイン機能
FADEIN = true
# フェードインパターン
# 0:メインタイトル+サブタイトル+コマンド
# 1:メインタイトル+サブタイトル → コマンド
# 2:メインタイトル → サブタイトル+コマンド
# 3:メインタイトル → サブタイトル → コマンド
FADEIN_PATTERN = 3
# フェードイン時間(フレーム数)
# (例1)60に設定した場合
# パターン0 => 60
# パターン1 => 60 + 60
# パターン3 => 60 + 60 + 60
FADEIN_TIME = 60
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# タイムアウト設定 #
#-=-=-=-=-=-=-=-=-=-=-=-=-#
# タイムアウト機能
TIME_OUT = true
# タイムアウト発生フレーム数
TIME_OUT_CNT = 500
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
# タイトルエフェクト設定 #
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-#
# エフェクトは #
# ニューゲーム、コンティニュー、シャットダウン #
# ごとに別々の設定になります。 #
# 全て同形式の配列での設定で下のようになります。 #
# [ ニューゲーム選択時の動作, #
# コンティニュー選択時の動作, #
# シャットダウン選択時の動作 ] #
#-----------------------------------------------------#
# また、エフェクト処理は毎フレームごとに #
# 加算していく形になりますので、 #
# あまり大きな値は設定はお勧めできません。 #
#-----------------------------------------------------#
# タイトルエフェクト機能(true:有効 false:無効)
EFFECT = [true, true, true]
# エフェクト時間(フレーム数)
EF_TIME_CNT= [ 20, 20, 20]
#--<メインタイトル用エフェクト設定>--#
TME_X = [ 0, 0, 0] # X軸方向のスライド
TME_Y = [ 0, 0, 2] # Y軸方向のスライド
TME_ZOOM_X = [ 0.0, 0.0, 0.0] # X軸方向のズーム
TME_ZOOM_Y = [ 0.0, 0.0, 0.0] # Y軸方向のズーム
#--<サブタイトル用エフェクト設定>--#
TSE_X = [ 0, 0, 0] # X軸方向のスライド
TSE_Y = [ 0, 0, 2] # Y軸方向のスライド
TSE_ZOOM_X = [ 0.0, 0.0, 0.0] # X軸方向のズーム
TSE_ZOOM_Y = [ 0.0, 0.0, 0.0] # Y軸方向のズーム
#--<コマンド用エフェクト設定>--#
CME_X = [ 0, 0, 0] # X軸方向のスライド
CME_Y = [ 0, 0, -2] # Y軸方向のスライド
# ※ズームは出来ません(Windowの仕様)
#--<タイトルバック用エフェクト設定>--#
TBE_X = [ 0, -30, 0] # X軸方向のスライド
TBE_Y = [ 0, -28, 0] # Y軸方向のスライド
TBE_ZOOM_X = [ 0.1, 0.1, 0.0] # X軸方向のズーム
TBE_ZOOM_Y = [ 0.1, 0.1, 0.0] # Y軸方向のズーム
TBE_TONE_R = [ 1, 0, 0] # 色調変更(赤)
TBE_TONE_G = [ 0, 1, 0] # 色調変更(緑)
TBE_TONE_B = [ 0, 0, 1] # 色調変更(青)
TBE_TONE_S = [ 0, 0, 10] # 色調変更(グレースケール)
#----------------------------------------------------------------------------
# カスタマイズEND
#----------------------------------------------------------------------------
module_function
#--------------------------------------------------------------------------
# ● テキストデモ用フェードアウト処理値の参照
#--------------------------------------------------------------------------
def get_fade_param(index,type)
if TD_TEXT[index].nil? or TD_TEXT[index][type].nil?
return 0.0
else
return TD_TEXT[index][type]
end
end
end
#==============================================================================
# ■ タイトルカスタマイズ[Scene_Title]
#------------------------------------------------------------------------------
# タイトルカスタマイズ用にScene_Titleを再構築。
#--< 再定義箇所 >--------------------------------------------------------------
# Scene_Title内の全メソッド
# (main,update,command_new_game,command_continue,command_shutdown,battle_test)
#==============================================================================
class Scene_Title
# 各フェーズの定義(メンテの容易化)
PHASE_LOGO = 1
PHASE_TEXT_DEMO = 2
PHASE_EVENT_DEMO = 3
PHASE_TITLE = 4
#--------------------------------------------------------------------------
# ● 音楽:全停止
#--------------------------------------------------------------------------
def all_music_stop
RPG::BGM.stop
RPG::BGS.stop
RPG::ME.stop
end
#--------------------------------------------------------------------------
# ● 音楽:全フェードアウト
#--------------------------------------------------------------------------
def all_music_fade(msec)
RPG::BGM.fade(msec)
RPG::BGS.fade(msec)
RPG::ME.fade(msec)
end
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
# 二度読み防止
if $data_system.nil?
load_database # データベースをロード
create_game_objects # ゲームオブジェクトを作成
end
# セーブファイルチェック
save_file_check
# デバッグ実行モードチェック
if debug_check
return
end
# システムオブジェクトを作成
if $game_system.nil?
$game_system = Game_System.new
end
# タイトルフェーズの選定
if (Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO) and $game_system.event_demo
# イベントデモ表示フェーズ
@phase = PHASE_EVENT_DEMO
# ローカルフェーズ:イベントデモ表示終了
@local_phase = 1
else
# ロゴ表示フェーズ
@phase = PHASE_LOGO
# ローカルフェーズ初期化
@local_phase = 0
end
# フレームカウント初期化
@frame_count = 0
end
#--------------------------------------------------------------------------
# ● 開始後処理
#--------------------------------------------------------------------------
def post_start
# 汎用スプライトを用意
@sprite = Sprite.new(Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H))
@sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
end
#--------------------------------------------------------------------------
# ● トランジション実行
#--------------------------------------------------------------------------
def perform_transition
# ロゴトランジションが有効か?
if Title_Custom::LOGO_TRN.nil? or !Title_Custom::LOGO
# トランジション実行
Graphics.transition
else
# トランジション準備
Graphics.freeze
end
end
#--------------------------------------------------------------------------
# ● 終了前処理
#--------------------------------------------------------------------------
def pre_terminate
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
def terminate
# スプライト消去
@sprite.dispose
end
#--------------------------------------------------------------------------
# ● セーブファイルチェック
#--------------------------------------------------------------------------
def save_file_check
@continue_enabled = false
@another_op = false
# セーブファイルの有無をチェック
for i in 0..Title_Custom::SAVE_FILE_MAX
if FileTest.exist?("Save#{i+1}.rvdata")
@continue_enabled = true
# アナザーOP有効?
if Title_Custom::AOP_DEMO
file = File.open("Save#{i+1}.rvdata", "rb")
characters = Marshal.load(file)
frame_count = Marshal.load(file)
last_bgm = Marshal.load(file)
last_bgs = Marshal.load(file)
game_system = Marshal.load(file)
game_message = Marshal.load(file)
game_switches = Marshal.load(file)
file.close
# アナザーOP有効フラグを確認
if game_switches[Title_Custom::AOP_SW]
@another_op = true
break
end
else
break
end
end
end
end
#--------------------------------------------------------------------------
# ● デバッグモードチェック
#--------------------------------------------------------------------------
def debug_check
# タイトルスキップ(ニューゲーム)
if Title_Custom::TITLE_SKIP_ALL
command_new_game
return true
# タイトルスキップ(コンティニュー)
elsif Title_Custom::TITLE_SKIP_CONTINUE
# セーブファイルが存在すれば
if @continue_enabled
# つづきから
command_continue
else
# はじめから
command_new_game
end
return true
end
return false
end
#--------------------------------------------------------------------------
# ● 移動フェーズの選択
#--------------------------------------------------------------------------
def next_phase(now_phase)
# 現在のフェーズから遷移するフェーズを決定する
case Title_Custom::DEMO_PATTERN
when 0 # テキストデモ → イベントデモ ※タイムアウト時:ロゴ
case now_phase
when PHASE_LOGO # ロゴ表示中
# テキストデモ
return PHASE_TEXT_DEMO
when PHASE_TEXT_DEMO # テキストデモ表示中
# イベントデモ
return PHASE_EVENT_DEMO
when PHASE_EVENT_DEMO # イベントデモ表示中
# タイトル表示
return PHASE_TITLE
when PHASE_TITLE # タイトル表示中(タイムアウト)
if Title_Custom::LOGO or Title_Custom::TEXT_DEMO or Title_Custom::EVENT_DEMO
# ロゴ表示
return PHASE_LOGO
else
# 更新なし
return PHASE_TITLE
end
end
when 1 # イベントデモ → テキストデモ ※タイムアウト時:ロゴ
case now_phase
when PHASE_LOGO # ロゴ表示中
# イベントデモ
return PHASE_EVENT_DEMO
when PHASE_TEXT_DEMO # テキストデモ表示中
# タイトル表示
return PHASE_TITLE
when PHASE_EVENT_DEMO # イベントデモ表示中
# テキストデモ
return PHASE_TEXT_DEMO
when PHASE_TITLE # タイトル表示中(タイムアウト)
if Title_Custom::LOGO or Title_Custom::TEXT_DEMO or Title_Custom::EVENT_DEMO
# ロゴ表示
return PHASE_LOGO
else
# 更新なし
return PHASE_TITLE
end
end
when 2 # 通常:テキストデモ、タイムアウト時:イベントデモ(ロゴなし)
case now_phase
when PHASE_LOGO # ロゴ表示中
# テキストデモ
return PHASE_TEXT_DEMO
when PHASE_TEXT_DEMO # テキストデモ表示中
# タイトル表示
return PHASE_TITLE
when PHASE_EVENT_DEMO # イベントデモ表示中
# タイトル表示
return PHASE_TITLE
when PHASE_TITLE # タイトル表示中(タイムアウト)
if Title_Custom::EVENT_DEMO
# イベントデモ
return PHASE_EVENT_DEMO
else
# 更新なし
return PHASE_TITLE
end
end
when 3 # 通常:イベントデモ、タイムアウト時:テキストデモ(ロゴなし)
case now_phase
when PHASE_LOGO # ロゴ表示中
# イベントデモ
return PHASE_EVENT_DEMO
when PHASE_TEXT_DEMO # テキストデモ表示中
# タイトル表示
return PHASE_TITLE
when PHASE_EVENT_DEMO # イベントデモ表示中
# タイトル表示
return PHASE_TITLE
when PHASE_TITLE # タイトル表示中(タイムアウト)
if Title_Custom::TEXT_DEMO
# テキストデモ
return PHASE_TEXT_DEMO
else
# 更新なし
return PHASE_TITLE
end
end
else
p "Error:DEMO_PATTERN"
exit
end
end
#--------------------------------------------------------------------------
# ● 次のフェーズ実行前にトランジションがあるか?
# true:なし false:あり
#--------------------------------------------------------------------------
def next_phase_transition?(next_phase)
case next_phase
when PHASE_LOGO # ロゴ表示
return Title_Custom::LOGO_TRN.nil?
when PHASE_TEXT_DEMO # テキストデモ
return Title_Custom::TD_TRN.nil?
when PHASE_EVENT_DEMO # イベントデモ(Scene_Mapにはトランジション実行がない)
# return Title_Custom::ED_TRN.nil?
return true
when PHASE_TITLE # タイトル表示
return Title_Custom::TITLE_TRN.nil?
end
return true
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# フェーズによって分岐
case @phase
when PHASE_LOGO
# ロゴ表示フェーズ
update_phase_logo
when PHASE_TEXT_DEMO
# テキストデモ表示フェーズ
update_phase_text_demo
when PHASE_EVENT_DEMO
# イベントデモ表示フェーズ
update_phase_event_demo
when PHASE_TITLE
# タイトル表示フェーズ
update_phase_title
end
end
#--------------------------------------------------------------------------
# ● ロゴ表示フェーズ:総合フレーム更新
#--------------------------------------------------------------------------
def update_phase_logo
case @local_phase
when 0 # ロゴ準備
logo_phase_startup
when 1 # 表示待機
logo_phase_update
when 2 # 表示終了
logo_phase_end
end
end
#--------------------------------------------------------------------------
# ● ロゴ表示フェーズ:ロゴ準備
#--------------------------------------------------------------------------
def logo_phase_startup
if Title_Custom::LOGO
# ビットマップ定義
@sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
# ME再生
unless Title_Custom::LOGO_ME.nil?
Audio.me_play("Audio/ME/" + Title_Custom::LOGO_ME)
end
# テキストロゴ
if Title_Custom::LOGO_TYPE
# フォント定義
font = Title_Custom::LT_FONT.dup
font.push(Font.default_name)
@sprite.bitmap.font.name = font
# フォントサイズ
@sprite.bitmap.font.size = Title_Custom::LT_SIZE
# イタリック
@sprite.bitmap.font.italic = Title_Custom::LT_ITALIC
# ボールド
@sprite.bitmap.font.bold = Title_Custom::LT_BOLD
# フォント色
@sprite.bitmap.font.color = Title_Custom::LT_COLOR
# 表示位置定義(自動中央表示)
text = Title_Custom::LT_NAME.dup
rect = @sprite.bitmap.text_size(text)
len = text.split(/\n/)
x = (Title_Custom::DISP_W-rect.width)/2
y = (Title_Custom::DISP_H-len.size * rect.height)/2
width = rect.width + (Title_Custom::LT_SIZE / 2)
height = rect.height
# 文字表示タイプ
if Title_Custom::LT_EDGE
# 縁文字
@sprite.bitmap.draw_enter_edging_text(x, y, width, height, text, 1)
else
# 通常文字
@sprite.bitmap.draw_enter_text(x, y, width, height, text, 1)
end
# グラフィックロゴ
else
@sprite.bitmap.draw_title(Title_Custom::LG_FILE, Title_Custom::DISP_W/2, Title_Custom::DISP_H/2)
end
# フレームカウント初期化
@frame_count = 0
# 表示待機フェーズに移動
@local_phase = 1
# トランジションの実行
unless Title_Custom::LOGO_TRN.nil?
# トランジション実行
Graphics.transition(40, "Graphics/System/" + Title_Custom::LOGO_TRN)
end
else
# 終了フェーズに移動
@local_phase = 2
end
end
#--------------------------------------------------------------------------
# ● ロゴ表示フェーズ:表示待機
#--------------------------------------------------------------------------
def logo_phase_update
@frame_count += 1
# C or Bボタンが押された
if Input.trigger?(Input::C) or Input.trigger?(Input::B)
# 表示終了フェーズに移動
@frame_count = Title_Custom::LOGO_F_CNT
end
# ロゴ表示時間終了
if @frame_count > Title_Custom::LOGO_F_CNT
# 表示終了フェーズに移動
@local_phase = 2
RPG::ME.fade(2000)
end
end
#--------------------------------------------------------------------------
# ● ロゴ表示フェーズ:表示終了
#--------------------------------------------------------------------------
def logo_phase_end
# フレームカウント初期化
@frame_count = 0
# ローカルフェーズの初期化
@local_phase = 0
# 次のフェーズに移動
@phase = next_phase(@phase)
# 次のフェーズにトランジション実行があるか?
unless next_phase_transition?(@phase)
# トランジション準備
Graphics.freeze
end
# ロゴ消去
@sprite.bitmap.clear
end
#--------------------------------------------------------------------------
# ● テキストデモ表示フェーズ:総合フレーム更新
#--------------------------------------------------------------------------
def update_phase_text_demo
case @local_phase
when 0 # 表示準備
text_phase_startup
when 1 # 表示待機
text_phase_update
when 2 # フェードアウト
text_phase_fadeout
when 3 # 表示切替
text_phase_change
when 4 # 表示終了
text_phase_end
end
end
#--------------------------------------------------------------------------
# ● テキストデモ表示フェーズ:表示準備
#--------------------------------------------------------------------------
def text_phase_startup
if Title_Custom::TEXT_DEMO
# BGMを再生
unless Title_Custom::TD_BGM.nil?
Audio.bgm_play("Audio/BGM/" + Title_Custom::TD_BGM)
end
# ビューポートを定義
viewport = Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H)
viewport.z = -1000
case Title_Custom::TD_BACK_TYPE
when 0 # 表示なし
when 1 # パノラマ絵
# プレーンを定義
@picture = Plane.new(viewport)
file = Title_Custom::TD_PAN_BACK
@picture.bitmap = Cache.system(file)
when 2 # 一枚絵
# 一枚絵用スプライトの定義
@picture = Sprite.new(viewport)
# 一枚絵を用意
file = Title_Custom::TD_PCT_BACK
@picture.bitmap = Cache.system(file)
@picture.x = Title_Custom::TD_BACK_X
@picture.y = Title_Custom::TD_BACK_Y
else
p "Error:TD_BACK_TYPE"
exit
end
# ビットマップを再定義(他のフェーズの影響をなくす)
@sprite.bitmap = Bitmap.new(Title_Custom::DISP_W,Title_Custom::DISP_H)
# フォント設定
font = Title_Custom::TD_FONT.dup
font.push(Font.default_name)
@sprite.bitmap.font.name = font
# フォントサイズ
@sprite.bitmap.font.size = Title_Custom::TD_SIZE
# イタリック
@sprite.bitmap.font.italic = Title_Custom::TD_ITALIC
# ボールド
@sprite.bitmap.font.bold = Title_Custom::TD_BOLD
# フォント色
@sprite.bitmap.font.color = Title_Custom::TD_COLOR
# テキストIndex値の初期化
@text_index = 0
# 最初の文字をセットするために表示切替フェーズに移動
@local_phase = 3
# トランジションの実行
unless Title_Custom::TD_TRN.nil?
# トランジション実行
Graphics.transition(40,"Graphics/System/" + Title_Custom::TD_TRN)
end
else
# 終了フェーズに移動
@local_phase = 4
end
end
#--------------------------------------------------------------------------
# ● テキストデモ表示フェーズ:表示待機
#--------------------------------------------------------------------------
def text_phase_update
@frame_count += 1
# Cボタンが押された
if Input.trigger?(Input::C)
# 表示切替フェーズに強制移動
@frame_count = Title_Custom::TD_F_CNT
# Bボタンが押された
elsif Input.trigger?(Input::B)
# 表示終了フェーズに強制移動
@local_phase = 4
return
end
# 表示切替タイミングに来た
if @frame_count > Title_Custom::TD_F_CNT
# フレームカウント初期化
@frame_count = 0
# フェードアウトフェーズに移動
@local_phase = 2
end
end
#--------------------------------------------------------------------------
# ● テキストデモ表示フェーズ:フェードアウト
#--------------------------------------------------------------------------
def text_phase_fadeout
# フェードアウト有効?
if Title_Custom::TD_FADEOUT
# Bボタンが押された
if Input.trigger?(Input::B)
# 表示終了フェーズに強制移動
@local_phase = 4
return
end
# フレームカウント
@frame_count += 1
# 移動処理
@sprite.x += Title_Custom.get_fade_param(@text_index, 3)
@sprite.y += Title_Custom.get_fade_param(@text_index, 4)
# ズーム処理
@sprite.zoom_x += Title_Custom.get_fade_param(@text_index, 5)
@sprite.zoom_y += Title_Custom.get_fade_param(@text_index, 6)
# フェードアウト
@sprite.opacity -= 255 / Title_Custom::TDF_CNT
# フェードアウト期間の終了?
if @frame_count > Title_Custom::TDF_CNT
# フレームカウント初期化
@frame_count = 0
# テキストIndex値の更新
@text_index += 1
# 表示切替フェーズに移動
@local_phase = 3
end
else
# 表示切替フェーズに移動
@local_phase = 3
end
end
#--------------------------------------------------------------------------
# ● テキストデモ表示フェーズ:テキスト切り替え
#--------------------------------------------------------------------------
def text_phase_change
# テキスト消去
@sprite.bitmap.clear
# フェードアウト処理後の初期化
if Title_Custom::TD_FADEOUT
@sprite.x = 0
@sprite.y = 0
@sprite.zoom_x = 1.0
@sprite.zoom_y = 1.0
@sprite.opacity = 255
end
# 全てのテキスト表示が完了した?
if @text_index == Title_Custom::TD_TEXT.size
# 表示終了フェーズに移動
@local_phase = 4
return
end
# テキスト表示
text = Title_Custom::TD_TEXT[@text_index][0].dup
rect = @sprite.bitmap.text_size(text)
width = rect.width + rect.height
if Title_Custom::TD_EDGE
# 縁文字
@sprite.bitmap.draw_enter_edging_text(0, 0, width, rect.height, text)
else
# 通常文字
@sprite.bitmap.draw_enter_text(0, 0, width, rect.height, text)
end
# 表示位置
@sprite.x = Title_Custom::TD_TEXT[@text_index][1]
@sprite.y = Title_Custom::TD_TEXT[@text_index][2]
# 表示待機フェーズに移動
@local_phase = 1
end
#--------------------------------------------------------------------------
# ● テキストデモ表示フェーズ:表示終了
#--------------------------------------------------------------------------
def text_phase_end
if Title_Custom::TEXT_DEMO
case Title_Custom::TD_BACK_TYPE
when 1..2 # パノラマまたは一枚絵
# バック絵を削除
@picture.dispose
end
end
# フレームカウント初期化
@frame_count = 0
# ローカルフェーズの初期化
@local_phase = 0
# 次のフェーズに移動
@phase = next_phase(@phase)
# 次のフェーズにトランジション実行があるか?
unless next_phase_transition?(@phase)
# トランジション準備
Graphics.freeze
end
# BGMフェードアウト
Audio.bgm_fade(4000)
# フェードアウト処理後の初期化
if Title_Custom::TD_FADEOUT
@sprite.x = 0
@sprite.y = 0
@sprite.zoom_x = 1.0
@sprite.zoom_y = 1.0
@sprite.opacity = 255
end
# テキスト消去
@sprite.bitmap.clear
end
#--------------------------------------------------------------------------
# ● イベントデモ表示フェーズ:総合フレーム更新
#--------------------------------------------------------------------------
def update_phase_event_demo
case @local_phase
when 0 # 表示準備
event_phase_startup
when 1 # 表示終了
event_phase_end
end
end
#--------------------------------------------------------------------------
# ● イベントデモ表示フェーズ:表示準備
#--------------------------------------------------------------------------
def event_phase_startup
# アナザーOP起動
if Title_Custom::AOP_DEMO and @another_op
map_id = Title_Custom::AOP_MAP_ID
start_posx = Title_Custom::AOP_START_X
start_posy = Title_Custom::AOP_START_Y
# 通常イベントデモ起動
elsif Title_Custom::EVENT_DEMO
map_id = Title_Custom::ED_MAP_ID
start_posx = Title_Custom::ED_START_X
start_posy = Title_Custom::ED_START_Y
else
# 終了フェーズに移動
@local_phase = 1
return
end
$game_party.setup_starting_members # 初期パーティ
$game_map.setup(map_id) # 初期位置のマップ
$game_player.moveto(start_posx, start_posy)
$game_player.refresh
$scene = Scene_Map.new
Graphics.fadeout(60)
Graphics.wait(40)
Graphics.frame_count = 0
RPG::BGM.stop
$game_map.autoplay
# イベントデモ実行フラグON
$game_system.event_demo = true
end
#--------------------------------------------------------------------------
# ● イベントデモ表示フェーズ:表示終了
#--------------------------------------------------------------------------
def event_phase_end
if (Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO)
# イベントデモ実行フラグOFF
$game_system.event_demo = false
end
# フレームカウント初期化
@frame_count = 0
# ローカルフェーズの初期化
@local_phase = 0
# 次のフェーズに移動
@phase = next_phase(@phase)
# 次のフェーズにトランジション実行があるか?
unless next_phase_transition?(@phase)
# トランジション準備
Graphics.freeze
end
# BGMフェードアウト
all_music_fade(400)
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:総合フレーム更新
#--------------------------------------------------------------------------
def update_phase_title
case @local_phase
when 0 # 表示準備
title_phase_startup
when 1 # フェードイン
title_phase_fadein
when 2 # 表示待機
title_phase_update
when 3 # エフェクト
title_phase_effect
when 4 # 表示終了
title_phase_end(true)
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示準備
#--------------------------------------------------------------------------
def title_phase_startup
# 背景絵の表示準備
@sprite.bitmap.dispose unless @sprite.bitmap.nil?
@sprite.bitmap = Cache.system(Title_Custom::TITLE_BACK)
# タイトル用ビューポート定義
viewport = Viewport.new(0, 0, Title_Custom::DISP_W, Title_Custom::DISP_H)
viewport.z = 1000
# タイトル BGM を演奏
$data_system.title_bgm.play
# メインタイトルの表示準備
if Title_Custom::TM
@main_sprite = Sprite.new(viewport)
@main_sprite.z = 100
main_title_startup
end
# サブタイトルの表示準備
if Title_Custom::TS
@sub_sprite = Sprite.new(viewport)
@sub_sprite.z = 50
sub_title_startup
end
# コマンドの表示準備
@cmd_window = Window_TitleCmd.new(@continue_enabled)
if Title_Custom::FADEIN
@cmd_window.opacity = 0
@cmd_window.back_opacity = 0
@cmd_window.contents_opacity = 0
end
# フレームカウント初期化
@frame_count = 0
# FadeInフェーズに移動
@local_phase = 1
@fade_in_phase = 0
# トランジションの実行
unless Title_Custom::TITLE_TRN.nil?
# トランジション実行
Graphics.transition(40, "Graphics/System/" + Title_Custom::TITLE_TRN)
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示準備 [ メインタイトル ]
#--------------------------------------------------------------------------
def main_title_startup
# テキスト
if Title_Custom::TM_TYPE
# ビットマップ定義
@main_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
# フォント定義
font = Title_Custom::TMT_FONT
font.push(Font.default_name)
@main_sprite.bitmap.font.name = font
# フォントサイズ
@main_sprite.bitmap.font.size = Title_Custom::TMT_SIZE
# イタリック
@main_sprite.bitmap.font.italic = Title_Custom::TMT_ITALIC
# ボールド
@main_sprite.bitmap.font.bold = Title_Custom::TMT_BOLD
# フォント色
@main_sprite.bitmap.font.color = Title_Custom::TMT_COLOR
# 表示位置定義
text = Title_Custom::TMT_NAME.dup
rect = @main_sprite.bitmap.text_size(text)
width = rect.width + rect.height / 2
height = rect.height
# 文字表示タイプ
if Title_Custom::TMT_EDGE
# 縁文字
@main_sprite.bitmap.draw_enter_edging_text(0, 0, width, height, text)
else
# 通常文字
@main_sprite.bitmap.draw_enter_text(0, 0, width, height, text)
end
# グラフィック
else
# ビットマップ定義
@main_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
# グラフィック描画
@main_sprite.bitmap.draw_title_file(Title_Custom::TMG_FILE, 0, 0)
end
# 表示位置
@main_sprite.x = Title_Custom::TM_X
@main_sprite.y = Title_Custom::TM_Y
# フェードイン前処理
if Title_Custom::FADEIN
@main_sprite.opacity = 0
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示準備 [ サブタイトル ]
#--------------------------------------------------------------------------
def sub_title_startup
# テキスト
if Title_Custom::TS_TYPE
# ビットマップ定義
@sub_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
# フォント定義
font = Title_Custom::TST_FONT.dup
font.push(Font.default_name)
@sub_sprite.bitmap.font.name = font
# フォントサイズ
@sub_sprite.bitmap.font.size = Title_Custom::TST_SIZE
# イタリック
@sub_sprite.bitmap.font.italic = Title_Custom::TST_ITALIC
# ボールド
@sub_sprite.bitmap.font.bold = Title_Custom::TST_BOLD
# フォント色
@sub_sprite.bitmap.font.color = Title_Custom::TST_COLOR
# 表示位置定義
text = Title_Custom::TST_NAME
rect = @sub_sprite.bitmap.text_size(text)
width = rect.width + rect.height / 2
height = rect.height
# 文字表示タイプ
if Title_Custom::TST_EDGE
# 縁文字
@sub_sprite.bitmap.draw_enter_edging_text(0, 0, width, height, text)
else
# 通常文字
@sub_sprite.bitmap.draw_enter_text(0, 0, width, height, text)
end
# グラフィック
else
# ビットマップ定義
@sub_sprite.bitmap = Bitmap.new(Title_Custom::DISP_W, Title_Custom::DISP_H)
# グラフィック描画
@sub_sprite.bitmap.draw_title_file(Title_Custom::TSG_FILE, 0, 0)
end
# 表示位置
@sub_sprite.x = Title_Custom::TS_X
@sub_sprite.y = Title_Custom::TS_Y
# フェードイン前処理
if Title_Custom::FADEIN
@sub_sprite.opacity = 0
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:フェードインフェーズ
#--------------------------------------------------------------------------
def title_phase_fadein
# フェードイン有効
if Title_Custom::FADEIN
case @fade_in_phase
when 0
# フェードイン準備
fade_in_setup
# フェードイン実行(1フレーム分のムダをなくすための対応)
fade_in_update
when 1
# フェードイン実行
fade_in_update
end
else
# 表示待機フェーズに移動
@local_phase = 2
end
end
#----<フェードイン実行メソッドの定義>----#
FADEIN_MAIN = 0
FADEIN_SUB = 1
FADEIN_CMD = 2
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:フェードイン [ 準備 ]
#--------------------------------------------------------------------------
def fade_in_setup
# 実行するメソッドを配列化して動作を制御する
@fadein_struct = [[],[],[]]
# 実行フェーズ数
@fadein_max = 0
case Title_Custom::FADEIN_PATTERN
when 0 # メインタイトル+サブタイトル+コマンド
@fadein_max = 1
if Title_Custom::TM
@fadein_struct[0].push(FADEIN_MAIN)
end
if Title_Custom::TS
@fadein_struct[0].push(FADEIN_SUB)
end
@fadein_struct[0].push(FADEIN_CMD)
when 1 # メインタイトル+サブタイトル → コマンド
@fadein_max = 2
if Title_Custom::TM
@fadein_struct[0].push(FADEIN_MAIN)
end
if Title_Custom::TS
@fadein_struct[0].push(FADEIN_SUB)
end
@fadein_struct[1].push(FADEIN_CMD)
when 2 # メインタイトル → サブタイトル+コマンド
@fadein_max = 2
if Title_Custom::TM
@fadein_struct[0].push(FADEIN_MAIN)
end
if Title_Custom::TS
@fadein_struct[1].push(FADEIN_SUB)
end
@fadein_struct[1].push(FADEIN_CMD)
when 3 # メインタイトル → サブタイトル → コマンド
@fadein_max = 3
if Title_Custom::TM
@fadein_struct[0].push(FADEIN_MAIN)
end
if Title_Custom::TS
@fadein_struct[1].push(FADEIN_SUB)
end
@fadein_struct[2].push(FADEIN_CMD)
end
# フェードイン実行フェーズへ移動
@fade_in_phase = 1
@frame_count = 0
@fade_in_index = 0
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:フェードイン [ メインタイトル ]
#--------------------------------------------------------------------------
def main_title_fadein
@main_sprite.opacity += 255 / Title_Custom::FADEIN_TIME
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:フェードイン [ サブタイトル ]
#--------------------------------------------------------------------------
def sub_title_fadein
@sub_sprite.opacity += 255 / Title_Custom::FADEIN_TIME
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:フェードイン [ コマンド ]
#--------------------------------------------------------------------------
def command_fadein
if Title_Custom::CMD_TYPE
@cmd_window.opacity += Title_Custom::CT_WIN_OPACITY / Title_Custom::FADEIN_TIME
@cmd_window.back_opacity += Title_Custom::CT_WIN_BACKOPACITY / Title_Custom::FADEIN_TIME
end
@cmd_window.contents_opacity += 255 / Title_Custom::FADEIN_TIME
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:フェードイン [ 実行 ]
#--------------------------------------------------------------------------
def fade_in_update
# 配列化したフェードインメソッドを実行
for i in 0...@fadein_struct[@fade_in_index].size
case @fadein_struct[@fade_in_index][i]
when FADEIN_MAIN
main_title_fadein
when FADEIN_SUB
sub_title_fadein
when FADEIN_CMD
command_fadein
end
end
@frame_count += 1
# 次のフェードインを開始する
if @frame_count > Title_Custom::FADEIN_TIME
@fade_in_index += 1
@frame_count = 0
# フェードインのオワリ
if @fade_in_index == @fadein_max
@fade_in_phase = 2
# 表示待機フェーズに移動
@local_phase = 2
# タイムアウトの初期化
title_time_out_update_cancel
end
end
# ボタンが押されたらフェードイン終了
if Input.trigger?(Input::B) or Input.trigger?(Input::C) or Input.dir8 != 0
if Title_Custom::TM
@main_sprite.opacity = 255
end
if Title_Custom::TS
@sub_sprite.opacity = 255
end
@cmd_window.opacity = Title_Custom::CT_WIN_OPACITY
@cmd_window.back_opacity = Title_Custom::CT_WIN_BACKOPACITY
@cmd_window.contents_opacity = 255
@fade_in_phase = 2
# 表示待機フェーズに移動
@local_phase = 2
# タイムアウトの初期化
title_time_out_update_cancel
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示待機
#--------------------------------------------------------------------------
def title_phase_update
@cmd_window.update
# C ボタンが押された
if Input.trigger?(Input::C)
case Title_Custom::CMD_BOX[@cmd_window.index]
when 0 # New Game
# 決定 SE を演奏
Sound.play_decision
title_phase_update_next
when 1 # Continue
# セーブファイルがあるか?
unless @continue_enabled
# ブザー SE を演奏
Sound.play_buzzer
return
end
# 決定 SE を演奏
Sound.play_decision
title_phase_update_next
when 2 # Shut Down
# 決定 SE を演奏
Sound.play_decision
title_phase_update_next
end
return
end
# タイムアウトを見張る
title_time_out_update
# カーソル移動時にカーソル音を鳴らす
if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
# カーソル SE を演奏
Sound.play_cursor
# タイムアウトの初期化
title_time_out_update_cancel
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示待機 [ 次のフェーズに移動 ]
#--------------------------------------------------------------------------
def title_phase_update_next
# エフェクトフェーズに移動
@local_phase = 3
# フレームカウント初期化
@frame_count = 0
@title_timeout_cnt = 0
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示待機 [ タイムアウトの見張り ]
#--------------------------------------------------------------------------
def title_time_out_update
if Title_Custom::TIME_OUT
@title_timeout_cnt += 1
# タイムアウト発生
if @title_timeout_cnt > Title_Custom::TIME_OUT_CNT
if @phase != next_phase(@phase)
# タイトル表示終了処理を先駆け実行
title_phase_end(false)
else
# 同フェーズに移行する場合はタイムアウトなし
title_time_out_update_cancel
end
end
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示待機 [ タイムアウトの初期化 ]
#--------------------------------------------------------------------------
def title_time_out_update_cancel
@title_timeout_cnt = 0
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:エフェクト
#--------------------------------------------------------------------------
def title_phase_effect
index = Title_Custom::CMD_BOX[@cmd_window.index]
if Title_Custom::EFFECT[index]
# エフェクト処理を実行
main_effect_ex(index) if Title_Custom::TM
sub_effect_ex(index) if Title_Custom::TS
command_effect_ex(index)
titleback_effect_ex(index)
# フレームカウント
@frame_count += 1
# エフェクト処理の終了
if @frame_count > Title_Custom::EF_TIME_CNT[index]
# タイトル表示終了フェーズに移動
@local_phase = 4
end
else
# タイトル表示終了フェーズに移動
@local_phase = 4
end
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:メインタイトルエフェクト処理
# type: 0=NewGame 1:Continue 2:Shutdown
#--------------------------------------------------------------------------
def main_effect_ex(type)
@main_sprite.x += Title_Custom::TME_X[type]
@main_sprite.y += Title_Custom::TME_Y[type]
@main_sprite.zoom_x += Title_Custom::TME_ZOOM_X[type]
@main_sprite.zoom_y += Title_Custom::TME_ZOOM_Y[type]
@main_sprite.opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:サブタイトルエフェクト処理
# type: 0=NewGame 1=Continue 2=Shutdown
#--------------------------------------------------------------------------
def sub_effect_ex(type)
@sub_sprite.x += Title_Custom::TSE_X[type]
@sub_sprite.y += Title_Custom::TSE_Y[type]
@sub_sprite.zoom_x += Title_Custom::TSE_ZOOM_X[type]
@sub_sprite.zoom_y += Title_Custom::TSE_ZOOM_Y[type]
@sub_sprite.opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:コマンドエフェクト処理
# type: 0=NewGame 1=Continue 2=Shutdown
#--------------------------------------------------------------------------
def command_effect_ex(type)
@cmd_window.x += Title_Custom::CME_X[type]
@cmd_window.y += Title_Custom::CME_Y[type]
@cmd_window.contents_opacity -= 255 / Title_Custom::EF_TIME_CNT[type]
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:タイトルバックエフェクト処理
# type: 0=NewGame 1=Continue 2=Shutdown
#--------------------------------------------------------------------------
def titleback_effect_ex(type)
@sprite.x += Title_Custom::TBE_X[type]
@sprite.y += Title_Custom::TBE_Y[type]
@sprite.zoom_x += Title_Custom::TBE_ZOOM_X[type]
@sprite.zoom_y += Title_Custom::TBE_ZOOM_Y[type]
@sprite.tone.red += Title_Custom::TBE_TONE_R[type]
@sprite.tone.green += Title_Custom::TBE_TONE_G[type]
@sprite.tone.blue += Title_Custom::TBE_TONE_B[type]
@sprite.tone.gray += Title_Custom::TBE_TONE_S[type]
end
#--------------------------------------------------------------------------
# ● タイトル表示フェーズ:表示終了
# pattern_flag: true=通常 false=タイムアウト
#--------------------------------------------------------------------------
def title_phase_end(pattern_flag)
# メインタイトルの表示終了
if Title_Custom::TM
@main_sprite.dispose
end
# サブタイトルの表示終了
if Title_Custom::TS
@sub_sprite.dispose
end
# コマンドの表示終了
@cmd_window.dispose
# タイトルバックの消去
#@sprite.bitmap.clear
# フレームカウント初期化
@frame_count = 0
# ローカルフェーズの初期化
@local_phase = 0
@fade_in_phase = 0
# 音楽フェードアウト
all_music_fade(2000)
# 終了パターンによって分岐
case pattern_flag
when false # タイムアウト
# 次のフェーズに移動
@phase = next_phase(@phase)
# 次のフェーズにトランジション実行があるか?
unless next_phase_transition?(@phase)
# トランジション準備
Graphics.freeze
end
when true # 通常終了
# フェーズ終了
@phase = 0
# コマンド選択結果の実行
case Title_Custom::CMD_BOX[@cmd_window.index]
when 0 # New Game
command_new_game
when 1 # Continue
command_continue
when 2 # Shut Donw
command_shutdown
end
end
end
#--------------------------------------------------------------------------
# ● コマンド : ニューゲーム
#--------------------------------------------------------------------------
def command_new_game
$game_system = Game_System.new
create_game_objects
confirm_player_location
$game_party.setup_starting_members # 初期パーティ
$game_map.setup($data_system.start_map_id) # 初期位置のマップ
$game_player.moveto($data_system.start_x, $data_system.start_y)
$game_player.refresh
$scene = Scene_Map.new
$game_map.autoplay
end
#--------------------------------------------------------------------------
# ● コマンド : コンティニュー
#--------------------------------------------------------------------------
def command_continue
# ロード画面に切り替え
$scene = Scene_File.new(false, true, false)
end
#--------------------------------------------------------------------------
# ● コマンド : シャットダウン
#--------------------------------------------------------------------------
def command_shutdown
all_music_fade(800)
# シャットダウン
$scene = nil
end
end
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# イベントデモ特有処理START #
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
if Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :event_demo # イベントデモ表示中フラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias init_title initialize
def initialize
init_title
@event_demo = false
end
end
#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
alias event_demo_update update
def update
event_demo_update
if $game_system.event_demo
if Input.trigger?(Input::B)
$scene = Scene_Title.new
end
end
end
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● タイトルデモの終了
#--------------------------------------------------------------------------
def title_demo_end
command_354
end
end
end # Title_Custom::EVENT_DEMO or Title_Custom::AOP_DEMO
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
# イベントデモ特有処理END #
#-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-#
#==============================================================================
# ■ タイトルカスタマイズ[Window_TitleCmd]
#------------------------------------------------------------------------------
# タイトルカスタマイズ用のタイトルコマンド選択を行うウィンドウです。
# フォントサイズに応じたWindow SizeやRectの設定に対応しています。
#==============================================================================
class Window_TitleCmd < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# load_flg : ロード色有効?
#--------------------------------------------------------------------------
def initialize(load_flg)
@load_flg = load_flg
@type = Title_Custom::CMD_TYPE
@commands = Title_Custom::CMD_BOX.dup
# テキストコマンド
if @type
@font_size = Title_Custom::CT_SIZE
# コマンド配置決定
for i in
[email protected]
case @commands[i]
when 0 # ニューゲーム
@commands[i] = Title_Custom::CT_NEWGAME
when 1 # コンティニュー
@commands[i] = Title_Custom::CT_CONTINUE
when 2 # シャットダウン
@commands[i] = Title_Custom::CT_SHUTDOWN
end
end
# ウィンドウ幅の自動調整
bitmap = Bitmap.new(10, 10)
width = 0
for i in
[email protected]
size = bitmap.text_size(@commands[i]).width
if width < size
width = size
end
end
width += 64 + @commands.size * Title_Custom::CT_WIN_SLIDE.abs
# 画像コマンド
else
@font_size = Cache.system(Title_Custom::CG_NEWGAME).height
@serect_commands = @commands.dup
# コマンド配置決定
for i in
[email protected]
case @commands[i]
when 0 # ニューゲーム
@commands[i] = Title_Custom::CG_NEWGAME
when 1 # コンティニュー
@commands[i] = Title_Custom::CG_CONTINUE
when 2 # シャットダウン
@commands[i] = Title_Custom::CG_SHUTDOWN
end
end
# コマンド配置決定
if Title_Custom::CG_CHANGE
for i in 0...@serect_commands.size
case @serect_commands[i]
when 0 # ニューゲーム
@serect_commands[i] = Title_Custom::CGS_NEWGAME
when 1 # コンティニュー
@serect_commands[i] = Title_Custom::CGS_CONTINUE
when 2 # シャットダウン
@serect_commands[i] = Title_Custom::CGS_SHUTDOWN
end
end
end
# ウィンドウ幅の自動調整
width = 0
for i in
[email protected]
size = Cache.system(Title_Custom::CG_NEWGAME).width
if width < size
width = size
end
end
width += 64 + @commands.size * Title_Custom::CT_WIN_SLIDE.abs
end
# コマンドの個数からウィンドウの高さを算出
super(0, 0, width, @commands.size * (@font_size+10) + 32)
self.x = Title_Custom::CT_WIN_X - self.width / 2
self.y = Title_Custom::CT_WIN_Y
@item_max = @commands.size
self.contents = Bitmap.new(width - 32, @item_max * (@font_size+10))
# テキストコマンド
if @type
# フォント定義
font = Title_Custom::TMT_FONT
font.push(Font.default_name)
self.contents.font.name = font
self.contents.font.size = @font_size
self.contents.font.italic = Title_Custom::CT_ITALIC
self.contents.font.bold = Title_Custom::CT_BOLD
# 画像コマンド
else
font_size = Cache.system(Title_Custom::CG_NEWGAME).height
self.opacity = 0
self.back_opacity = 0
#self.contents_opacity = 0
end
# インデックスの決定
if @load_flg
# セーブファイルがあればIndexはコンティニューにおく
iindex = 1
else
# セーブファイルがない場合はIndexはニューゲームにおく
iindex = 0
end
for i in 0...Title_Custom::CMD_BOX.size
if Title_Custom::CMD_BOX[i] == iindex
self.index = i
end
end
@local_index = self.index
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
# 開始位置の決定
slide = Title_Custom::CT_WIN_SLIDE.abs
if Title_Custom::CT_WIN_SLIDE > 0
x = 8 + index * slide
else
x = 8 + (@commands.size - 1 - index) * slide
end
if @type
# 文字色の決定
if !@load_flg and Title_Custom::CMD_BOX[index] == 1
self.contents.font.color = normal_color
self.contents.font.color.alpha = 128
else
self.contents.font.color = Title_Custom::CT_COLOR
end
rect = Rect.new(x, (@font_size+10) * index, self.contents.width - 8, (@font_size+10))
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
# テキスト描画
if Title_Custom::CT_EDGE
self.contents.draw_edging_text(rect.x, rect.y, rect.width, rect.height, @commands[index], Title_Custom::CT_ALIGN)
else
self.contents.draw_text(rect, @commands[index], Title_Custom::CT_ALIGN)
end
else
# 透明度の決定
if !@load_flg and Title_Custom::CMD_BOX[index] == 1
opacity = 80
else
opacity = 255
end
y = (@font_size+10) * index + 4
# 画像描画
if Title_Custom::CG_CHANGE and index == @local_index
self.contents.draw_title_file(@serect_commands[index], x, y, opacity)
else
self.contents.draw_title_file(@commands[index], x, y, opacity)
end
end
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor
# カーソル移動があった場合のみ動作させる
if @local_index != @index
@local_index = @index
# 画像チェンジ
if Title_Custom::CG_CHANGE and !@type
refresh
return
end
# カーソルの矩形更新
if @index < 0
self.cursor_rect.empty
else
slide = Title_Custom::CT_WIN_SLIDE.abs
if Title_Custom::CT_WIN_SLIDE > 0
x = 4 + index * slide
else
x = 4 + (@commands.size - 1 - index) * slide
end
if @type
if Title_Custom::CT_WIN_SLIDE != 0
rect = self.contents.text_size(@commands[@index])
width = rect.width
else
width = self.contents.width - 16
end
else
width = Cache.system(Title_Custom::CG_NEWGAME).width
end
self.cursor_rect.set(x, (@font_size+10) * index, width + 8, (@font_size+10))
end
end
end
end
#==============================================================================
# ■ Bitmap拡張
#==============================================================================
class Bitmap
#--------------------------------------------------------------------------
# ● 縁文字
#--------------------------------------------------------------------------
def draw_edging_text(x, y, width, height, text, align=0)
# 色を保持
old_color = font.color.dup
# 縁取り部分の描写(デフォルト:黒縁)
font.color = Color.new(0, 0, 0)
draw_text(x-1, y-1, width, height, text, align)
draw_text(x-1, y+1, width, height, text, align)
draw_text(x+1, y-1, width, height, text, align)
draw_text(x+1, y+1, width, height, text, align)
# 通常色に戻す
font.color = old_color
# 通常の文字を上か書きつぶす
draw_text(x, y, width, height, text, align)
end
#--------------------------------------------------------------------------
# ● 改行認識テキスト表示
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text, align=0)
rect = text_size(text)
info_box = text.split(/\n/)
for i in 0...info_box.size
draw_text( x, y+i*rect.height, width, height, info_box[i], align)
break if (y+i*rect.height) > self.height
end
end
#--------------------------------------------------------------------------
# ● 改行認識テキスト表示(縁文字)
#--------------------------------------------------------------------------
def draw_enter_edging_text(x, y, width, height, text, align=0)
rect = text_size(text)
info_box = text.split(/\n/)
for i in 0...info_box.size
draw_edging_text( x, y+i*rect.height, width, height, info_box[i], align)
break if (y+i*rect.height) > self.height
end
end
#--------------------------------------------------------------------------
# ● タイトルファイル表示(中央表示)
#--------------------------------------------------------------------------
def draw_title(file_name, x, y)
bit = Cache.system(file_name)
cw = bit.width
ch = bit.height
src_rect = Rect.new(0, 0, cw, ch)
blt(x-cw/2, y-ch/2, bit, src_rect)
end
#--------------------------------------------------------------------------
# ● タイトルファイル表示(コマンド表示用)
#--------------------------------------------------------------------------
def draw_title_file(file_name, x, y, opacity=255)
bit = Cache.system(file_name)
cw = bit.width
ch = bit.height
src_rect = Rect.new(0, 0, cw, ch)
blt(x, y, bit, src_rect, opacity)
end
end
复制代码
附上我改過的日站的Menu腳本
作者:
wsmyzc
时间:
2010-9-24 09:56
你直接把网站丢上来比较好,有些是指明素材放在哪里的,而没有付上范例的
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1