ГлавнаяФорумRPG MakerСкрипты/ПлагиныRPG Maker VX ACEУлучшающие или добавляющее новое скриптыАддоны к скрипту Время/Дата
Войти на сайт
×
ТЕМА: Аддоны к скрипту Время/Дата
Аддоны к скрипту Время/Дата 10 года 3 мес. назад #72911
|
Всем доброго времени суток. В этой теме будут выкладываться аддоны к скрипту Время/Дата, как понятно из названия темы. Установка и особые требования будут написаны в шапке каждого скрипта.
Аддоны: Календарь 1.5 Банковская система 1.0 (альфа) Динамическая погода 0.2 |
Последнее редактирование: 9 года 9 мес. назад от DK. Причина: обновление
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: PigeOne
|
Аддоны к скрипту Время/Дата 10 года 2 мес. назад #73791
|
Спасибо,то что надо!
|
Администратор запретил публиковать записи гостям.
|
Аддоны к скрипту Время/Дата 10 года 1 мес. назад #75130
|
Банковская система (вклады/кредиты)
Версия: 1.0 (альфа) Особенности: возможность открыть вклад, взять кредит или два действия сразу; анимированные окна; система рейтинга банка (с хорошей кредитной историей больше проценты на вклады/меньше на кредиты); настройки банка внутри скрипта Скриншоты: Скрипт: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] if $imported["DenKyz_CalTime"]
=begin
###############################################################################
# #
# Банковская система #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 1.0 alpha
Релиз от: 27.10.14
Зависимость: Game_Time by Denis Kyznetsov (минимум 5.0 версия)
Установка: разместить ниже Game_Time (Время/Дата)
Инструкция:
call_bank(value1, value2) - чтобы вызвать банк
value1 - проценты по вкладам, value2 - проценты по кредитам
add_bank_reputation(value) - чтобы изменить репутацию
=end
module Bank_Settings
# Название Банка
BANK_NAME = "Государственный Банк"
# Минимальная сумма вклада
MINIMUM_HOLDING = 100
# Минимальная сумма кредита
MINIMUM_CREDIT = 100
# Максимальная сумма вклада
HOLDING_MAXIMUM = 100000
# Максимальная сумма кредита
CREDIT_MAXIMUM = 100000
# Минимальный порог репутации, когда вы можете получить кредит
REPUTATION_MINIMUM = -50
# Скорость текста (верхнего). Чем меньше, тем быстрее
TEXT_SPEED1 = 2
# Прокрутка текста сверху влево ? true/false. false - вправо
SCROLL_TEXT1 = true
# Настройка верхнего текста. "Приветствие" - зарезервированное слово и окно
# отображает "Добро пожаловать в /название банка/"
# "Информация по вкладам" - "Проценты по вкладам начисляются в конце каждого месяца"
# "Информация по кредитам" - "Сумма по кредиту списывается ежемесячно"
# "Предупреждение" - "За просроченный кредит каждый день идут проценты"
CUSTOM_TEXT1 = ["Приветствие", "Информация по вкладам", "Информация по кредитам", "Предупреждение"]
# Скорость текста (нижнего). Чем меньше, тем быстрее
TEXT_SPEED2 = 1
# Прокрутка текста снизу влево ? true/false. false - вправо
SCROLL_TEXT2 = true
# Настройка нижнего текста. "Дата" - отображает "Сегодня: /текущая дата/"
# "Вклады_%" отображает "Проценты по вкладам: до /проценты/"
# "Кредиты_% - "Проценты по кредитам: до /проценты/"
CUSTOM_TEXT2 = ["Дата", "Вклады_%", "Кредиты_%"]
#### КОНЕЦ НАСТРОЙКИ #### Ниже не трогать ! Аррррр ###########################
end
class Bank_System_Scene < Scene_Base
include Bank_Settings
def start
super
@exit = false
@last_confirm_window = false
@add_window = false
create_all_windows
end
def create_all_windows
create_help_window
create_remote_window
create_all_info_window
create_before_operation_info_window
create_additional_window
create_add_holding_or_add_credit
create_add_to_holding_or_close_credit_bank_window
create_confirm_window
end
def create_help_window
@create_help_window = Help_Bank_Window.new(0, 0, Graphics.width, 50, 1)
@create_help_window.ox = Graphics.width * (SCROLL_TEXT1 ? -1 : 1)
@create_help_window.arrows_visible = false
end
def create_remote_window
@create_remote_window = Remote_Bank_Window.new(0, 50)
@create_remote_window.set_handler(:holdings, method(:holdings))
@create_remote_window.set_handler(:credits, method(:credits))
@create_remote_window.set_handler(:exit, method(:exit))
@create_remote_window.set_handler(:add_holding, method(:add_holding))
@create_remote_window.set_handler(:add_credit, method(:add_credit))
@create_remote_window.set_handler(:add_to_holding, method(:add_to_holding))
@create_remote_window.set_handler(:close_holding, method(:close_holding))
@create_remote_window.set_handler(:close_credit, method(:close_credit))
end
def create_all_info_window
@create_money_info_window = Money_Info_Bank_Window.new(Graphics.width/2, 100, Graphics.width/2, 100)
@create_money_info_window.x = Graphics.width
@create_info_window = Info_Bank_Window.new(0, 100, Graphics.width/2, 100)
@create_info_window.x = -Graphics.width
@create_first_before_operation_info_bank_window = First_Before_Operation_Info_Bank_Window.new(0, 200, Graphics.width, Graphics.height - 250)
@create_first_before_operation_info_bank_window.opacity = 0
@create_first_before_operation_info_bank_window.contents_opacity = 0
@start_scene_animation_update = true
end
def create_before_operation_info_window
@create_before_operation_info_window = Before_Operation_Info_Bank_Window.new(0, 200, Graphics.width, Graphics.height - 250)
@create_before_operation_info_window.x = -Graphics.width
@create_before_operation_info_window.hide
end
### самое нижнее окно с бегущей строкой
def create_additional_window
@create_additional_window = Help_Bank_Window.new(0, Graphics.height - 50, Graphics.width, 50, 2)
@create_additional_window.ox = Graphics.width * (SCROLL_TEXT2 ? -1 : 1) ###
@create_additional_window.arrows_visible = false
end
### окно добавления к вкладу/погашения кредита
def create_add_to_holding_or_close_credit_bank_window
@create_add_to_holding_or_close_credit_bank_window = Add_to_Holding_Or_Close_Credit_Bank_Window.new(0, 200)
@create_add_to_holding_or_close_credit_bank_window.set_handler(:money, method(:add_to_holding_or_close_credit))
@create_add_to_holding_or_close_credit_bank_window.set_handler(:confirm_yes, method(:confirm_add_to_holding_or_close_credit))
@create_add_to_holding_or_close_credit_bank_window.set_handler(:confirm_no, method(:add_window_down_animation))
@create_add_to_holding_or_close_credit_bank_window.x = Graphics.width
@create_add_to_holding_or_close_credit_bank_window.deactivate
@create_add_to_holding_or_close_credit_bank_window.hide
end
### окно получения вклада/кредита
def create_add_holding_or_add_credit
@create_add_holding_or_add_credit = Add_Holding_Or_Add_Credit_Bank_Window.new(0, 200)
@create_add_holding_or_add_credit.set_handler(:month1, method(:month))
@create_add_holding_or_add_credit.set_handler(:month3, method(:month))
@create_add_holding_or_add_credit.set_handler(:month6, method(:month))
@create_add_holding_or_add_credit.set_handler(:month12, method(:month))
@create_add_holding_or_add_credit.set_handler(:money, method(:money))
@create_add_holding_or_add_credit.set_handler(:holding_credit_no, method(:layer_2_down))
@create_add_holding_or_add_credit.set_handler(:holding_credit_yes, method(:confirm_holding_credit))
@create_add_holding_or_add_credit.y = 50
@create_add_holding_or_add_credit.deactivate
@create_add_holding_or_add_credit.hide
end
### создание последнего окна
def create_confirm_window
@create_notification_bank_window = Notification_Bank_Window.new
@create_notification_bank_window.y = 200 + @create_add_holding_or_add_credit.height
@create_notification_bank_window.opacity = 0
@create_notification_bank_window.contents_opacity = 0
@create_notification_bank_window.hide
@create_notification_bank_window.deactivate
@create_notification_bank_window.set_handler(:last_confirm, method(:last_confirm))
@create_notification_bank_window.set_handler(:last_confirm_no, method(:last_window_confirm_no))
end
### обработка последнего окна, получение вклада/кредита
def last_confirm
case @create_notification_bank_window.mode
when 1
$Player_Holding[0] = @create_notification_bank_window.money
$Player_Holding[1] = @create_notification_bank_window.percent
$Player_Holding[2] = @create_notification_bank_window.final_sum
$Player_Holding[3] = @create_notification_bank_window.month
$game_party.gain_gold(-$Player_Holding[0])
when 2
$Player_Credit[0] = @create_notification_bank_window.credit_final * @create_notification_bank_window.month
$Player_Credit[1] = @create_notification_bank_window.percent
$Player_Credit[2] = @create_notification_bank_window.credit_final
$Player_Credit[3] = @create_notification_bank_window.month
$game_party.gain_gold(@create_notification_bank_window.money)
end
last_window_confirm_animation
end
def confirm_add_to_holding_or_close_credit
case @create_add_to_holding_or_close_credit_bank_window.mode
when 1
$Player_Holding[0] += @create_add_to_holding_or_close_credit_bank_window.money
$game_party.gain_gold(-@create_add_to_holding_or_close_credit_bank_window.money)
when 2
$Player_Credit[0] -= @create_add_to_holding_or_close_credit_bank_window.money
$game_party.gain_gold(-@create_add_to_holding_or_close_credit_bank_window.money)
$Bank_Reputation += 3 * $Player_Credit[3] if $Player_Credit[3] > 0
$Player_Credit = [] if $Player_Credit[0] == 0
@create_before_operation_info_window.mode = 1
@create_before_operation_info_window.text = "кредита"
end
$bank_remote_cursor = 0
@create_info_window.update(true)
@create_before_operation_info_window.update(true)
@create_add_to_holding_or_close_credit_bank_window.layer = 1
@create_add_to_holding_or_close_credit_bank_window.money = 0
@create_add_to_holding_or_close_credit_bank_window.deactivate
@create_before_operation_info_window.show
@add_window = false
@window_animation = 5
$bank_animation_update = true
update_remote_window
end
### обработка продолжения вклада/кредита
def confirm_holding_credit
@last_confirm_window = true
@create_add_holding_or_add_credit.deactivate
@create_notification_bank_window.activate
@create_notification_bank_window.show
@window_animation = 7
$bank_animation_update = true
@create_notification_bank_window.mode = @create_add_holding_or_add_credit.text == "вклада" ? 1 : 2
@create_notification_bank_window.no_money = false
@create_notification_bank_window.no_money = true if @create_add_holding_or_add_credit.money < MINIMUM_HOLDING && @create_notification_bank_window.mode == 1
@create_notification_bank_window.no_money = true if @create_add_holding_or_add_credit.money < MINIMUM_CREDIT && @create_notification_bank_window.mode == 2
if @create_notification_bank_window.no_money
@create_notification_bank_window.deactivate
@create_notification_bank_window.refresh
return
end
@create_notification_bank_window.money = @create_add_holding_or_add_credit.money
case @create_add_holding_or_add_credit.month
when :month1
@create_notification_bank_window.month = 1
when :month3
@create_notification_bank_window.month = 3
when :month6
@create_notification_bank_window.month = 6
when :month12
@create_notification_bank_window.month = 12
end
@create_notification_bank_window.refresh
@create_notification_bank_window.select(0)
end
### обработка выбора месяца
def month
@create_add_holding_or_add_credit.layer = 2
@create_add_holding_or_add_credit.activate
end
### обработка ввода денег
def money
@create_add_holding_or_add_credit.layer = 3
@create_add_holding_or_add_credit.select(5)
@create_add_holding_or_add_credit.activate
end
# отключаем 3 команды, включаем оформление вклада
def add_holding
@create_remote_window.deactivate
@create_add_holding_or_add_credit.text = "вклада"
@create_add_holding_or_add_credit.activate
@create_add_holding_or_add_credit.show
@create_add_holding_or_add_credit.opacity = 0
@create_add_holding_or_add_credit.contents_opacity = 0
@window_animation = 3
$bank_animation_update = true
@operation = true
end
# отключаем 3 команды, включаем добавление денег к вкладу
def add_to_holding
@create_remote_window.deactivate
@create_add_to_holding_or_close_credit_bank_window.mode = 1
@create_add_to_holding_or_close_credit_bank_window.refresh
@create_add_to_holding_or_close_credit_bank_window.select(0)
@create_add_to_holding_or_close_credit_bank_window.activate
@create_add_to_holding_or_close_credit_bank_window.show
@window_animation = 2
$bank_animation_update = true
@add_window = true
end
def add_to_holding_or_close_credit
@create_add_to_holding_or_close_credit_bank_window.layer = 2
@create_add_to_holding_or_close_credit_bank_window.refresh
@create_add_to_holding_or_close_credit_bank_window.select(1)
@create_add_to_holding_or_close_credit_bank_window.activate
end
def close_holding
$game_party.gain_gold($Player_Holding[0])
$bank_remote_cursor = 0
$Player_Holding = []
@create_info_window.update(true)
@create_before_operation_info_window.mode = 1
@create_before_operation_info_window.text = "открыть вклад"
@create_before_operation_info_window.update(true)
update_remote_window
end
# отключаем 3 команды, включаем оформление кредита
def add_credit
add_holding
@create_add_holding_or_add_credit.text = "кредита"
end
# отключаем 3 команды, включаем закрытие кредита
def close_credit
@create_remote_window.deactivate
@create_add_to_holding_or_close_credit_bank_window.mode = 2
@create_add_to_holding_or_close_credit_bank_window.refresh
@create_add_to_holding_or_close_credit_bank_window.select(0)
@create_add_to_holding_or_close_credit_bank_window.activate
@create_add_to_holding_or_close_credit_bank_window.show
@window_animation = 2
$bank_animation_update = true
@add_window = true
end
# активируем команды для вкладов, обновляем окно и переключаем окно
def holdings
@create_remote_window.remote_list = 2
update_remote_window
@create_before_operation_info_window.mode = 1
@create_before_operation_info_window.text = "открыть вклад"
@create_before_operation_info_window.mode = 2 if $Player_Holding != []
@window_animation = 1
holding_and_credits
$bank_animation_update = true
end
# активируем команды для кредитов, обновляем окно и переключаем окно
def credits
@create_remote_window.remote_list = 3
update_remote_window
@create_before_operation_info_window.mode = 1
@create_before_operation_info_window.text = "взять кредит"
@create_before_operation_info_window.mode = 2 if $Player_Credit != []
@window_animation = 1
holding_and_credits
$bank_animation_update = true
end
def holding_and_credits
@create_before_operation_info_window.x = -Graphics.width
@create_before_operation_info_window.update(true)
@create_before_operation_info_window.show
end
def layer_2_down
@create_add_holding_or_add_credit.money = 0 if @create_add_holding_or_add_credit.layer == 3
@create_add_holding_or_add_credit.layer = 1
@create_add_holding_or_add_credit.refresh
@create_add_holding_or_add_credit.select(0)
@create_add_holding_or_add_credit.activate
end
### обработка esc для окна подтверждения - последнего окна
def last_window_confirm_no
last_window_down
layer_2_down
end
### запуск анимации для последнего окна
def last_window_down
@window_animation = 8
$bank_animation_update = true
@last_confirm_window = false
@create_notification_bank_window.deactivate
@create_add_holding_or_add_credit.activate
@create_add_holding_or_add_credit.show
end
# обновляем окно с 3 командами
def update_remote_window
@create_remote_window.refresh
@create_remote_window.select(0)
@create_remote_window.activate
end
# обработка нажатия выход
def exit
return @exit = true
end
# обработка нажатия кнопки esc на всех этапах
def update_list_down
return exit if @create_remote_window.remote_list == 1
if !@operation && !@last_confirm_window && !@add_window
@create_remote_window.remote_list = 1
update_remote_window
@window_animation += 3
$bank_animation_update = true
@create_first_before_operation_info_bank_window.show
elsif @operation && @create_add_holding_or_add_credit.layer == 1 && !@last_confirm_window
operation_window_down
elsif @operation && @create_add_holding_or_add_credit.layer == 2 && !@last_confirm_window
layer_2_down
elsif @operation && @create_add_holding_or_add_credit.layer == 3 && !@last_confirm_window
month
elsif @last_confirm_window
last_window_down
elsif @add_window && @create_add_to_holding_or_close_credit_bank_window.layer == 1
update_remote_window
@window_animation = 5
$bank_animation_update = true
@create_before_operation_info_window.show
@add_window = false
elsif @add_window && @create_add_to_holding_or_close_credit_bank_window.layer == 2
add_window_down_animation
end
end
def add_window_down_animation
@create_add_to_holding_or_close_credit_bank_window.layer = 1
@create_add_to_holding_or_close_credit_bank_window.refresh
@create_add_to_holding_or_close_credit_bank_window.select(0)
end
def operation_window_down
@create_before_operation_info_window.show
@create_add_holding_or_add_credit.deactivate
@create_remote_window.activate
@window_animation = 6
$bank_animation_update = true
@operation = false
end
def last_window_confirm_animation
@create_notification_bank_window.deactivate
@create_add_holding_or_add_credit.select(0)
@create_add_holding_or_add_credit.deactivate
@create_add_holding_or_add_credit.layer = 1
@create_add_holding_or_add_credit.money = 0
@operation = false
@last_confirm_window = false
@create_remote_window.remote_list = 1
@create_first_before_operation_info_bank_window.show
update_remote_window
@create_before_operation_info_window.x = -Graphics.width
@create_before_operation_info_window.opacity = 255
@create_before_operation_info_window.contents_opacity = 255
@create_before_operation_info_window.y = 200
@create_notification_bank_window.y = 200 + @create_notification_bank_window.height
@window_animation = 9
$bank_animation_update = true
@create_info_window.update(true)
end
def update
super
if @start_scene_animation_update
@create_info_window.x += 15
@create_money_info_window.x -= 8
@create_first_before_operation_info_bank_window.opacity += 8
@create_first_before_operation_info_bank_window.contents_opacity += 8
@create_help_window.opacity += 10
@create_additional_window.opacity += 10
if @create_money_info_window.x <= Graphics.width/2
@create_info_window.x = 0
@create_money_info_window.x = Graphics.width/2
@create_first_before_operation_info_bank_window.opacity = 255
@create_first_before_operation_info_bank_window.contents_opacity = 255
@start_scene_animation_update = false
end
end
### обновление прокрутки текста
if Graphics.frame_count % Bank_Settings::TEXT_SPEED1 == 0
@create_help_window.ox -= 1 * (SCROLL_TEXT1 ? -1 : 1)
if @create_help_window.ox == -Graphics.width * (SCROLL_TEXT1 ? -1 : 1)
@create_help_window.ox = Graphics.width * (SCROLL_TEXT1 ? -1 : 1)
@create_help_window.number_text += 1
@create_help_window.number_text = 0 if @create_help_window.number_text >= CUSTOM_TEXT1.size
end
end
### обновление прокрутки текста
if Graphics.frame_count % Bank_Settings::TEXT_SPEED2 == 0
@create_additional_window.ox -= 1 * (SCROLL_TEXT2 ? -1 : 1)
if @create_additional_window.ox == -Graphics.width * (SCROLL_TEXT2 ? -1 : 1)
@create_additional_window.ox = Graphics.width * (SCROLL_TEXT2 ? -1 : 1)
@create_additional_window.number_text += 1
@create_additional_window.number_text = 0 if @create_additional_window.number_text >= CUSTOM_TEXT2.size
end
end
if $bank_animation_update
case @window_animation
when 1 ### включение 2-ого окна
@create_first_before_operation_info_bank_window.x += 15
@create_before_operation_info_window.x += 15
if @create_before_operation_info_window.x >= 0
@create_before_operation_info_window.x = 0
@create_first_before_operation_info_bank_window.x = Graphics.width
@create_first_before_operation_info_bank_window.hide
$bank_animation_update = false
end
when 2 ### включение 3-ого окна
@create_add_to_holding_or_close_credit_bank_window.x -= 15
@create_before_operation_info_window.x -= 15
if @create_add_to_holding_or_close_credit_bank_window.x < 0
@create_add_to_holding_or_close_credit_bank_window.x = 0
@create_before_operation_info_window.x = -Graphics.width
@create_before_operation_info_window.hide
$bank_animation_update = false
end
when 3 ### включение 4-ого окна
@create_add_holding_or_add_credit.y += 4
@create_before_operation_info_window.y += 4
@create_add_holding_or_add_credit.opacity += 17
@create_add_holding_or_add_credit.contents_opacity += 17
@create_before_operation_info_window.opacity -= 17
@create_before_operation_info_window.contents_opacity -= 17
if @create_add_holding_or_add_credit.y >= 200
@create_add_holding_or_add_credit.y = 200
@create_before_operation_info_window.y = 200 + @create_add_holding_or_add_credit.height
@create_before_operation_info_window.opacity = 0
@create_before_operation_info_window.contents_opacity = 0
@create_before_operation_info_window.hide
$bank_animation_update = false
end
when 4 ### выключение 2-ого окна
@create_before_operation_info_window.x -= 15
@create_first_before_operation_info_bank_window.x -= 15
if @create_first_before_operation_info_bank_window.x <= 0
@create_first_before_operation_info_bank_window.x = 0
@create_before_operation_info_window.x = -Graphics.width
@create_before_operation_info_window.hide
$bank_animation_update = false
end
when 5 ### выключение 3-ого окна
@create_add_to_holding_or_close_credit_bank_window.x += 15
@create_before_operation_info_window.x += 15
if @create_add_to_holding_or_close_credit_bank_window.x >= Graphics.width
@create_add_to_holding_or_close_credit_bank_window.x = Graphics.width
@create_before_operation_info_window.x = 0
@create_add_to_holding_or_close_credit_bank_window.deactivate
@create_add_to_holding_or_close_credit_bank_window.hide
@window_animation = 1
$bank_animation_update = false
end
when 6 ### выключение 4-ого окна
@create_add_holding_or_add_credit.y -= 4
@create_before_operation_info_window.y -= 4
@create_before_operation_info_window.opacity += 17
@create_before_operation_info_window.contents_opacity += 17
@create_add_holding_or_add_credit.opacity -= 17
@create_add_holding_or_add_credit.contents_opacity -= 17
if @create_before_operation_info_window.y <= 200
@create_before_operation_info_window.y = 200
@create_add_holding_or_add_credit.y = 50
@create_add_holding_or_add_credit.opacity = 0
@create_add_holding_or_add_credit.contents_opacity = 0
@create_add_holding_or_add_credit.hide
$bank_animation_update = false
@window_animation = 1
end
when 7 ### открытие 5-ого окна
@create_add_holding_or_add_credit.y -= 4
@create_notification_bank_window.y -= 4
@create_notification_bank_window.opacity += 17
@create_notification_bank_window.contents_opacity += 17
@create_add_holding_or_add_credit.opacity -= 17
@create_add_holding_or_add_credit.contents_opacity -= 17
if @create_notification_bank_window.y <= 200
@create_notification_bank_window.y = 200
@create_add_holding_or_add_credit.y = 50
@create_add_holding_or_add_credit.hide
$bank_animation_update = false
end
when 8 ### закрытие 5-ого окна
@create_add_holding_or_add_credit.y += 4
@create_notification_bank_window.y += 4
@create_add_holding_or_add_credit.opacity += 17
@create_add_holding_or_add_credit.contents_opacity += 17
@create_notification_bank_window.opacity -= 17
@create_notification_bank_window.contents_opacity -= 17
if @create_add_holding_or_add_credit.y >= 200
@create_add_holding_or_add_credit.y = 200
@create_notification_bank_window.y = 200 + @create_add_holding_or_add_credit.height
@create_notification_bank_window.opacity = 0
@create_notification_bank_window.contents_opacity = 0
@create_notification_bank_window.hide
$bank_animation_update = false
end
when 9 ### получен вклад/кредит
@create_notification_bank_window.opacity -= 7
@create_notification_bank_window.contents_opacity -= 7
@create_first_before_operation_info_bank_window.x -= 15
if @create_first_before_operation_info_bank_window.x <= 0
@create_first_before_operation_info_bank_window.x = 0
@create_notification_bank_window.opacity = 0
@create_notification_bank_window.contents_opacity = 0
@create_notification_bank_window.hide
$bank_animation_update = false
end
end
end
if @bank_cursor != $bank_remote_cursor &&
((@create_remote_window.remote_list == 2 && $Player_Holding == []) ||
(@create_remote_window.remote_list == 3 && $Player_Credit == []))
@bank_cursor = $bank_remote_cursor
@create_before_operation_info_window.update(true)
end
if Input.trigger?(:B) || @exit
return if $bank_animation_update
if !@exit
update_list_down
Sound.play_cancel
return
end
@exit = false
return_scene
end
end
end
#### ОКНА ######################################################################
class First_Before_Operation_Info_Bank_Window < Window_Base
def initialize(x, y, w, h)
super(x, y, w, h)
update(true)
end
def update(upd = false)
return if !upd
contents.clear
draw_text(0, 0, Graphics.width - 16, 30, "Приветсвуем Вас в нашем банке", 1)
draw_text(0, (Graphics.height - 250)/3 - 5, Graphics.width - 16, 30, "Вы можете открыть у нас свой вклад или", 1)
draw_text(0, (Graphics.height - 250)/3 + 15, Graphics.width - 16, 30, "оформить кредит на выгодных условиях", 1)
end
end
class Help_Bank_Window < Window_Base
include Bank_Settings
attr_accessor :number_text
def initialize(x, y, w, h, mode)
@number_text, @hello_world_text = 0, 0
@mode = mode
super(x, y, w, h)
update(true)
end
def text
case @mode
when 1
case CUSTOM_TEXT1[@number_text]
when "Приветствие"
return "Добро пожаловать в " + BANK_NAME
when "Информация по вкладам"
return "Проценты по вкладам начисляются в конце каждого месяца"
when "Информация по кредитам"
return "Сумма по кредиту списывается ежемесячно"
when "Предупреждение"
return "За просроченный кредит каждый день идут проценты"
else
return CUSTOM_TEXT1[@number_text]
end
when 2
case CUSTOM_TEXT2[@number_text]
when "Дата"
return "Сегодня: " + $Game_Time.day.to_s + " " + Calendar_Settings::CALENDAR_MONTHS[$Game_Time.month] +
" " + $Game_Time.year.to_s + " г."
when "Вклады_%"
return "Проценты по вкладам: до " + $Bank_Settings[0].to_s + " %"
when "Кредиты_%"
return "Проценты по кредитам: до " + $Bank_Settings[1].to_s + " %"
else
return CUSTOM_TEXT2[@number_text]
end
end
end
def create_contents
self.contents = Bitmap.new(Graphics.width*1.4, Graphics.height)
end
def update(upd = false)
if @hello_world_text != @number_text
@hello_world_text = @number_text
upd = true
end
return if !upd
contents.clear
contents.font.size = 26
draw_text(0, -2, Graphics.width*1.25, 30, text)
end
end
class Remote_Bank_Window < Window_HorzCommand
attr_accessor :remote_list
def initialize(x, y)
@remote_list = 1
super(x, y)
end
def process_handling
super if !$bank_animation_update
end
def col_max
return 3
end
def window_width
Graphics.width
end
def window_height
50
end
def make_command_list
$bank_remote_cursor = 0
case @remote_list
when 1
add_command("Вклады", :holdings)
add_command("Кредиты", :credits)
when 2
text = "Открыть вклад"
symbol = :add_holding
if $Player_Holding != []
text = "Добавить к вкладу"
symbol = :add_to_holding
end
add_command(text, symbol)
enable = true
enable = false if $Player_Holding == []
add_command("Закрыть вклад", :close_holding, enable)
when 3
enable = true
enable = false if $Player_Credit == []
add_command("Взять кредит", :add_credit, ($Bank_Reputation > Bank_Settings::REPUTATION_MINIMUM && !enable) ? true : false)
add_command("Погасить кредит", :close_credit, enable)
end
add_command("Выход", :exit)
end
def cursor_left(wrap = false)
$bank_remote_cursor -= 1
$bank_remote_cursor = 2 if $bank_remote_cursor == -1
select($bank_remote_cursor)
end
def cursor_right(wrap = false)
$bank_remote_cursor += 1
$bank_remote_cursor = 0 if $bank_remote_cursor == 3
select($bank_remote_cursor)
end
end # class Remote_Bank_Window < Window_HorzCommand
class Info_Bank_Window < Window_Base
def initialize(x, y, w, h)
super(x, y, w, h)
@provetka_holding = $Player_Holding.nil?
@proverka_credit = $Player_Credit.nil?
update(true)
end
def update(upd = false)
return if !upd
contents.clear
casing = 1 if $Player_Holding != [] && $Player_Credit == []
casing = 2 if $Player_Holding == [] && $Player_Credit != []
casing = 3 if $Player_Holding == [] && $Player_Credit == []
casing = 4 if $Player_Holding != [] && $Player_Credit != []
case casing
when 1
draw_text(0, 10, 240, 30, "Ваш вклад: ")
draw_text(0, 10, 240, 30, $Player_Holding[0].to_s + " " + Vocab::currency_unit, 2)
draw_text(0, 35, 240, 30, "У вас нет кредита", 1)
when 2
draw_text(0, 10, 240, 30, "Ваш кредит: ")
draw_text(0, 10, 240, 30, $Player_Credit[0].to_s + " " + Vocab::currency_unit, 2)
draw_text(0, 35, 240, 30, "У вас нет вклада", 1)
when 3
draw_text(-10, 20, 260, 30, "У вас нет вкладов/кредитов", 1)
when 4
draw_text(0, 10, 240, 30, "Ваш вклад: ")
draw_text(0, 10, 240, 30, $Player_Holding[0].to_s + " " + Vocab::currency_unit, 2)
draw_text(0, 35, 240, 30, "Ваш кредит: ")
draw_text(0, 35, 240, 30, $Player_Credit[0].to_s + " " + Vocab::currency_unit, 2)
end
@provetka_holding = false
@proverka_credit = false
end
end # class Info_Bank_Window < Window_Base
class Money_Info_Bank_Window < Window_Base
def initialize(x, y, w, h)
super(x, y, w, h)
@money = -1
@reputation = 0
end
def update
if @reputation != $Bank_Reputation || @money != $game_party.gold
@reputation = $Bank_Reputation
@money = $game_party.gold
contents.clear
draw_text(0, 5, Graphics.width/3, 30, "Ваша репутация: ")
$Bank_Reputation > 0 ? change_color(text_color(24)) : change_color(text_color(20))
change_color(normal_color) if $Bank_Reputation == 0
draw_text(-30, 5, Graphics.width/2, 30, $Bank_Reputation.to_s, 2)
change_color(normal_color)
draw_text(0, 35, Graphics.width/3, 30, "У Вас: ")
draw_text(-30, 35, Graphics.width/2, 30, $game_party.gold.to_s + " " + Vocab::currency_unit, 2)
end
end
end # class Money_Info_Bank_Window < Window_Base
class Before_Operation_Info_Bank_Window < Window_Base
include Bank_Settings
attr_accessor :text
attr_accessor :mode
def initialize(x, y, w, h)
super(x, y, w, h)
@text = "открыть вклад"
@mode = 1
update(true)
end
def width
return Graphics.width - standard_padding*1.5
end
def what?
return @text.include?("вклад") ? "вклады: до " + $Bank_Settings[0].to_s + " %" : "кредиты: до " + $Bank_Settings[1].to_s + " %"
end
def no_what?
return @text.include?("вклад") ? "вклада" : "кредита"
end
def month(month)
case month
when 1
" месяц "
when 2..4
" месяца "
when 5..12
" месяцев "
end
end
def update(upd = false)
return if !upd
contents.clear
case @mode
when 1
if $bank_remote_cursor == 0
draw_text(0, 8, width, 30, "На какой период Вы хотите #{text} ?", 1)
draw_text(0, 38, width, 30, "У нас выгодные условия на " + what?, 1)
draw_text(0, 68, width, 30, "Вы можете #{text} на следующее время:", 1)
draw_text(0, 98, width, 30, "1 месяц, 3 месяца, 6 месяцев, 12 месяцев", 1)
elsif $bank_remote_cursor == 1
draw_text(0, 38, width, 30, "У Вас еще нет " + no_what?, 1)
draw_text(0, 68, width, 30, "Мы предлагаем Вам #{text} у нас", 1)
elsif $bank_remote_cursor == 2
draw_text(0, 52, width, 30, "До свидания! Приходите к нам еще!", 1)
end
when 2
p $Player_Holding
p $Player_Credit
case @text
when "открыть вклад"
draw_text(0, 8, width, 30, "Текущая сумма вклада составляет: " + $Player_Holding[0].to_s + " " + Vocab::currency_unit, 1)
draw_text(0, 38, width, 30, "Ваша процентная ставка: " + $Player_Holding[1].to_s + " %", 1)
draw_text(0, 68, width, 30, "Сумма максимально возможного вклада: " + HOLDING_MAXIMUM.to_s + " " + Vocab::currency_unit, 1)
if $Player_Holding[3] != 0
draw_text(0, 98, width, 30, "Еще " + $Player_Holding[3].to_s + month($Player_Holding[3]) + "Вам будут поступать проценты", 1)
else
draw_text(0, 98, width, 30, "Срок начисления процентов по этому вкладу истек", 1)
end
else
draw_text(0, 8, width, 30, "Текущая сумма кредита составляет: " + $Player_Credit[0].to_s + " " + Vocab::currency_unit, 1)
draw_text(0, 38, width, 30, "Ваша процентная ставка: " + $Player_Credit[1].to_s + " %", 1)
draw_text(0, 68, width, 30, "Сумма максимально возможного кредита: " + CREDIT_MAXIMUM.to_s + " " + Vocab::currency_unit, 1)
draw_text(0, 98, width, 30, "Еще " + $Player_Credit[3].to_s + month($Player_Credit[3]) + "Вы должны выплачивать кредит", 1)
end
end
end
end # class Before_Operation_Info_Bank_Window < Window_Base
class Add_to_Holding_Or_Close_Credit_Bank_Window < Window_Command
include Bank_Settings
attr_accessor :layer
attr_accessor :money
attr_accessor :mode
def initialize(x, y)
@layer = 1
@money = 0
@mode = 1
super
end
def col_max
2
end
def alignment
2
end
def process_handling
super if @money != 0
end
def item_rect(index)
rect = Rect.new
rect.width = item_width
rect.height = item_height
if index == 0
rect.width /= 2
rect.x = Graphics.width - standard_padding*13
rect.y = 28
else
rect.width /= 5
if index == 1
rect.x = Graphics.width/2 - item_width/2 + spacing*8
else
rect.x = Graphics.width/2 + item_width/4 + spacing*4
end
rect.y = 78
end
rect
end
def cursor_pagedown(wrap = false)
return if @layer != 1
@money += 1000
case @mode
when 1
@money = HOLDING_MAXIMUM - $Player_Holding[0] if @money > HOLDING_MAXIMUM - $Player_Holding[0]
when 2
@money = $Player_Credit[0] if @money > $Player_Credit[0]
end
@money = $game_party.gold if @money > $game_party.gold
refresh
end
def cursor_pageup(wrap = false)
return if @layer != 1
@money -= 1000
@money = 0 if @money < 0
refresh
end
def cursor_up(wrap = false)
return if @layer != 1
@money += 100
case @mode
when 1
@money = HOLDING_MAXIMUM - $Player_Holding[0] if @money > HOLDING_MAXIMUM - $Player_Holding[0]
when 2
@money = $Player_Credit[0] if @money > $Player_Credit[0]
end
@money = $game_party.gold if @money > $game_party.gold
refresh
end
def cursor_down(wrap = false)
return if @layer != 1
@money -= 100
@money = 0 if @money < 0
refresh
end
def cursor_left(wrap = false)
if @layer == 1
@money -= 1
@money = 0 if @money < 0
else
select(1)
end
refresh
end
def cursor_right(wrap = false)
if @layer == 1
@money += 1
case @mode
when 1
@money = HOLDING_MAXIMUM - $Player_Holding[0] if @money > HOLDING_MAXIMUM - $Player_Holding[0]
when 2
@money = $Player_Credit[0] if @money > $Player_Credit[0]
end
@money = $game_party.gold if @money > $game_party.gold
else
select(2)
end
refresh
end
def window_width
Graphics.width
end
def window_height
Graphics.height - 250
end
def width
Graphics.width - standard_padding*1.5
end
def refresh
super
draw_text(10, 25, width, 30, "Введите нужную сумму:")
draw_text(10, 75, width, 30, "Внести " + @money.to_s + " " + Vocab::currency_unit + " ?") if @layer == 2
end
def make_command_list
add_command(@money.to_s, :money) if @layer >= 1
if @layer ==2
add_command("Да", :confirm_yes)
add_command("Нет", :confirm_no)
end
end
end
class Add_Holding_Or_Add_Credit_Bank_Window < Window_Command
include Bank_Settings
attr_accessor :text
attr_accessor :layer
attr_accessor :money
attr_reader :month
def initialize(x, y)
@layer = 1
@text = "вклада"
@money = 0
@month = :month1
super
end
def alignment
2
end
def col_max
4
end
def window_width
Graphics.width
end
def window_height
Graphics.height - 250
end
def item_rect(index)
rect = Rect.new
rect.width = item_width
rect.height = item_height
rect.x = index % col_max * (item_width + spacing)
rect.y = 30
if index == 4
rect.x = Graphics.width - (item_width + spacing) - standard_padding
rect.y = 60
elsif index > 4
rect.width /= 2
if index == 5
rect.x = Graphics.width - standard_padding*12
else
rect.x = Graphics.width - standard_padding*8
end
rect.y = 90
end
rect
end
def width
Graphics.width - standard_padding*1.5
end
def call_handler(symbol)
super
@month = symbol if @layer == 2
end
def refresh
super
draw_text(0, 0, width, 30, "Выберите период для #{text}", 1)
draw_text(0, 60, width, 30, "Введите нужную сумму:") if @layer >= 2
draw_text(0, 90, width, 30, "Продолжить оформление " + @text + " ?") if @layer == 3
end
def update
super
refresh
if @layer == 2
select(4)
end
end
def cursor_pagedown(wrap = false)
return if @layer != 2
@money += 1000
@money = HOLDING_MAXIMUM if @money > HOLDING_MAXIMUM && @text == "вклада"
@money = CREDIT_MAXIMUM if @money > CREDIT_MAXIMUM && @text == "кредита"
@money = $game_party.gold if @money > $game_party.gold && @text == "вклада"
refresh
end
def cursor_pageup(wrap = false)
return if @layer != 2
@money -= 1000
@money = 0 if @money < 0
refresh
end
def cursor_up(wrap = false)
if @layer == 1
super
elsif @layer == 2
@money += 100
@money = HOLDING_MAXIMUM if @money > HOLDING_MAXIMUM && @text == "вклада"
@money = CREDIT_MAXIMUM if @money > CREDIT_MAXIMUM && @text == "кредита"
@money = $game_party.gold if @money > $game_party.gold && @text == "вклада"
end
refresh
end
def cursor_down(wrap = false)
if @layer == 1
super
elsif @layer == 2
@money -= 100
@money = 0 if @money < 0
end
refresh
end
def cursor_left(wrap = false)
if @layer == 1
super
elsif @layer == 2
@money -= 1
@money = 0 if @money < 0
elsif @layer == 3
select(5)
end
refresh
end
def cursor_right(wrap = false)
if @layer == 1
super
elsif @layer == 2
@money += 1
@money = HOLDING_MAXIMUM if @money > HOLDING_MAXIMUM && @text == "вклада"
@money = CREDIT_MAXIMUM if @money > CREDIT_MAXIMUM && @text == "кредита"
@money = $game_party.gold if @money > $game_party.gold
elsif @layer == 3
select(6)
end
refresh
end
def make_command_list
add_command("1 мес.", :month1)
add_command("3 мес.", :month3)
add_command("6 мес.", :month6)
add_command("12 мес.", :month12)
add_command(@money.to_s, :money) if @layer >= 2
if @layer == 3
add_command("Да", :holding_credit_yes)
add_command("Нет", :holding_credit_no)
end
end
end
class Notification_Bank_Window < Window_Command
include Bank_Settings
attr_accessor :money
attr_accessor :mode
attr_accessor :no_money
attr_accessor :month
attr_reader :percent
def initialize(x = 0, y = 200)
@money = 0
@mode = 0
@no_money = true
@month = 1
super
end
def alignment
1
end
def process_handling
super if !$bank_animation_update
end
def col_max
2
end
def item_rect(index)
rect = Rect.new
rect.width = item_width/4
rect.height = item_height
rect.x = Graphics.width - standard_padding*16 + index * spacing/2 * standard_padding/2
rect.y = 90
rect
end
def window_width
Graphics.width
end
def window_height
Graphics.height - 250
end
def width
Graphics.width - standard_padding
end
def update_cursor
super
return cursor_rect.empty if @no_money
end
def month_sum
case @month
when 1
" месяц "
when 3
" месяца "
else
" месяцев "
end
end
def sum
case @mode
when 1
@percent = [[$Bank_Settings[0], $Bank_Settings[0] - (@money/200).to_f/100 + ($Bank_Reputation/@month).to_f/100].min, 0.01].max
when 2
@percent = [[$Bank_Settings[1], $Bank_Settings[1] - (@money/250).to_f/100 - ($Bank_Reputation/(2*@month)).to_f/100].min, 0.01].max
end
@percent = @percent.round 2
end
def final_sum
all = @money
for i in 1..@month
all += (((all*@percent*i*30)/100)/365)
end
@mode == 1 ? (all.to_i - @money)/@month : all.to_i - @money
end
def credit_final
(((@money + final_sum)/@month.to_f).round 0).to_i
end
def refresh
super
if @no_money
draw_text(0, 45, width, 30, "Вы ввели слишком маленькую сумму", 1)
draw_text(0, 65, width, 30, "Минимальная сумма " + (@mode == 1 ? "вклада: " + MINIMUM_HOLDING.to_s : "кредита: " + MINIMUM_CREDIT.to_s) + " " + Vocab::currency_unit, 1)
else
y = @mode == 1 ? 7 : 0
draw_text(0, y, width, 30, "Вы собираетесь оформить " + (@mode == 1 ? "вклад ": "кредит ") + "на " + @money.to_s + " " + Vocab::currency_unit, 1)
y += 23
draw_text(0, y, width, 30, "Мы предлагаем Вам " + sum.to_s + " % годовых", 1)
case @mode
when 1
draw_text(0, 52, width, 30, "За " + @month.to_s + month_sum + "Вы заработаете: " + (final_sum * @month).to_s + " " + Vocab::currency_unit, 1)
when 2
y += 22
draw_text(0, y, width, 30, "За " + @month.to_s + month_sum + "Вы должны заплатить: " + (credit_final * @month).to_s + " " + Vocab::currency_unit, 1)
y += 22
draw_text(0, y, width, 30, "Ежемесечная плата составит: " + credit_final.to_s + " " + Vocab::currency_unit, 1)
end
draw_text(5, 90, width, 30, "Вы согласны с нашими условиями ?")
end
end
def make_command_list
if !@no_money
add_command("Да", :last_confirm)
add_command("Нет", :last_confirm_no)
end
end
end
### ФУНКЦИИ ####################################################################
class Game_Interpreter
def call_bank(value1, value2)
$Bank_Settings[0] = value1
$Bank_Settings[1] = value2
SceneManager.call(Bank_System_Scene)
end
def add_bank_reputation(value)
$Bank_Reputation += value
end
end # class Game_Interpreter
class Game_Time
alias denis_kyznetsov_bank_system_game_time_add_day add_day
def add_day(n = 1)
if $Player_Credit != []
if $Player_Credit[3] < 0
$Player_Credit[0] += ((($Player_Credit[0]*$Player_Credit[1]*30)/100)/365).to_i
end
end
denis_kyznetsov_bank_system_game_time_add_day(1)
end
alias denis_kyznetsov_bank_system_game_time_add_month add_month
def add_month(n = 1)
if $Player_Holding != []
if $Player_Holding[3] != 0
$Player_Holding[0] += $Player_Holding[2]
$Player_Holding[3] -= 1
end
end
if $Player_Credit != []
if $Player_Credit[0] > 0
gold = $game_party.gold
if $Player_Credit[3] > 0
if gold >= $Player_Credit[2] && $Player_Credit[0] >= $Player_Credit[2]
$Player_Credit[0] -= $Player_Credit[2]
$game_party.gain_gold(-$Player_Credit[2])
elsif gold >= $Player_Credit[0] && $Player_Credit[0] < $Player_Credit[2]
$game_party.gain_gold(-$Player_Credit[0])
$Player_Credit[0] = 0
elsif gold < $Player_Credit[2] && gold > 0 && $Player_Credit[0] > $Player_Credit[2]
$Bank_Reputation -= 1
$Player_Credit[0] -= gold
$game_party.gain_gold(-gold)
end
if $Player_Credit[0] == 0
$Bank_Reputation += 10
$Player_Credit = []
end
else
$Bank_Reputation -= 1
if gold >= $Player_Credit[0]
$game_party.gain_gold(-$Player_Credit[0])
$Player_Credit[0] = 0
elsif gold < $Player_Credit[0] && gold > 0
$Player_Credit[0] -= gold
$game_party.gain_gold(-gold)
else
$Bank_Reputation -= 1
end
$Player_Credit = [] if $Player_Credit[0] == 0
end
$Player_Credit[3] -= 1 if $Player_Credit != []
end
end
denis_kyznetsov_bank_system_game_time_add_month(1)
end
end # class Game_Time
module DataManager
class << self
alias denis_kyznetsov_bank_system_dt_mngr_setup_new_game setup_new_game
def setup_new_game
denis_kyznetsov_bank_system_dt_mngr_setup_new_game
$Bank_Settings = []
$Player_Holding = []
$Player_Credit = []
$Bank_Reputation = 0
end
alias denis_kyznetsov_bank_system_dt_mngr_make_save_contents make_save_contents
def make_save_contents
contents = denis_kyznetsov_bank_system_dt_mngr_make_save_contents
contents[:Player_Holding] = $Player_Holding
contents[:Player_Credit] = $Player_Credit
contents[:Bank_Reputation] = $Bank_Reputation
contents
end
alias denis_kyznetsov_bank_system_dt_mngr_extract_save_contents extract_save_contents
def extract_save_contents(contents)
denis_kyznetsov_bank_system_dt_mngr_extract_save_contents(contents)
$Player_Holding = contents[:Player_Holding]
$Player_Credit = contents[:Player_Credit]
$Bank_Reputation = contents[:Bank_Reputation]
end
end
end # module DataManager
end Уже в самом релизе будет поддержка всплывающих сообщений о поступлении/снятии средств со счета, а также устранены баги)) Просьба отписываться обо всех замеченных багах и подозрениях на них |
Последнее редактирование: 10 года 1 мес. назад от DK.
Администратор запретил публиковать записи гостям.
|
Динамическая погода 9 года 10 мес. назад #77476
|
Динамическая погода.
Требуемая версия скрипта Время/Дата (для версии 0.2) - 5.1 Требуемая версия скрипта Погода (для версии 0.2) - 1.3 Версия: 0.2 Что нового (в версии 0.2) - Возможность не использовать кнопку для отображения окна на карте, фикс отображения температуры в окне. Внимание! Пока здесь только настройки и возможность отображать температуру в игре. Погоды пока нет, она будет позже ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Динамическая Погода #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 0.2
Релиз от: 02.02.15
Зависимость: Game_Time (Время/Дата) by Denis Kyznetsov (версия 5.1)
Зависимость: Game_Weather (Погода) by Denis Kyznetsov (версия 1.3)
Установка: разместить ВЫШЕ! Game_Time (Время/Дата)
=end
module Weather_Settings_Module
#----- Начало настройки погоды и температуры -----------------------------------
# Использовать Game Weather ? true - да, false - нет
USE_DEFAULT_WEATHER = true
# Чтобы на определенной карте отключить погоду используйте заметку карты
# <No_Weather> P.S. Можно будет опять включить скриптом выше.
# Периоды месяцев для погоды
# Вероятность дождя, снега, ветра, облаков и пользовательских погодных условий (0-100)
# в зависимости от графики погоды
# Одновременно может быть 1 погода.
# Вы можете составлять сколько угодно столбцов, но кол-во столбцов должно
# соответствовать кол-ву строк в таблице ниже (WHEATHER_GRAPHICS).
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 - 150
# Координата Y окна температуры в игре
TEMPERATURE_Y = 0
# Размер текста температуры
TEMPERATURE_TEXT_SIZE = 40
# Кнопка отображения/скрытия окна температуры
# -1, чтобы не использовать
TEMPERATURE_BUTTON = :Z
#Показывать окно температуры в начале игры ? true - да, false - нет
$SHOW_START_GAME_TIME_TEMPERATURE = false
#----- Конец настройки погоды и температуры ------------------------------------
$Custom_Temperature = [] if USE_TEMPERATURE
# ?
HOUR_PERIODS = [
["Ночь", 0, 5],
["Утро", 6, 11],
["День", 12, 17],
["Вечер", 18, 23] ]
end
$imported = {} if $imported.nil?
$imported["DenKyz_Game_Time_Weather"] = true
class Functions
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
end
class Temperature_Window < Window_Base
include Weather_Settings_Module
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
draw_text(0, 0, self.width - 8, 32, $Game_Time_Temperature.to_i.to_s + "°", 2)
end
end # class Temperature_Window < Window_Base |
Последнее редактирование: 9 года 10 мес. назад от DK. Причина: обновление
Администратор запретил публиковать записи гостям.
|
Календарь 9 года 9 мес. назад #77821
|
В рамках собственной программы по улучшению и поддержанию скриптов выкладываю обновленную версию Календаря.
Версия: 1.5 Требуемая версия Время/Дата: 5.12 Дата обновления: 07.02.15 Что нового: В будущем планируется добавить поддержку минут для записей, а также отключение времени, чтобы записи можно было использовать только по датам Скрипт: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Calendar (Календарь) #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 1.5
Релиз от: 07.02.15
Зависимость: Game_Time (Время/Дата) by Denis Kyznetsov (версия 5.12)
Установка: разместить ниже Game_Time (Время/Дата)
Календарь:
Чтобы добавить запись в календарь, воспользуйтесь вызовом скрипта:
add_calendar_note(text, day, month, year, hour, info, location, notify)
text - текст, что будет отображаться в календаре
day - день если == -1, то текущий день
month - месяц если == -1, то текущий месяц
year - год если == -1, то текущий год
hour - час если hour == -1, то на следующий час
info - дополнительная информация о квесте
location - локация (ид карты) если 0, то текущая локация
notify - уведомлять о получении, завершении квеста (по-умолчанию true)
Прошедшие события будут автоматически удаляться и помечаться, как проваленные,
чтобы записи были, как успешно выполненные, воспользуйтесь вызовом скрипта !
complete_calendar_note(text, day, month, year, hour)
где text - текст записи
day - день, если == -1, то текущий день
month - месяц, если == -1, то текущий месяц
year - год, если == -1, то текущий год
hour - час, если == -1, то следующий час
location - локация (ид карты) если 0, то текущая локация
Если вы точно знаете index записи, то можете вызвать скрипт:
complete_calendar_note_index(index)
и тогда запись по индексу будет выполнена
Чтобы, например, удалить запись из первого примера выше, нужно вызвать скрипт:
complete_quest("Сходить за посылкой", 2, 1, 2014, 17). Внимание! Чтобы запись
была удалена, должны быть правильны введены все поля!
Внимание! Если вы не используете локации для календарей, то в вызове скрипта можете
не указывать последний параметр (location)
=end
### НАЧАЛО НАСТРОЙКИ ###########################################################
module Calendar_Settings
# Сокращенное название дней недели для календаря
SHORT_DAYS_WEEK = ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"]
# Название месяцев
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
# За сколько минут оповещать о завершении квеста ? не больше MINUTES_IN_HOUR
$CALENDAR_NOTIFY = 5
# Использовать прошедшие события ? true - да, false - нет
USE_LAST_QUESTS = true
# Координата X окна календаря
CALENDAR_X = 0
# Координата Y окна календаря
CALENDAR_Y = 0
# Кнопка отображения/скрытия окна календаря
# -1, чтобы не использовать
CALENDAR_TIME_BUTTON = :Z
# Показывать окно календаря в начале игры ? true - да, false - нет
$SHOW_START_GAME_CALENDAR_WINDOW = true
#----- Конец настройки календаря -----------------------------------------------
# не трогать
MONTHS_DAY = []
SORT = []
# не трогать
end
module CalVocab
# Информация на месяцы, на которых нет записей
NO_INFO = "В этот день ничего нет"
# Информация в окне, если сегодня нет событий
GAME_NO_INFO = "На сегодня ничего нет"
# Текст, когда нет дополнительной информации у записи
QUESTS_NO_INFO = "Нет описания квеста"
# Текст в календаре, если квест выполнен
STATUS_COMPLETE_QUEST = "Завершено"
# Текст в календаре, если квест не выполнен
STATUS_NO_COMPLETE_QUEST = "Провалено"
# Текст в календаре, если квест еще не выполнен
STATUS_NOW_QUEST = "Активно"
# Текст названия квеста
WINDOW_NAME_QUEST = "Квест"
# Текст в окне уведомелний при получении квеста
WINDOW_STATUS_GET = "Получен!"
# Текст в окне уведомелний при успешном завершении квеста
WINDOW_STATUS_COMPLETE = "Завершен!"
# Текст в окне уведомелний при провале квеста
WINDOW_STATUS_NO_COMPLETE = "Провален!"
end
### КОНЕЦ НАСТРОЙКИ ############################################################
$imported = {} if $imported.nil?
$imported["DenKyz_Game_Time_Calendar"] = Time_Settings::USE_CALENDAR
$QUESTS = []
$LAST_QUESTS = []
$Calendar_Notifications = []
class Functions
include CalVocab
def self.transfer_calendar_note(quest, complete = false) # перенос записей в архив
add_calendar_note_notification(quest[:text], complete) if USE_CALENDAR_WINDOW_NOTIFICATION && quest[:notify]
$LAST_QUESTS.push(quest)
$LAST_QUESTS[-1][:complete] = complete
$QUESTS[$QUESTS.index(quest)] = nil
end
def self.add_calendar_note_notification(text, complete_text = false, add_text = false)
$Calendar_Notifications.push({ :text => text, :status => (!add_text ? (complete_text ? WINDOW_STATUS_COMPLETE : WINDOW_STATUS_NO_COMPLETE) : WINDOW_STATUS_GET) })
$Game_Time_Calendar_Notification = Calendar_Notification_Window.new if !$Game_Time_Calendar_Notification
end
def self.transfer? # перенести записи в архив (завершенные квесты) ? # возвращает кол-во перенесенных записей
return if $QUESTS.nil?
k = 0
$QUESTS.each do |quest|
next if quest == nil
if $Game_Time.year > quest[:year] || (($Game_Time.year >= quest[:year] && quest[:month] < $Game_Time.month)) || ($Game_Time.year >= quest[:year] && quest[:month] <= $Game_Time.month && quest[:day] < $Game_Time.day) # && $Game_Time.hour >= $QUESTS[i][:hour])
transfer_calendar_note(quest)
k += 1
end
end
$QUESTS.compact!
return k
end
def self.complete? # Перенести завершенные записи в архив ?
return if $QUESTS.nil?
$QUESTS.each do |quest|
next if quest == nil
transfer_calendar_note(quest) if quest[:day] <= $Game_Time.day && quest[:month] <= $Game_Time.month && quest[:year] <= $Game_Time.year && quest[:hour] <= $Game_Time.hour
end
$QUESTS.compact!
end
def self.cursor_pagedown
$CURRENT_FIRST_DAY = $FIRST_DAY if $List_Year == $Year
$List_Year += 1
all_days = 0
for i in 0..MONTHS.size-1
all_days += DAYS[i]
end
$FIRST_DAY += all_days % DAYS_WEEK.size
$FIRST_DAY = 1 if $FIRST_DAY > DAYS_WEEK.size
end
def self.cursor_pageup
$CURRENT_FIRST_DAY = $FIRST_DAY if $List_Year == $Year
$List_Year -= 1
all_days = 0
for i in 0..MONTHS.size-1
all_days += DAYS[i]
end
$FIRST_DAY -= all_days % DAYS_WEEK.size
$FIRST_DAY = DAYS_WEEK.size if $FIRST_DAY < 1
$List_Year = $Year if $List_Year < $Year && !USE_LAST_QUESTS
end
def self.cursor_left(wrap = true)
$List_Day -= 1
if $calendar_window_month_cursor > 0 && $List_Day < 1
$calendar_window_month_cursor -= 1
$List_Day = DAYS[$calendar_window_month_cursor]
elsif $calendar_window_month_cursor == 0 && $List_Day < 1
$calendar_window_month_cursor = MONTHS.size-1
$List_Day = DAYS[$calendar_window_month_cursor]
cursor_pageup
end
end
def self.cursor_right(wrap = true)
$List_Day += 1
if $calendar_window_month_cursor < MONTHS.size-1 && $List_Day > DAYS[$calendar_window_month_cursor]
$calendar_window_month_cursor += 1
$List_Day = 1
elsif $calendar_window_month_cursor == MONTHS.size-1 && $List_Day > DAYS[$calendar_window_month_cursor]
$calendar_window_month_cursor = 0
$List_Day = 1
cursor_pagedown
end
end
end
class Window_MenuCommand < Window_Command
alias denis_kyznetsov_game_time_calendar_wnd_menu_cmmd_add_original_commands add_original_commands
def add_original_commands
denis_kyznetsov_game_time_calendar_wnd_menu_cmmd_add_original_commands
add_command("Календарь", :calendar) if Time_Settings::USE_CALENDAR && $imported["DenKyz_Game_Time_Calendar"]
end
end # class Window_MenuCommand < Window_Command
class Scene_Menu < Scene_MenuBase
def calendar
SceneManager.call(Calendar_Scene)
end
end # class Scene_Menu < Scene_MenuBase
class Calendar_Scene < Scene_Base
include Time_Settings
def start
super
$Year = $Game_Time.year
$Month = $Game_Time.month
$Day = $Game_Time.day
$List_Year = $Year
create_month_command_window # окно с месяцами
create_date_window # окно с текущей датой
create_day_window # окно с календарем на месяц
create_note_command_window # текущие записи
@window_activate = 0 # какое окно активировано
return if $QUESTS.nil?
Functions.transfer?
Functions.complete?
end
def create_month_command_window
@create_month_command_window = Game_Time_Calendar_Scene_Month_Command_Window.new(0, 100)
@create_month_command_window.set_handler(:cancel, method(:return_scene))
MONTHS.each do |key|
@create_month_command_window.set_handler(key.to_sym, method(:month))
end
end
def create_date_window
@create_date_window = Game_Time_Calendar_Scene_Date_Window.new(0, 0, Graphics.width/3, 100)
end
def create_day_window
@create_day_window = Game_Time_Calendar_Scene_Day_Window.new(Graphics.width/3, 0, Graphics.width - Graphics.width/3, 176)
end
def create_note_command_window
@create_note_command_window = Game_Time_Calendar_Scene_Note_Command_Window.new(dw = Graphics.width/3, 176)
@create_note_command_window.deactivate
if USE_LAST_QUESTS
$LAST_QUESTS.each do |last_quest|
next if last_quest == nil
@create_note_command_window.set_handler((last_quest[:text] + last_quest[:day].to_s + last_quest[:month].to_s + last_quest[:year].to_s + "LAST").to_sym, method(:create_note_info_window))
end
end
$QUESTS.each do |quest|
next if quest == nil
@create_note_command_window.set_handler((quest[:text] + quest[:day].to_s + quest[:month].to_s + quest[:year].to_s).to_sym, method(:create_note_info_window))
end
end
def month
@create_month_command_window.deactivate
@create_note_command_window.activate
@window_activate = 1
end
def create_note_info_window
# отправляем текущий квест в окно информации
@create_note_info_window = Game_Time_Calendar_Scene_Note_Info_Window.new(25, Graphics.height/2 - 185, Graphics.width - 50, 370, @create_note_command_window.commands[@create_note_command_window.current_index])
@create_note_info_window.arrows_visible = false
@create_note_command_window.deactivate
@window_activate = 2
end
def window_back
if @window_activate == 1
@create_month_command_window.activate
@create_note_command_window.deactivate
@window_activate = 0
elsif @window_activate == 2
@create_note_command_window.activate
@create_note_info_window.dispose
@create_note_info_window = nil
@window_activate = 1
end
end
def update
super
@create_note_command_window.change_show_last_notes if Input.trigger?(:A)
window_back if Input.trigger?(:B) || !@create_note_command_window.show_cursor
end
end # class CalendarScene < Scene_MenuBase
class Game_Time_Calendar_Scene_Month_Command_Window < Window_Command
include Calendar_Settings
def initialize(x, y)
super
select($Month)
end
def make_command_list
$calendar_window_month_cursor = $Month
$List_Year = $Year
$List_Day = $Day
MONTHS.each do |index|
add_command(index, index.to_sym)
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)
$calendar_window_month_cursor -= 1
if $calendar_window_month_cursor < 0
$calendar_window_month_cursor = MONTHS.size-1
end
select($calendar_window_month_cursor)
$List_Day = Time_Settings::DAYS[$calendar_window_month_cursor] if $List_Day > Time_Settings::DAYS[$calendar_window_month_cursor]
end
def cursor_down(wrap = true)
$calendar_window_month_cursor += 1
if $calendar_window_month_cursor > MONTHS.size-1
$calendar_window_month_cursor = 0
end
select($calendar_window_month_cursor)
$List_Day = Time_Settings::DAYS[$calendar_window_month_cursor] if $List_Day > Time_Settings::DAYS[$calendar_window_month_cursor]
end
def cursor_pagedown
Functions.cursor_pagedown
end
def cursor_pageup
Functions.cursor_pageup
end
def cursor_left(wrap = true)
Functions.cursor_left
select($calendar_window_month_cursor)
end
def cursor_right(wrap = true)
Functions.cursor_right
select($calendar_window_month_cursor)
end
def update
if Input.trigger?(:Z)
$calendar_window_month_cursor = $Game_Time.month
$List_Day = $Game_Time.day
$FIRST_DAY = $CURRENT_FIRST_DAY if $List_Year != $Year
$List_Year = $Game_Time.year
select($calendar_window_month_cursor)
end
super
end
end # Game_Time_Calendar_Scene_Month_Command_Window < Window_Command
class Game_Time_Calendar_Scene_Date_Window < Window_Base
include Calendar_Settings
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height)
super(x, y, w, h)
@year = $List_Year
draw_info
end
def draw_info
draw_text(0, 0, contents_width, 24, "Текущая дата:", 1)
draw_text(0, 24, contents_width, 24, $Day.to_s + ", " + MONTHS[$Month].to_s + " " + $Year.to_s + " г", 1)
draw_text(0, 48, contents_width, 24, "Календарь: " + $List_Year.to_s + " г", 1)
end
def update
if @year != $List_Year
super
contents.clear
@year = $List_Year
draw_info
end
end
end # class Game_Time_Calendar_Scene_Date_Window < Window_Base
class Game_Time_Calendar_Scene_Day_Window < 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_day = $List_Day
@now_year = $List_Year
@mow_month = $calendar_window_month_cursor
month_math
update
end
def month_math # расчет первых дней каждого месяца на весь год
MONTHS_DAY[0] = $FIRST_DAY
for i in 1..MONTHS.size
MONTHS_DAY[i] = (DAYS[i - 1] + MONTHS_DAY[i-1]) % DAYS_WEEK.size
MONTHS_DAY[i] = DAYS_WEEK.size if MONTHS_DAY[i] == 0
end
end
def show_days_info # 06.02.15: Почему я не писал комментарии ? За что ? Что здесь происходит ?
dy, i, k, week = 24, 1, MONTHS_DAY[$calendar_window_month_cursor], 5
if DAYS[$calendar_window_month_cursor] > 30 || (MONTHS_DAY[$calendar_window_month_cursor] > 5 && DAYS[$calendar_window_month_cursor] >= 30)
week = 6
end
change_color(normal_color)
text = " "
SHORT_DAYS_WEEK.each do |key|
text += key + " "
end
draw_text(0, 0, contents_width, 24, text, 1)
i = draw_week(dy, MONTHS_DAY[$calendar_window_month_cursor], 1, i)
for j in 2..week
i = draw_week(dy, 1, j, i)
end
end
def draw_week(dy, k, j, i) # отображение календаря в цифрах
for s in k..DAYS_WEEK.size
if i > Time_Settings::DAYS[$calendar_window_month_cursor]
break
end
if i == $Day && $Month == $calendar_window_month_cursor && $Year == $List_Year && $List_Day != $Day
change_color(text_color(24))
elsif i == $List_Day && $List_Day != $Day || (($Year != $List_Year || $Month != $calendar_window_month_cursor) && i == $List_Day)
change_color(text_color(20))
elsif i == $List_Day && $List_Day == $Day && $Year == $List_Year && $Month == $calendar_window_month_cursor
change_color(text_color(21))
else
change_color(normal_color)
end
draw_text(40 + (s - 1) * 24 * 1.64, dy + (j - 1) * 20, contents_width, 24, i < 10 ? " " + i.to_s : i.to_s)
i += 1
end
return i
end
def update
if @now_day != $List_Day || @now_year != $List_Year || @now_month != $calendar_window_month_cursor
@now_year = $List_Year
month_math
@now_month = $calendar_window_month_cursor
@now_day = $List_Day
contents.clear
show_days_info
end
end
end # Game_Time_Calendar_Scene_Day_Window < Window_Base
class Game_Time_Calendar_Scene_Note_Command_Window < Window_Command
include Time_Settings, CalVocab
attr_reader :show_cursor
attr_reader :commands
def initialize(x, y)
@now_day = $List_Day
@now_month = $calendar_window_month_cursor
@now_year = $List_Year
@show_last_notes = USE_LAST_QUESTS ? true : false
@update_window = false
@show_cursor = false
super(x, y)
end
def change_show_last_notes
@show_last_notes = !@show_last_notes
@update_window = true
end
def window_width
return Graphics.width - Graphics.width/3
end
def window_height
Graphics.height - 176
end
def draw_item(index)
if @commands[index].has_key?(:complete)
color = @commands[index][:complete] ? text_color(24) : text_color(20)
else
color = text_color(17)
end
change_color(color, command_enabled?(index))
draw_text(item_rect_for_text(index), command_name(index), alignment)
end
def current_index
for i in 0..@list.size-1
return i if @list[i][:symbol] == current_symbol
end
end
def make_command_list
@commands = [] # массив всех квестов-комманд для вывода на текщую дату. Нужен, чтобы проверять, какой цвет отображаться в списке
if USE_LAST_QUESTS && @show_last_notes
for hour in 0..HOURS_IN_DAY-1
break if $LAST_QUESTS.nil?
$LAST_QUESTS.each do |last_quest|
next if last_quest == nil
if last_quest[:hour] == hour && last_quest[:day] == $List_Day && last_quest[:month] == $calendar_window_month_cursor && last_quest[:year] == $List_Year
add_command(last_quest[:text].size < 28 ? last_quest[:text] : minimize_text(last_quest), (last_quest[:text] + last_quest[:day].to_s + last_quest[:month].to_s + last_quest[:year].to_s + "LAST").to_sym)
@show_cursor = true
@commands.push(last_quest)
end
end
end
end
for hour in 0..HOURS_IN_DAY-1
$QUESTS.each do |quest|
next if quest == nil
if quest[:hour] == hour && quest[:day] == $List_Day && quest[:month] == $calendar_window_month_cursor && quest[:year] == $List_Year
add_command(quest[:text].size < 28 ? quest[:text] : minimize_text(quest), (quest[:text] + quest[:day].to_s + quest[:month].to_s + quest[:year].to_s).to_sym)
@show_cursor = true
@commands.push(quest)
end
end
end
end
def minimize_text(quest)
return quest[:text][0..27] + "..."
end
def call_ok_handler
$Quest_Symbol = current_symbol.to_s
super
end
def update_cursor
return cursor_rect.empty if !@show_cursor
super
end
def cursor_pageup
Functions.cursor_pageup
end
def cursor_pagedown
Functions.cursor_pagedown
end
def cursor_left(wrap = true)
Functions.cursor_left
end
def cursor_right(wrap = true)
Functions.cursor_right
end
def update
super
if $List_Day != @now_day || $calendar_window_month_cursor != @now_month || @now_year != $List_Year || @update_window
@update_window = false
@now_day = $List_Day
@now_month = $calendar_window_month_cursor
@now_year = $List_Year
@show_cursor = false
refresh
update_cursor
select(0)
end # if $List_Day != @now_day...
if !@show_cursor
self.contents.clear
self.contents.draw_text(0, contents_height/2 - standard_padding, contents_width, 24, NO_INFO, 1)
end # if !@show_cursor
end # def
end # class Game_Time_Calendar_Scene_Note_Command_Window < Window_Command
class Game_Time_Calendar_Scene_Note_Info_Window < Window_Base
include Time_Settings, Calendar_Settings, CalVocab
def initialize(x, y, w, h, quest)
super(x, y, w, h)
self.back_opacity = 255
@quest = quest
show_info
end
def create_contents
contents.dispose
if contents_width > 0 && contents_height > 0
self.contents = Bitmap.new(contents_width, contents_height * 1.5)
else
self.contents = Bitmap.new(1, 1)
end
end
def show_info
real_y = 0
change_color(text_color(24))
draw_text(0, real_y, contents_width, 24, @quest[:text], 1)
change_color(normal_color)
real_y = 26
self.contents.fill_rect(0, real_y, contents_width, 1, normal_color)
real_y = 30
draw_text(0, real_y, contents_width, 24, "Дополнительная информация", 1)
if USE_CALENDAR_LOCATION
real_y = 60
change_color(text_color(24))
draw_text(0, real_y, contents_width, 24, "Локация: ")
x = text_size("Локация: ").width
change_color(normal_color)
if !@quest[:location].to_i.zero?
location = load_data(sprintf("Data/Map%03d.rvdata2", @quest[:location]))
draw_text(x, real_y, contents_width, 24, (location.display_name == "" ? "Неизвестно" : location.display_name + (@quest[:location] == $game_map.map_id ? " (Текущая)" : "")))
else
draw_text(x, real_y, contents_width, 24, @quest[:location])
end
end
if USE_CALENDAR_QUEST_END
real_y += 24
change_color(text_color(24))
draw_text(0, real_y, contents_width, 24, "Завершить до: ")
x = text_size("Завершить до: ").width
change_color(normal_color)
draw_text(x, real_y, contents_width, 24, @quest[:day].to_s + " " + CALENDAR_MONTHS[@quest[:month]] + " " + @quest[:year].to_s + "г " + @quest[:hour].to_s + ":00")
end
if USE_CALENDAR_QUEST_STATUS
real_y += 24
change_color(text_color(24))
draw_text(0, real_y, contents_width, 24, "Статус: ")
x = text_size("Статус: ").width
if @quest.has_key?(:complete)
text = ""
if !@quest[:complete]
change_color(text_color(20))
text = STATUS_NO_COMPLETE_QUEST
else
text = STATUS_COMPLETE_QUEST
end
draw_text(x, real_y, contents_width, 24, text)
else
change_color(text_color(17))
draw_text(x, real_y, contents_width, 24, STATUS_NOW_QUEST)
end
change_color(normal_color)
end
return draw_text(0, (contents_height + real_y)/2 - standard_padding, contents_width, 24, QUESTS_NO_INFO, 1) if @quest[:info].nil? || @quest[:info] == ""
real_y += 24
draw_text_ex(0, real_y, @quest[:info])
end
def update
return if @quest[:info].nil? || @quest[:info] == ""
return if @quest[:info].size < 400 || text_size(@quest[:info]).width < 4000
self.oy += 4 if Input.press?(:DOWN) && !(self.oy > contents_height/5)
self.oy -= 4 if Input.press?(:UP)
self.oy = 0 if self.oy <= 0
end
end # class Game_Time_Calendar_Scene_Note_Info_Window < Window_Base
class Game_Interpreter
include Time_Settings
def add_calendar_note(text, day = -1, month = -1, year = -1, hour = -1, info = nil, location = 0, notify = true)
day = $Game_Time.day if day == -1
month = $Game_Time.month + 1 if month == -1
year = $Game_Time.year if year == -1
location = $game_map.map_id if location == 0 && USE_CALENDAR_LOCATION
hour = ($Game_Time.hour + 1) % HOURS_IN_DAY if hour == -1
$QUESTS.push({ :text => text, :day => day, :month => month - 1, :year => year, :hour => hour, :info => info, :notify => notify, :location => location })
Functions.add_calendar_note_notification(text, false, notify) if USE_CALENDAR_WINDOW_NOTIFICATION && notify
end
def complete_calendar_note(text, day = -1, month = -1, year = -1, hour = -1, location = 0)
day = $Game_Time.day if day == -1
month = $Game_Time.month if month == -1
month -= 1 if month != $Game_Time.month
year = $Game_Time.year if year == -1
hour = ($Game_Time.hour + 1) % HOURS_IN_DAY if hour == -1
location = $game_map.map_id if location == 0 && USE_CALENDAR_LOCATION
$QUESTS.each do |quest|
next if quest == nil
if quest[:text] == text && quest[:day] == day && quest[:month] == month && quest[:year] == year && quest[:hour] == hour
if USE_CALENDAR_LOCATION && quest[:location] == location
Functions.transfer_calendar_note(quest, true)
return $QUESTS.compact!
end
Functions.transfer_calendar_note(quest, true)
return $QUESTS.compact!
end
end
end # def
def complete_calendar_note_index(index)
Functions.transfer_calendar_note($QUESTS[index], true)
$QUESTS.compact!
end
end # class Game_Interpreter
class Scene_Base
alias denis_kyznetsov_game_time_calendar_scn_base_start start
def start
denis_kyznetsov_game_time_calendar_scn_base_start
$Game_Time_Calendar_Notification = Calendar_Notification_Window.new if !$Game_Time_Calendar_Notification && !$Calendar_Notifications.empty?
end
alias denis_kyznetsov_game_time_calendar_scn_base_terminate terminate
def terminate
if $Game_Time_Calendar_Notification
$Game_Time_Calendar_Notification.dispose
$Game_Time_Calendar_Notification = nil
end
denis_kyznetsov_game_time_calendar_scn_base_terminate
end
end # class Scene_Base
class Scene_Map < Scene_Base
alias denis_kyznetsov_game_time_calendar_scn_map_create_all_windows create_all_windows
def create_all_windows
denis_kyznetsov_game_time_calendar_scn_map_create_all_windows
if $imported["DenKyz_Game_Time_Calendar"]
if USE_CALENDAR && $SHOW_START_GAME_CALENDAR_WINDOW && USE_CALENDAR_WINDOW
create_calendar_window
end
end
end
def create_calendar_window
dx, dy = CALENDAR_X, CALENDAR_Y
dw, dh = 264, 100
@create_game_time_calendar_window = Calendar_Scene_Map_Window.new(dx, dy, dw, dh)
end
alias denis_kyznetsov_game_time_calendar_scn_map_all_visible all_visible
def all_visible(flag)
denis_kyznetsov_game_time_calendar_scn_map_all_visible(flag)
calendar_visible(flag)
end
def calendar_visible(flag)
return if !USE_CALENDAR || !$imported["DenKyz_Game_Time_Calendar"]
return if @create_game_time_calendar_window.nil? && !flag
$SHOW_START_GAME_CALENDAR_WINDOW = !$SHOW_START_GAME_CALENDAR_WINDOW
return create_calendar_window if flag
@create_game_time_calendar_window.dispose # если не flag
@create_game_time_calendar_window = nil
end
alias denis_kyznetsov_game_time_calendar_scn_map_update update
def update
denis_kyznetsov_game_time_calendar_scn_map_update
if $imported["DenKyz_Game_Time_Calendar"]
if $Game_Time.sec % 2 == 0
Functions.transfer?
Functions.complete?
end
if $Game_Time_Calendar_Notification && USE_CALENDAR_WINDOW_NOTIFICATION
$Game_Time_Calendar_Notification.update
end
if USE_CALENDAR && USE_CALENDAR_WINDOW && !CALENDAR_TIME_BUTTON.is_a?(Integer)
if Input.trigger?(CALENDAR_TIME_BUTTON) && $SHOW_START_GAME_CALENDAR_WINDOW
calendar_visible(false)
elsif Input.trigger?(CALENDAR_TIME_BUTTON) && !$SHOW_START_GAME_CALENDAR_WINDOW
calendar_visible(true)
end
end
end # if $imported["DenKyz_Game_Time_Calendar"]
end
end # class Scene_Map < Scene_Base
class Scene_Menu < Scene_MenuBase
alias denis_kyznetsov_game_time_calendar_scn_menu_create_command_window create_command_window
def create_command_window
denis_kyznetsov_game_time_calendar_scn_menu_create_command_window
@command_window.set_handler(:calendar, method(:calendar)) if $imported["DenKyz_Game_Time_Calendar"]
end
end # class Scene_Menu < Scene_MenuBase
class Calendar_Scene_Map_Window < Window_Base
include Time_Settings, CalVocab
def initialize(x = 0, y = 0, w = Graphics.width, h = Graphics.height)
super(x, y, w, h)
@now_sec = $Game_Time.sec
@now_min = $Game_Time.min
@now_hour = $Game_Time.hour
@blink = false, false
Functions.transfer?
draw_info
end
def blink(k, quest)
return draw_text(0, k * 24, contents_width, 24, "") if Graphics.frame_count % BLINK_SPEED * 2 > BLINK_SPEED
return draw_text(0, k * 24, contents_width, 24, quest[:text])
end
def draw_now_notes
k = 0
$QUESTS.each do |quest|
next if quest == nil
if quest[:day] == $Game_Time.day && quest[:month] == $Game_Time.month && quest[:year] == $Game_Time.year
if quest[:hour] == ($Game_Time.hour + 1) % HOURS_IN_DAY && $Game_Time.min >= MINUTES_IN_HOUR - $CALENDAR_NOTIFY
change_color(text_color(20))
@blink = true
end
!@blink ? draw_text(0, k * 24, contents_width, 24, quest[:text]) : blink(k, quest)
k += 1
change_color(normal_color)
@blink = false
return true if k == contents.height/24 # 24 потому что высота строки
end
end
return false if k == 0
return true
end
def draw_info
change_color(normal_color)
if @now_day != $Game_Time.day
@now_day = $Game_Time.day
Functions.transfer?
end
note_drawed = draw_now_notes
draw_text(0, contents_height/2 - standard_padding, contents_width, 24, GAME_NO_INFO, 1) if note_drawed == false
end
def update
return if @now_sec == $Game_Time.sec && $TIME_SPEED > 1 && !$STOP_TIME_UPDATE
return if (@now_min == $Game_Time.min || $Game_Time.sec % 5 == 1) && $TIME_SPEED == 1 && !$STOP_TIME_UPDATE
super
@now_sec = $Game_Time.sec
@now_min = $Game_Time.min
Functions.complete? if @now_hour != $Game_Time.hour
@now_hour = $Game_Time.hour
contents.clear
change_color(normal_color)
@blink = false
draw_info
end
end # Calendar_Scene_Map_Window
class Calendar_Notification_Window < Window_Base
include CalVocab
def initialize
super(0, Graphics.height/12, Graphics.width/2, 96)
@increase_opacity = true
@show_notification = false
self.z = 150
self.opacity = 0
self.contents_opacity = 0
end
def update
if !@show_notification
@name = $Calendar_Notifications[0][:text]
@status = $Calendar_Notifications[0][:status]
@show_notification = true
else
opacity_speed = 2
if @increase_opacity
self.width = [[text_size(@name).width * 1.2, 174].max, Graphics.width].min
create_contents
self.x = Graphics.width/2 - self.width/2
self.opacity += opacity_speed
self.contents_opacity += opacity_speed
contents.clear
draw_text(0, 0, contents_width, 24, WINDOW_NAME_QUEST, 1)
draw_text(0, 24, contents_width, 24, @name, 1)
if @status == WINDOW_STATUS_COMPLETE
change_color(text_color(24))
elsif @status == WINDOW_STATUS_NO_COMPLETE
change_color(text_color(20))
elsif
change_color(text_color(17))
end
draw_text(0, 48, contents_width, 24, @status, 1)
change_color(normal_color)
@increase_opacity = false if self.opacity == 255
else
self.opacity -= opacity_speed
self.contents_opacity -= opacity_speed
if self.opacity == 0
@show_notification = false
@increase_opacity = true
$Calendar_Notifications.shift
end
end
end
end
end # class Calendar_Notification_Window < Window_Base
module DataManager
class << self
alias denis_kyznetsov_game_time_calendar_dt_mngr_make_save_contents make_save_contents
def make_save_contents
contents = denis_kyznetsov_game_time_calendar_dt_mngr_make_save_contents
contents[:Game_Time_Quests] = $QUESTS
contents[:Game_Time_Last_Quests] = $LAST_QUESTS
contents[:Game_Time_First_Day] = $FIRST_DAY
contents[:Calendar_Notifications] = $Calendar_Notifications
contents
end
alias denis_kyznetsov_game_time_calendar_dt_mngr_extract_save_contents extract_save_contents
def extract_save_contents(contents)
denis_kyznetsov_game_time_calendar_dt_mngr_extract_save_contents(contents)
$QUESTS = contents[:Game_Time_Quests]
$LAST_QUESTS = contents[:Game_Time_Last_Quests]
$FIRST_DAY = contents[:Game_Time_First_Day]
$Calendar_Notifications = contents[:Calendar_Notifications]
end
end
end # module DataManager |
Последнее редактирование: 9 года 9 мес. назад от DK. Причина: обновление
Администратор запретил публиковать записи гостям.
|
Модераторы: NeKotZima
Время создания страницы: 0.453 секунд