Как изменить этот скрипт чтобы он мог работать еще и из титульного меню? (или только из титульного)

Спойлер Скрипт:
#Basic Options Menu v1.3b

#----------#

#Features: Provides a simple option menu for the player to do optiony stuff...

# Like volume effects for all, bgm, and se's. Fancy!

#

# Also additional options if you have Basic Window Resizer,

# Basic Message SE, and Basic Autosave.

#

#Usage: Plug and play unless you want a bit more. Customization below.

#

#----------#

#-- Script by: V.M of D.T

#

#- Questions or comments can be:

# given by email: sumptuaryspade@live.ca

# provided on facebook: http://www.facebook.com/DaimoniousTailsGames

# All my other scripts and projects can be found here: http://daimonioustails.weebly.com/

#

#- Free to use in any project with credit given, donations always welcome!



#This lets you set the order of the windows via an array

WINDOW_ORDER = [:master,:bgm,:se,:resolution,:message_se,:switch]

#Basic options are:

# :master - Master Volume :bgm - Background Music Volume

# :se - Sound Effect Volume :switch - Allow the player to turn on/off a switch

#

#-- Additional Options are:

# :resolution - If you have Basic Window Resizer installed

# :message_se - If you have Basic Message SE installed

# :autosave - If you have Basic Autosave installed



#These are all the strings for the help window and headers:

module OPT_STR

#When the command window is selected

COMMAND_HELP = "Confirm and exit or simply exit"

#Details for :master

MASTER_VOLUME = "Master Volume"

MASTER_VOLUME_HELP = "Set the volume of all sound"

#Details for :bgm

BGM_VOLUME = "BGM Volume"

BGM_VOLUME_HELP = "Set the volume of music"

#Details for :se

SE_VOLUME = "SE Volume"

SE_VOLUME_HELP = "Set the volume of sound effects"

#Details for :resolution

RESOLUTION = "Resolution"

RESOLUTION_HELP = "Change the resolution of the game window"

#Details for :autosave

AUTOSAVE = "Autosave"

AUTOSAVE_HELP = "Enable/Disable autosaving"

#Details for :message

MESSAGE_SE = "Message SE"

MESSAGE_SE_HELP = "Enable/Disable the message sound effect"

#Details for :switch

SWITCH_ID = 5

SWITCH = "Header"

SWITCH_HELP = "Help Message"

SWITCH_COMMAND = ["On","Off"]

end



class Scene_Options < Scene_MenuBase

def start

super

$game_options.memorize_options

create_base_windows

@current_index = 1

@window_index = []

@size = 0

WINDOW_ORDER.each do |symbol|

create_resolution_window if symbol == :resolution

create_autosave_window if symbol == :autosave

create_master_window if symbol == :master

create_bgm_window if symbol == :bgm

create_se_window if symbol == :se

create_message_se_window if symbol == :message_se

create_window_switch if symbol == :switch

end

create_command_window

@index = 0

@old_index = @index

activate_window(0)

end

def create_base_windows

@help_window = Window_Help.new(1)

@help_window.set_text("Options")

@back_window = Window_Options.new

@back_window.height = (WINDOW_ORDER.size + 1)* 48 + 24

@back_window.create_contents

end

def create_command_window

@window_command = Window_OCommand.new(48+24 * @current_index)

@window_command.set_handler(k, method(:command_ok))

@window_index.push(:command)

@back_window.draw_line(24 * (@current_index - 1))

end

def create_resolution_window

if Module.const_defined?(:Window_Resize)

@window_resolution = Window_OR.new(48+24 * @current_index)

@window_resolution.set_handler(k, method(:resolution_ok))

@back_window.add_text(24 * (@current_index - 1),OPT_STR::RESOLUTION)

@current_index += 2

@size += 1

@window_index.push(:resolution)

end

end

def create_autosave_window

if Module.const_defined?(:AUTOSAVE_FILE_NAME)

@window_autosave = Window_OAS.new(48+24 * @current_index)

@window_autosave.set_handler(k, method(:autosave_ok))

@back_window.add_text(24 * (@current_index - 1),OPT_STR::AUTOSAVE)

@current_index += 2

@size += 1

@window_index.push(:autosave)

end

end

def create_master_window

@window_masterbar = Window_OBar.new(48+24 * @current_index)

@back_window.add_text(24 * (@current_index - 1),OPT_STR::MASTER_VOLUME)

@current_index += 2

@size += 1

@window_masterbar.refresh($game_options.master_vol ume)

@window_index.push(:master)

end

def create_bgm_window

@window_bgmbar = Window_OBar.new(48+24 * @current_index)

@back_window.add_text(24 * (@current_index - 1),OPT_STR::BGM_VOLUME)

@current_index += 2

@size += 1

@window_bgmbar.refresh($game_options.bgm_volume)

@window_index.push(:bgm)

end

def create_se_window

@window_sebar = Window_OBar.new(48+24*@current_index)

@back_window.add_text(24 * (@current_index - 1),OPT_STR::SE_VOLUME)

@current_index += 2

@size += 1

@window_sebar.refresh($game_options.se_volume)

@window_index.push(:se)

end

def create_message_se_window

if Window_Message.const_defined?(EFAULT_SE_FREQ)

@window_message = Window_OMSE.new(48+24 * @current_index)

@window_message.set_handler(k, method(:message_ok))

@back_window.add_text(24 * (@current_index - 1),OPT_STR::MESSAGE_SE)

@current_index += 2

@size += 1

@window_index.push(:message)

end

end

def create_window_switch

@window_switch = Window_OSW.new(48+24 * @current_index)

@window_switch.set_handler(k, method(:switch_ok))

@back_window.add_text(24 * (@current_index - 1),OPT_STR::SWITCH)

@current_index += 2

@size += 1

@window_index.push(:switch)

end

def activate_window(index)

case @window_index[index]

when :resolution

@window_resolution.select(0)

@window_resolution.activate

@help_window.set_text(OPT_STR::RESOLUTION_HELP)

when :autosave

@window_autosave.select(0)

@window_autosave.activate

@help_window.set_text(OPT_STR::AUTOSAVE_HELP)

when :master

@window_masterbar.select(0)

@window_masterbar.activate

@help_window.set_text(OPT_STR::MASTER_VOLUME_HELP)

when :bgm

@window_bgmbar.select(0)

@window_bgmbar.activate

@help_window.set_text(OPT_STR::BGM_VOLUME_HELP)

when :se

@window_sebar.select(0)

@window_sebar.activate

@help_window.set_text(OPT_STR::SE_VOLUME_HELP)

when :message

@window_message.select(0)

@window_message.activate

@help_window.set_text(OPT_STR::MESSAGE_SE_HELP)

when :command

@window_command.select(0)

@window_command.activate

@help_window.set_text(OPT_STR::COMMAND_HELP)

when :switch

@window_switch.select(0)

@window_switch.activate

@help_window.set_text(OPT_STR::SWITCH_HELP)

end

end

def deactivate_window(index)

case @window_index[index]

when :resolution

@window_resolution.select(-1)

@window_resolution.deactivate

when :autosave

@window_autosave.select(-1)

@window_autosave.deactivate

when :master

@window_masterbar.select(-1)

@window_masterbar.deactivate

when :bgm

@window_bgmbar.select(-1)

@window_bgmbar.deactivate

when :se

@window_sebar.select(-1)

@window_sebar.deactivate

when :message

@window_message.select(-1)

@window_message.deactivate

when :command

@window_command.select(-1)

@window_command.deactivate

when :switch

@window_switch.select(-1)

@window_switch.deactivate

end

end

def update

super

update_input

update_index

end

def update_input

if Input.trigger?(:UP)

@index -= 1

@index = @size if @index < 0

elsif Input.trigger?(OWN)

@index += 1

@index = 0 if @index > @size

elsif Input.repeat?(:LEFT)

change_volume(@index, -0.01)

elsif Input.repeat?(:RIGHT)

change_volume(@index, 0.01)

elsif Input.trigger?(:B)

@index = @size

end

end

def update_index

return if @index == @old_index

deactivate_window(@old_index)

activate_window(@index)

Sound.play_cursor

@old_index = @index

end

def change_volume(index, value)

return unless audio_index(index)

$game_options.set_volume(:master, value) if @window_index[index] == :master

$game_options.set_volume(:bgm, value) if @window_index[index] == :bgm

$game_options.set_volume(:se, value) if @window_index[index] == :se

@window_masterbar.refresh($game_options.master_vol ume)

@window_bgmbar.refresh($game_options.bgm_volume)

@window_sebar.refresh($game_options.se_volume)

Sound.play_cursor

$game_map.autoplay if $game_map

end

def audio_index(index)

return true if @window_index[index] == :master

return true if @window_index[index] == :bgm

return true if @window_index[index] == :se

return false

end

def resolution_ok

case @window_resolution.index

when 0

$game_options.set_resolution(Graphics.width,Graphi cs.height)

when 1

$game_options.set_resolution(Graphics.width*2,Grap hics.height*2)

when 2

$game_options.set_fullscreen

end

@window_resolution.refresh

@window_resolution.activate

end

def autosave_ok

$game_options.auto_save = true if @window_autosave.index == 0

$game_options.auto_save = false if @window_autosave.index == 1

@window_autosave.refresh

@window_autosave.activate

end

def message_ok

$game_options.message_se = true if @window_message.index == 0

$game_options.message_se = false if @window_message.index == 1

@window_message.refresh

@window_message.activate

end

def switch_ok

$game_switches[OPT_STR::SWITCH_ID] = true if @window_switch.index == 0

$game_switches[OPT_STR::SWITCH_ID] = false if @window_switch.index == 1

@window_switch.refresh

@window_switch.activate

end

def command_ok

case @window_command.index

when 0

$game_options.save_options

$game_options.clear_memorize

return_scene

when 1

$game_options.copy_memorize

$game_options.clear_memorize

return_scene

end

end

end



class Window_Options < Window_Base

def initialize

super(0,48,544,416-48)

self.contents.font.color = Color.new(150,100,255,200)

end

def add_text(y,string)

draw_text(15,y,544-24,24,string)

end

def draw_line(y)

contents.fill_rect(15,y+12,544-24,1,Color.new(75,75,75))

end

end



class Window_OR < Window_Selectable

TEXT = ["Normal","Large","Fullscreen"]

def initialize(y)

super(24,y,544-48,48)

refresh

self.opacity = 0

end

def item_width; self.contents.width / 4; end

def item_max; return 3; end

def col_max; return item_max; end

def row_max; return 1; end

def draw_item(index)

rect = item_rect(index)

change_color(normal_color, index == $game_options.resolution_index)

draw_text(rect, TEXT[index],1)

end

end



class Window_OAS < Window_Selectable

def initialize(y)

super(24,y,544-48,48)

refresh

self.opacity = 0

end

def item_width; return 118; end

def item_max; return 2; end

def col_max; return item_max; end

def row_max; return 1; end

def draw_item(index)

rect = item_rect(index)

$game_options.auto_save ? id = 0 : id = 1

change_color(normal_color, id == index)

draw_text(rect, ["Yes","No"][index],1)

end

end



class Window_OSW < Window_Selectable

def initialize(y)

super(24,y,544-48,48)

refresh

self.opacity = 0

end

def item_width; return 118; end

def item_max; return 2; end

def col_max; return item_max; end

def row_max; return 1; end

def draw_item(index)

rect = item_rect(index)

$game_switches[OPT_STR::SWITCH_ID] ? id = 0 : id = 1

change_color(normal_color, id == index)

draw_text(rect, [OPT_STR::SWITCH_COMMAND[0],OPT_STR::SWITCH_COMMAND[1]][index],1)

end

end



class Window_OCommand < Window_Selectable

def initialize(y)

super(24+96,y,544-48,48)

refresh

self.opacity = 0

end

def item_width; return 118; end

def item_max; return 2; end

def col_max; return item_max; end

def row_max; return 1; end

def draw_item(index)

rect = item_rect(index)

draw_text(rect, ["Ok","Cancel"][index],1)

end

end



class Window_OMSE < Window_OAS

def initialize(y)

super

self.y = y

refresh

self.opacity = 0

end

def draw_item(index)

rect = item_rect(index)

$game_options.message_se ? id = 0 : id = 1

change_color(normal_color, id == index)

draw_text(rect, ["Yes","No"][index],1)

end

end



class Window_OBar < Window_Selectable

def initialize(y)

super(24,y,544-48,48)

self.opacity = 0

end

def item_width; return contents.width; end

def item_max; return 1; end

def col_max; return item_max; end

def row_max; return 1; end

def refresh(temp_value)

contents.clear

temp_value *= 100

temp_value.to_i.times do |i|

rect = Rect.new(4+i*4,6,2,8)

contents.fill_rect(rect, Color.new(75,100,255))

end

(100-temp_value).to_i.times do |i|

rect = Rect.new(396-i*4,6,2,8)

contents.fill_rect(rect, Color.new(0,0,0))

end

draw_text(0,0,contents.width,24,temp_value.to_i.to _s + "%",2)

end

def update_mouse

end

end



class Game_Options

attr_accessor :fullscreen

attr_accessor :resolution

attr_accessor :master_volume

attr_accessor :bgm_volume

attr_accessor :se_volume

attr_accessor :auto_save

attr_accessor :message_se

def default_options

@fullscreen = false

@resolution = [544,416]

@master_volume = 1.0

@bgm_volume = 1.0

@se_volume = 1.0

@auto_save = true

@message_se = true

save_options

end

def load_options

if FileTest.exist?("System/Options.dt")

File.open("System/Options.dt", "rb") do |file|

$game_options = Marshal.load(file)

end

else

default_options

end

reset_screen

end

def reset_screen

if Module.const_defined?(:Window_Resize)

if self.fullscreen

Window_Resize.f

else

Window_Resize.r($game_options.resolution[0],$game_options.resolution[1])

end

end

end

def save_options

File.open("System/Options.dt", "wb") do |file|

Marshal.dump($game_options, file)

end

end

def memorize_options

@old_options = Marshal.load(Marshal.dump($game_options))

end

def copy_memorize

$game_options = Marshal.load(Marshal.dump(@old_options))

reset_screen

end

def clear_memorize

@old_options = nil

end

def resolution_index

return 2 if @fullscreen

return 1 if @resolution[0] == 544*2

return 0

end

def set_resolution(w,h)

@resolution = [w,h]

@fullscreen = false

Window_Resize.window

15.times {|i| Graphics.update }

Window_Resize.r(@resolution[0],@resolution[1])

end

def set_fullscreen

@fullscreen = true

Window_Resize.full

end

def set_volume(symbol, value)

case symbol

when :master

@master_volume += value

@master_volume = [[@master_volume, 1].min, 0].max

when :bgm

@bgm_volume += value

@bgm_volume = [[@bgm_volume, 1].min, 0].max

when :se

@se_volume += value

@se_volume = [[@se_volume, 1].min, 0].max

end

end

def preset_volume(symbol, value)

if symbol == :master

@master_volume = value

@master_volume = [[@master_volume, 1].min, 0].max

end

if symbol == :bgm

@bgm_volume = value

@bgm_volume = [[@bgm_volume, 1].min, 0].max

end

if symbol == :se

@se_volume = value

@se_volume = [[@se_volume, 1].min, 0].max

end

end

end



class RPG::BGM < RPG::AudioFile

def play(pos = 0)

if @name.empty?

Audio.bgm_stop

@@last = RPG::BGM.new

else

if $game_options

volume = @volume * $game_options.master_volume

volume *= $game_options.bgm_volume

else

volume = @volume

end

Audio.bgm_play('Audio/BGM/' + @name, volume.to_i, @pitch, pos)

@@last = self.clone

end

end

end



class RPG::BGS < RPG::AudioFile

def play(pos = 0)

if @name.empty?

Audio.bgs_stop

@@last = RPG::BGS.new

else

if $game_options

volume = @volume * $game_options.master_volume

volume *= $game_options.bgm_volume

else

volume = @volume

end

Audio.bgs_play('Audio/BGS/' + @name, volume.to_i, @pitch, pos)

@@last = self.clone

end

end

end



class RPG::ME < RPG::AudioFile

def play

if @name.empty?

Audio.me_stop

else

if $game_options

volume = @volume * $game_options.master_volume

volume *= $game_options.se_volume

else

volume = @volume

end

Audio.me_play('Audio/ME/' + @name, volume.to_i, @pitch)

end

end

end



class RPG::SE < RPG::AudioFile

def play

unless @name.empty?

if $game_options

volume = @volume * $game_options.master_volume

volume *= $game_options.se_volume

else

volume = @volume

end

Audio.se_play('Audio/SE/' + @name, volume.to_i, @pitch)

end

end

end



module SceneManager

def self.run

DataManager.init

Audio.setup_midi if use_midi?

$game_options = Game_Options.new

$game_options.load_options

@scene = first_scene_class.new

@scene.main while @scene

end

end



class Window_MenuCommand < Window_Command

alias options_aoc add_original_commands

def add_original_commands

options_aoc

add_command("Options", ptions)

end

end



class Scene_Menu < Scene_MenuBase

alias options_create_command_window create_command_window

def create_command_window

options_create_command_window

@command_window.set_handler(ptions, method(:command_options))

end

def command_options

SceneManager.call(Scene_Options)

end

end