Хорошо! Хорошо!:  0
Плохо! Плохо!:  0
Показано с 1 по 3 из 3

Тема: Проблема со скриптом дата/время

  1. #1

    По умолчанию Проблема со скриптом дата/время

    Стоит скрипт дата/время, когда происходит смена месяца например с января на февраль возникает ошибка

    Говорит что ошибка тут

    Не могу понять в чем именно проблема, хелп

    Скрипт
    Спойлер Сам скрипт:
    =begin
    ################################################## #############################
    # #
    # Game_Time (Время/Дата) #
    # #
    ################################################## #############################

    Автор: Денис Кузнецов (http://vk.com/id8137201)
    Версия: 5.1
    Релиз от: 02.02.15

    ############# ИНСТРУКЦИЯ ################################################## #####
    Время/Дата:
    Чтобы изменить время, воспользуйтесь скриптом
    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 (показать/скрыть)

    Чтобы включить/отлючить переключение света в дневном диапозоне, используйте
    Now_Time.setup_khas_day_light(flag)
    где flag - true/false (вкл/выкл)

    =end

    ############# НАТРОЙКА ################################################## #######

    module Calendar_Settings
    # Название дней недели
    DAYS_WEEK = [ "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
    # Формативный вывод месяцев
    CALENDAR_MONTHS = [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа",
    "Сентября", "Октября", "Ноября", "Декабря" ]
    end

    module Time_Settings
    include Calendar_Settings
    # не трогать это настройки ниже
    begin
    include Weather_Settings_Module
    rescue
    end
    # не трогать это настройки ниже

    #----- Начало настройки дня и ночи ---------------------------------------------
    # Использовать смену дня и ночи ? true - да, false - нет
    USE_LIGHT_TINT = true

    # Исользовать стандартную смену дня и ночи ? true - да, false - нет
    # Если используете эту опцию, то установите USE_KHAS_LIGHT = false
    USE_DEFAULT_LIGHT = true

    # Использовать Khas Light Effect ? true - да, false - нет
    USE_KHAS_LIGHT = false

    # Номер переключателя
    # Если вы используете $USE_KHAS_LIGHT_SWITCH
    # Чтобы не использовать установите -1
    KHAS_LIGHT_SWITCH = 3

    # Использовать диапозон времени для переключения переключателя ?
    # Только если вы используете Khas Light Effect
    $USE_KHAS_DAY_LIGHT = false

    # Диапозон времени, когда свет не горит (день),
    # Если вы используете смену дня и ночи
    KHAS_DAY_LIGHT = [8, 19] # с 8 утра до 7 вечера свет не горит
    # То есть переключатель будет false


    # Использовать динамическую смену дня и ночи ?
    # Если используется Khas Light Effect
    # Переключатель будет контролироваться автоматически
    USE_DYNAMIC_LIGHT = false


    # Использовать оттенки экрана в битвах ? true - да, false - нет
    USE_LIGHT_IN_BATTLE = true

    # Настройка оттенков экрана для каждого часа.
    # Если используете USE_DYNAMIC_LIGHT, то эта настройка ничего не даст.
    # [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 час

    #----- Конец настройки дня и ночи ----------------------------------------------

    #----- Начало настройки времени ------------------------------------------------

    # Использовать дату с компьюетера ? true - да, false - нет
    USE_REAL_TIME = false

    # Остановить время в меню ? true - да, false - нет
    PAUSE_IN_MENU = true

    # Отображать окно в меню ? true - да, false - нет
    TIME_IN_MENU = true

    # Секунд в минуте (минимум 2)
    # Для лучшего эффекта лучше оставить 60, если SHOW_SECONDS = false, но это
    # уже на ваше усмотрение
    SECONDS_IN_MINUTE = 2
    # Минут в часе (минимум 2)
    MINUTES_IN_HOUR = 60
    # Часов в дне
    HOURS_IN_DAY = 24

    # Использовать обновление времени в битве ? true - да, false - нет
    USE_TIME_UPDATE_IN_BATTLE = true

    # Отображать секунды в часах ? true - да, false - нет
    SHOW_SECONDS = false

    # Использовать кастомные часы в игре ? true - да, false - нет
    USE_CUSTOM_CLOCK_ON_MAP = false

    # Ширина окна времени в игре
    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 - оптимально)
    BLINK_SPEED = 40

    # Чтобы на определенной карте приостановить обновление времени, используйте заметки карты и пропишите там: <No_Time_Update>
    # Чтобы на определенной карте выставить освещение определенного часа, используйте заметки карты: <Light_Hour = H>
    # где H - нужный час

    # Настройка начала игры! Если не используете реальное время.
    SEC = 0 # Секунды
    MIN = 0 # Минуты
    HOUR = 0 # Час
    DAY = 1 # День
    DAY_WEEK = 1 # В диапозоне от 1 до 7 (1 - Понедельник, 7 - Воскресенье)
    MONTH = 2 # Месяц
    YEAR = 2015 # Год

    # Количество дней в каждом месяце
    DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    # Кнопка отображения/скрытия окна времени
    # -1, чтобы не использовать
    GAME_TIME_BUTTON = :Z

    # Показывать окно времени в начале игры ? true - да, false - нет
    $SHOW_START_GAME_TIME_WINDOW = true

    ############# КОНЕЦ НАСТРОЙКИ ##################################################
    ############# НИЖЕ НЕ ТРОГАТЬ !!! ##############################################

    # Обновление времени
    $STOP_TIME_UPDATE = false
    # Час статического освещения
    $STOP_TIME_UPDATE_LIGHT_HOUR = -1

    end

    $imported = {} if $imported.nil?
    $imported["DenKyz_Game_Time"] = true

    class Functions
    include Time_Settings

    def self.new_game # новая игра
    $QUESTS = []
    $LAST_QUESTS = []
    $NOTIFICATION_WINDOW = []
    Now_Time.new
    end

    def self.setup_khas_light_switch(hour) # hour - час, если диапозон вкл; bool, если диапозон выкл.
    return if !USE_KHAS_LIGHT || KHAS_LIGHT_SWITCH == -1
    return if ($USE_KHAS_DAY_LIGHT && !hour.is_a?(Integer)) || (!$USE_KHAS_DAY_LIGHT && hour.is_a?(Integer))
    if $USE_KHAS_DAY_LIGHT
    if (hour < KHAS_DAY_LIGHT[0] || hour > KHAS_DAY_LIGHT[1])
    $game_switches[KHAS_LIGHT_SWITCH] = true
    else
    $game_switches[KHAS_LIGHT_SWITCH] = false
    end
    else
    $game_switches[KHAS_LIGHT_SWITCH] = hour
    end
    end

    end # class Functions

    class Now_Time
    include Time_Settings

    def initialize
    # 0 и больше 60 не будет обновляться
    $TIME_SPEED = 60 if $TIME_SPEED > 60
    $TIME_SPEED = 1 if $TIME_SPEED < 1
    $Game_Time = Game_Time.new
    $UPDATE_DYNAMIC_TINT = true
    $Game_Time_Tint = Game_Time_Tint.new if USE_LIGHT_TINT
    begin
    $CALENDAR_NOTIFY = 1 if $CALENDAR_NOTIFY > MINUTES_IN_HOUR
    rescue
    end
    begin
    $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
    rescue
    end
    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

    def self.setup_khas_day_light(setup) #вкл/выкл диапозон переключения света
    $USE_KHAS_DAY_LIGHT = setup
    end

    end # class Now_Time

    class Game_Time
    include Time_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
    # потому что от 0-6, а игрок указывает от 1-7. 0 - Понедельник
    # а от 0-6 потому что в массиве дней недели индексы с 0
    # та же причина и у MONTH ниже
    @dayweek = DAY_WEEK - 1
    @month = MONTH - 1
    @year = YEAR
    $FIRST_DAY = DAY_WEEK # первый день января (для календаря). Там 1-7 значения
    end


    def update
    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 if !SceneManager.scene.is_a?(Scene_Map) || (SceneManager.scene.is_a?(Scene_Menu) && PAUSE_IN_MENU)
    return unless Graphics.frame_count % $TIME_SPEED == 0
    add_sec(1)
    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)
    all_days = 0 # сумма дней с января до нужного месяца (не включая)
    for i in 0..month - 1
    all_days += Time_Settings:AYS[i]
    end
    $FIRST_DAY = (dayweek + 1 -(day + all_days % DAYS_WEEK.size)) % DAYS_WEEK.size
    enable_dynamic_tint_update
    end

    def time(value, type)
    # логика такая: чтобы не пропустить события на карте вместо просто изменения
    # времени я прибавляю меньшие значения.
    # Пример 1: +2 минуты = + прибавляю 120 секунд
    # Пример 2: +1 месяц = + кол-во часов в месяце
    # Все сделать через секунды нельзя (слишком большая задержка на экране возникает)
    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 = :hour
    for i in 1..(value > 0 ? value : value * -1) # value - сколько было
    val = DAYS[@month] * HOURS_IN_DAY # val - считаем для текущего месяца часы
    if value > 0
    val.times do eval("add_" + set.to_s + "(1)") end
    else
    val.times do eval("rem_" + set.to_s + "(1)") end
    end
    end
    return
    when :year
    set = :day
    sum = 0
    for i in 0..DAYS.size - 1
    sum += DAYS[i]
    end
    value *= sum
    end # case type

    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
    enable_dynamic_tint_update
    end

    def enable_dynamic_tint_update
    return if !USE_DYNAMIC_LIGHT
    $UPDATE_DYNAMIC_TINT = true
    end

    def real_time # время с компьютера
    @sec = Time.now.sec
    @sec = 0 if @sec >= SECONDS_IN_MINUTE
    @min = Time.now.min
    @hour = Time.now.hour
    if @day != Time.now.day
    @day = Time.now.day
    enable_dynamic_tint_update
    end
    @dayweek = Time.now.wday
    if @month != Time.now.month - 1
    @month = Time.now.month - 1 # причина в initialize
    enable_dynamic_tint_update
    end
    @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 $imported["DenKyz_Game_Time_Weather"]
    begin
    if (@min % 10 == 0) && USE_TEMPERATURE
    $Game_Time_Temperature += Functions.add_degrees
    end
    rescue # обработка исключения
    end
    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
    if $imported["DenKyz_Game_Time_Weather"]
    begin
    $Cur_day_temp = TEMPERATURE_MAX + (1 + rand(2) - (1 + rand(2))) if USE_DYNAMIC_TEMPERATURE
    rescue
    end
    end
    enable_dynamic_tint_update
    @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
    enable_dynamic_tint_update
    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
    if $imported["DenKyz_Game_Time_Weather"]
    begin
    $Cur_day_temp = TEMPERATURE_MAX + (1 + rand(2) - (1 + rand(2))) if USE_DYNAMIC_TEMPERATURE
    rescue
    end
    end
    @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
    Functions.setup_khas_light_switch($Game_Time.hour) if $STOP_TIME_UPDATE_LIGHT_HOUR == -1

    @now_min = $Game_Time.min
    @hour = $Game_Time.hour

    if $STOP_TIME_UPDATE_LIGHT_HOUR != -1
    @hour = $STOP_TIME_UPDATE_LIGHT_HOUR
    elsif USE_DYNAMIC_LIGHT
    return update_dynamic_light
    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
    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)
    rescue
    end
    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 update_dynamic_light
    return set_dynamic_light if !$UPDATE_DYNAMIC_TINT
    @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_TINT = false
    return set_dynamic_light
    end

    def set_dynamic_light
    Now_Time.setup_khas_day_light(false) # отключаем обычную смену переключателя
    setup = false
    setup = true if @tint[@hour].alpha > 100
    Functions.setup_khas_light_switch(setup)
    @now_hour = @tint[@hour]
    @next_hour = @tint[@hour + 1] unless @hour + 1 == HOURS_IN_DAY
    @next_hour = @tint[0] if @hour + 1 == HOURS_IN_DAY
    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_windo ws create_all_windows
    def create_all_windows
    denis_kyznetsov_game_time_scn_map_create_all_windo ws

    if $SHOW_START_GAME_TIME_WINDOW
    create_time_window
    @time_window_exist = true
    end
    if $imported["DenKyz_Game_Time_Calendar"]
    begin
    if USE_CALENDAR && $SHOW_START_GAME_CALENDAR_WINDOW && USE_CALENDAR_WINDOW
    create_calendar_window
    @calendar_window_exist = true
    end
    rescue
    end
    end
    if $imported["DenKyz_Game_Time_Weather"]
    begin
    if USE_TEMPERATURE_WINDOW && USE_TEMPERATURE && $SHOW_START_GAME_TIME_TEMPERATURE
    create_temp_window
    @temp_window_exist = true
    end
    rescue
    end
    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 || !$imported["DenKyz_Game_Time_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 || !$imported["DenKyz_Game_Time_Weather"]
    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_Time_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 !GAME_TIME_BUTTON.is_a?(Integer)
    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
    end

    if $imported["DenKyz_Game_Time_Calendar"]
    begin
    if USE_CALENDAR && USE_CALENDAR_WINDOW && !CALENDAR_TIME_BUTTON.is_a?(Integer)
    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
    rescue
    end
    end

    if $imported["DenKyz_Game_Time_Weather"]
    begin
    if USE_TEMPERATURE && USE_TEMPERATURE_WINDOW && !TEMPERATURE_BUTTON.is_a?(Integer)
    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
    rescue
    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)

    if $imported["DenKyz_Game_Time_Weather"]
    begin
    # отключить погоду на карте с тегом внутри
    $USE_DEFAULT_WEATHER = false if USE_DEFAULT_WEATHER && @map.note.include?("<No_Weather>")

    # получаем грацицы температуры для карты, если они есть
    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
    rescue
    end
    end

    $STOP_TIME_UPDATE = (@map.note.include?("<No_Time_Update>") ? true : false)

    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

    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 % BLINK_SPEED > BLINK_SPEED/2
    return " "
    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 update
    if (@now_sec != $Game_Time.sec && SHOW_SECONDS) || (@now_min != $Game_Time.min && !SHOW_SECONDS) || USE_BLINK || @now_hour != $Game_Time.hour || @now_day != $Game_Time.day || @now_month != $Game_Time.month || @now_year != $Game_Time.year
    setup_variables
    contents.clear
    show_date = date
    show_time = time
    y = 0
    draw_text(0, y, @width - 24, 32, show_date, 1)
    return if show_time == ""
    y += 24 if show_date != ""
    draw_text(0, y, @width - 24, 32, show_time, 1)
    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 Time_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
    begin
    @command_window.set_handler(:calendar, method(:calendar)) if USE_CALENDAR
    rescue
    end
    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
    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(cont ents)
    Functions.new_game
    $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 # module DataManager

  2. #2

    По умолчанию

    Ругается, что такой константы нет в этом скрипте.

    Предполагаю, что в этой строке надо заменить MONTHS на CALENDAR_MONTHS


    Dropbox — бесплатное хранилище файлов с прямыми ссылками.

    Humble Bundle — игры, подборки и наборы со скидками.

  3. #3

    По умолчанию

    Огромное спасибо!!!

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Проблема со скриптом дата/время