ГлавнаяФорумRPG MakerСкрипты/ПлагиныRPG Maker VX ACEУлучшающие или добавляющее новое скриптыВремя/Дата v. 6.1 Финальная Версия
Войти на сайт
×
ТЕМА: Время/Дата v. 6.1 Финальная Версия
Время/Дата v. 6.1 Финальная Версия 10 года 7 мес. назад #68684
|
Скрипт Время/Дата. Система времени в играх.
Инструкция: Вся инструкция и настройки в шапке скрипта! Версия: 6.1 Финальная Версия Внимание! Нововведений в данном скрипте больше не будет! Что нового: Демо: Демо 6.0 Динамическая погода: Динамическая Погода версия 1.2 Исправление ошибок: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] Если вы не используете скрипт khas на освещение и встречаете такую ошибку line 994: NoMethodError occurred. undefined method `effect_surface' for #<Game_Map:0x8b24c44> отредактируйте скрипт на 994 строчке. На 994 строчке находится tint_color = $game_map.effect_surface.color return if !GAME_TIME_LIGHT_IN_BATTLE return if !GAME_TIME_LIGHT_IN_BATTLE
tint_color = $game_map.effect_surface.color Если ссылки умерли, то можете поискать скрипты здесь: https://github.com/DKPlugins/RPG-Maker-VX-Ace Скрипт: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Game Time (Время/Дата) #
# #
###############################################################################
Автор: DKPlugins
Версия: 6.1 Финальная версия
Релиз от: 03.10.19
Существует дополнение: Game Time Settings
Что нового в этой версии:
- Немного изменены вызовы скрипта
- Добавлены операции над временем
- Множественные исправления и улучшения
############# ИНСТРУКЦИЯ #######################################################
Чтобы установить новую дату, воспользуйтесь скриптом:
set_game_time(sec, min, hour, day, dayweek, month, year)
sec - секунды
min - минуты
hour - час
day - день
dayweek - день недели
month - месяц
year - год
Пример: set_game_time(0, 15, 10, 3, 2, 3, 479)
Чтобы получить текущую дату используйте:
$Game_Time.sec
sec, min, hour, day, dayweek, month, year
Чтобы сохранить текущее время или загрузить ранее сохраненное время, используйте:
save_game_time
load_game_time
Чтобы добавить время, используйте скрипт:
change_game_time(:min, 5) - добавит 5 минут
change_game_time(:hour, -10) - удалит 10 часов
Возможно: :sec, :min, :hour, :day, :month, :year
Чтобы принудительно показать / скрыть окно времени, воспользуйтесь
game_time_window_visible(flag)
где flag может быть или true, или false (показать / скрыть)
Чтобы включить / отлючить переключение переключателя в дневном диапозоне, используйте
setup_use_khas_day_light(flag)
где flag может быть или true, или false (вкл / выкл)
Чтобы изменить скорость времени, вызовите скрипт:
speed может быть от 1 до 120
change_game_time_speed(speed)
Чтобы остановить обновление времени:
stop_update_game_time
Чтобы узнать остановлено ли время:
Вернет true, если время обновляется, иначе false
game_time_update?
Чтобы возобновить обновление времени:
continue_update_game_time
Чтобы установить час статического освещения на карте:
hour - час
set_game_time_static_light_hour(hour)
# Чтобы на определенной карте остановить обновление времени,
пропишите в заметках карты: <No Game Time Update>
# Чтобы на определенной карте выставить освещение определенного часа,
используйте заметки карты: <Light Hour = N>
# где N - нужный час
### ДЛЯ БОЛЕЕ ОПЫТНЫХ ПОЛЬЗОВАТЕЛЕЙ И РАЗРАБОТЧИКОВ ###
класс Game_Time поддерживает создание следующих экземпляров:
1. Без параметров (будет создано время на основе настроек скрипта)
Пример: $Game_Time = Game_Time.new
2. С параметром в виде другого времени (объект класса Game_Time)
Пример: $Saved_Game_Time = Game_Time.new($Game_Time)
3. С параметрами в виде чисел времени и даты (7 параметров - sec, min, hour, day, dayweek, month, year)
Пример: time = Game_Time.new(0, 15, 10, 3, 2, 3, 479)
для класса Game_Time определены следующие операции:
Больше >
Вернет true, если время слева больше времени справа
Пример: $Game_Time > $Saved_Game_Time
Меньше <
Вернет true, если время слева меньше времени справа
Пример: $Game_Time < $Saved_Game_Time
Больше и/или равно >=
Вернет true, если время слева больше и/или равно времени справа
Пример: $Game_Time >= $Saved_Game_Time
Меньше и/или равно <=
Вернет true, если время слева меньше и/или равно времени справа
Пример: $Game_Time <= $Saved_Game_Time
Операции сравнения == нет, но есть 2 метода сравнения:
equals_without_seconds(time) - сравнение без секунд
Вернет true, если все параметры кроме секунд равны
Пример: $Game_Time.equals_without_seconds($Saved_Game_Time)
equals_with_seconds(time) - сравнение с секундами
Вернет true, если все параметры вместе с секундами равны
Пример: $Game_Time.equals_with_seconds($Saved_Game_Time)
=end
############# НАCТРОЙКА ########################################################
module Game_Date_Settings
# Название дней недели
GAME_TIME_DAYS_WEEK = [ "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
# Название месяцев
GAME_TIME_MONTHS = [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август",
"Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ]
# Формативный вывод месяцев
GAME_TIME_FORMAT_MONTHS = [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа",
"Сентября", "Октября", "Ноября", "Декабря" ]
end # module Game_Date_Settings
module Game_Time_Settings
include Game_Date_Settings
#----- Начало настройки дня и ночи ---------------------------------------------
# Использовать смену дня и ночи (оттенки экрана) ? true - да, false - нет
GAME_TIME_LIGHT_TINT = true
# Использовать стандартную смену дня и ночи ? true - да, false - нет
# Встроенная в скрипт функция
# Если используете эту опцию, то установите GAME_TIME_KHAS_LIGHT = false и GAME_TIME_VICTOR_LIGHT = false
GAME_TIME_DEFAULT_LIGHT = false
# Использовать Khas Light Effects ? true - да, false - нет
# Требуется Khas Light Effects
GAME_TIME_KHAS_LIGHT = true
# Использовать Victor Light Effects ? true - да, false - нет
# Требуется Victor Light Effects
GAME_TIME_VICTOR_LIGHT = false
# Использовать автоматическое переключение переключателя в диапазоне времени ?
# Только если вы используете Khas Light Effect
# Динамическая смена дня и ночи сама контролирует переключатель, если он используется
$GAME_TIME_USE_KHAS_DAY_LIGHT = true
# Номер переключателя, который будет выключаться внутри диапазона времени
# Если вы используете $GAME_TIME_USE_KHAS_DAY_LIGHT
# Чтобы не использовать установите -1
GAME_TIME_KHAS_LIGHT_SWITCH = 3
# Диапазон времени, когда переключатель выключен
# Если вы используете $GAME_TIME_USE_KHAS_DAY_LIGHT
GAME_TIME_KHAS_DAY_LIGHT = [8, 19]
# Использовать динамическую смену дня и ночи ?
GAME_TIME_DYNAMIC_LIGHT = false
# Использовать оттенки экрана в битвах ? true - да, false - нет
GAME_TIME_LIGHT_IN_BATTLE = true
# Настройка оттенков экрана для каждого часа.
# Если используете GAME_TIME_DYNAMIC_LIGHT, то эта настройка ничего не даст.
# Я подбирал оптимальные настройки для Khas Light Effect
# Диапазон значений: 0-255
# [ Color.new(RED, GREEN, BLUE, ALPHA) ]
GAME_TIME_TINTS = [ Color.new(30, 0, 40, 165), # => 0 час
Color.new(20, 0, 30, 165), # => 1 час
Color.new(20, 0, 30, 155), # => 2 час
Color.new(10, 0, 30, 145), # => 3 час
Color.new(10, 0, 20, 125), # => 4 час
Color.new(0, 0, 20, 125), # => 5 час
Color.new(75, 20, 20, 115), # => 6 час
Color.new(100, 30, 10,105), # => 7 час
Color.new(75, 20, 10, 85), # => 8 час
Color.new(0, 0, 0, 55), # => 9 час
Color.new(0, 0, 0, 30), # => 10 час
Color.new(0, 0, 0, 10), # => 11 час
Color.new(0, 0, 0, 0), # => 12 час
Color.new(0, 0, 0, 0), # => 13 час
Color.new(0, 0, 0, 0), # => 14 час
Color.new(0, 0, 0, 5), # => 15 час
Color.new(0, 0, 0, 15), # => 16 час
Color.new(0, 0, 10, 45), # => 17 час
Color.new(75, 20, 20, 85), # => 18 час
Color.new(100, 40, 30, 105), # => 19 час
Color.new(75, 20, 40, 125), # => 20 час
Color.new(10, 0, 45, 140), # => 21 час
Color.new(20, 0, 45, 145), # => 22 час
Color.new(20, 0, 50, 160) ] # => 23 час
#----- Конец настройки дня и ночи ----------------------------------------------
#----- Начало настройки времени ------------------------------------------------
# Использовать время и дату с компьютера ? true - да, false - нет
# Обновляется постоянно
GAME_TIME_REAL_TIME = false
# Настройка начала игры! Если не используете реальное время.
GAME_TIME_START_SECONDS = 0 # Секунды
GAME_TIME_START_MINUTES = 33 # Минуты
GAME_TIME_START_HOUR = 15 # Час
GAME_TIME_START_DAY = 15 # День
GAME_TIME_START_DAYWEEK = 4 # День недели (0 - Понедельник, 6 - Воскресенье)
GAME_TIME_START_MONTH = 9 # Месяц (0 - январь, 11 - декабрь)
GAME_TIME_START_YEAR = 2015 # Год
# Количество секунд в одной минуте (минимум 1)
GAME_TIME_SECONDS_IN_MINUTE = 10
# Количество минут в одном часе (минимум 1)
GAME_TIME_MINUTES_IN_HOUR = 60
# Количество часов в одном дне (минимум 1)
GAME_TIME_HOURS_IN_DAY = 24
# Количество дней в каждом месяце
GAME_TIME_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Обновлять время в меню ? true - да, false - нет
GAME_TIME_UPDATE_TIME_IN_MENU = false
# Использовать обновление времени в битве ? true - да, false - нет
GAME_TIME_UPDATE_TIME_IN_BATTLE = false
# Остановить время, если на экране сообщение ? true - да, false - нет
GAME_TIME_STOP_TIME_IN_MESSAGE = true
# Скорость времени
# (Минимум - 1, Максимум - 120)
# Чем меньше цифра, тем быстрее идет время
GAME_TIME_SPEED = 1
# Отображать секунды в часах ? true - да, false - нет
GAME_TIME_WINDOW_SECONDS = false
# Частота обновления ":" в отображении времени (30 - оптимально)
# -1 чтобы не использовать
GAME_TIME_BLINK_SPEED = 30
# Настройка часов на карте игры
# GAME_TIME_MAP_CLOCK = {} чтобы не отображать часы в игре
# :x => значение (координата х) (требуется обязательно)
# :y => значение (координата у) (требуется обязательно)
# :width => значение (ширина окна) (требуется обязательно)
# :height => значение (высота окна) (требуется обязательно)
# :windowskin => "имя_файла" (обложка окна из папки Graphics/System)
# :modify => true/false (измененный вид окна)
# :opacity => [значение, значение, значение] (прозрачность окна, прозрачность текста, прозрачность фона)
# :z => значение (глубина окна)
# :tone => Tone.new(Red, Green, Blue) (тон окна)
# :font => ["имя_шрифта", true/false (жирный текст), true/false (курсив)]
# :custom_clock_date => [ "параметры" ]
# Параметры:
# День, День недели, Месяц(число), Месяц(название), Год
# Также возможны свои параметры
# :custom_clock_time => [ "параметры" ]
# Параметры:
# Час, Двоеточие, Минуты, Секунды
# Также возможны свои параметры
# Можно указывать только требующиеся настройки (размеры окна)
# -1 для значений, чтобы использовать стандартное значение (кроме размеров окна)
GAME_TIME_MAP_CLOCK = {
:x => Graphics.width - 192,
:y => Graphics.height - 72,
:width => 192,
:height => 72,
:windowskin => "",
:modify => true,
:opacity => [-1, -1, -1],
:z => -1,
:tone => Tone.new(0, 0, 0),
:font => [-1, false, false],
:custom_clock_date => [],
:custom_clock_time => []
}
# Настройка часов в меню игры
# Внимание! Если Вы не используете обновление времени в меню
# Вместо "Двоеточие" в custom_clock_time укажите ":"
# GAME_TIME_MENU_CLOCK = {} чтобы не отображать часы в меню
GAME_TIME_MENU_CLOCK = {
:x => 0,
:y => 264,
:width => 160,
:height => 48,
:z => -1,
:opacity => [],
:windowskin => "",
:tone => Tone.new(0, 0, 0),
:font => [-1, false, true],
:custom_clock_date => [], #["День", " ", "Месяц(название)", " ", "Год"],
:custom_clock_time => ["Час", ":", "Минуты"]
}
# Настройка часов в битве
# Внимание! Если Вы не используете обновление времени в битве
# Вместо "Двоеточие" в custom_clock_time укажите ":"
# GAME_TIME_BATTLE_CLOCK = {} чтобы не отображать часы в битве
GAME_TIME_BATTLE_CLOCK = {
#~ :x => 0,
#~ :y => 0,
#~ :width => 192,
#~ :height => 72,
#~ :z => -1,
#~ :opacity => [],
#~ :windowskin => "",
#~ :tone => Tone.new(0, 0, 0),
#~ :font => [],
#~ :custom_clock_date => [],
#~ :custom_clock_time => []
}
# Символ кнопки для отображения / скрытия окна времени
# -1 чтобы не использовать
GAME_TIME_WINDOW_BUTTON = :Z
# Показывать окно времени в начале игры ? true - да, false - нет
$GAME_TIME_SHOW_WINDOW = true
############# КОНЕЦ НАСТРОЙКИ ################################################
end # module Game_Time_Settings
class Game_Time_Functions
include Game_Time_Settings
def self.game_time_create_objects # создание объектов
$Game_Time = Game_Time.new
$Game_Time_Tint = Game_Time_Tint.new
$Saved_Game_Time = Game_Time.new($Game_Time)
end
def self.setup_use_khas_day_light(setup)
return if !GAME_TIME_KHAS_LIGHT
$GAME_TIME_USE_KHAS_DAY_LIGHT = setup
end
def self.setup_khas_light_switch(setup) # устанавливаем переключателю значение
return if !GAME_TIME_KHAS_LIGHT || GAME_TIME_KHAS_LIGHT_SWITCH == -1
$game_switches[GAME_TIME_KHAS_LIGHT_SWITCH] = setup
end
def self.check_khas_light_switch(hour)
setup = false
setup = true if hour < GAME_TIME_KHAS_DAY_LIGHT[0] || hour > GAME_TIME_KHAS_DAY_LIGHT[1]
setup_khas_light_switch(setup)
end
end # class Game_Time_Functions
class Game_Time
include Game_Time_Settings
attr_reader :sec
attr_reader :min
attr_reader :hour
attr_reader :day
attr_reader :dayweek
attr_reader :month
attr_reader :year
attr_reader :time_count
attr_reader :time_speed
attr_accessor :time_update
def initialize(*args)
set_time(GAME_TIME_START_SECONDS, GAME_TIME_START_MINUTES, GAME_TIME_START_HOUR, GAME_TIME_START_DAY, GAME_TIME_START_DAYWEEK, GAME_TIME_START_MONTH, GAME_TIME_START_YEAR) if args.empty?
set_time(args[0].sec, args[0].min, args[0].hour, args[0].day, args[0].dayweek, args[0].month, args[0].year) if args.size == 1 && args[0].is_a?(Game_Time)
set_time(args[0], args[1], args[2], args[3], args[4], args[5], args[6]) if args.size == 7
@time_speed = [[1, GAME_TIME_SPEED].max, 120].min
@time_update = true
end
def time_speed=(speed)
@time_speed = [[1, speed].max, 120].min
end
def update
return real_time if GAME_TIME_REAL_TIME
return if $game_message.busy? && GAME_TIME_STOP_TIME_IN_MESSAGE
return if !@time_update
@time_count += 1
return unless @time_count % @time_speed == 0
return add_sec(1)
end
def >(time) # время слева больше времени справа
return true if @year > time.year
return true if @year == time.year && @month > time.month
return true if @year == time.year && @month == time.month && @day > time.day
return true if @year == time.year && @month == time.month && @day == time.day && @hour > time.hour
return true if @year == time.year && @month == time.month && @day == time.day && @hour == time.hour && @min > time.min
return @year == time.year && @month == time.month && @day == time.day && @hour == time.hour && @min == time.min && @sec > time.sec
end
def <(time) # время слева меньше времени справа
return true if @year < time.year
return true if @year == time.year && @month < time.month
return true if @year == time.year && @month == time.month && @day < time.day
return true if @year == time.year && @month == time.month && @day == time.day && @hour < time.hour
return true if @year == time.year && @month == time.month && @day == time.day && @hour == time.hour && @min < time.min
return @year == time.year && @month == time.month && @day == time.day && @hour == time.hour && @min == time.min && @sec < time.sec
end
def >=(time) # не меньше
return !(self < time)
end
def <=(time) # не больше
return !(self > time)
end
def equals_without_seconds(time)
return @year == time.year && @month == time.month && @day == time.day && @hour == time.hour && @min == time.min
end
def equals_with_seconds(time)
return equals_without_seconds(time) && @sec == time.sec
end
def set_time(sec, min, hour, day, dayweek, month, year)
@sec = sec
@min = min
@hour = hour
@day = day
@dayweek = dayweek
@month = month
@year = year
@time_count = 0
end
def change_time(type, value)
text = "add_"
text = "rem_" if value < 0
value.abs.times do eval(text + type.to_s + "(1)") end
end
def enable_update_dynamic_tints
return if !GAME_TIME_LIGHT_TINT || !GAME_TIME_DYNAMIC_LIGHT
$Game_Time_Tint.update_dynamic_tints = true
end
def real_time # время с компьютера
@sec = Time.now.sec
@min = Time.now.min
@hour = Time.now.hour
if @day != Time.now.day
@day = Time.now.day
enable_update_dynamic_tints
end
@dayweek = Time.now.wday
if @month != Time.now.month - 1
@month = Time.now.month - 1
enable_update_dynamic_tints
end
@year = Time.now.year
end
def add_sec(n = 1)
@sec += n
return unless @sec == GAME_TIME_SECONDS_IN_MINUTE
@sec = 0
add_min(1)
end
def add_min(n = 1)
@min += n
return unless @min == GAME_TIME_MINUTES_IN_HOUR
@min = 0
add_hour(1)
end
def add_hour(n = 1)
@hour += n
return unless @hour == GAME_TIME_HOURS_IN_DAY
@hour = 0
add_day(1)
end
def add_day(n = 1)
@day += n
@dayweek += n
@dayweek = 0 if @dayweek == GAME_TIME_DAYS_WEEK.size
enable_update_dynamic_tints
return unless @day == GAME_TIME_DAYS[@month] + 1
@day = 1
add_month(1)
end
def add_month(n = 1)
@month += n
enable_update_dynamic_tints
return unless @month == GAME_TIME_MONTHS.size
@month = 0
add_year(1)
end
def add_year(n = 1)
@year += n
end
def rem_sec(n = 1)
@sec -= n
return unless @sec == -1
@sec = GAME_TIME_SECONDS_IN_MINUTE - 1
rem_min(1)
end
def rem_min(n = 1)
@min -= n
return unless @min == -1
@min = GAME_TIME_MINUTES_IN_HOUR - 1
rem_hour(1)
end
def rem_hour(n = 1)
@hour -= n
return unless @hour == -1
@hour = GAME_TIME_HOURS_IN_DAY - 1
rem_day(1)
end
def rem_day(n = 1)
@day -= n
@dayweek -= n
@dayweek = GAME_TIME_DAYS_WEEK.size - 1 if @dayweek == -1
enable_update_dynamic_tints
return unless @day == 0
@day = GAME_TIME_DAYS[@month - 1]
rem_month(1)
end
def rem_month(n = 1)
@month -= n
enable_update_dynamic_tints
return unless @month == -1
@month = CALENDAR_MONTHS.size - 1
rem_year(1)
end
def rem_year(n = 1)
@year -= n
end
end # class Game_Time
class Game_Time_Tint < Sprite_Base
include Game_Time_Settings
attr_reader :static_light_hour
def initialize
super
self.bitmap = Bitmap.new(Graphics.width, Graphics.height) if GAME_TIME_DEFAULT_LIGHT
self.z = 1
self.visible = false
@update_dynamic_tints = GAME_TIME_DYNAMIC_LIGHT
@static_light_hour = -1
update
end
def update_dynamic_tints=(setup)
@update_dynamic_tints = setup
update if setup
end
def static_light_hour=(hour)
@static_light_hour = hour
update
end
def update
return if !GAME_TIME_LIGHT_TINT
return if @now_min == $Game_Time.min && @static_light_hour == -1
return use_default_light if GAME_TIME_DEFAULT_LIGHT
return use_khas_light if GAME_TIME_KHAS_LIGHT
return use_victor if GAME_TIME_VICTOR_LIGHT
end
def settings
self.visible = false
@now_min = $Game_Time.min
@hour = $Game_Time.hour
if @static_light_hour != -1
@now_min = GAME_TIME_MINUTES_IN_HOUR / 2
@hour = @static_light_hour
end
Game_Time_Functions.check_khas_light_switch(@hour) if $GAME_TIME_USE_KHAS_DAY_LIGHT
return setup_dynamic_light_tints if GAME_TIME_DYNAMIC_LIGHT
@now_hour = GAME_TIME_TINTS[@hour]
@next_hour = GAME_TIME_TINTS[(@hour + 1) % GAME_TIME_HOURS_IN_DAY]
end
def use_default_light
settings
tint = get_tint
tint[0] /= 2
tint[2] *= 0.9
tint[3] *= 1.2
tint[3] = [255, [0, tint[3]].max].min
self.visible = true
self.bitmap.clear
self.bitmap.fill_rect(0, 0, Graphics.width, Graphics.height, Color.new(tint[0], tint[1], tint[2], tint[3]))
end
def use_khas_light
settings
tint = get_tint
begin
$game_map.effect_surface.change_color(1, tint[0], tint[1], tint[2], tint[3])
$game_map.effect_surface.refresh if SceneManager.scene_is?(Scene_Battle)
rescue
end
end
def use_victor
settings
tint = get_tint
tint[0] /= 2
tint[2] *= 0.9
tint[3] *= 1.2
tint[3] = [255, [0, tint[3]].max].min
$game_map.screen.shade.show if !$game_map.screen.shade.visible
$game_map.screen.shade.change_color(tint[0], tint[1], tint[2], 0)
$game_map.screen.shade.change_opacity(tint[3], 0)
end
def get_tint
r = [255, [0, @now_hour.red.to_f + (@next_hour.red.to_f - @now_hour.red.to_f) / 60 * @now_min].max].min
g = [255, [0, @now_hour.green.to_f + (@next_hour.green.to_f - @now_hour.green.to_f) / 60 * @now_min].max].min
b = [255, [0, @now_hour.blue.to_f + (@next_hour.blue.to_f - @now_hour.blue.to_f) / 60 * @now_min].max].min
a = [255, [0, @now_hour.alpha.to_f + (@next_hour.alpha.to_f - @now_hour.alpha.to_f) / 60 * @now_min].max].min
return [r, g, b, a]
end
def red(hour, month) # здесь творится магия программирования :)
tint = [
[0, 0, 0, 0, 0, 10, 20, 60, 100, 70, 20, 10, 0, 0, 20, 40, 100, 80, 50, 20, 10, 0, 0, 0],
[0, 0, 0, 0, 10, 20, 30, 75, 100, 60, 20, 10, 0, 0, 10, 20, 40, 100, 80, 50, 20, 10, 0, 0],
[0, 0, 0, 10, 20, 30, 75, 100, 60, 20, 10, 0, 0, 0, 10, 20, 30, 50, 100, 80, 60, 30, 10, 0],
[0, 10, 20, 30, 50, 80, 100, 60, 20, 10, 0, 0, 0, 0, 0, 10, 20, 30, 50, 100, 80, 60, 30, 10],
[10, 20, 30, 50, 80, 100, 60, 20, 10, 5, 0, 0, 0, 0, 0, 0, 10, 15, 30, 50, 100, 80, 60, 30],
[20, 40, 60, 80, 100, 60, 45, 30, 15, 10, 0, 0, 0, 0, 0, 0, 10, 15, 30, 50, 80, 100, 80, 60],
[10, 30, 50, 75, 100, 75, 50, 30, 15, 10, 0, 0, 0, 0, 0, 0, 10, 15, 30, 50, 80, 100, 80, 60],
[10, 20, 45, 60, 80, 100, 60, 35, 15, 10, 0, 0, 0, 0, 0, 10, 15, 30, 50, 75, 100, 75, 50, 20],
[0, 10, 20, 30, 40, 60, 100, 80, 45, 30, 15, 10, 0, 0, 0, 10, 30, 50, 80, 100, 70, 50, 20, 0],
[0, 0, 10, 20, 30, 45, 75, 100, 80, 60, 40, 20, 0, 10, 30, 45, 80, 100, 80, 60, 40, 20, 0, 0],
[0, 0, 10, 20, 30, 50, 70, 100, 80, 60, 30, 20, 10, 20, 40, 75, 100, 80, 60, 40, 20, 10, 0, 0],
[0, 0, 0, 10, 20, 30, 50, 70, 100, 70, 50, 20, 0, 10, 30, 60, 100, 75, 40, 20, 10, 0, 0, 0]]
return tint[month][hour]
end
def green(hour, month)
tint = [
[0, 0, 0, 0, 0, 5, 10, 20, 30, 20, 10, 0, 0, 0, 10, 15, 25, 15, 10, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 5, 10, 20, 30, 20, 10, 0, 0, 0, 10, 15, 20, 25, 15, 10, 0, 0, 0, 0],
[0, 0, 0, 0, 5, 10, 20, 30, 20, 10, 0, 0, 0, 0, 0, 5, 10, 25, 10, 5, 0, 0, 0, 0],
[0, 0, 0, 0, 5, 10, 30, 20, 10, 5, 0, 0, 0, 0, 0, 0, 0, 10, 15, 30, 15, 10, 0, 0],
[0, 0, 0, 10, 15, 30, 15, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 15, 25, 15, 10, 0],
[0, 0, 10, 20, 30, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 15, 30, 15, 0],
[0, 0, 10, 15, 30, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 15, 0],
[0, 0, 0, 10, 20, 30, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 20, 10, 0],
[0, 0, 0, 0, 10, 20, 30, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 15, 10, 0, 0],
[0, 0, 0, 0, 0, 10, 15, 30, 10, 0, 0, 0, 0, 0, 0, 5, 15, 25, 15, 10, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 10, 20, 30, 20, 10, 0, 0, 0, 0, 10, 20, 30, 20, 10, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 10, 15, 30, 15, 10, 0, 0, 0, 10, 15, 30, 15, 10, 0, 0, 0, 0, 0]]
return tint[month][hour]
end
def blue(hour, month)
tint = [
[10, 15, 20, 25, 30, 45, 30, 20, 10, 0, 0, 0, 0, 0, 0, 15, 20, 55, 45, 30, 20, 10, 0, 0],
[10, 15, 20, 25, 30, 40, 20, 15, 10, 0, 0, 0, 0, 0, 0, 0, 15, 20, 55, 45, 30, 20, 10, 0],
[10, 15, 25, 30, 40, 30, 20, 15, 10, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 50, 45, 40, 35, 20],
[15, 20, 20, 35, 45, 25, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 15, 25, 35, 50, 40, 35, 20],
[15, 20, 35, 45, 25, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 35, 55, 40, 30],
[15, 30, 50, 35, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 50, 30],
[15, 30, 50, 30, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 50, 25],
[10, 15, 30, 50, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 35, 50, 35, 20],
[10, 15, 25, 35, 50, 30, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 55, 35, 20, 15],
[10, 15, 20, 25, 35, 50, 30, 20, 10, 0, 0, 0, 0, 0, 0, 10, 20, 35, 55, 40, 30, 20, 15, 10],
[10, 10, 15, 20, 35, 55, 35, 20, 10, 0, 0, 0, 0, 10, 20, 30, 40, 55, 35, 20, 15, 15, 10, 10],
[10, 15, 20, 25, 35, 55, 35, 20, 10, 0, 0, 0, 0, 10, 20, 30, 45, 60, 40, 30, 20, 15, 15, 10]]
return tint[month][hour]
end
def alpha(hour, month)
tint = [
[175, 170, 160, 160, 150, 150, 145, 140, 120, 90, 55, 20, 10, 10, 10, 15, 25, 75, 105, 135, 155, 160, 165, 180],
[170, 165, 155, 150, 140, 130, 130, 125, 110, 80, 50, 20, 10, 10, 10, 15, 25, 70, 95, 125, 140, 150, 160, 175],
[165, 160, 150, 135, 130, 110, 115, 110, 90, 70, 45, 20, 10, 10, 10, 10, 20, 60, 80, 105, 120, 135, 150, 160],
[160, 150, 140, 120, 120, 100, 90, 85, 70, 60, 40, 15, 10, 10, 10, 10, 20, 40, 60, 85, 100, 120, 135, 150],
[155, 140, 130, 110, 105, 85, 75, 70, 50, 45, 35, 15, 10, 10, 10, 10, 10, 20, 40, 70, 85, 110, 125, 140],
[150, 130, 120, 100, 90, 70, 55, 50, 40, 30, 35, 10, 10, 10, 10, 10, 10, 15, 25, 55, 65, 100, 105, 130],
[145, 120, 110, 110, 100, 80, 70, 65, 55, 40, 35, 10, 10, 10, 10, 10, 10, 25, 40, 70, 80, 110, 125, 140],
[150, 130, 120, 120, 110, 100, 85, 80, 70, 50, 40, 15, 10, 10, 10, 10, 10, 40, 60, 80, 100, 120, 130, 140],
[155, 140, 130, 130, 120, 110, 100, 95, 85, 60, 45, 15, 10, 10, 10, 10, 10, 50, 70, 90, 115, 130, 140, 150],
[160, 150, 140, 140, 130, 120, 115, 110, 100, 70, 50, 20, 10, 10, 10, 10, 15, 60, 80, 100, 130, 140, 150, 155],
[165, 160, 150, 150, 140, 130, 130, 125, 110, 80, 55, 20, 10, 10, 10, 15, 20, 70, 90, 115, 145, 150, 155, 160],
[170, 170, 160, 160, 150, 150, 145, 140, 120, 90, 60, 25, 10, 10, 10, 15, 25, 75, 105, 135, 155, 160, 165, 170]]
return tint[month][hour]
end
def setup_dynamic_light_tints
return dynamic_light_settings if !@update_dynamic_tints
@tint = []
minus = 7 # сколько вычитать из значения для рандома
no_zero = 6 + minus * 1.5 # сколько прибавить в рандоме
month = $Game_Time.month
for i in 0..23
@tint[i] = Color.new(red(i, month) - minus + rand(no_zero), green(i, month) - minus + rand(no_zero), blue(i, month) - minus + rand(no_zero), alpha(i, month) - minus + rand(no_zero))
end
@update_dynamic_tints = false
return dynamic_light_settings
end
def dynamic_light_settings
Game_Time_Functions.setup_use_khas_day_light(false) # отключаем работу диапазона времени для переключателя
setup = false
setup = true if @tint[@hour].alpha > 100
Game_Time_Functions.setup_khas_light_switch(setup) # включить переключатель, если уже темно
@now_hour = @tint[@hour]
@next_hour = @tint[(@hour + 1) % GAME_TIME_HOURS_IN_DAY]
end
end # class Game_Time_Tint < Sprite_Base
class Game_Time_Window < Window_Base
include Game_Time_Settings
def initialize(preset = nil)
return if preset.nil?
@preset = preset # настройки окна
super(@preset[:x], @preset[:y], @preset[:width], @preset[:height])
window_setup
end
def window_setup
if @preset[:windowskin]
self.windowskin = Cache.system(@preset[:windowskin]) if @preset[:windowskin] != "" && @preset[:windowskin] != -1
end
modify if @preset[:modify]
if @preset[:tone]
self.tone = @preset[:tone] if @preset[:tone] != -1
end
if @preset[:opacity]
if @preset[:opacity] != []
self.opactiy = @preset[:opacity][0] if @preset[:opacity][0] != -1
self.back_opacity = @preset[:opacity][1] if @preset[:opacity][1] != -1
self.contents_opacity = @preset[:opacity][2] if @preset[:opacity][2] != -1
end
end
if @preset[:z]
self.z = @preset[:z] if @preset[:z] != -1
end
if @preset[:font]
if @preset[:font] != []
contents.font.name = @preset[:font][0] if @preset[:font][0] != -1
contents.font.bold = @preset[:font][1] if @preset[:font][1] != -1
contents.font.italic = @preset[:font][2] if @preset[:font][2] != -1
end
end
@use_custom_clock = false
@use_custom_clock = true if @preset[:custom_clock_date] != [] || @preset[:custom_clock_time] != []
@custom_clock_date = @preset[:custom_clock_date]
@custom_clock_time = @preset[:custom_clock_time]
end
def modify
dup_skin = self.windowskin.dup
dup_skin.clear_rect(64, 0, 64, 64)
self.windowskin = dup_skin
end
def get_date # дата
date = ($Game_Time.day.to_s + " " + GAME_TIME_FORMAT_MONTHS[$Game_Time.month] + " " + $Game_Time.year.to_s)
return date if !@use_custom_clock
return date if @custom_clock_date.nil?
date = ""
@custom_clock_date.each do |index|
case index
when "День"
date += $Game_Time.day.to_s
when "День недели"
date += GAME_TIME_DAYS_WEEK[$Game_Time.month]
when "Месяц(число)"
date += $Game_Time.month.to_s
when "Месяц(название)"
date += GAME_TIME_FORMAT_MONTHS[$Game_Time.month]
when "Год"
date += $Game_Time.year.to_s
else
date += index.to_s
end
end
return date
end
def get_seconds
return $Game_Time.sec < 10 ? "0" + $Game_Time.sec.to_s : $Game_Time.sec.to_s
end
def get_minutes
return $Game_Time.min < 10 ? "0" + $Game_Time.min.to_s : $Game_Time.min.to_s
end
def get_hours
return $Game_Time.hour < 10 ? "0" + $Game_Time.hour.to_s : $Game_Time.hour.to_s
end
def get_blink # мигающее двоеточие
return ":" if !$Game_Time.time_update
return ":" if $Game_Time.time_count % GAME_TIME_BLINK_SPEED >= GAME_TIME_BLINK_SPEED / 2
return " "
end
def get_time # время
time = get_hours + (GAME_TIME_BLINK_SPEED != -1 ? get_blink : ":") + get_minutes + (GAME_TIME_WINDOW_SECONDS ? ((GAME_TIME_BLINK_SPEED != -1 ? get_blink : ":") + get_seconds) : "")
return time if !@use_custom_clock
return time if @custom_clock_time.nil?
time = ""
@custom_clock_time.each do |index|
case index
when "Час"
time += get_hours
when "Двоеточие"
time += GAME_TIME_BLINK_SPEED != -1 ? get_blink : ":"
when "Минуты"
time += get_minutes
when "Секунды"
time += GAME_TIME_WINDOW_SECONDS ? get_seconds : ""
else
time += index.to_s
end
end
return time
end
def update
if (@now_sec != $Game_Time.sec && GAME_TIME_WINDOW_SECONDS) || @now_min != $Game_Time.min || GAME_TIME_BLINK_SPEED != -1 || @now_hour != $Game_Time.hour || @now_day != $Game_Time.day || @now_month != $Game_Time.month || @now_year != $Game_Time.year
setup_variables
contents.clear
date = get_date
time = get_time
if date != "" && time != ""
draw_text(0, 0, contents_width, contents_height - line_height, date, 1)
draw_text(0, 0, contents_width, contents_height + line_height, time, 1)
end
draw_text(0, 0, contents_width, contents_height, date, 1) if time == "" && date != ""
draw_text(0, 0, contents_width, contents_height, time, 1) if time != "" && date == ""
end
end
def setup_variables
@now_sec = $Game_Time.sec
@now_min = $Game_Time.min
@now_hour = $Game_Time.hour
@now_day = $Game_Time.day
@now_month = $Game_Time.month
@now_year = $Game_Time.year
end
end # class Game_Time_Window < Window_Base
class Scene_Map < Scene_Base
include Game_Time_Settings
alias denis_kyznetsov_game_time_scene_map_create_all_windows create_all_windows
def create_all_windows
denis_kyznetsov_game_time_scene_map_create_all_windows
create_game_time_window if $GAME_TIME_SHOW_WINDOW
end
def create_game_time_window
dispose_game_time_window
return if GAME_TIME_MAP_CLOCK == {}
@create_game_time_window = Game_Time_Window.new(GAME_TIME_MAP_CLOCK)
end
def dispose_game_time_window
return if @create_game_time_window.nil?
@create_game_time_window.dispose
@create_game_time_window = nil
end
def game_time_window_visible(flag)
if flag
create_game_time_window
else
dispose_game_time_window
end
$GAME_TIME_SHOW_WINDOW = flag
end
alias denis_kyznetsov_game_time_scene_map_update update
def update
$Game_Time.update
$Game_Time_Tint.update
denis_kyznetsov_game_time_scene_map_update
return if GAME_TIME_WINDOW_BUTTON.is_a?(Integer)
game_time_window_visible(!$GAME_TIME_SHOW_WINDOW) if Input.trigger?(GAME_TIME_WINDOW_BUTTON)
end
end # Scene_Map < Scene_Base
class Scene_Menu < Scene_MenuBase
include Game_Time_Settings
alias denis_kyznetsov_game_time_scn_menu_start start
def start
denis_kyznetsov_game_time_scn_menu_start
create_game_time_window
end
def create_game_time_window
return if GAME_TIME_MENU_CLOCK == {}
@create_game_time_window = Game_Time_Window.new(GAME_TIME_MENU_CLOCK)
end
alias denis_kyznetsov_game_time_scene_menu_update update
def update
$Game_Time.update if GAME_TIME_UPDATE_TIME_IN_MENU
denis_kyznetsov_game_time_scene_menu_update
end
end # Scene_Menu < Scene_MenuBase
class Scene_Battle < Scene_Base
include Game_Time_Settings
alias denis_kyznetsov_game_time_scene_battle_start start
def start
denis_kyznetsov_game_time_scene_battle_start
create_game_time_window
end
def create_game_time_window
return if GAME_TIME_BATTLE_CLOCK == {}
@create_game_time_window = Game_Time_Window.new(GAME_TIME_BATTLE_CLOCK)
end
alias denis_kyznetsov_game_time_scene_battle_update update
def update
$Game_Time.update if GAME_TIME_UPDATE_TIME_IN_BATTLE
$Game_Time_Tint.update if GAME_TIME_LIGHT_IN_BATTLE
denis_kyznetsov_game_time_scene_battle_update
end
end # class Scene_Battle < Scene_Base
class Spriteset_Battle
include Game_Time_Settings
alias denis_kyznetsov_game_time_spriteset_Battle_initialize initialize
def initialize
denis_kyznetsov_game_time_spriteset_Battle_initialize
create_tint if battleback1_name || battleback2_name
update
end
def create_tint
@tint_sprite = Sprite.new(@viewport1)
@tint_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
@tint_sprite.blend_type = 2
@tint_sprite.z = @viewport2.z - 1
update_tint
end
alias denis_kyznetsov_game_time_spriteset_Battle_update update
def update
denis_kyznetsov_game_time_spriteset_Battle_update
update_tint if GAME_TIME_LIGHT_IN_BATTLE && GAME_TIME_UPDATE_TIME_IN_BATTLE
end
def update_tint
tint_color = $game_map.effect_surface.color
if @tint_sprite && @last_tint_color != tint_color
@tint_sprite.bitmap.clear
@tint_sprite.bitmap.fill_rect(0, 0, Graphics.width, Graphics.height, tint_color)
@tint_sprite.opacity = $game_map.effect_surface.alpha
@last_tint_color = tint_color
end
end
alias denis_kyznetsov_game_time_spriteset_Battle_dispose dispose
def dispose
denis_kyznetsov_game_time_spriteset_Battle_dispose
dispose_tint
end
def dispose_tint
@tint_sprite.dispose if @tint_sprite
end
end # class Spriteset_Battle
$imported = {} if $imported.nil?
$imported["DenKyz_Game_Time"] = true
class Game_Map
alias denis_kyznetsov_game_time_game_map_setup setup
def setup(map_id)
denis_kyznetsov_game_time_game_map_setup(map_id)
return if $Game_Time.nil?
$Game_Time.time_update = !@map.note.include?("<No Game Time Update>")
return if $Game_Time_Tint.nil?
if @map.note =~ /<[\s]*Light[\w\s]*Hour[\s]*=[\s]*([\d]+)[\s]*>/i
$Game_Time_Tint.static_light_hour = $1.to_i
else
$Game_Time_Tint.static_light_hour = -1
end
end
end # class Game_Map
class Game_Interpreter
def save_game_time # сохранить текущее время
$Saved_Game_Time = Game_Time.new($Game_Time)
end
def load_game_time # загрузить другое время
$Game_Time = Game_Time.new($Saved_Game_Time)
end
def game_time_window_visible(flag) # пок / скр все окна
SceneManager.scene.game_time_window_visible(flag)
end
def set_game_time(sec, min, hour, day, dayweek, month, year) # установить дату
$Game_Time.set_time(sec, min, hour, day, dayweek, month, year)
end
def change_game_time(type, value) # изменить дату
$Game_Time.change_time(type, value)
end
def setup_use_khas_day_light(setup) #вкл / выкл диапазон переключения света
Game_Time_Functions.setup_use_khas_day_light(setup)
end
def change_game_time_speed(speed)
$Game_Time.time_speed = speed
end
def stop_update_game_time
$Game_Time.time_update = false
end
def continue_update_game_time
$Game_Time.time_update = true
end
def set_game_time_static_light_hour(hour)
$Game_Time_Tint.static_light_hour = hour
end
def game_time_update?
return $Game_Time.time_update
end
end # class Game_Interpreter
module DataManager
class << self
alias denis_kyznetsov_game_time_data_manager_create_game_objects create_game_objects
alias denis_kyznetsov_game_time_data_manager_make_save_contents make_save_contents
alias denis_kyznetsov_game_time_data_manager_extract_save_contents extract_save_contents
end
def self.create_game_objects
denis_kyznetsov_game_time_data_manager_create_game_objects
Game_Time_Functions.game_time_create_objects
end
def self.make_save_contents
contents = denis_kyznetsov_game_time_data_manager_make_save_contents
contents[:Game_Time] = $Game_Time
contents[:Game_Time_time_update] = $Game_Time.time_update
contents[:Game_Time_time_speed] = $Game_Time.time_speed
contents[:Game_Time_Tint_static_light_hour] = $Game_Time_Tint.static_light_hour
contents[:Saved_Game_Time] = $Saved_Game_Time
contents[:GAME_TIME_USE_KHAS_DAY_LIGHT] = $GAME_TIME_USE_KHAS_DAY_LIGHT
contents[:GAME_TIME_SHOW_WINDOW] = $GAME_TIME_SHOW_WINDOW
contents
end
def self.extract_save_contents(contents)
denis_kyznetsov_game_time_data_manager_extract_save_contents(contents)
$Game_Time = contents[:Game_Time]
$Game_Time.time_update = contents[:Game_Time_time_update]
$Game_Time.time_speed = contents[:Game_Time_time_speed]
$Game_Time_Tint.static_light_hour = contents[:Game_Time_Tint_static_light_hour]
$Saved_Game_Time = contents[:Saved_Game_Time]
$GAME_TIME_USE_KHAS_DAY_LIGHT = contents[:GAME_TIME_USE_KHAS_DAY_LIGHT]
$GAME_TIME_SHOW_WINDOW = contents[:GAME_TIME_SHOW_WINDOW]
end
end # module DataManager |
Последнее редактирование: 3 года 11 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Lekste, strelokhalfer, poca, Jas6666, Yros, aval__, Pinamal, 4ert24, TheMaximGames, Eugenius
|
Календарь 10 года 7 мес. назад #68685
|
Очень интересный и полезный скрипт
|
Администратор запретил публиковать записи гостям.
|
Календарь 10 года 7 мес. назад #68692
|
С радостью бы проверил этот скрипт, но мне лень искать специально для этого Game Time и Night/Day...
А если названия месяцев поменять, что будет? :3 А то коммент стоит: "не трогать", а я, если уж и полезу ковырять, то обязательно поторгаю... В другом мире ведь может быть и другие названия! @^~^@ Так, еще немного слияния постов в один. --Эльф |
Последнее редактирование: 10 года 5 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
|
Календарь 10 года 7 мес. назад #68697
|
Название можно месяцев можно поменять. Там написано "лучше не трогать", потому как все как в жизни стоит.
|
Администратор запретил публиковать записи гостям.
|
Календарь 10 года 7 мес. назад #68698
|
- add_quest(text, day, month) - должен поддерживать год;
- в списке квестов не нужно выводить год квеста или если точнее, наоборот, в списке квестов, например, за апрель, игрок должен бы видеть квесты на текущий апрель, а не все апрельские квесты на десять лет вперед; - если есть года, то нужно добавить листание календаря и по годам тоже; - выполненные квесты хорошо бы отмечать другим цветом; - окно непосредственно под календарь большое, но шрифт там почему-то пережат словно под крохотное виртуальное окошко. |
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK
|
Календарь 10 года 7 мес. назад #68715
|
Subzeroy пишет:
6. Теперь скрипт полностью зависим от Game Time + Night/Day А то зря, наверное, теперь скрипт превратился из более-менее универсального в адд-он к вышеупомянутым. Это, конечно, мои проблемы, но не все используют Game Time же. |
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK
|
Календарь 10 года 7 мес. назад #68717
|
Я еще подумаю, как можно сделать по-другому.
|
Администратор запретил публиковать записи гостям.
|
Время/Дата + Календарь 10 года 7 мес. назад #68789
|
Посмотрел очень вяло в notepad++, пока что придумал только, что
- По фреймкаунту отчет будет идти даже вне карты, в частности в меню, или я ошибаюсь? Просто имо с этой чертой надо считаться, ибо если задать параллельное событие с проверкой на один момент, то его можно профукать в меню. - Не вижу смысла в диспозе окна, можно его скрыть методом hide и показать методом show, а проверять через поле visible. Или для красоты close и open с проверкой по open? Кстати, если сделаешь так, то в update тоже поставь проверку на открытость. |
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Администратор запретил публиковать записи гостям.
|
Время/Дата + Календарь 10 года 7 мес. назад #68791
|
На счет первого ты прав. Я придумаю что-нибудь. На счет второго... Просто я где-то читал, что окна лучше уничтожать, а не скрывать, чтобы экономить ресурсы. Если это не так, то поправьте.
|
Администратор запретил публиковать записи гостям.
|
Время/Дата + Календарь 10 года 7 мес. назад #68794
|
Так то оно так, и лишний раз апдейт не зовется, и память освобождается. Но потом снова зовется конструктор, да и на сцене еще окон куча находится, которые энтербрейном уже расписаны через close. В принципе можно, я не против, просто любопытно.
|
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK
|
Время/Дата + Календарь 10 года 7 мес. назад #68800
|
С ходу наводка: названия модуля Settings лучше поменять во избежание конфликтов (хотя бы и на Time_Settings).
|
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK
|
Время/Дата + Календарь 10 года 7 мес. назад #68820
|
Новая версия 1.8:
-Поддержка MOG Weather EX, есть разные настройки. -Исправлены ошибки. В разработке собственная погода и день/ночь. Работа ведется. Отписывайтесь как скрипт Прилагаю демо: Демо Скрипт: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Время/Дата + Календарь #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Релиз от: 27.04.14
Версия: 1.8
############# ИНСТРУКЦИЯ #######################################################
Время/Дата:
Чтобы изменить время, воспользуйтесь скриптом
Now_Time.change(sec, min, hour, day, dayweek, month, year)
sec - секунды
min - минуты
hour - час
day - день
dayweek - день недели
month - месяц
year - год
Пример: Now_Time.change(30, 2, 3, 5, 7, 4, 201)
Чтобы получить текущую дату используйте вызовы скрипта:
Now_Time.sec?
Now_Time.min?
Now_Time.hour?
Now_Time.day?
Now_Time.dayweek?
Now_Time.month?
Now_Time.year?
Чтобы добавить время, используйте скрипты:
Now_Time.time("add","sec", n) - добавит n секунд
Now_Time.time("rem","sec", n) - удалит n секунд
Возможно: "sec", "min", "hour", "day", "month", "year"
Пример: Now_Time.time("add", "hour", 2) - добавит 2 часа
Календарь:
Чтобы добавить запись в календарь, воспользуйтесь вызовом скрипта:
add_quest(text, day, month, year)
text - текст, что будет отображаться в календаре
day - день
month - месяц
year - год
Например: add_quest("Сходить за посылкой", 2, 1, 2014) - вызов этого скрипта добавит
запись в календарь на 2 января 2014 года.
2 Пример: add_quest("Получить почту") - добавит запись на сегодняшний день
Прошедшие события будут автоматически удаляться !
Но вы также можете самостоятельно завершать записанные события вызовом скрипта:
complete_quest(text, day, month, year)
где text - текст записи
day - день
month - месяц
year - год
Чтобы, например, удалить запись из первого примера выше, нужно вызвать скрипт:
complete_quest("Сходить за посылкой", 2, 1, 2014)
=end
############# НАТРОЙКА #########################################################
module CalVocab
# Информация на месяцы, на которых нет записей
No_Info = "В этом месяце ничего нет"
# Информация в окне, если сегодня нет событий
Game_No_Info = "На сегодня ничего нет"
end
module Calendar_Settings
# Название дней недели
Days_Week = %w[ Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье ]
# Название месяцев
Months = %w[ Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь
Ноябрь Декабрь ]
end
module Time_Settings
# Использовать дату с компьюетера ? true - да, false - нет
Use_Real_Time = false
# Исользовать календарь ? true - да, false - нет
Use_Calendar = true
# Остановить время в меню ? true - да, false - нет
Pause_In_Menu = false
# Отображать время в меню ? true - да, false - нет
# Если Pause_In_Menu = true, то будет отображаться только дата.
Time_In_Menu = true
# Использовать Khas Light Effect ? true - да, false - нет
Use_Khas_Light = false
# Номер переключателя, который отвечает за включение света в событиях,
# Если вы используете Khas_Light Effect
Game_Night_Switch = 3
# Диапозон времени, когда свет не горит (день),
# Если вы используете Khas_Light Effect
Day_light = [8, 19] # с 8 утра до 7 вечера свет не горит
# Настройка оттенков экрана для каждого часа
Tints = [Color.new(30,0,40,165), # => 0 час
Color.new(20,0,30,165), # => 1 час
Color.new(20,0,30,155), # => 2 час
Color.new(10,0,30,145), # => 3 час
Color.new(10,0,20,125), # => 4 час
Color.new(0,0,20,125), # => 5 час
Color.new(80,20,20,115), # => 6 час
Color.new(110,30,10,105), # => 7 час
Color.new(75,20,10,85), # => 8 час
Color.new(0,0,0,55), # => 9 час
Color.new(0,0,0,30), # => 10 час
Color.new(0,0,0,10), # => 11 час
Color.new(0,0,0,0), # => 12 час
Color.new(0,0,0,0), # => 13 час
Color.new(0,0,0,0), # => 14 час
Color.new(0,0,0,5), # => 15 час
Color.new(0,0,0,15), # => 16 час
Color.new(0,0,10,45), # => 17 час
Color.new(100,20,20,85), # => 18 час
Color.new(130,40,30,105), # => 19 час
Color.new(80,20,40,125), # => 20 час
Color.new(10,0,50,135), # => 21 час
Color.new(20,0,60,135), # => 22 час
Color.new(30,0,70,155)] # => 23 час
# Использовать MOG Wheather EX ? true - да, false - нет
# Вы можете переключать погоду, вызовом скрипта: Now_Time.set_weather
$Use_Weather = true
# Часы, когда действует погода
Weather_hours = [10, 19]
# Если используете погоду
# [ТИП, СИЛА, ИМЯ_ГРАФИКИ] Подробнее в MOG Weather EX
Weather_Periods = [
[0,5,"Snow_01"], # Январь
[1,3,"Snow_01"], # Февраль
[2,4,"Leaf_01A"], # Март
[3,6,"Leaf_02A"], # Апрель
[4,8,"Leaf_02A"], # Май
[5,5,"Fog_01A"], # Июнь
[6,6,"Fog_01A"], # Июль
[0,5,"Fog_01A"], # Август
[1,4,"Leaf_01B"], # Сентябрь
[2,6,"Leaf_02B"], # Октябрь
[3,5,"Leaf_02B"], # Ноябрь
[4,6,"Snow_01"]] # Декабрь
# Секунд в минуте
Seconds_In_Minute = 60
# Минут в часе
Minutes_In_Hour = 60
# Часов в дне
Hours_In_Day = 24
# Скорость времени
# (Минимум - 1, Максимум - сколько угодно).
# Чем меньше цифра, тем быстрее идет время.
Time_Speed = 1
# Частота обновления ":" в отображении времени
Time_Update = 40
# Начало игры! Если не используете реальное время.
Sec = 12 # Секунды
Min = 5 # Минуты
Hour = 9 # Час
Day = 15 # День
Day_Week = 7 # В диапозоне от 1 до 7 (1 - Понедельник, 7 - Воскресенье)
Month = 4 # Месяц
Year = 756 # Год
# Количество дней в каждом месяце
Days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# День с которого начинается отображения первого дня первого месяца
$First_Day = 1 # В диапозоне от 1 до 7
# Позиция окна календаря
# (1-слева вверху, 2-справа вверху, 3-слева внизу, 4-справа внизу)
Calendar_Position = 1
# Позиция окна времени
#(1-слева вверху, 2-справа вверху, 3-слева внизу, 4-справа внизу)
$Time_Position = 2
# Кнопка отображения окон (время и календарь)
Game_Time_Button = :Z
############# КОНЕЦ НАСТРОЙКИ ##################################################
############# НИЖЕ НЕ ТРОГАТЬ !!! ##############################################
Months_Day = [] # Не трогать !!!
Quests = [] # Не трогать !!!
$Quests_Size = 0 # Не трогать !!!
Sort = [] # Не трогать !!!
end
class Now_Time
def initialize
$Game_Time = Denis_Kyznetcov_Game_Time.new
end
def self.change(sec, min, hour, day, dayweek, month, year)
$Game_Time.change(sec, min, hour, day, dayweek, month, year)
update
end
def self.update
$Game_Time.update
end
def self.sec?
return $Game_Time.sec
end
def self.min?
return $Game_Time.min
end
def self.hour?
return $Game_Time.hour
end
def self.day?
return $Game_Time.day
end
def self.dayweek?
return $Game_Time.dayweek
end
def self.month?
return $Game_Time.month
end
def self.year?
return $Game_Time.year
end
def self.time(command, type, n)
case command
when "add"
case type
when "sec"
n.times do $Game_Time.add_sec(1) end
when "min"
n.times do $Game_Time.add_min(1) end
when "hour"
n.times do $Game_Time.add_hour(1) end
when "day"
n.times do $Game_Time.add_day(1) end
when "month"
n.times do $Game_Time.add_month(1) end
when "year"
n.times do $Game_Time.add_year(1) end
end
when "rem"
case type
when "sec"
n.times do $Game_Time.rem_sec(1) end
when "min"
n.times do $Game_Time.rem_min(1) end
when "hour"
n.times do $Game_Time.rem_hour(1) end
when "day"
n.times do $Game_Time.rem_day(1) end
when "month"
n.times do $Game_Time.rem_month(1) end
when "year"
n.times do $Game_Time.rem_year(1) end
end
end
end
def self.set_weather
$Use_Weather == false ? $Use_Weather = true : $Use_Weather = false
end
end # Game_Time
class Denis_Kyznetcov_Game_Time
include Time_Settings, Calendar_Settings
attr_reader :sec
attr_reader :min
attr_reader :hour
attr_reader :day
attr_reader :dayweek
attr_reader :month
attr_reader :year
def initialize
@sec = Sec
@min = Min
@hour = Hour
@day = Day
@dayweek = Day_Week - 1
@month = Month - 1
@year = Year
end
def change(sec = 0, min = 0, hour = 0, day = 0, dayweek = 0, month = 0, year = 0)
@sec = sec
@min = min
@hour = hour
@day = day
@dayweek = dayweek - 1
@month = month - 1
@year = year
end
def update
if SceneManager.scene.is_a?(Scene_Map) || (SceneManager.scene.is_a?(Scene_Menu) && !Pause_In_Menu)
return Real_Time if Use_Real_Time
return unless Graphics.frame_count % Time_Speed == 0
add_sec(1)
end
end
def Real_Time
@sec = Time.now.sec
@sec = 0 if @sec >= Seconds_In_Minute
@min = Time.now.min
@hour = Time.now.hour
@day = Time.now.day
@dayweek = Time.now.wday
@month = Time.now.month - 1
@year = Time.now.year
end
def add_sec(n)
@sec += n
return unless @sec == Seconds_In_Minute
@sec = 0
add_min(1)
end
def add_min(n)
@min += n
return unless @min == Minutes_In_Hour
@min = 0
add_hour(1)
end
def add_hour(n)
@hour += n
return unless @hour == Hours_In_Day
@hour = 0
add_day(1)
end
def add_day(n)
@day += n
@dayweek += n
@dayweek = 0 if @dayweek == Days_Week.size
return unless @day == Days[@month]
@day = 0
add_month(1)
end
def add_month(n)
@month += n
return unless @month == Months.size
@month = 0
add_year(1)
end
def add_year(n)
@year += n
end
def rem_sec(n)
@sec -= n
return unless @sec == -1
@sec = Seconds_In_Minute
rem_min(1)
end
def rem_min(n)
@min -= n
return unless @min == -1
@min = Minutes_In_Hour
rem_hour(1)
end
def rem_hour(n)
@hour -= n
return unless @hour == -1
@hour = Hours_In_Day - 1
rem_day(1)
end
def rem_day(n)
@day -= n
@dayweek -= n
@dayweek = Days_Week.size - 1 if @dayweek == -1
return unless @day == 0
@day = Days[@month-1]
rem_month(1)
end
def rem_month(n)
@month -= n
return unless @month == -1
@month = Months.size - 1
rem_year(1)
end
def rem_year(n)
@year -= n
end
end
Now_Time.new
class Scene_Base
alias denis_kyznetcov_scn_base_update update
def update
denis_kyznetcov_scn_base_update
$Game_Time.update
end
end
class Spriteset_Map
include Time_Settings
alias denis_kyznetcov_sprset_map_update update
def update
denis_kyznetcov_sprset_map_update
return if !Use_Khas_Light
if $Game_Time.hour < Day_light[0] || $Game_Time.hour > Day_light[1]
$game_switches[Game_Night_Switch] = true
else
$game_switches[Game_Night_Switch] = false
end
now_hour = Tints[$Game_Time.hour]
next_hour = Tints[$Game_Time.hour + 1] unless $Game_Time.hour + 1 == Hours_In_Day
next_hour = Tints[0] if $Game_Time.hour + 1 == Hours_In_Day
min = $Game_Time.min
r = now_hour.red.to_f + (next_hour.red.to_f - now_hour.red.to_f)/Seconds_In_Minute * min
g = now_hour.green.to_f + (next_hour.green.to_f - now_hour.green.to_f)/Seconds_In_Minute * min
b = now_hour.blue.to_f + (next_hour.blue.to_f - now_hour.blue.to_f)/Seconds_In_Minute * min
a = now_hour.alpha.to_f + (next_hour.alpha.to_f - now_hour.alpha.to_f)/Seconds_In_Minute * min
$game_map.effect_surface.change_color(1, r, g, b, a)
end
end # class Spriteset_Map
class Scene_Map < Scene_Base
include Time_Settings
alias denis_kyznetcov_scn_map_create_all_windows create_all_windows
def create_all_windows
denis_kyznetcov_scn_map_create_all_windows
create_time_window
@time_window_exist = true
if Use_Calendar
create_calendar_window
@calendar_window_exist = true
end
end
def create_time_window
dx, dy = 0, 0
$Time_Position += 1 if $Time_Position == Calendar_Position
$Time_Position = 1 if $Time_Position == 5
case $Time_Position
when 2
dx = Graphics.width-180
when 3
dy = Graphics.height-90
when 4
dx = Graphics.width-180
dy = Graphics.height-90
end
@create_time_window = Time_Window.new(dx, dy, 180, 90)
end
def create_calendar_window
dx, dy = 0, 0
case Calendar_Position
when 2
dx = Graphics.width-200
when 3
dy = Graphics.height-100
when 4
dx = Graphics.width-200
dy = Graphics.height-100
end
@create_calendar_scene_map = Calendar_Scene_Map_Window.new(dx, dy, 200, 100)
end
alias denis_kyznetcov_gmtime_scnmap_update update
def update
denis_kyznetcov_gmtime_scnmap_update
if $Use_Weather
if $Game_Time.hour >= Weather_hours[0] && $Game_Time.hour <= Weather_hours[1] && $game_system.weather == [-1, 0, ""] || @now_month != $Game_Time.month
@now_month = $Game_Time.month
$game_temp.weather_fade = false
month = $Game_Time.month
$game_system.weather = [Weather_Periods[month][0], Weather_Periods[month][1], Weather_Periods[month][2]]
elsif $game_system.weather != [-1, 0, ""] && ($Game_Time.hour < Weather_hours[0] || $Game_Time.hour > Weather_hours[1])
$game_temp.weather_fade = true
$game_system.weather = [-1, 0, ""]
end
else
$game_temp.weather_fade = true
$game_system.weather = [-1, 0, ""]
end
if Input.trigger?(Game_Time_Button) && @time_window_exist == true
@create_time_window.dispose
@create_time_window = 0
@time_window_exist = false
elsif Input.trigger?(Game_Time_Button) && @time_window_exist == false
create_time_window
@time_window_exist = true
end
if Use_Calendar
if Input.trigger?(Game_Time_Button) && @calendar_window_exist == true
@create_calendar_scene_map.dispose
@create_calendar_scene_map = 0
@calendar_window_exist = false
elsif Input.trigger?(Game_Time_Button) && @calendar_window_exist != true
create_calendar_window
@calendar_window_exist = true
end
end
end
end # Scene_Map < Scene_Base
class Time_Window < Window_Base
include Calendar_Settings
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height)
super(x, y, w, h)
update
end
def blink
return ":" if Graphics.frame_count % Time_Settings::Time_Update > Time_Settings::Time_Update/2
return " "
end
def date
return ($Game_Time.day.to_s + " " + Months[$Game_Time.month] + " " + $Game_Time.year.to_s)
end
def time
return ($Game_Time.hour < 10 ? "0" + $Game_Time.hour.to_s : $Game_Time.hour.to_s) + blink + ($Game_Time.min < 10 ? "0" + $Game_Time.min.to_s : $Game_Time.min.to_s)
end
def update
contents.clear
draw_text(0, 5, 150, 32, date, 1)
draw_text(50, 30, 200, 32, time)
end
end
################################################################################
class Calendar_Time_Window_Base < Window_Base
include Time_Settings, Calendar_Settings
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height)
super(x, y, w, h)
@year = $List_Year
static_text
draw_text(0, 40, 190, 32, "Календарь на: " + $List_Year.to_s + " г")
update
end
def static_text
draw_text(10, 0, 180, 32, "Текущая дата:")
draw_text(10, 20, 160, 32, $Day.to_s + ", " + Months[$Month].to_s + " " + $Year.to_s + " г")
end
def update
if @year != $List_Year
@year = $List_Year
contents.clear
static_text
draw_text(0, 40, 190, 32, "Календарь на: " + $List_Year.to_s + " г")
end
end
end # class Calendar_Time_Window_Base < Window_Base
class Calendar_Month_Window_Base < Window_Base
include Time_Settings, Calendar_Settings
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height)
super(x, y, w, h)
@now_year = $List_Year
@mow_month = $month_cursor
month_math
update
end
def month_math
Months_Day[0] = $First_Day
for i in 1..11
Months_Day[i] = (Days[i-1]+Months_Day[i-1]) % 7
Months_Day[i] = 7 if Months_Day[i] == 0
end
end
def show_days_info # организация отображения календаря в цифрах
dx, dy, i, k, week = 60, 20, 1, Months_Day[$month_cursor], 4
if (Months_Day[$month_cursor] > 5 && $month_cursor == 1) || (Months_Day[$month_cursor] > 1)
week = 5
end
if Days[$month_cursor] > 30 || (Months_Day[$month_cursor] > 5 && Days[$month_cursor] >= 30)
week = 6
end
change_color(normal_color)
draw_text(dx, 0, 260, 25, "Пн Вт Ср Чт Пт Сб Вс")
i = draw_week(dx, dy, Months_Day[$month_cursor], 1, i)
for j in 2..week
i = draw_week(dx, dy, 1, j, i)
end
end
def draw_week(dx, dy, k, j, i) # отображение календаря в цифрах
for s in k..7
if i > Days[$month_cursor]
break
end
if i == $Day && $Month == $month_cursor && $Year == $List_Year
change_color(text_color(24))
else
change_color(normal_color)
end
for ind in 0..Quests.size - 1
if Quests[ind] != nil
if $List_Year == Quests[ind][:year] && i == Quests[ind][:date] && Quests[ind][:month] == $month_cursor && i != $Day
change_color(text_color(20))
elsif i == Quests[ind][:date] && $Month == Quests[ind][:month] && $Month == $month_cursor && $Year == Quests[ind][:year] && $Year == $List_Year
change_color(text_color(21))
elsif i != $Day && $Year != $List_Year
change_color(normal_color)
end
end
end
draw_text(dx + (s-1)*24*1.35, dy + (j-1)*20, 460, 25, i.to_s)
i += 1
end
return i
end
def update
if @now_year != $List_Year || @now_month != $month_cursor || delete? > 0
if @now_year != $List_Year
@now_year = $List_Year
month_math
end
@now_month = $month_cursor if @now_month != $month_cursor
contents.clear
show_days_info
end
end
def delete?
k = 0
for i in 0..Quests.size-1
if Quests[i] != nil
Functions.new.delete_quest(i) if Quests[i][:date] < $Day && Quests[i][:month] == $Month && Quests[i][:year] == $Year
k += 1
end
end
return k
end
end # Calendar_Month_Window_Base < Window_Base
class Functions
include Time_Settings
def delete_quest(index) # удаление записей
for i in index..Quests.size - 1
Quests[i] = Quests[i+1]
end
Quests[Quests.size-1] = nil
end
end
class Calendar_Strings_Window_Base < Window_Base
include Time_Settings, Calendar_Settings, CalVocab
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height)
super(x, y, w, h)
@now_month = $month_cursor
@now_year = $List_Year
if Quests.size > 0
proverka(year) if Quests.size > 1
show_month_info
else
draw_text(50, 80, 350, 50, No_Info, 0)
end
end
def show_month_info # отображение текстовых записей и организцаия удаления прошедших событий
dh, k = 20, 0
size = Quests.size
for i in 0..size-1
if Quests[i] != nil && Quests[i][:month] == $month_cursor
if ($Year > Quests[i][:year] || (($Year >= Quests[i][:year] && Quests[i][:month] < $Month)) || ($Year >= Quests[i][:year] && Quests[i][:month] == $Month && Quests[i][:date] < $Day))
Functions.new.delete_quest(i)
else
if ($Day == Quests[i][:date] && Quests[i][:month] == $Month && $Year == Quests[i][:year])
change_color(text_color(20))
end
draw_text(0, k*dh, 350, 30, Quests[i][:text] + " " + (Quests[i][:date].to_s), 0) if Quests[i][:year] == $List_Year
k += 1 if $List_Year == Quests[i][:year]
change_color(normal_color)
end
end
end
draw_text(50, 80, 350, 50, No_Info, 0) if k == 0
end
def year # какой максимальный год в записях
if Quests[0] != nil
max_year = Quests[0][:year]
for i in 0..Quests.size-1
if Quests[i] != nil
if Quests[i][:year] < $Year
Functions.new.delete_quest(i)
break
end
if Quests[i][:year] > max_year
max_year = Quests[i][:year]
end
end
end
return max_year
end
return 0
end
def proverka(max_year = $Year) # организация проверки записей на сортировку
size = Quests.size - 1
for years in $Year..max_year
ind = 0
for index in 0..size
if Quests[index] != nil
if Quests[index][:year] == years
ind = index
end
if Quests[index][:year] < Quests[ind][:year]
sortirovka(ind, index)
end
end
end
for months in 0..11 # цикл для месяцев
for index in 0..size # цикл для массива квестов
if Quests[index] != nil
if Quests[index][:month] == months
ind1 = index # индекс первого элемента
for index1 in 0..size # цикл от найденного элемента
if Quests[index1] != nil
if Quests[ind1][:date] < Quests[index1][:date] && Quests[ind1][:year] == Quests[index1][:year]
sortirovka(ind1, index1)
break
end
end
end
end
end
end
end
end
end
def sortirovka(i, m) # сортировка записей
Sort[0] = { :text => Quests[i][:text], :date => Quests[i][:date], :month => Quests[i][:month], :year => Quests[i][:year] }
Quests[i] = Quests[m]
Quests[m] = Sort[0]
end
def update
if @now_month != $month_cursor || @now_year != $List_Year
contents.clear
@now_month = $month_cursor
@now_year = $List_Year
if Quests.size > 0
show_month_info
else
draw_text(50, 80, 350, 50, No_Info, 0)
end
end
end
end # class Calendar_Month_Window_Base < Window_Base
class Window_MenuCommand < Window_Command
include Time_Settings
alias denis_kyznetcov_calendar_wnd_menu_cmmd_add_original_commands add_original_commands
def add_original_commands
denis_kyznetcov_calendar_wnd_menu_cmmd_add_original_commands
add_command("Календарь", :calendar) if Use_Calendar
end
end
class Scene_Menu < Scene_MenuBase
include Time_Settings
alias denis_kyznetcov_time_scn_menu_start start
def start
denis_kyznetcov_time_scn_menu_start
create_time_window if Time_In_Menu
end
def create_time_window
@create_time_window = Menu_Time_Window.new(@gold_window.x, @gold_window.y - 80, 160, 80)
end
alias denis_kyznetcov_scn_menu_create_command_window create_command_window
def create_command_window
denis_kyznetcov_scn_menu_create_command_window
@command_window.set_handler(:calendar, method(:calendar)) if Use_Calendar
end
def calendar
SceneManager.call(CalendarScene)
end
end # Scene_Menu < Scene_MenuBase
class Menu_Time_Window < Window_Base
include Time_Settings, Calendar_Settings
def initialize(x, y, w, h)
super(x, y, w, h)
update
end
def blink
return ":" if Graphics.frame_count % Time_Update > Time_Update/2
return " "
end
def date
return ($Game_Time.day.to_s + " " + Months[$Game_Time.month] + " " + $Game_Time.year.to_s)
end
def time
return ($Game_Time.hour < 10 ? "0" + $Game_Time.hour.to_s : $Game_Time.hour.to_s) + blink + ($Game_Time.min < 10 ? "0" + $Game_Time.min.to_s : $Game_Time.min.to_s)
end
def update
contents.clear
Pause_In_Menu ? dy = 10 : dy = 0
draw_text(0, dy, 140, 32, date, 1)
draw_text(40, 25, 200, 32, time) if !Pause_In_Menu
end
end # Menu_Time_Window < Window_Base
class Quest_Window < Window_Base
def initialize(x, y, w, h)
super(x, y, w, h)
update
end
end # Quest_Window < Window_Base
class CalendarScene < Scene_MenuBase
include Time_Settings
def start
super
$Year = $Game_Time.year
$Month = $Game_Time.month
$Day = $Game_Time.day
$List_Year = $Year
create_main_window
create_month_window
create_time_window
create_strings_window
end
def create_main_window
@create_main_window = Calendar_Window_Command.new(0, 100)
end
def create_strings_window
dw = Graphics.width/3
@create_strings_window = Calendar_Strings_Window_Base.new(dw, 176, Graphics.width - dw, Graphics.height - 176)
end
def create_month_window
dw = Graphics.width/3
@create_month_window = Calendar_Month_Window_Base.new(dw, 0, Graphics.width - dw, 176)
end
def create_time_window
@create_time_window = Calendar_Time_Window_Base.new(0, 0, Graphics.width/3, 100)
end
def update
super
return_scene if Input.trigger?(:B)
end
end # class CalendarScene < Scene_MenuBase
class Game_Interpreter
include Time_Settings
def add_quest(text, date = 0, month = 0, year = 0) # добавление записей в массив
$Year = $Game_Time.year
$Month = $Game_Time.month
$Day = $Game_Time.day
date = $Day if date == 0
month = $Month + 1 if month == 0
year = $Year if year == 0
Quests[Quests.size] = { :text => text, :date => date, :month => month - 1, :year => year }
$Quests_Size = Quests.size
end
def complete_quest(text, day = $Game_Time.day, month = $Game_Time.month, year = $Game_Time.year)
month -= 1 if month != $Game_Time.month
for i in 0..Quests.size - 1
if Quests[i] != nil
if Quests[i][:text] == text && Quests[i][:date] == day && Quests[i][:month] == month && Quests[i][:year] == year
Functions.new.delete_quest(i)
break
end
end
end
end
end # class Game_Interpreter
class Calendar_Window_Command < Window_Command
include Time_Settings, Calendar_Settings
def initialize(x, y)
super
select($Month)
end
def make_command_list
$month_cursor = $Month
$List_Year = $Year
Months.each do |index|
add_command(index, index)
end
end
def window_width
return Graphics.width/3
end
def window_height
return 2*Graphics.height/3 + 40
end
def cursor_up(wrap = true)
$month_cursor -= 1
if $month_cursor < 0
$month_cursor = 11
end
select($month_cursor)
end
def cursor_down(wrap = true)
$month_cursor += 1
if $month_cursor > 11
$month_cursor = 0
end
select($month_cursor)
end
def cursor_right(wrap = true)
$List_Year += 1
$First_Day += 1
$First_Day = 1 if $First_Day > 7
end
def cursor_left(wrap = true)
$List_Year -= 1
$First_Day -= 1 if $List_Year >= $Year
$First_Day = 7 if $First_Day < 1
$List_Year = $Year if $List_Year < $Year
end
end # Calendar_Window_Command < Window_Command
class Calendar_Scene_Map_Window < Window_Base
include Time_Settings, Calendar_Settings, CalVocab
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height)
super(x, y, w, h)
@now_day = $Game_Time.day
@draw = false
update
end
def draw_now_quests
k = 0
for i in 0..Quests.size - 1
if Quests[i] != nil
if Quests[i][:date] == $Game_Time.day && Quests[i][:month] == $Game_Time.month && Quests[i][:year] == $Game_Time.year
draw_text(0, k*25, 200, 32, Quests[i][:text])
k += 1
elsif Quests[i][:date] < $Game_Time.day && Quests[i][:month] <= $Game_Time.month && Quests[i][:year] <= $Game_Time.year
Functions.new.delete_quest(i)
end
end
end
return false if k == 0
return true
end
def update
contents.clear
if @now_day != $Game_Time.day
@now_day = $Game_Time.day
delete?
@draw = draw_now_quests
draw_text(0, 20, 200, 32, Game_No_Info) if @draw == false
else
@draw = draw_now_quests
draw_text(0, 20, 200, 32, Game_No_Info) if @draw == false
end
end
def delete?
for i in 0..Quests.size - 1
if Quests[i] != nil
if Quests[i][:date] < $Game_Time.day && Quests[i][:month] <= $Game_Time.month && Quests[i][:year] <= $Game_Time.year
Functions.new.delete_quest(i)
end
end
end
end
end # Calendar_Scene_Map_Window |
Последнее редактирование: 10 года 7 мес. назад от DK. Причина: Ссылка на демо
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Pinamal
|
Время/Дата+Времена Года+Погода+Календарь. v. 2.6.2 10 года 6 мес. назад #69426
|
Здравствуйте. Нужна помощь по данному скрипту, есть несколько вопросов. Очень нравится его совмещение с Khas Awesome Light Effects и относительно легкая настройка. (для меня -я нуб=)). Я не разбираюсь в скриптинге, но может быть кто то поможет.
1. Ест ли возможность вырезать из него «записи в календаре», что бы не было окна с "В этот день ничего нет"? и настроек с этим связанных. (Оставить только сам календарь с днями, числами и т.д и время.) 2. Где что поменять, что бы в начале игры не было видно даты и время? (по нажатию окна убираются, а как сделать что бы изначально были убраны и по нажатию появились?) 3. Если возможность отключить смену времени на определенных картах. (Ну скажем на одной карте идет время, смена дня и ночи, а заходим в другую локацию и там статичный свет – темень всегда.)? З.ы. Извиняюсь если это все надо было спрашивать в какой то другой теме. |
Администратор запретил публиковать записи гостям.
|
Время/Дата+Времена Года+Погода+Календарь. v. 2.6.2 10 года 6 мес. назад #69427
|
4ert24 пишет:
Здравствуйте. Нужна помощь по данному скрипту, есть несколько вопросов. Очень нравится его совмещение с Khas Awesome Light Effects и относительно легкая настройка. (для меня -я нуб=)). Я не разбираюсь в скриптинге, но может быть кто то поможет. Здравствуйте. 1. Вы имеете в виду отдельно календарь без погоды и времени ? Отдельно пока нельзя сделать.1. Ест ли возможность вырезать из него «записи в календаре», что бы не было окна с "В этот день ничего нет"? и настроек с этим связанных. (Оставить только сам календарь с днями, числами и т.д и время.) 2. Где что поменять, что бы в начале игры не было видно даты и время? (по нажатию окна убираются, а как сделать что бы изначально были убраны и по нажатию появились?) 3. Если возможность отключить смену времени на определенных картах. (Ну скажем на одной карте идет время, смена дня и ночи, а заходим в другую локацию и там статичный свет – темень всегда.)? 2. Пока такого нет, но в следующей версии добавлю. 3. Также будет добавлено в следующей версии. |
Последнее редактирование: 10 года 6 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: 4ert24
|
Время/Дата+Времена Года+Погода+Календарь. v. 2.6.2 10 года 6 мес. назад #69428
|
По поводу первого вопроса, я не так выразился…. Когда запускаешь игру в ней два окошка. 1-время и дата 2-событя на день. Я имел в виду убирания окна с событиями в игре (что бы события на день были видны только в меню – там где инвентарь, навыки и т.д). Ну то есть, что бы во время игры было только окошко с часами и датой, которое хайдится по нажатию. Благодарю за такой быстрый ответ и ваш труд! =) Буду ждать новых версий.
|
Администратор запретил публиковать записи гостям.
|
Время/Дата+Времена Года+Погода+Календарь. v. 2.6.2 10 года 6 мес. назад #69429
|
4ert24 пишет:
По поводу первого вопроса, я не так выразился…. Когда запускаешь игру в ней два окошка. 1-время и дата 2-событя на день. Я имел в виду убирания окна с событиями в игре (что бы события на день были видны только в меню – там где инвентарь, навыки и т.д). Ну то есть, что бы во время игры было только окошко с часами и датой, которое хайдится по нажатию. Благодарю за такой быстрый ответ и ваш труд! =) Буду ждать новых версий. Разные клавиши для окон ? Ну и настройка использовать ли вообще это окно. Если вы про это, то ждите в новой версии) |
Последнее редактирование: 10 года 6 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: 4ert24
|
Время/Дата+Времена Года+Погода+Календарь. v. 2.8 10 года 5 мес. назад #69702
|
Да-да именно, что бы была возможность настроить нужно ли мне окно или нет. Оставить только одно со временем, датой/событием или оба. Спасибо, буду ждать. =)
Прошу прощения еще раз =) Новая версия отлично работает. Удобная настройка. Единственное, я не совсем понял с освещением. Я сделал маленький тест проект. В одной локации все идет как надо в определение время горит свет, погода, время и т.д. И есть вторая локайцыя, в заметках которой стоит <No_Time_Update>. При в ходе в нее освещение останавливается на том, которое было на локации где должно идти время. Если с нее уйти назад на первую локацию – там опять все идет как надо. Собственно вопрос: как сделать что бы во второй локации было определенное освещение всегда? Ставить эвенты с оттенком экрана или скриптом - не помогает ибо тогда во ВСЕХ локациях отключается смена времени. Для наглядности ссылка на проект. yadi.sk/d/hrCLeWBISAXTr Извеняюсь если что, наверное уже надоел. =) Большое спасибо v2.8 отлично работает. Спасибо а вашу работу! Весь монолог о работе скрипта из трех постов слит в один. --Эльф |
Последнее редактирование: 10 года 5 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK
|
Время/Дата+New Dynamic Weather System v. 5.0a 10 года 3 мес. назад #72910
|
Новая версия: 5.0 alpha.
Внимание! Это альфа-версия! Что это значит ? Что-то работает, а что-то нет. Что работает: все возможности из предыдущей части, кроме погоды. Что не работает: убрана совместимость с MOG EX WEATHER. Будет интеграция с Game Weather. Ее пока нет, потому что готовится апдейт к тому скрипту. Что нового: Исправлены ошибки, повышена стабильность, вырезан календарь для уменьшения скрипта (календарь теперь в виде аддона), добавлена температура (пока просто отображение температуры - на погоду никак не влияет), улучшена кастомизация окон, немного изменен принцип прибавления времени (для тесной интеграции с условиями в эвентах) Устанавливайте этот скрипт, если вам нужно только время/дата + календарь. С погодой пока трудности возникли. Скрипт 5.0: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Game_Time + Динамическая Погода #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 5.0 alpha
Релиз от: 23.08.14
############# ИНСТРУКЦИЯ #######################################################
Время/Дата:
Чтобы изменить время, воспользуйтесь скриптом
Now_Time.change(sec, min, hour, day, dayweek, month, year)
sec - секунды
min - минуты
hour - час
day - день
dayweek - день недели
month - месяц
year - год
Пример: Now_Time.change(30, 2, 3, 5, 7, 4, 201)
Чтобы получить текущую дату используйте:
$Game_Time.sec
min, hour, day, dayweek, month, year
Чтобы сохранить время или загрузить его, используйте:
Now_Time.save_time
Now_Time.load_time
Чтобы добавить время, используйте скрипты:
Now_Time.time(+5, :min) - добавит 5 минут
Now_Time.time(-10,:hour) - удалит 10 часов
Возможно: :sec, :min, :hour, :day, :month, :year
Чтобы показать/скрыть все окна принудительно, воспользуйтесь
Now_Time.windows_visible?(flag)
где flag - true/false (показать/скрыть)
=end
############# НАТРОЙКА #########################################################
module Calendar_Settings
# Название дней недели
DAYS_WEEK = [ "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
# Сокращенное название дней недели для календаря
SHORT_DAYS_WEEK = ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"]
# Название месяцев
MONTHS = [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август",
"Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]
# Формативный вывод месяцев в календаре
CALENDAR_MONTHS = [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа",
"Сентября", "Октября", "Ноября", "Декабря" ]
end
module Time_Settings
#------ Настройка календаря ----------------------------------------------------
# Должен быть установлен аддон - Календарь
# Использовать календарь ? true - да, false - нет
USE_CALENDAR = true
# Использовать окно с календарем в игре ? true - да, false - нет
USE_CALENDAR_WINDOW = true
# Использовать окно уведомлений о квестах ? true - да, false - нет
USE_CALENDAR_WINDOW_NOTIFICATION = true
# Использовать локации для записей ? true - да, false - нет
USE_CALENDAR_LOCATION = true
# Использовать отображение конца квеста ? true - да, false - нет
USE_CALENDAR_QUEST_END = true
# Использовать статус квеста ? true - да, false - нет
USE_CALENDAR_QUEST_STATUS = true
# Использовать прокрутку большого текста в календаре ? true - да, false - нет
USE_CALENDAR_SCROLL_TEXT = true
# Через сколько секунд текст будет прокручиваться ?
CALENDAR_SCROLL_TIME = 6
# Использовать прошедшие события ? true - да, false - нет
USE_LAST_QUESTS = true
# Координата X окна календаря
CALENDAR_X = 0
# Координата Y окна календаря
CALENDAR_Y = 0
#----- Конец настройки календаря -----------------------------------------------
#----- Начало настройки дня и ночи ---------------------------------------------
# Использовать смену дня и ночи ? true - да, false - нет
USE_LIGHT_TINT = false
# Исользовать стандартную смену дня и ночи ? true - да, false - нет
# Если используете эту опцию, то установите USE_KHAS_LIGHT = false
USE_DEFAULT_LIGHT = false
# Использовать Khas Light Effect ? true - да, false - нет
USE_KHAS_LIGHT = true
# Использовать переключатель для света.
# Если вы используете Khas Light Effect
USE_SWITCH = true
# Номер переключателя
# Если вы используете Khas Light Effect
GAME_NIGHT_SWITCH = 3
# Диапозон времени, когда свет не горит (день),
# Если вы используете смену дня и ночи
DAY_LIGHT = [8, 19] # с 8 утра до 7 вечера свет не горит
# То есть переключатель будет false
# Использовать оттенки экрана в битвах ? true - да, false - нет
USE_LIGHT_IN_BATTLE = true
# Настройка оттенков экрана для каждого часа
# [Color.new(R, G, B, A)]
TINTS = [ Color.new(30,0,40,165), # => 0 час
Color.new(20,0,30,165), # => 1 час
Color.new(20,0,30,155), # => 2 час
Color.new(10,0,30,145), # => 3 час
Color.new(10,0,20,125), # => 4 час
Color.new(0,0,20,125), # => 5 час
Color.new(75,20,20,115), # => 6 час
Color.new(100,30,10,105), # => 7 час
Color.new(75,20,10,85), # => 8 час
Color.new(0,0,0,55), # => 9 час
Color.new(0,0,0,30), # => 10 час
Color.new(0,0,0,10), # => 11 час
Color.new(0,0,0,0), # => 12 час
Color.new(0,0,0,0), # => 13 час
Color.new(0,0,0,0), # => 14 час
Color.new(0,0,0,5), # => 15 час
Color.new(0,0,0,15), # => 16 час
Color.new(0,0,10,45), # => 17 час
Color.new(75,20,20,85), # => 18 час
Color.new(100,40,30,105), # => 19 час
Color.new(75,20,40,125), # => 20 час
Color.new(10,0,45,140), # => 21 час
Color.new(20,0,45,145), # => 22 час
Color.new(20,0,50,160) ] # => 23 час
#----- Конец настройки дня и ночи ----------------------------------------------
#----- Начало настройки погоды и температуры -----------------------------------
# Использовать Game Weather ? true - да, false - нет
USE_DEFAULT_WEATHER = true # пока не работает
# Чтобы на определенной карте отключить погоду используйте заметку карты
# <No_Weather> P.S. Можно будет опять включить скриптом выше.
# Периоды месяцев для погоды
# Вероятность дождя, снега, ветра, облаков и пользовательских погодных условий (0-100)
# в зависимости от графики погоды
# Одновременно может быть несколько погодных условий.
# Вы можете составлять сколько угодно столбцов, но кол-во столбцов должно
# соответствовать кол-ву строк в таблице ниже.
MONTH_PERIODS = [
[17, 40, 3, 3], # 1-ый месяц
[13, 35, 4, 3], # 2-ой месяц...
[10, 0, 3, 3],
[15, 3, 0, 0],
[10, 0, 7, 3],
[10, 0, 7, 3],
[10, 0, 7, 3],
[10, 0, 7, 3],
[18, 0, 9, 4],
[23, 4, 8, 4],
[30, 15, 3, 3],
[20, 45, 2, 1] ]
# Настройка графики для погодных условий
WHEATHER_GRAPHICS = [
["Rain", "Rain_01A", "Rain_02"], # Соответствует первому столбцу из таблицы выше
["Snow", "Snow_01"],
["Leaf_01A","Leaf_01B", "Leaf_02A", "Leaf_02B"],
["Fog_01A", "Fog_02B"] ]
# Тип и сила погоды для каждой типо графики
# Например: для графики "Rain_01A" будет установлен тип - 0, сила - 7
WHEATHER_TYPE_POWER = [
[0, 6, 0, 7, 0, 6],
[4, 8, 4, 8],
[2, 5, 2, 6, 2, 7, 2, 6],
[2, 5, 2, 5],
[0, 4] ]
# Почасовая вероятность погоды(0-100)
# 0 1 2 3...
HOUR_PERCENTS = [15, 10, 20, 15, 20, 15, 10, 40, 55, 40, 30, 50, 60, 10, 5, 0,
20, 40, 35, 20, 25, 55, 20, 25]
# Использовать температуру в погоде ? true - да, false - нет
USE_TEMPERATURE = true
# Использовать окно для отображения текущей температуры ? true - да, false - нет
USE_TEMPERATURE_WINDOW = true
# Порог погоды по температуре каждая строка соответствует строке WHEATHER_GRAPHICS
WHEATHER_TEMPERATURE = [
[25], # Выше указанной температуры дождя не будет
[-5], # Снег
[], # Если оставить пустым, то всегда будет рассчитываться вероятность этой погоды
[],
[] ]
# Минимум и максимум температуры для каждого месяца
# Чтобы на определенной карте сделать свой произвольный промежуток температуры
# Используйте <Temp = a, b>
# где a - первое число, b - второе. Например, <Temp = -45, 50>
MONTH_TEMPERATURE = [
[-40, -7],
[-18, 0],
[-5, 13],
[0, 17],
[13, 21],
[18, 30],
[20, 35],
[16, 25],
[10, 18],
[7, 15],
[3, 10],
[-20, -5] ]
# Использовать динамическую температуру ? true - да, false - нет
# Возможность температуры выходить за гарницы таблицы выше на пару градусов, то
# есть более естественная температура.
USE_DYNAMIC_TEMPERATURE = true
# Час, когда температура набирает свой максимум
# При динамической температуре значения может отличаться ± 1
TEMPERATURE_MAX = 15
# Координата X окна температуры в игре
TEMPERATURE_X = Graphics.width - 120
# Координата Y окна температуры в игре
TEMPERATURE_Y = 0
# Размер текста температуры
TEMPERATURE_TEXT_SIZE = 40
#----- Конец настройки погоды и температуры ------------------------------------
#----- Начало настройки времени ------------------------------------------------
# Использовать дату с компьюетера ? true - да, false - нет
USE_REAL_TIME = false
# Остановить время в меню ? true - да, false - нет
PAUSE_IN_MENU = true
# Отображать окно в меню ? true - да, false - нет
TIME_IN_MENU = true
# Секунд в минуте.
# Для лучшего эффекта лучше оставить 60, если SHOW_SECONDS = false
SECONDS_IN_MINUTE = 15
# Минут в часе (минимум 2)
MINUTES_IN_HOUR = 60
# Часов в дне
HOURS_IN_DAY = 24
# За сколько минут оповещать о завершении квеста ? не больше MINUTES_IN_HOUR
$NOTIFY = 5
# Использовать обновление времени в битве ? true - да, false - нет
USE_TIME_UPDATE_IN_BATTLE = true
# Отображать секунды в часах ? true - да, false - нет
SHOW_SECONDS = false
# Использовать кастомные часы в игре ? true - да, false - нет
USE_CUSTOM_CLOCK_ON_MAP = true
# Ширина окна времени в игре
CLOCK_WIDTH = 180
# Высота окна времени в игре
CLOCK_HEIGHT = 74
# Координата X окна времени в игре
CLOCK_X = Graphics.width - CLOCK_WIDTH
# Координата Y окна времени в игре
CLOCK_Y = Graphics.height - CLOCK_HEIGHT
# Непрозрачность окна в игре. -1 = стандартное
OPACITY_CLOCK = -1
# Использовать кастомные часы в игре ? true - да, false - нет
USE_CUSTOM_CLOCK_IN_MENU = false
# Ширина окна времени в игре
MENU_CLOCK_WIDTH = 200
# Высота окна времени в игре
MENU_CLOCK_HEIGHT = 90
# Координата X окна времени в игре
MENU_CLOCK_X = 0
# Координата Y окна времени в игре
MENU_CLOCK_Y = 0
# Непрозрачность окна в меню. -1 = стандартное
OPACITY_MENU_CLOCK = -1
# Настройка кастомных часов
# Возможно: День, День недели, Месяц(число), Месяц(название), Год
# Также возможны свои команды
CUSTOM_CLOCK_DATE = ["День", "Месяц(название)", "Год"]
# Возможно: Час, blink(":"), Минуты, Секунды
CUSTOM_CLOCK_TIME = ["Час", "blink", "Минуты"]
# Скорость времени
# (Минимум - 1, Максимум - 60!).
# Чем меньше цифра, тем быстрее идет время. 60 - Реальное время
$TIME_SPEED = 1
# Использовать мерцание ":" в часах ? true - да, false - нет. Отключение может повысить FPS на 1-5
USE_BLINK = false
# Частота обновления ":" в отображении времени и частота обновления завершающихся квестов (40 - оптимально)
TIME_UPDATE = 40
# Чтобы на определенной карте приостановить обновление времени, используйте заметки карты и пропишите там: <No_Time_Update>
# Чтобы на определенной карте выставить освещение определенного часа, используйте заметки карты: <Light_Hour = H>
# где H - нужный час
# Настройка начала игры! Если не используете реальное время.
SEC = 0 # Секунды
MIN = 0 # Минуты
HOUR = 10 # Час
DAY = 15 # День
DAY_WEEK = 7 # В диапозоне от 1 до 7 (1 - Понедельник, 7 - Воскресенье)
MONTH = 1 # Месяц
YEAR = 756 # Год
# Количество дней в каждом месяце
DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# День с которого начинается отображение первого дня первого месяца
$FIRST_DAY = 1 # В диапозоне от 1 до 7 Пример: $FIRST_DAY = 1 (1 января - понедельник)
# Кнопка отображения/скрытия окна времени
GAME_TIME_BUTTON = :Z
# Кнопка отображения/скрытия окна календаря
CALENDAR_TIME_BUTTON = :Z
# Кнопка отображения/скрытия окна температуры
TEMPERATURE_BUTTON = :Z
#Показывать окно температуры в начале игры ? true - да, false - нет
$SHOW_START_GAME_TIME_TEMPERATURE = true
# Показывать окно времени в начале игры ? true - да, false - нет
$SHOW_START_GAME_TIME_WINDOW = true
# Показывать окно календаря в начале игры ? true - да, false - нет
$SHOW_START_GAME_CALENDAR_WINDOW = true
############# КОНЕЦ НАСТРОЙКИ ##################################################
############# НИЖЕ НЕ ТРОГАТЬ !!! ##############################################
MONTHS_DAY = []
SORT = []
$STOP_TIME_UPDATE = false
$STOP_TIME_UPDATE_LIGHT_HOUR = -1
$Custom_Temperature = [] if USE_TEMPERATURE
HOUR_PERIODS = [
["Ночь", 0, 5],
["Утро", 6, 11],
["День", 12, 17],
["Вечер", 18, 23] ]
end
$imported = {} if $imported.nil?
$imported["DenKyz_CalTime"] = true
class Functions
include Time_Settings, Calendar_Settings
def self.new_game
$QUESTS = []
$LAST_QUESTS = []
$NOTIFICATION_WINDOW = []
Now_Time.new
end
def self.new_game_calculation_degrees
month = $Game_Time.month
current_month_temperature = MONTH_TEMPERATURE[month]
current_month_temperature = $Custom_Temperature if $Custom_Temperature != []
razn = current_month_temperature[1] - current_month_temperature[0].to_f
hour = $Game_Time.hour
max = $Cur_day_temp
result = hour*razn/max
temp = current_month_temperature[0]
case $Game_Time.hour
when 1..$Cur_day_temp - 1
return temp + result
when $Cur_day_temp
return current_month_temperature[1]
when $Cur_day_temp + 1..HOURS_IN_DAY-1
razn = current_month_temperature[0] - current_month_temperature[1].to_f
max = HOURS_IN_DAY - $Cur_day_temp
return current_month_temperature[1] + (9 - (HOURS_IN_DAY - hour))*razn/max
end
return temp.to_f
end
def self.add_degrees
month = $Game_Time.month
current_month_temperature = MONTH_TEMPERATURE[month]
current_month_temperature = $Custom_Temperature if $Custom_Temperature != []
$Cur_day_temp = TEMPERATURE_MAX if !USE_DYNAMIC_TEMPERATURE
if $Game_Time.hour < $Cur_day_temp
if $Game_Time.hour == 0 && USE_DYNAMIC_TEMPERATURE
plus = [30 + rand(35), 30 + rand(55)].max/100.0
plus *= -1
return plus.to_f.round 2
elsif $Game_Time.hour == 0 && !USE_DYNAMIC_TEMPERATURE && $Game_Time.min == 0
return -1 if $Game_Time_Temperature.to_i != current_month_temperature[0]
end
razn = current_month_temperature[1] - $Game_Time_Temperature
plus = (razn.to_f/($Cur_day_temp - $Game_Time.hour))/(MINUTES_IN_HOUR/10)
plus += [0.005, rand(6)/100.0].max if USE_DYNAMIC_TEMPERATURE
else
if $Game_Time.hour == $Cur_day_temp && USE_DYNAMIC_TEMPERATURE
plus = [35 + rand(35), 25 + rand(75)].max/100.0
return plus.to_f.round 2
elsif $Game_Time.hour == $Cur_day_temp && !USE_DYNAMIC_TEMPERATURE && $Game_Time.min == 0
return -1 if current_month_temperature[0] < 0 && current_month_temperature[1] < 0
return 1
end
razn = $Game_Time_Temperature - current_month_temperature[0]
plus = (razn.to_f/(HOURS_IN_DAY - $Game_Time.hour))/(MINUTES_IN_HOUR/10)
plus += [0.005, rand(6)/100.0].max if USE_DYNAMIC_TEMPERATURE
plus *= -1
end
return plus.to_f.round 2
end
def self.temp_color
return Color.new(255, 50, 60) if $Game_Time_Temperature > 25
return Color.new(30, 70, 255) if $Game_Time_Temperature < -25
return Color.new(255, 255, 255) if $Game_Time_Temperature > -15 && $Game_Time_Temperature < 15
return Color.new($Game_Time_Temperature*15, $Game_Time_Temperature*5, $Game_Time_Temperature*5) if $Game_Time_Temperature >= 15 && $Game_Time_Temperature <= 25
return Color.new((45 + $Game_Time_Temperature)*4, (45 + $Game_Time_Temperature)*8, $Game_Time_Temperature*-15) if $Game_Time_Temperature <= -15 && $Game_Time_Temperature >= -25
end
def self.get_index_from_hour_periods
HOUR_PERIODS.each_with_index do |key, index|
return index if key[2] >= $Game_Time.hour
end
end
end # class Functions
class Now_Time
include Time_Settings
def initialize
$TIME_SPEED = 60 if $TIME_SPEED > 60
$TIME_SPEED = 1 if $TIME_SPEED < 1
$NOTIFY = 1 if $NOTIFY > MINUTES_IN_HOUR
$Game_Time = Game_Time.new
$Game_Time_Tint = Game_Time_Tint.new if USE_LIGHT_TINT
$USE_DEFAULT_WEATHER = USE_DEFAULT_WEATHER
$Cur_day_temp = TEMPERATURE_MAX if !USE_DYNAMIC_TEMPERATURE
$Cur_day_temp = TEMPERATURE_MAX + (1 + rand(2) - (1 + rand(2))) if USE_DYNAMIC_TEMPERATURE
$Game_Time_Temperature = Functions.new_game_calculation_degrees if USE_TEMPERATURE
end
def self.change(sec, min, hour, day, dayweek, month, year)
$Game_Time.change(sec, min, hour, day, dayweek, month, year)
update
end
def self.update
$Game_Time.update
end
def self.save_time
$Game_Time_DUP = $Game_Time.dup
end
def self.load_time
$Game_Time = $Game_Time_DUP.dup
end
def self.time(value, type)
$Game_Time.time(value, type)
end
def self.windows_visible?(flag)
SceneManager.scene.all_visible(flag)
end
end # class Now_Time
class Game_Time
include Time_Settings, Calendar_Settings
attr_reader :sec
attr_reader :min
attr_reader :hour
attr_reader :day
attr_reader :dayweek
attr_reader :month
attr_reader :year
def initialize
@sec = SEC
@min = MIN
@hour = HOUR
@day = DAY
@dayweek = DAY_WEEK - 1
@month = MONTH - 1
@year = YEAR
end
def change(sec, min, hour, day, dayweek, month, year)
sec > @sec ? (sec - @sec).times do add_sec(1) end : (@sec - sec).times do rem_sec(1) end
min > @min ? (min - @min).times do add_min(1) end : (@min - min).times do rem_min(1) end
hour > @hour ? (hour - @hour).times do add_hour(1) end : (@hour - hour).times do rem_hour(1) end
day > @day ? (day - @day).times do add_day(1) end : (@day - day).times do rem_day(1) end
@dayweek = dayweek - 1
month -= 1
month > @month ? (month - @month).times do add_month(1) end : (@month - month).times do rem_month(1) end
year > @year ? add_year(year - @year) : rem_year(@year - year)
end
def time(value, type)
case type
when :sec
set = :sec
when :min
set = :sec
value *= SECONDS_IN_MINUTE
when :hour
set = :min
value *= MINUTES_IN_HOUR
when :day
set = :hour
value *= HOURS_IN_DAY
when :month
set = :day
value *= DAYS[@month]
when :year
set = :day
sum = 0
for i in 0..DAYS.size - 1
sum += DAYS[i]
end
value *= sum
end
if value > 0
value.times do eval("add_" + set.to_s + "(1)") end
else
value = -value
value.times do eval("rem_" + set.to_s + "(1)") end
end
end
def update
return if !SceneManager.scene.is_a?(Scene_Map) || (SceneManager.scene.is_a?(Scene_Menu) && PAUSE_IN_MENU)
return if !USE_TIME_UPDATE_IN_BATTLE && SceneManager.scene.is_a?(Scene_Battle)
return if $game_message.busy?
return real_time if USE_REAL_TIME
return unless Graphics.frame_count % $TIME_SPEED == 0
add_sec(1)
end
def real_time
@sec = Time.now.sec
@sec = 0 if @sec >= SECONDS_IN_MINUTE
@min = Time.now.min
@hour = Time.now.hour
@day = Time.now.day
@dayweek = Time.now.wday
@month = Time.now.month - 1
@year = Time.now.year
end
def add_sec(n = 1)
@sec += n
return unless @sec == SECONDS_IN_MINUTE
@sec = 0
add_min(1)
end
def add_min(n = 1)
if (@min % 10 == 0) && USE_TEMPERATURE
$Game_Time_Temperature += Functions.add_degrees
end
@min += n
return unless @min == MINUTES_IN_HOUR
@min = 0
add_hour(1)
end
def add_hour(n = 1)
@hour += n
return unless @hour == HOURS_IN_DAY
@hour = 0
add_day(1)
end
def add_day(n = 1)
@day += n
@dayweek += n
$Cur_day_temp = TEMPERATURE_MAX + (1 + rand(2) - (1 + rand(2))) if USE_DYNAMIC_TEMPERATURE
@dayweek = 0 if @dayweek == DAYS_WEEK.size
return unless @day == DAYS[@month] + 1
@day = 1
add_month(1)
end
def add_month(n = 1)
@month += n
return unless @month == MONTHS.size
@month = 0
add_year(1)
end
def add_year(n = 1)
@year += n
end
def rem_sec(n = 1)
@sec -= n
return unless @sec == -1
@sec = SECONDS_IN_MINUTE - 1
rem_min(1)
end
def rem_min(n = 1)
@min -= n
return unless @min == -1
@min = MINUTES_IN_HOUR - 1
rem_hour(1)
end
def rem_hour(n = 1)
@hour -= n
return unless @hour == -1
@hour = HOURS_IN_DAY - 1
rem_day(1)
end
def rem_day(n = 1)
@day -= n
@dayweek -= n
$Cur_day_temp = TEMPERATURE_MAX + (1 + rand(2) - (1 + rand(2))) if USE_DYNAMIC_TEMPERATURE
@dayweek = DAYS_WEEK.size - 1 if @dayweek == -1
return unless @day == 0
@day = DAYS[@month-1]
rem_month(1)
end
def rem_month(n = 1)
@month -= n
return unless @month == -1
@month = MONTHS.size - 1
rem_year(1)
end
def rem_year(n = 1)
@year -= n
end
end # class Game_Time
class Game_Time_Tint < Sprite_Base
include Time_Settings
def initialize(viewport = nil)
super(viewport)
self.z = 1
create_contents
update
end
def create_contents
self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
self.visible = false
end
def update
return if !USE_LIGHT_TINT
return use_default_light if USE_DEFAULT_LIGHT && (@now_min != $Game_Time.min || $STOP_TIME_UPDATE_LIGHT_HOUR != -1)
return use_khas_light if USE_KHAS_LIGHT && (@now_min != $Game_Time.min || $STOP_TIME_UPDATE_LIGHT_HOUR != -1)
end
def settings
@now_min = $Game_Time.min
@hour = $Game_Time.hour
if $STOP_TIME_UPDATE_LIGHT_HOUR != -1
@hour = $STOP_TIME_UPDATE_LIGHT_HOUR
@min = 0
end
@now_hour = TINTS[@hour]
@next_hour = TINTS[@hour + 1] unless @hour + 1 == HOURS_IN_DAY
@next_hour = TINTS[0] if @hour + 1 == HOURS_IN_DAY
end
def use_default_light
settings
r = (@now_hour.red.to_f + (@next_hour.red.to_f - @now_hour.red.to_f)/60 * @now_min)/2
g = @now_hour.green.to_f + (@next_hour.green.to_f - @now_hour.green.to_f)/60 * @now_min
b = 0.9*(@now_hour.blue.to_f + (@next_hour.blue.to_f - @now_hour.blue.to_f)/60 * @now_min)
a = 1.3*(@now_hour.alpha.to_f + (@next_hour.alpha.to_f - @now_hour.alpha.to_f)/60 * @now_min)
self.visible = true
self.bitmap.clear
self.bitmap.fill_rect(0, 0, Graphics.width, Graphics.height, Color.new(r, g, b, a))
end
def use_khas_light
settings
begin
hot_air_balloon = $game_map.light_surface.opacity
rescue
return
end
r = @now_hour.red.to_f + (@next_hour.red.to_f - @now_hour.red.to_f)/60 * @now_min
g = @now_hour.green.to_f + (@next_hour.green.to_f - @now_hour.green.to_f)/60 * @now_min
b = @now_hour.blue.to_f + (@next_hour.blue.to_f - @now_hour.blue.to_f)/60 * @now_min
a = @now_hour.alpha.to_f + (@next_hour.alpha.to_f - @now_hour.alpha.to_f)/60 * @now_min
$game_map.effect_surface.change_color(1,r,g,b,a)
end
end # class Game_Time_Tint < Sprite_Base
class Scene_Base
alias denis_kyznetsov_game_time_scn_base_update update
def update
denis_kyznetsov_game_time_scn_base_update
$Game_Time.update if $Game_Time && !$STOP_TIME_UPDATE
$Game_Time_Tint.update if $Game_Time_Tint || ($Game_Time_Tint && USE_LIGHT_IN_BATTLE && SceneManager.scene.is_a?(Scene_Battle))
end
end # class Scene_Base
class Scene_Map < Scene_Base
include Time_Settings
alias denis_kyznetsov_game_time_scn_map_create_all_windows create_all_windows
def create_all_windows
denis_kyznetsov_game_time_scn_map_create_all_windows
if $SHOW_START_GAME_TIME_WINDOW
create_time_window
@time_window_exist = true
end
if USE_CALENDAR && $SHOW_START_GAME_CALENDAR_WINDOW && USE_CALENDAR_WINDOW && $imported["DenKyz_Game_Calendar"]
create_calendar_window
@calendar_window_exist = true
end
if USE_TEMPERATURE_WINDOW && USE_TEMPERATURE && $SHOW_START_GAME_TIME_TEMPERATURE
create_temp_window
@temp_window_exist = true
end
end
def all_visible(flag)
time_visible(flag)
calendar_visible(flag)
temp_visible(flag)
end
def time_visible(flag)
if !flag
return if !@time_window_exist
$SHOW_START_GAME_TIME_WINDOW = !$SHOW_START_GAME_TIME_WINDOW
@create_time_window.dispose
@create_time_window = 0
@time_window_exist = false
else
return if @time_window_exist
$SHOW_START_GAME_TIME_WINDOW = !$SHOW_START_GAME_TIME_WINDOW
create_time_window
@time_window_exist = true
end
end
def calendar_visible(flag)
return if !USE_CALENDAR
if !flag
return if !@calendar_window_exist
$SHOW_START_GAME_CALENDAR_WINDOW = !$SHOW_START_GAME_CALENDAR_WINDOW
@create_calendar_scene_map.dispose
@create_calendar_scene_map = 0
@calendar_window_exist = false
else
return if @calendar_window_exist
$SHOW_START_GAME_CALENDAR_WINDOW = !$SHOW_START_GAME_CALENDAR_WINDOW
create_calendar_window
@calendar_window_exist = true
end
end
def temp_visible(flag)
return if !USE_TEMPERATURE
if !flag
return if !@temp_window_exist
$SHOW_START_GAME_TIME_TEMPERATURE = !$SHOW_START_GAME_TIME_TEMPERATURE
@create_temp_window.dispose
@create_temp_window = 0
@temp_window_exist = false
else
return if @temp_window_exist
$SHOW_START_GAME_TIME_TEMPERATURE = !$SHOW_START_GAME_TIME_TEMPERATURE
create_temp_window
@temp_window_exist = true
end
end
def create_temp_window
dx, dy = TEMPERATURE_X, TEMPERATURE_Y
dw, dh = 120, 50
@create_temp_window = Temperature_Window.new(dx, dy, dw, dh)
end
def create_time_window
x, y, w, h = CLOCK_X, CLOCK_Y, CLOCK_WIDTH, CLOCK_HEIGHT
w, h = 180, 76 if !USE_CUSTOM_CLOCK_ON_MAP
@create_time_window = Time_Window.new(x, y, w, h, OPACITY_CLOCK)
end
def create_calendar_window
dx, dy = CALENDAR_X, CALENDAR_Y
dw, dh = 214, 100
@create_calendar_scene_map = Calendar_Scene_Map_Window.new(dx, dy, dw, dh)
end
alias denis_kyznetsov_game_time_scn_map_update update
def update
denis_kyznetsov_game_time_scn_map_update
if $Game_Time.sec % 2 == 0 && $imported["DenKyz_Game_Calendar"]
Functions.transfer?
Functions.complete?
end
if $Game_Time_Notification && USE_CALENDAR_WINDOW_NOTIFICATION
$Game_Time_Notification.update if !$Game_Time_Notification.disposing
end
if Input.trigger?(GAME_TIME_BUTTON) && @time_window_exist && $SHOW_START_GAME_TIME_WINDOW
time_visible(false)
elsif Input.trigger?(GAME_TIME_BUTTON) && !@time_window_exist && !$SHOW_START_GAME_TIME_WINDOW
time_visible(true)
end
if USE_CALENDAR && USE_CALENDAR_WINDOW
if Input.trigger?(CALENDAR_TIME_BUTTON) && @calendar_window_exist && $SHOW_START_GAME_CALENDAR_WINDOW
calendar_visible(false)
elsif Input.trigger?(CALENDAR_TIME_BUTTON) && !@calendar_window_exist && !$SHOW_START_GAME_CALENDAR_WINDOW
calendar_visible(true)
end
end
if USE_TEMPERATURE && USE_TEMPERATURE_WINDOW
if Input.trigger?(TEMPERATURE_BUTTON) && @temp_window_exist && $SHOW_START_GAME_TIME_TEMPERATURE
temp_visible(false)
elsif Input.trigger?(TEMPERATURE_BUTTON) && !@temp_window_exist && !$SHOW_START_GAME_TIME_TEMPERATURE
temp_visible(true)
end
end
end
end # Scene_Map < Scene_Base
class Game_Map
include Time_Settings
alias denis_kyznetsov_game_time_game_map_setup setup
def setup(map_id)
denis_kyznetsov_game_time_game_map_setup(map_id)
$USE_DEFAULT_WEATHER = false if USE_DEFAULT_WEATHER && @map.note.include?("<No_Weather>")
$STOP_TIME_UPDATE = (@map.note.include?("<No_Time_Update>") ? true : false)
if @map.note =~ /<Temp\s*=\s*((-?[\d]+)\s*,\S?\s*(-?[\d]+))>/i
$Custom_Temperature[0] = $2.to_i
$Custom_Temperature[1] = $3.to_i
else
$Custom_Temperature = []
end
if @map.note =~ /<Light_Hour\s*=\s*([\d+])>/i
$STOP_TIME_UPDATE_LIGHT_HOUR = $1.to_i
else
$STOP_TIME_UPDATE_LIGHT_HOUR = -1
end
end
end # class Game_Map
class Time_Window < Window_Base
include Time_Settings, Calendar_Settings
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height, opacity)
super(x, y, w, h)
if opacity != -1
self.opacity = opacity
self.back_opacity = opacity
self.contents_opacity = opacity
end
@width = w
@height = h
update
end
def blink
return ":" if Graphics.frame_count % TIME_UPDATE > TIME_UPDATE/2
return " "
end
def zp
return $Game_Time_Temperature <= -100 || $Game_Time_Temperature >= 1000 ? "" : " "
end
def date
return ($Game_Time.day.to_s + " " + CALENDAR_MONTHS[$Game_Time.month] + " " + $Game_Time.year.to_s) if !USE_CUSTOM_CLOCK_ON_MAP
date = ""
return date if CUSTOM_CLOCK_DATE == []
for i in 0..CUSTOM_CLOCK_DATE.size - 1
case CUSTOM_CLOCK_DATE[i]
when "День"
date += " " + $Game_Time.day.to_s
when "День недели"
date += " " + DAYS_WEEK[$Game_Time.month]
when "Месяц(число)"
date += " " + $Game_Time.month.to_s
when "Месяц(название)"
date += " " + CALENDAR_MONTHS[$Game_Time.month]
when "Год"
date += " " + $Game_Time.year.to_s
else
date += " " + CUSTOM_CLOCK_DATE[i].to_s
end
end
return date
end
def plus_minutes
return $Game_Time.min < 10 ? "0" + $Game_Time.min.to_s : $Game_Time.min.to_s
end
def plus_seconds
return $Game_Time.sec < 10 ? "0" + $Game_Time.sec.to_s : $Game_Time.sec.to_s
end
def time
return ($Game_Time.hour < 10 ? "0" + $Game_Time.hour.to_s : $Game_Time.hour.to_s) +
(USE_BLINK ? blink : ":") + plus_minutes +
(SHOW_SECONDS ? ((USE_BLINK ? blink : ":") + plus_seconds) : "") if !USE_CUSTOM_CLOCK_ON_MAP
time = ""
return time if CUSTOM_CLOCK_TIME == []
for i in 0..CUSTOM_CLOCK_TIME.size - 1
case CUSTOM_CLOCK_TIME[i]
when "Час"
time += $Game_Time.hour.to_s
when "blink"
time += USE_BLINK ? blink : ":"
when "Минуты"
time += plus_minutes
when "Секунды"
time += SHOW_SECONDS ? plus_seconds : ""
else
time += CUSTOM_CLOCK_TIME[i].to_s
end
end
return time
end
def process_character(c, text, pos)
super
if c == ","
return change_color(Functions.temp_color)
end
end
def draw_text_ex(x, y, text)
reset_font_settings
contents.font.size = 23
pos = {:x => x + 8, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
def update
if @now_hour != $Game_Time.hour
if ($Game_Time.hour < DAY_LIGHT[0] || $Game_Time.hour > DAY_LIGHT[1]) && USE_KHAS_LIGHT && USE_SWITCH
$game_switches[GAME_NIGHT_SWITCH] = true
else
$game_switches[GAME_NIGHT_SWITCH] = false
end
end
if (@now_min != $Game_Time.min && !SHOW_SECONDS) || (@now_sec != $Game_Time.sec && SHOW_SECONDS) || USE_BLINK || @now_day != $Game_Time.day || @now_month != $Game_Time.month || @now_year != $Game_Time.year || @now_hour != $Game_Time.hour
@now_sec = $Game_Time.sec if SHOW_SECONDS
@now_min = $Game_Time.min if !SHOW_SECONDS
@now_hour = $Game_Time.hour
@now_day = $Game_Time.day
@now_month = $Game_Time.month
@now_year = $Game_Time.year
contents.clear
show_date = date
show_time = time
y = 0
draw_text(-8, y, @width - 16, 24, show_date, 1)
return if show_time == ""
y += 24 if show_date != ""
draw_text(0, y, @width - 16, 24, show_time, 1)
end
end
end # class Time_Window < Window_Base
class Temperature_Window < Window_Base
include Time_Settings
def initialize(x, y, dw, dh)
super(x, y, dw, dh)
self.opacity = 0
@now_temp = -1
end
def update
return if $Game_Time_Temperature == @now_temp
@now_temp = $Game_Time_Temperature
contents.clear
change_color(Functions.temp_color)
contents.font.size = TEMPERATURE_TEXT_SIZE
x = $Game_Time_Temperature.to_i.to_s.size
draw_text(26-x*7, -8, 120 - 16, 42, $Game_Time_Temperature.to_i.to_s + "°", 2)
end
end # class Temperature_Window < Window_Base
class Scene_Menu < Scene_MenuBase
include Time_Settings
alias denis_kyznetsov_game_time_scn_menu_start start
def start
denis_kyznetsov_game_time_scn_menu_start
create_time_window if TIME_IN_MENU
end
def create_time_window
x, y, w, h = MENU_CLOCK_X, MENU_CLOCK_Y, MENU_CLOCK_WIDTH, MENU_CLOCK_HEIGHT
x, y, w, h = @gold_window.x, @gold_window.y - 74, 160, 74 if !USE_CUSTOM_CLOCK_IN_MENU
@create_time_window = Time_Window.new(x, y, w, h, OPACITY_MENU_CLOCK)
end
alias denis_kyznetsov_game_time_scn_menu_create_command_window create_command_window
def create_command_window
denis_kyznetsov_game_time_scn_menu_create_command_window
@command_window.set_handler(:calendar, method(:calendar)) if USE_CALENDAR
end
def calendar
SceneManager.call(CalendarScene)
end
end # Scene_Menu < Scene_MenuBase
module DataManager
class << self
alias denis_kyznetsov_dt_mngr_setup_new_game setup_new_game
def setup_new_game
denis_kyznetsov_dt_mngr_setup_new_game
Functions.new_game if $imported["DenKyz_CalTime"]
end
alias denis_kyznetsov_dt_mngr_make_save_contents make_save_contents
def make_save_contents
contents = denis_kyznetsov_dt_mngr_make_save_contents
contents[:Game_Time] = $Game_Time
contents[:Game_Time_Quests] = $QUESTS
contents[:Game_Time_Last_Quests] = $LAST_QUESTS
contents[:Game_Time_First_Day] = $FIRST_DAY
contents[:Game_Time_DUP] = $Game_Time_DUP
contents
end
alias denis_kyznetsov_dt_mngr_extract_save_contents extract_save_contents
def extract_save_contents(contents)
denis_kyznetsov_dt_mngr_extract_save_contents(contents)
Now_Time.new if $imported["DenKyz_CalTime"]
$Game_Time = contents[:Game_Time]
$QUESTS = contents[:Game_Time_Quests]
$LAST_QUESTS = contents[:Game_Time_Last_Quests]
$FIRST_DAY = contents[:Game_Time_First_Day]
$Game_Time_DUP = contents[:Game_Time_DUP]
end
end
end |
Администратор запретил публиковать записи гостям.
|
Время/Дата+New Dynamic Weather System v. 5.0a 10 года 3 нед. назад #75579
|
Тут все умерло? Погоды не будет?
|
Администратор запретил публиковать записи гостям.
|
Время/Дата+New Dynamic Weather System v. 5.0alpha 9 года 10 мес. назад #77350
|
Доброго времени суток. Хочу сообщить, что временно замораживаю этот скрипт. НО. Я его доделаю. Обещаю. Проблема связана с недостаточными знаниями для завершения идеи. Поднаберусь опыта - сразу сделаю (хотя от помощи я бы не отказался). Прошу прощения, кто ждет новую версию. Также хотелось бы напомнить, что версия 5.0 альфа является полностью рабочей. Время/Дата работают исправно. Не работает только динамическая погода. Спасибо за внимание и понимание
|
Последнее редактирование: 9 года 10 мес. назад от DK.
Администратор запретил публиковать записи гостям.
|
Модераторы: NeKotZima
Время создания страницы: 0.720 секунд