Код:
#----------------------------------------------------------------------------
# * [ACE] Custom Title Scene
#----------------------------------------------------------------------------
# * Автор - Kian Ni
# * Специально для http://rpg-maker.info
# * Версия: 1.2
# * Релиз: 02/04/2014
# * Использование:
# * 1) Вставьте код ниже Scene_Title (например, в раздел Materials)
# * 2) В папку titles1 добавьте картинки размером 544х416(или 640х480) с названиями
# * от 1.png до ... сколько есть, не прерывая последовательность
# * 3) Задайте в скрипте число SLIDE
# * 4) Запустите, задайте по вкусу скорость промотки в UPD
# * (60 ~ 1 секунда)
# * 5) В папку Audio/BGM/Title/ добавьте песни в формате .ogg, с названием
# * от 1 до числа, указанного в количестве мелодий, не прерывая последовательности.
# * 6) В BGM укажите количество мелодий.
#
# * Нового в 1.2: Добавлены новые возможности настройки меню,
# * а так же возможность использовать ВПРАВО и ВЛЕВО для перехода между командами.
#----------------------------------------------------------------------------
###########################################################################
#Настройка основных параметров. #
#-------------------------------------------------------------------------#
module VARS
# Настройка слайдов и мелодий.
BGM = 10 # Количество мелодий.
SLIDE = 10 # Количество слайдов.
UPD = 650 # Скорость обновления слайдов.
SPD = 105 # Скорость смены логотипов.
# Настройка логотипов.
LOGO_SHOW = true # true/false - Показывать/ не показывать логотип.
LOGO_1 = "Logo1" # Название первого логотипа.
LOGO_2 = "Logo2" # Название второго логотипа.
#Названия картинок команд.
NEW = "New_Game" # Название картинки команды новой игры.
LOAD = "Load_Game" # Название картинки команды загрузки сохранения.
ENDS = "End_Game" # Название картинки команды выхода из игры.
# Расположение пунктов меню.
# Координаты Новой Игры. Важно! Минимальное значение Y это 210.
NEW_X = 12
NEW_Y = 210
# Координаты Загрузки.
LOAD_X = 12
LOAD_Y = 265
# Координаты Выхода.
END_X = 8
END_Y = 315
# Порядок расположения пунктов меню: 0 - первая команда, 1 - вторая, 2 - третья.
POS = [
0, # Новая игра
1, # Загрузить игру
2 # Выйти из игры
]
end
###########################################################################
class Scene_Logo < Scene_Base
def main
start
end
def start
if VARS::LOGO_SHOW
@bgm_count = VARS::BGM
@get_next_bgm = (rand(@bgm_count) + 1).to_i
Audio.bgm_play("Audio/BGM/Title/#{@get_next_bgm}", 100)
$bgm_on = false
sprite = Sprite.new
Graphics.wait(25)
Graphics.fadeout(0)
sprite.bitmap = Cache.system(VARS::LOGO_1)
Graphics.fadein(30)
Graphics.wait(VARS::SPD)
Graphics.fadeout(30)
sprite.bitmap = Cache.system(VARS::LOGO_2)
Graphics.fadein(30)
Graphics.wait(VARS::SPD)
Graphics.fadeout(30)
sprite.dispose
SceneManager.goto(Scene_Title)
else
$bgm_on = true
SceneManager.goto(Scene_Title)
end
end
end
module SceneManager
def self.first_scene_class
$BTEST ? Scene_Battle : Scene_Logo
end
end
class Scene_Title < Scene_Base
def start
super
SceneManager.clear
Graphics.freeze
get_var
create_background
create_command_new_game
create_command_load_game
create_command_end_game
var_ini
play_title_music if $bgm_on
$bgm_on = true
@load_scene = false
end
def terminate
super
SceneManager.snapshot_for_background
dispose_background
dispose_command
end
def update
super
to_select
opacity_command
@time += 1
create_background if @time == @upd_rate
end
def get_var
@bgm_count = VARS::BGM
@slide_count = VARS::SLIDE
@upd_rate = VARS::UPD
end
def create_background
@sprite1 = Sprite.new
@get_next_pic = ((rand(@slide_count) + 1).to_i).to_s
@sprite1.bitmap = Cache.title1(@get_next_pic)
center_sprite(@sprite1)
@time = 0
end
def dispose_background
@sprite1.bitmap.dispose
@sprite1.dispose
end
def center_sprite(sprite)
sprite.ox = sprite.bitmap.width / 2
sprite.oy = sprite.bitmap.height / 2
sprite.x = Graphics.width / 2
sprite.y = Graphics.height / 2
end
def play_title_music
@get_next_bgm = (rand(@bgm_count) + 1).to_i
Audio.bgm_play("Audio/BGM/Title/#{@get_next_bgm}", 100)
RPG::BGS.stop
RPG::ME.stop
return
end
def var_ini
opacity_command
if DataManager.save_file_exists?
@index = VARS::POS[1]
else
@index = VARS::POS[0]
end
@item_max = 3
@col_max = 1
end
def create_command_new_game
@new_game = Sprite.new
@new_game.bitmap = Bitmap.new("Graphics/System/#{VARS::NEW}")
@new_game.x = VARS::NEW_X
@new_game.y = VARS::NEW_Y
return
end
def create_command_load_game
@load_game = Sprite.new
@load_game.bitmap = Bitmap.new("Graphics/System/#{VARS::LOAD}")
@load_game.x = VARS::LOAD_X
@load_game.y = VARS::LOAD_Y
return
end
def create_command_end_game
@end_game = Sprite.new
@end_game.bitmap = Bitmap.new("Graphics/System/#{VARS::ENDS}")
@end_game.x = VARS::END_X
@end_game.y = VARS::END_Y
return
end
def opacity_command
if @load_scene
@new_game.opacity = 0
@load_game.opacity = 0
@end_game.opacity = 0
else
@new_game.opacity = 255 if @index == VARS::POS[0]
@new_game.opacity = 155 if @index != VARS::POS[0]
@load_game.opacity = 255 if @index == VARS::POS[1]
@load_game.opacity = 155 if @index != VARS::POS[1]
@end_game.opacity = 255 if @index == VARS::POS[2]
@end_game.opacity = 155 if @index != VARS::POS[2]
end
end
def dispose_command
@load_game.bitmap.dispose
@load_game.dispose
@new_game.bitmap.dispose
@new_game.dispose
@end_game.bitmap.dispose
@end_game.dispose
end
def to_down
if @index < (@item_max - @col_max)
Sound.play_cursor
@index = (@index + @col_max)
else
if @index == (@item_max - @col_max)
Sound.play_cursor
@index = 0
end
end
end
def to_up
if @index >= @col_max
Sound.play_cursor
@index = (@index - @col_max)
else
if @index < @col_max
Sound.play_cursor
@index = 2
end
end
end
def to_select
to_up if Input.repeat?(:UP) or Input.repeat?(:LEFT)
to_down if Input.repeat?(:DOWN) or Input.repeat?(:RIGHT)
command_continue if Input.press?(:C) && @index == VARS::POS[1]
command_new_game if Input.press?(:C) && @index == VARS::POS[0]
command_shutdown if Input.press?(:C) && @index == VARS::POS[2]
end
def command_new_game
Sound.play_ok
DataManager.setup_new_game
@new_game.opacity = 0
@load_game.opacity = 0
@end_game.opacity = 0
fadeout_all
$game_map.autoplay
SceneManager.goto(Scene_Map)
end
def command_continue
if DataManager.save_file_exists?
Sound.play_ok
@new_game.opacity = 0
@load_game.opacity = 0
@end_game.opacity = 0
SceneManager.call(Scene_Load)
else
Sound.play_buzzer
end
end
def command_shutdown
Sound.play_ok
@new_game.opacity = 0
@load_game.opacity = 0
@end_game.opacity = 0
fadeout_all
SceneManager.exit
end
end
Социальные закладки