#****************************************************************************** # # * 共通セーブファイル * # # for RGSS3 # # Ver 1.01 2013.08.24 # # ◆使い方 # 数字でも文字でも、お好きな名前(ID)への値の保存/読込が出来ます。 # 1.True/Falseの値の場合 # 例)保存:$savec.set("id", True) # 読込:$savec.check("id") # ※idが存在しない場合、Falseが返されます。 # # 2.数字の場合 # 例)保存:$savec.set_num("id", 100) # 読込:$savec.get_num("id") # ※idが存在しない場合、-1が返されます。 # # 提供者:睡工房 [url]http://hime.be/[/url] # #****************************************************************************** #============================================================================== # コンフィグ項目 #============================================================================== module SUI module COMMON_SAVE # 共通セーブファイル名 COMMON_FILE = "savec.rvdata" end end #============================================================================== # 設定完了 #============================================================================== class Common_Save #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize @data = {} load if FileTest.exist?(SUI::COMMON_SAVE::COMMON_FILE) end #-------------------------------------------------------------------------- # ● フラグチェック #-------------------------------------------------------------------------- def check(id) @data.include?(id)? @data[id] : false end #-------------------------------------------------------------------------- # ● フラグセット #-------------------------------------------------------------------------- def set(id, flg = false) unless check(id) == flg @data[id] = flg save end end #-------------------------------------------------------------------------- # ● 数値取得 #-------------------------------------------------------------------------- def get_num(id) @data.include?(id)? @data[id] : -1 end #-------------------------------------------------------------------------- # ● 数値セット #-------------------------------------------------------------------------- def set_num(id, num = -1) unless get_num(id) == num @data[id] = num save end end #-------------------------------------------------------------------------- # ● ファイルセーブ #-------------------------------------------------------------------------- def save save_data(@data, SUI::COMMON_SAVE::COMMON_FILE) end #-------------------------------------------------------------------------- # ● ファイルロード #-------------------------------------------------------------------------- def load @data = load_data(SUI::COMMON_SAVE::COMMON_FILE) end end class << DataManager #-------------------------------------------------------------------------- # ● モジュール初期化 #-------------------------------------------------------------------------- alias sui_init init def init $savec = Common_Save.new sui_init end end
#****************************************************************************** # # * メッセージ機能拡張 * # # for RGSS3 # # Ver 1.00 2012.09.16 # Ver 1.01 2014.01.06 自動モードの不具合修正 # # ◆注意事項 # ※この素材は「共通セーブファイル」スクリプトが必要になります。 # # # ◆機能説明 # # 1.追加された制御文字で、立ち絵を左・中央・右に表示できます。 # # 2.追加された制御文字で、音声を再生できます。 # # 3.追加された制御文字で、SEを再生できます。 # # 4.追加された制御文字でCGの表示ができます。 # # 5.上記機能をスクリプトからも実行できます。 # # 6.コンフィグ項目で指定したボタンで、メッセージ枠を一時消去できます。 # # 7.コンフィグ項目で指定したボタンで、自動改ページモードに移行できます。 # # 8.シーンスキップに設定したゲームスイッチをオンにすると、コンフィグ # 項目で設定したボタンを押すことでスキップ先ラベルまでスキップできます。 # # # ◆使い方 # [url]http://hime.be/rgss3/sozai/message_manual.txt[/url] をご覧ください。 # # # 提供者:睡工房 [url]http://hime.be/[/url] # #****************************************************************************** #============================================================================== # コンフィグ項目 #============================================================================== module SUI module MESSAGE # 左側・中央・右側に表示する立ち絵のX座標(絵の左上を基準とします) LEFT_X = 0 # 左側 CENTER_X = 180 # 中央 RIGHT_X = 360 # 右側 # 立ち絵の表示に使用するピクチャ番号 LEFT_PIC = 5 # 左側 CENTER_PIC = 6 # 中央 RIGHT_PIC = 7 # 右側 # CGの表示に使用するピクチャ番号 CG_PIC = 8 # メッセージウィンドウの消去に割り当てるボタンを設定 # Input::A の形式で指定 BTN_HIDE = :A # シーンスキップのボタンを設定 # Input::X の形式で指定 BTN_RETURN = :X # 自動改ページのボタンを設定 # Input::Y の形式で指定 BTN_AUTO_MODE = :Y # 立ち絵の保存場所("Graphics/Pictures/"からの相対パスを指定") #SURFACE_DIR = "Surface/" SURFACE_DIR = "" # CGファイルの保存場所("Graphics/Pictures/"からの相対パスを指定") #CG_DIR = "CG/" CG_DIR = "" # ボイスファイルの保存場所 #VOICE_DIR = "Audio/SE/Voice/" VOICE_DIR = "Audio/SE/" # イベントスキップのフラグ(ゲームスイッチの番号指定) # このゲームスイッチがオンの時、直近のスキップ先ラベルまでスキップします。 SW_SKIP_ON = 51 # イベントスキップ先として認識するラベル名 SKIP_LABEL = "イベントスキップ先" # 自動改ページの待ち時間(フレーム数を指定) # 左から「遅い」,「普通」,「速い」の順に設定します。 # ※オプション画面スクリプトが未導入の場合、「普通」のみ有効になります。 AUTO_WAIT = [180, 120, 60] end end #============================================================================== # 設定完了 #============================================================================== class Window_Message < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias sui_message_initialize initialize def initialize sui_message_initialize @hide_mode = false # ウィンドウ消去モード @auto_mode = false # 自動改ページモード @auto_count = 0 create_auto_message SUI::MESSAGE::SKIP["skip"] = false end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- alias sui_message_dispose dispose def dispose sui_message_dispose @auto_message.bitmap.dispose @auto_message.dispose end #-------------------------------------------------------------------------- # ● オートモードの通知メッセージ作成 #-------------------------------------------------------------------------- def create_auto_message @auto_message = Sprite.new @auto_message.x = Graphics.width @auto_message.y = 3 @auto_message.bitmap = Bitmap.new(140, 15) @auto_message.bitmap.font.size = 15 @auto_message.bitmap.gradient_fill_rect(0, 6, 140, 9, Color.new(128, 128, 128, 0), Color.new(128, 128, 128, 180), true) @auto_message.bitmap.draw_text(0, 0, @auto_message.bitmap.width, 15, "自動改ページモード", 1) end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias sui_message_update update def update if @auto_mode and (Input::trigger?(SUI::MESSAGE::BTN_AUTO_MODE) || Input.trigger?(:B) || Input.trigger?(:C)) @auto_mode = false Input.update end @auto_message.x += 10 if !@auto_mode and @auto_message.x < Graphics.width sui_message_update unless update_hide_auto end #-------------------------------------------------------------------------- # ● 入力処理 #-------------------------------------------------------------------------- def update_hide_auto if $game_message.choice? return update_hide([self, @choice_window]) elsif $game_message.num_input? return update_hide([self, @number_window]) elsif $game_message.item_choice? return update_hide([self, @item_window]) else return update_hide([self]) unless @pause_skip end end #-------------------------------------------------------------------------- # ● ウィンドウ消去モードの更新 #-------------------------------------------------------------------------- def update_hide(windows) if @hide_mode if Input.trigger?(:C) or Input.trigger?(SUI::MESSAGE::BTN_HIDE) @hide_mode = false windows.each do |window| window.visible = true end end return true else if Input.trigger?(SUI::MESSAGE::BTN_HIDE) @hide_mode =true windows.each do |window| window.visible = false end return true end return false end end #-------------------------------------------------------------------------- # ● 入力待ち処理 ※再定義 #-------------------------------------------------------------------------- def input_pause self.pause = true wait(10) Fiber.yield until auto_mode || Input.trigger?(:B) || Input.trigger?(:C) Input.update self.pause = false end #-------------------------------------------------------------------------- # ● メッセージ自動送り&スキップ確認 #-------------------------------------------------------------------------- def auto_mode if @auto_mode @auto_count = SUI::MESSAGE::AUTO_WAIT[SUI::OPTION.auto_wait] if @auto_count == 0 @auto_count -= 1 @auto_message.x -= 10 if @auto_message.x > Graphics.width - @auto_message.width return true if Input::trigger?(SUI::MESSAGE::BTN_AUTO_MODE) return true if @auto_count == 0 return false else @auto_mode = true if Input::trigger?(SUI::MESSAGE::BTN_AUTO_MODE) if $game_switches[SUI::MESSAGE::SW_SKIP_ON] && Input.trigger?(SUI::MESSAGE::BTN_RETURN) SUI::MESSAGE::SKIP["skip"] = true return true end return false end end #-------------------------------------------------------------------------- # ● 一文字出力後のウェイト #-------------------------------------------------------------------------- alias sui_message_wait_for_one_character wait_for_one_character def wait_for_one_character case SUI::OPTION.message_speed when 0 wait(1) unless @show_fast or @line_show_fast @spd = false when 1 @spd = false when 2 @spd = !@spd end return unless @show_fast or @line_show_fast or !@spd sui_message_wait_for_one_character end #-------------------------------------------------------------------------- # ● 制御文字の処理 # code : 制御文字の本体部分(「\C[1]」なら「C」) #-------------------------------------------------------------------------- alias sui_process_escape_character process_escape_character def process_escape_character(code, text, pos) sui_process_escape_character(code, text, pos) case code when 'l', 'c', 'r' text.sub!(/\[(.{1,8})\]/, "") if $1 == "off" Message.set_tone(code, Tone.new(-40, -40, -40, 0)) elsif $1 == "on" Message.set_tone(code, Tone.new(0, 0, 0, 0)) for i in Message.get_array(code) Message.set_tone(i, Tone.new(-40, -40, -40, 0)) end elsif $1 =="del" Message.del_picture(code) else Message.set_picture(code, $1) Message.set_tone(code, Tone.new(0, 0, 0, 0)) for i in Message.get_array(code) Message.set_tone(i, Tone.new(-40, -40, -40, 0)) end end wait(16) when 's' text.sub!(/\[(\w+)(,(\d+))?(,(\d+))?\]/, "") Audio.se_play("Audio/SE/#{$1}", ($3 ? $3.to_i : 100), ($5 ? $5.to_i : 100)) when 'v' text.sub!(/\[([0-9a-zA-Z_\/]+)\]/, "") Message.play_voice($1) when 'p' text.sub!(/\[(.+)\]/, "") if $1 == "del" Message.del_cg else Message.set_cg($1) end end end #-------------------------------------------------------------------------- # ● 指定の位置を除いた配列を取得 #-------------------------------------------------------------------------- def self.get_array(pos) tmp = ["l", "c", "r"] tmp.delete(pos) return tmp end #-------------------------------------------------------------------------- # ● CGの表示 #-------------------------------------------------------------------------- def self.set_cg(file) name = SUI::MESSAGE::CG_DIR + file zoom_x = 100.0 zoom_y = 100.0 opacity = 255.0 blend_type = 0 origin = 0 x = 0 y = 0 $game_map.screen.pictures[SUI::MESSAGE::CG_PIC].show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type) end #-------------------------------------------------------------------------- # ● CGの消去 #-------------------------------------------------------------------------- def self.del_cg $game_map.screen.pictures[SUI::MESSAGE::CG_PIC].erase end #-------------------------------------------------------------------------- # ● 立ち絵の表示 #-------------------------------------------------------------------------- def self.set_picture(pos, file, flg = true) name = SUI::MESSAGE::SURFACE_DIR + file zoom_x = 100.0 zoom_y = 100.0 opacity = 255.0 blend_type = 0 origin = 0 y = 0 if pos == "l" x = SUI::MESSAGE::LEFT_X p = SUI::MESSAGE::LEFT_PIC elsif pos == "c" x = SUI::MESSAGE::CENTER_X p = SUI::MESSAGE::CENTER_PIC elsif pos == "r" x = SUI::MESSAGE::RIGHT_X p = SUI::MESSAGE::RIGHT_PIC end $game_map.screen.pictures[p].show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type) set_tone(pos, Tone.new(-40, -40, -40, 0)) unless flg end #-------------------------------------------------------------------------- # ● 立ち絵の消去 #-------------------------------------------------------------------------- def self.del_picture(pos) if pos == "l" p = SUI::MESSAGE::LEFT_PIC elsif pos == "c" p = SUI::MESSAGE::CENTER_PIC elsif pos == "r" p = SUI::MESSAGE::RIGHT_PIC end $game_map.screen.pictures[p].erase end #-------------------------------------------------------------------------- # ● トーンの設定 #-------------------------------------------------------------------------- def self.set_tone(pos, tone) if pos == "l" p = SUI::MESSAGE::LEFT_PIC elsif pos == "c" p = SUI::MESSAGE::CENTER_PIC elsif pos == "r" p = SUI::MESSAGE::RIGHT_PIC end $game_map.screen.pictures[p].start_tone_change(tone, 0) end #-------------------------------------------------------------------------- # ● ボイスの再生 #-------------------------------------------------------------------------- def self.play_voice(file) unless $savec.check("voice") Audio.se_stop vol = SUI::OPTION.voice_volume Audio.se_play("#{SUI::MESSAGE::VOICE_DIR}#{file}", 100 * vol, 100) end end end Message = Window_Message module SuiScript #-------------------------------------------------------------------------- # ● CGの表示 #-------------------------------------------------------------------------- def self.set_cg(file) if file == "del" Message.del_cg else Message.set_cg(file) end end #-------------------------------------------------------------------------- # ● 立ち絵の表示 #-------------------------------------------------------------------------- def self.set_picture(pos, file, flg = true) if file == "off" Message.set_tone(pos, Tone.new(-40, -40, -40, 0)) elsif file == "on" Message.set_tone(pos, Tone.new(0, 0, 0, 0)) for i in Message.get_array(pos) Message.set_tone(i, Tone.new(-40, -40, -40, 0)) end elsif file =="del" Message.del_picture(pos) else Message.set_picture(pos, file, flg) return unless flg Message.set_tone(pos, Tone.new(0, 0, 0, 0)) for i in Message.get_array(pos) Message.set_tone(i, Tone.new(-40, -40, -40, 0)) end end end #-------------------------------------------------------------------------- # ● SEの再生 #-------------------------------------------------------------------------- def self.play_se(file, vol = 100, pitch = 100) Audio.se_play("Audio/SE/#{file}", vol, pitch) end #-------------------------------------------------------------------------- # ● ボイスの再生 #-------------------------------------------------------------------------- def self.play_voice(file) Message.play_voice(file) end end class Game_Interpreter #-------------------------------------------------------------------------- # ● イベントコマンドの実行 #-------------------------------------------------------------------------- alias sui_interpreter_execute_command execute_command def execute_command if SUI::MESSAGE::SKIP["skip"] SUI::MESSAGE::SKIP["skip"] = false $game_switches[SUI::MESSAGE::SW_SKIP_ON] = false return if label_jump end sui_interpreter_execute_command end #-------------------------------------------------------------------------- # ● ラベルジャンプ #-------------------------------------------------------------------------- def label_jump label_name = SUI::MESSAGE::SKIP_LABEL @list.size.times do |i| if @list[i].code == 118 && @list[i].parameters[0] == label_name @index = i return true end end return false end end module SUI::MESSAGE SKIP = {} end module SUI::OPTION def self.bgm_volume vol = $savec.get_num("bgm_vol") vol = 70 if vol < 10 vol /= 100.0 return vol end def self.se_volume vol = $savec.get_num("se_vol") vol = 70 if vol < 10 vol /= 100.0 return vol end def self.voice_volume vol = $savec.get_num("voice_vol") vol = 70 if vol < 10 vol /= 100.0 return vol end def self.message_speed spd = $savec.get_num("speed") spd = 1 if spd == -1 return spd end def self.auto_wait spd = $savec.get_num("auto_wait") spd = 1 if spd == -1 return spd end end
#****************************************************************************** # # * オプション画面 * # # for RGSS3 # # Ver 1.01 2014.07.13 # # ◆注意事項 # ※この素材は「共通セーブファイル」スクリプトが必要になります。 # ※この素材は睡工房の素材をカスタマイズするものです。 # メッセージ機能拡張スクリプトを導入しない場合、機能2~5は無効となります。 # # # ◆機能説明 # # 1.BGMの再生ボリュームを変更できます。 # # 2.ボイスの再生ボリュームを変更できます。 # # 3.ボイス再生のオン/オフ切り替えができます。 # # 4.文字表示速度の変更ができます。 # # 5.自動改ページの待ち時間を変更できます。 # # # ◆使い方 # スクリプトで「Scene_Option.start」を実行すると、 # オプション画面が開きます。 # # メニュー画面をカスタマイズしたい場合は、以下のURLを参考にしてください。 # [url]http://hime.be/rgss3/option.html[/url] # # # 提供者:睡工房 [url]http://hime.be/[/url] # #****************************************************************************** #============================================================================== # コンフィグ項目 #============================================================================== module SUI module OPTION # ボイス再生ボリューム変更時のサンプルボイス # 指定したボイスからランダムで1つ、新しいボリュームで再生されます。 # サンプルボイスがいらない場合は空にしてください。 SAMPLE = [ #ファイル名 # "sample_voice01", # "sample_voice02", "Cat", "Crow", "Dog", ] # ボイスファイルの保存場所 #VOICE_DIR = "Audio/SE/Voice/" VOICE_DIR = "Audio/SE/" end end #============================================================================== # 設定完了 #============================================================================== class Window_Option < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0, 430, 330) self.openness = 0 self.x = Graphics.width / 2 - self.width / 2 self.y = Graphics.height / 2 - self.height / 2 + line_height / 2 + padding self.z = 160 [url=home.php?mod=space&uid=401263]@line[/url] = 0 set_index refresh update_cursor end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear contents.font.color = normal_color contents.draw_text(0, 0 * rows_height, contents.width, line_height, "音樂") contents.draw_text(0, 1 * rows_height, contents.width, line_height, "聲音") contents.draw_text(0, 2 * rows_height, contents.width, line_height, "音效") #contents.draw_text(0, 2 * rows_height, contents.width, line_height, "キャラクターボイス") contents.draw_text(0, 3 * rows_height, contents.width, line_height, "文字") contents.draw_text(0, 4 * rows_height, contents.width, line_height, "自動模式") draw_command_10(0) draw_command_10(1) draw_command_10(2) #draw_command_2(2) draw_command_3(3) draw_command_3(4) end #-------------------------------------------------------------------------- # ● 行の高さ(2行分) #-------------------------------------------------------------------------- def rows_height 60 end #-------------------------------------------------------------------------- # ● 文字の描画 #-------------------------------------------------------------------------- def draw_text2(x, y, w, text, blue = false) contents.font.color = blue ? system_color : normal_color contents.font.color.alpha = blue ? 255 : 128 draw_text(x, y, w, line_height, text) end #-------------------------------------------------------------------------- # ● 10コマンドの描画 #-------------------------------------------------------------------------- def draw_command_10(row) y = rows_height * row + line_height 10.times do |i| x = 30 + 36 * i - ((i == 9) ? 2 : 0) draw_text2(x, y, 30, ((i + 1) * 10).to_s, (i == @index[row])) end end #-------------------------------------------------------------------------- # ● 10コマンドの矩形を取得 #-------------------------------------------------------------------------- def item_rect_10 rect = Rect.new rect.x = 30 - 9 + 36 * @index[@line] rect.y = rows_height * @line + line_height rect.width = 30 + 8 rect.height = line_height rect end #-------------------------------------------------------------------------- # ● 2コマンドの描画 #-------------------------------------------------------------------------- def draw_command_2(row) y = rows_height * row + line_height list = ["オン", "オフ"] 2.times do |i| x = 30 + 100 * i draw_text2(x, y, 40, list[i], (i == @index[row])) end end #-------------------------------------------------------------------------- # ● 2コマンドの矩形を取得 #-------------------------------------------------------------------------- def item_rect_2 rect = Rect.new rect.x = 30 - 11+ 100 * @index[@line] rect.y = rows_height * @line + line_height rect.width = 50 + 8 rect.height = line_height rect end #-------------------------------------------------------------------------- # ● 3コマンドの描画 #-------------------------------------------------------------------------- def draw_command_3(row) y = rows_height * row + line_height list = ["慢", "普通", "快"] 3.times do |i| x = 30 + 80 * i draw_text2(x, y, 40, list[i], (i == @index[row])) end end #-------------------------------------------------------------------------- # ● 3コマンドの矩形を取得 #-------------------------------------------------------------------------- def item_rect_3 rect = Rect.new rect.x = 30 - 11 + 80 * @index[@line] rect.y = rows_height * @line + line_height rect.width = 50 + 8 rect.height = line_height rect end #-------------------------------------------------------------------------- # ● カーソルの更新 #-------------------------------------------------------------------------- def update_cursor case @line when 0, 1, 2 cursor_rect.set(item_rect_10) #when 2 #cursor_rect.set(item_rect_2) when 3, 4 cursor_rect.set(item_rect_3) end Sound.play_cursor end #-------------------------------------------------------------------------- # ● 行の設定 #-------------------------------------------------------------------------- def line=(row) old = @line @line = [[@line + row, 0].max, 4].min update_cursor if old != @line end #-------------------------------------------------------------------------- # ● 行の設定 #-------------------------------------------------------------------------- def index=(i) max = 9 if( @line == 0 || @line == 1 || @line == 2) #max = 1 if( @line == 2) max = 2 if( @line == 3 || @line == 4) old = @index[@line] @index[@line] = [[@index[@line] + i, 0].max, max].min update_cursor if old != @index[@line] end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super return unless self.openness == 255 self.line = +1 if Input.repeat?(:DOWN) self.line = -1 if Input.repeat?(:UP) self.index = +1 if Input.repeat?(:RIGHT) self.index = -1 if Input.repeat?(:LEFT) if Input.trigger?(:C) Sound.play_use_item case @line when 0 $savec.set_num("bgm_vol", (@index[@line] + 1) * 10) refresh RPG::BGM::last.play when 1 $savec.set_num("voice_vol", (@index[@line] + 1) * 10) refresh Audio.se_stop vol = SUI::OPTION.voice_volume return if SUI::OPTION::SAMPLE.length == 0 r = SUI::OPTION::SAMPLE[rand(SUI::OPTION::SAMPLE.length)] Audio.se_play("#{SUI::OPTION::VOICE_DIR}#{r}", 100 * vol) when 2 #$savec.set("voice", @index[@line] == 1) #refresh $savec.set_num("se_vol", (@index[@line] + 1) * 10) refresh Audio.se_stop RPG::SE::last.play when 3 $savec.set_num("speed", @index[@line]) refresh when 4 $savec.set_num("auto_wait", @index[@line]) refresh end end end #-------------------------------------------------------------------------- # ● アクティブ設定 #-------------------------------------------------------------------------- def set_index @index = [] res = $savec.get_num("bgm_vol") res = 70 if res < 10 @index[0] = (res / 10) - 1 res = $savec.get_num("voice_vol") res = 70 if res < 10 @index[1] = (res / 10) - 1 res = $savec.get_num("se_vol") res = 70 if res < 10 @index[2] = (res / 10) - 1 #@index[2] = $savec.check("voice") ? 1 : 0 @index[3] = $savec.get_num("speed") @index[3] = 1 if @index[3] == -1 @index[4] = $savec.get_num("auto_wait") @index[4] = 1 if @index[4] == -1 end end class Scene_Option < Scene_Base #-------------------------------------------------------------------------- # ● クラス変数初期化 #-------------------------------------------------------------------------- @@start = false # オプション画面の開始フラグ #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super @@start = false @config_seq = 0 create_background create_option_window @option_window.open @option_title.open end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate super dispose_background end #-------------------------------------------------------------------------- # ● オプションウィンドウの作成 #-------------------------------------------------------------------------- def create_option_window @option_window = Window_Option.new @option_title = Window_Help.new(1) @option_title.x = @option_window.x @option_title.width = @option_window.width @option_title.y = @option_window.y - @option_title.height @option_title.z = @option_window.z @option_title.create_contents @option_title.openness = 0 @option_title.contents.draw_text(0, -2, @option_title.contents.width,@option_title.contents.height, "* 系統設定 *", 1) end #-------------------------------------------------------------------------- # ● 背景の作成 #-------------------------------------------------------------------------- def create_background @background_sprite = Sprite.new @background_sprite.bitmap = SceneManager.background_bitmap @background_sprite.color.set(16, 16, 16, 128) end #-------------------------------------------------------------------------- # ● 背景の解放 #-------------------------------------------------------------------------- def dispose_background @background_sprite.dispose end #-------------------------------------------------------------------------- # ● 更新処理 #-------------------------------------------------------------------------- def update super if Input.trigger?(:B) Sound.play_cancel @option_window.close @option_title.close end if @option_window.openness == 0 SceneManager.return end end #-------------------------------------------------------------------------- # ● オプション画面スタート処理 #-------------------------------------------------------------------------- def self.start @@start = true end #-------------------------------------------------------------------------- # ● オプション画面が開始しているか? #-------------------------------------------------------------------------- def self.start? return @@start end end module RPG class BGM < AudioFile #-------------------------------------------------------------------------- # ● BGMの再生 ※再定義 #-------------------------------------------------------------------------- def play(pos = 0) if @name.empty? Audio.bgm_stop @@last = RPG::BGM.new else vol = SUI::OPTION::bgm_volume * 1.05 vol = [@volume * vol, 100].min # Ver 1.01 Audio.bgm_play("Audio/BGM/" + @name, vol, @pitch, pos) # Ver 1.01 #~ Audio.bgm_play("Audio/BGM/" + @name, @volume * vol, @pitch, pos) @@last = self.clone end end end class SE < AudioFile #-------------------------------------------------------------------------- # ● BGMの再生 ※再定義 #-------------------------------------------------------------------------- def play(pos = 0) if @name.empty? Audio.se_stop @@last = RPG::SE.new else vol = SUI::OPTION::se_volume * 1.05 vol = [@volume * vol, 100].min # Ver 1.01 Audio.se_play("Audio/SE/" + name) @@last = self.clone end end end end class Scene_Map #-------------------------------------------------------------------------- # ● オプション画面への移行 #-------------------------------------------------------------------------- alias sui_option_update_scene update_scene def update_scene sui_option_update_scene SceneManager.call(Scene_Option) if !scene_changing? && Scene_Option.start? end end
module RPG class SE < AudioFile def play unless @name.empty? Audio.se_play('Audio/SE/' + @name, @volume, @pitch) end end def self.stop Audio.se_stop end end end
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |