#============================================================================== # ミニゲーム用共通処理モジュール in VX Ace By 貪藻矢射妥← #------------------------------------------------------------------------------ # # ミニゲームなどで使用する共通処理関数をモジュール化したもの。 # これで、スクリプトの行数削減ができるんるん♪ # # ※・・・ちなみに、これだけ導入しても意味がないので気をつけてください。 # #============================================================================== # 変更履歴 # 2013:06:16 # ・所持金ベット方式と変数ベット方式を選択可能に module MINI_GAME # 入力金額最高桁数 MAX_DIG = 7 # 所持金 HAVE_GOLD = ["所持金", "所持コイン"] # 賭け金 BET_GOLD = ["賭け金", "賭けコイン"] # 獲得時の文章 GET_GOLD = ["Get Gold!! ", "Get Coin!! "] # 消失時の文章 LOST_GOLD = ["Lost Gold! ", "Lost Coin! "] # コインの単位 COIN_UNIT = "£" # 警告時のSE ERROR_SE = RPG::SE.new("WWL 警告3") # ファンファーレ1 JACK_POT_ME1 = RPG::ME.new("Victory2") # ファンファーレ2 JACK_POT_ME2 = RPG::ME.new("Fanfare3") # ファンファーレ3 JACK_POT_ME3 = RPG::ME.new("Fanfare2") # ファンファーレ4 JACK_POT_ME4 = RPG::ME.new("Fanfare1") # ファンファーレ5 JACK_POT_ME5 = RPG::ME.new("Item") # ファンファーレ6 JACK_POT_ME6 = RPG::ME.new("Item") # ハズレのME LOOSE_ME = RPG::SE.new("WWL あかん!") POS_MINI = Rect.new(4, 0, 160 - 32, 24) POS_MINI_W = Rect.new(4, 0, 340, 24) # 賭け金が所持金を上回る場合のエラーメッセージ MG_ERR_BET_UPPER = ["賭け金が所持金を上回ってます!!", "賭け金が所持コインを上回ってます!!"] # 賭け金未設定のエラーメッセージ MG_ERR_BET_ZERO = ["賭け金を設定してください!!", "賭けコインを設定してください!!"] # ベット方式定数 # 0:所持金 1:変数 MG_BET_TYPE_GOLD = 0 MG_BET_TYPE_COIN = 1 # コイン変数用変数インデックス MG_COIN_INDEX = 21 # 獲得種別 # 0:獲得 1:消失 MG_GOLDCOIN_GET = 0 MG_GOLDCOIN_LOST = 1 #-------------------------------------------------------------------------- # ● 清算処理 # gold_coin : 獲得/消失金額、コイン # get_type : 獲得種別 0:獲得 1:消失 # bet_type : ベット種別 0:所持金 1:コイン #-------------------------------------------------------------------------- def get_lost_gold_coin(gold_coin, get_type, bet_type=0) if !gold_coin.is_a?(Numeric) || gold_coin.to_i.to_s != gold_coin.to_s msgbox("金額不正") else # ベット種別で分岐 case bet_type when MG_BET_TYPE_GOLD # 獲得種別で分岐 case get_type when MG_GOLDCOIN_GET $game_party.gain_gold(gold_coin) when MG_GOLDCOIN_LOST $game_party.lose_gold(gold_coin) else msgbox("不明な種別" + get_type.to_s) end when MG_BET_TYPE_COIN # 獲得種別で分岐 case get_type when MG_GOLDCOIN_GET $game_variables[MG_COIN_INDEX] += gold_coin when MG_GOLDCOIN_LOST $game_variables[MG_COIN_INDEX] -= gold_coin else msgbox("不明な種別" + get_type.to_s) end else msgbox("不明な種別" + bet_type.to_s) end end end end module TITLE_BM DRAW_COLOR = Color.new(200, 200, 220, 255) end #============================================================================== # ■ Window_Coin #------------------------------------------------------------------------------ # 所持金を表示するウィンドウです。 #============================================================================== class Window_Coin < Window_Gold include MINI_GAME #-------------------------------------------------------------------------- # ● 所持コインの取得 #-------------------------------------------------------------------------- def value $game_variables[MG_COIN_INDEX] end #-------------------------------------------------------------------------- # ● コイン単位の取得 #-------------------------------------------------------------------------- def currency_unit COIN_UNIT end end class Window_Title_Root < Window_Base include TITLE_BM #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0, 544, 48) self.windowskin = Cache.system("Window") end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(text) contents.clear root_color = contents.font.color contents.font.color = DRAW_COLOR draw_text(4, 0, 544 - 32, 24, text, 1) contents.font.color = root_color end end class Window_Info_Gold < Window_Base include MINI_GAME include TITLE_BM #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(type=0) super(384, 48, 160, 48) self.windowskin = Cache.system("Window") refresh(type) end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(type) contents.clear contents.font.color = system_color draw_text(POS_MINI, HAVE_GOLD[type], 1) end end class Window_Info_Bet < Window_Base include MINI_GAME include TITLE_BM #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(type=0) super(384, 144, 160, 48) refresh(type) end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(type) contents.clear contents.font.color = system_color draw_text(POS_MINI, BET_GOLD[type], 1) end end class Window_Bet_Gold < Window_Base include MINI_GAME include TITLE_BM #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(384, 192, 160, 48) end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(bet) contents.clear draw_text(POS_MINI, bet.to_s, 2) end end class Window_Info_Space < Window_Base include MINI_GAME include TITLE_BM #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 320 + 8, 384, 48) self.windowskin = Cache.system("Window") end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(text) contents.clear draw_text(POS_MINI_W, text) end end class Window_Info_Space2 < Window_Base include MINI_GAME include TITLE_BM #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 320 + 8 - 48, 384, 48) refresh(@cnt, @max) end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(cnt, max) contents.clear if max != nil curr = max.to_i - cnt.to_i if curr != 0 text = "あと " + curr.to_s + " 枚交換可能です。" else text = " " end else text = cnt end draw_text(POS_MINI_W, text) end end class Scene_Minigame_Base < Scene_Base include MINI_GAME #-------------------------------------------------------------------------- # ● メインウィンドウ作成 #-------------------------------------------------------------------------- def create_main_window @title_window = Window_Title_Root.new end #-------------------------------------------------------------------------- # ● ボトムキーヘルプウィンドウ作成 #-------------------------------------------------------------------------- def create_bkh_window @bottomkeyhelp_window = Window_BottomKeyHelp.new end #-------------------------------------------------------------------------- # ● インフォウィンドウ作成 #-------------------------------------------------------------------------- def create_info_window @info_window = Window_Info_Space.new end #-------------------------------------------------------------------------- # ● ゴールドウィンドウ作成 #-------------------------------------------------------------------------- def create_gold_window(type=0) @gold_info_window = Window_Info_Gold.new(type) if type == MG_BET_TYPE_GOLD @gold_window = Window_Gold.new else @gold_window = Window_Coin.new end @gold_window.x = 384 @gold_window.y = 96 end #-------------------------------------------------------------------------- # ● ベットウィンドウ作成 #-------------------------------------------------------------------------- def create_bet_window(type=0) @bet_info_window = Window_Info_Bet.new(type) @bet_window = Window_Bet_Gold.new end #-------------------------------------------------------------------------- # ● 数値入力ウィンドウ作成 #-------------------------------------------------------------------------- def create_value_window @value_window_r = Window_Base.new(544 / 2 - 240 / 2, 200, 240, 64) $game_message.num_input_digits_max = MAX_DIG @value_window = Window_NumberInput_XP.new(@value_window_r) @value_window.start @value_window.z = 1000 @value_window_r.windowskin = nil @value_window.x = 200 @value_window.y = 200 value_window_deactivate end #-------------------------------------------------------------------------- # ● ミニゲーム用ウィンドウ作成 #-------------------------------------------------------------------------- def create_minigame_window(type=0) create_main_window create_bkh_window create_info_window create_gold_window(type) create_bet_window(type) create_value_window end #-------------------------------------------------------------------------- # ● 数値入力ウィンドウ非表示 #-------------------------------------------------------------------------- def value_window_deactivate @value_window.hide @value_window_r.hide @value_window.deactivate end #-------------------------------------------------------------------------- # ● 数値入力ウィンドウ表示 #-------------------------------------------------------------------------- def value_window_activate @value_window.show @value_window_r.show @value_window.activate end end |