ГлавнаяФорумRPG MakerСкрипты/ПлагиныRPG Maker VX ACEУлучшающие или добавляющее новое скриптыВосстанавливающаяся полоса v 1.43
Войти на сайт
×
ТЕМА: Восстанавливающаяся полоса v 1.43
Восстанавливающаяся полоса v 1.43 10 года 1 мес. назад #77690
|
Скрипт добавляет в игру восстанавливающуюся полосу.
Особенности: Версия: 1.43 Что нового: Прошлые версии [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] Версия: 1.42 Адаптированно для Глобальных настроек Версия 1.41 energy_bar_inversed?(index) по индексу полосы вернет true (если полоса inverse), иначе false; get_energy_bar_parameter(index, type) вернет по индексу и символу параметра текущее значения параметра; set_energy_bar_value(index, value) - установит по индексу конкретное значение (value) для полосы; set_all_energy_bar_value(value) - установит всем полосам значение; increase_energy_bar_value(index, value) увеличить полосе значение; increase_all_energy_bar_value(value) увеличить всем полосам значение; decrease_energy_bar_value(index, value) уменьшить значение полосе; decrease_all_energy_bar_value(value) уменьшить значения всем полосам; check_energy_bar(index, inverse) если inverse true, то вернет равенство полосы максимальному значению, если inverse false, то вернет равенство 0; get_energy_bar_value(index) - узнать текущее значение полосы Добавлены следующие вызовы скрипта: use_all_energy_bar, dont_use_all_energy_bar, change_use_all_energy_bar(flag),change_all_energy_bar_parameter(type, value). Их действие распространяется на все полосы, а делают они тоже самое, что и use_energy_bar(index), dont_use_energy_bar(index), change_use_energy_bar(index, flag), change_energy_bar_parameter(index, type, value). Версия 1.3: Исправил ошибку исчезновения полос при смене сцены Переписал почти весть скрипт заново Возможность отображать несколько полос одновременно Обновил методы проверки полос (все в шапке скрипта) Возможность отображать в минимальном стиле Убрал возможность менять высоту окна (высчитывается автоматически из количества полос) Версия 1.1: Возможность инвертировать полосу (при нажатии клавиши будет увеличиваться значение, а не уменьшаться) Если вы используете клавишу, то при ее нажатии окно будет отображаться, а при отпускании будет плавно исчезать (используйте кнопку в настройках, если хотите явно указать отображать окно или нет). В автоматическом режиме окно будет всегда отображаться Изменил внешний вид: чуть уменьшил шрифт и теперь текущее значение отображается на шкале, а не под ней Добавлена возможность отображать значение в процентах Версия 1.0: Первый релиз Скриншоты Инструкция: в шапке скрипта Демо 1.41: Демо 1.41 Скрипт ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Восстанавливающаяся полоса (Energy Bar) #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 1.43
Релиз от: 03.07.15
Существует дополнение Energy Bar Settings
Инструкция:
используйте вызов скрипта, чтобы создать полосу:
start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, event, button)
text - текст в ковычках ""
max - максимальное значение
use_speed - скорость убывания шкалы
restore_speed - скорость восстановления шкалы
color - цвет полосы (используется цвет текста)
inverse - true/false - инвентирование полосы (увеличение значения вместо уменьшения)
event - номер обработки события (см. ниже) # Добавлено в версии 1.41 от 10.04.15
button - символ клавиши, которая отвечает за уменьшение шкалы (когда вы ее жмете),
вы можете не использовать клавишу (просто не указывайте ничего)
Если вы не используете клавишу для изменения шкалы, то вызывайте слудующие скрипты:
use_energy_bar(index) - чтобы уменьшать шкалу (index - индекс полосы)
dont_use_energy_bar(index) - чтобы восстанавливать шкалу
change_use_energy_bar(index, flag) - чтобы явно указать, что делать со шкалой
flag = true/false (уменьшать/восстанавливать)
index - индекс полосы (все индексы начинаются с 0)
Чтобы изменить сразу все полосы, используйте:
use_all_energy_bar
dont_use_all_energy_bar
change_use_all_energy_bar(flag)
если не уверены какой index использовать, вызовите скрипт:
get_energy_bar_index(text, max)
этим вы получите index нужной вам полосы (укажите текст в ковычках и максимальное значение)
Изменение шкалы:
change_energy_bar_parameter(index, type, value)
type - символ, что менять
Возможно - :text, :now, :max, :use_speed, :restore_speed, :color, :inverse, :event, :button
change_all_energy_bar_parameter(type, value) чтобы поменять параметр для всех полос
get_energy_bar_parameter(index, type) по индексу и символу (type см. выше) вернет
значение параметра. Вернет -1, если возникла какая-то ошибка
set_energy_bar_value(index, value) установит значение (value) для полосы
set_all_energy_bar_value(value) устновит значение всем полосам
increase_energy_bar_value(index, value) увеличит полосу по индексу на value
increase_all_energy_bar_value(value) увеличит все полосы на value
decrease_energy_bar_value(index, value) уменьшит полосу по индексу на value
decrease_all_energy_bar_value(value) уменьшит все полосы на value
Проверка шкалы:
check_energy_bar(index, inverse) если inverse указать false,
то вернет true, когда полоса = 0, иначе false
если inverse будет true, то вернет true, когда полоса = максимальному значению,
иначе false
energy_bar_inversed?(index) провека полосы на inverse. Вернет true (да), если
полоса inverse, иначе false (нет)
get_energy_bar_value(index) узнать текущее значение полосы по индексу
Уничтожение:
dispose_one_energy_bar(index) - убрать конкретную полосу по индексу
dispose_all_energy_bar - убрать все полосы
Другое:
### Добавлено в версии 1.43 от 03.07.15
Изменить остановку полосы при сообщении:
change_energy_bar_message_stop(flag)
flag = true - да, false - нет
Переключить остановку полос при сообщении:
toggle_energy_bar_message_stop
Изменить скорость полос:
Значение от 2 до 30. -1, чтобы не использовать
change_energy_bar_speed(value)
value - новое значение скорости
=end
module Energy_Bar_Settings
# Координата X окна
$ENERGY_BAR_WINDOW_X = 0
# Координата Y окна
$ENERGY_BAR_WINDOW_Y = 0
# Ширина окна
$ENERGY_BAR_WINDOW_WIDTH = 200
# Останавливать полосы, если на экране сообщение
$ENERGY_BAR_MESSAGE_STOP = true
# Скорость изменения полос (от 2 до 30), -1, чтобы не использовать
$ENERGY_BAR_SPEED = 10
# Отображать проценты вместо текущего значения ? true - да, false - нет
$USE_ENERGY_BAR_WINDOW_PERCENT = true
# Использовать минимальный стиль отображения полосы ? true - да, false - нет
$USE_MINIMAL_ENERGY_BAR_STYLE = true
# Кнопка показа/скрытия окна
# -1, чтобы не использовать
ENERGY_BAR_BUTTON = :Z
# Номера событий (индексы при создании полосы начинаются с 0 (event = 0, 1, 2, 3...)
ENERGY_BAR_EVENTS = [
# тип (переменная), номер, действие, значение, действие после, номер после
[1, 1, 3, 10, 2, 50], # Приравняет третью переменную к 10, после увеличит значение полосы на 50
# тип (переключатель), номер, значение, действие после, номер после
[2, 1, 1, 1], # Вкл. первый переключатель и удалим полосу
# тип (общее событие), номер, действие после, номер после
[3, 2, -1] # Вызовем второе общее событие и больше ничего не сделаем
]
# Инструкция:
# если хотите использовать переменную
# [тип, номер, действие, значение, действие после, номер после]
# если хотите поменять переключатель
# [тип, номер, значение, действие после, номер после]
# если хотите вызвать общее событие
# [тип, номер, действие после, номер после]
# тип: 1 - переменная, 2 - переключатель, 3 - событие
# номер: номер переменной, переключателя, события
# значение: для переменной (1 - увеличить, 2 - уменьшить, 3 - равно)
# для переключателя (1 - вкл, 2 - выкл, 3 - переключить)
# действие после: 1 - удалить полосу, 2 - увеличить значение полосы, 3 - общее событие
# номер после: если увеличиваете значение полосы, то значение увеличения,
# если вызываете общее событие, то номер события
end
$ENERGY_BAR_ARRAY = []
$imported = {} if $imported.nil?
$imported["DenKyz_EnergyBar"] = true
class Scene_Map < Scene_Base
include Energy_Bar_Settings
attr_reader :create_energy_bar_window
attr_accessor :fix_show_energy_bar_window
alias denis_kyznetsov_energy_bar_scn_map_start start
def start
@create_energy_bar_window = nil
# если false, то окно испаряется, если восстанавливается (при клавише)
# если true, то пользователь явно указывает, что хочет видеть окно на экране
@fix_show_energy_bar_window = false
create_energy_bar if !$ENERGY_BAR_ARRAY.empty? # создаем окно, если есть полосы
denis_kyznetsov_energy_bar_scn_map_start
end
def create_energy_bar
@create_energy_bar_window = Energy_Bar_Window.new
@fix_show_energy_bar_window = true
end
def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, event, button)
$ENERGY_BAR_ARRAY.push({ :text => text, :max => max, :now => inverse ? 0 : max, :use_speed => use_speed, :restore_speed => restore_speed,
:color => color, :inverse => inverse, :event => (event >= 0 && event < ENERGY_BAR_EVENTS.size) ? ENERGY_BAR_EVENTS[event] : [],
:event_ok => :event == [] ? false : true, :button => button, :auto => button.is_a?(Symbol) ? false : true })
if @create_energy_bar_window == nil
create_energy_bar
else
@create_energy_bar_window.change_window_height
end
end
def energy_bar_array_update
return if $game_message.busy? && $ENERGY_BAR_MESSAGE_STOP
if $ENERGY_BAR_SPEED != -1
return if Graphics.frame_count % $ENERGY_BAR_SPEED == 0
end
$ENERGY_BAR_ARRAY.each do |index|
next if index == nil
if index[:button].is_a?(Symbol) # если у нас символ кнопки
if Input.press?(index[:button]) # если жмем кнопку
energy_bar_animation_update(true)
index[:inverse] == false ? update_decrease_value_energy_bar(index) : update_increase_value_energy_bar(index)
else # Input.press?(index[:button])
energy_bar_animation_update(false)
index[:inverse] == false ? update_increase_value_energy_bar(index) : update_decrease_value_energy_bar(index)
end
else # if index[:button].is_a?(Symbol)
if index[:auto] # если у нас автоматическое использование
index[:inverse] == false ? update_decrease_value_energy_bar(index) : update_increase_value_energy_bar(index)
else
index[:inverse] == false ? update_increase_value_energy_bar(index) : update_decrease_value_energy_bar(index)
end
end # if index[:button].is_a?(Symbol)
check_energy_bar_event_ok(index)
check_energy_bar_event(index)
end # $ENERGY_BAR_ARRAY.each do |index|
end
def check_energy_bar_event_ok(index)
return if index[:event] == []
if index[:inverse]
index[:event_ok] = true if (index[:now].to_f/index[:max] * 100).to_i < 99
else
index[:event_ok] = true if (index[:now].to_f/index[:max] * 100).to_i > 0
end
end
def check_energy_bar_event(index)
return if index[:event] == []
return if !index[:event_ok]
if index[:inverse]
return if index[:now].to_i != index[:max].to_i
else
return if index[:now].to_i != 0
end
event_list = index[:event]
process_value = 0 # номер переменной, с которой начинается обработка после
case event_list[0] # переменная, переключатель, общее событие
when 1 # переменная
case event_list[2]
when 1 # увеличить переменную
$game_variables[event_list[1]] += event_list[3]
when 2 # уменьшить переменную
$game_variables[event_list[1]] -= event_list[3]
when 3 # установить переменную
$game_variables[event_list[1]] = event_list[3]
end
process_value = 4
when 2 # переключатель
case event_list[2]
when 1
$game_switches[event_list[1]] = true
when 2
$game_switches[event_list[1]] = false
when 3
$game_switches[event_list[1]] = !$game_switches[event_list[1]]
end
process_value = 3
when 3 # общее событие
$game_temp.reserve_common_event(event_list[1])
process_value = 2
end
case event_list[process_value] # обработка после
when 1 # удалить полосу
return dispose_one_energy_bar(find_id_from_index(index))
when 2 # увеличить полосу
index[:inverse] == false ? increase_energy_bar_value(index, event_list[process_value + 1]) : decrease_energy_bar_value(index, event_list[process_value + 1])
when 3 # общее событие
$game_temp.reserve_common_event(event_list[process_value + 1])
end
index[:event_ok] = false
end
def energy_bar_animation_update(mode)
return if @fix_show_energy_bar_window
if mode
@create_energy_bar_window.opacity += 15
@create_energy_bar_window.contents_opacity += 15
@create_energy_bar_window.visible = true
else
@create_energy_bar_window.opacity -= 10
@create_energy_bar_window.contents_opacity -= 10
if @create_energy_bar_window.opacity <= 0
@create_energy_bar_window.opacity = 0
@create_energy_bar_window.contents_opacity = 0
@create_energy_bar_window.visible = false
end
end
end
alias denis_kyznetsov_energy_bar_scn_map_update update
def update
denis_kyznetsov_energy_bar_scn_map_update
if @create_energy_bar_window != nil # если у нас есть окно на экране
if !Energy_Bar_Settings::ENERGY_BAR_BUTTON.is_a?(Integer) # если кнопка используется
if Input.trigger?(Energy_Bar_Settings::ENERGY_BAR_BUTTON) # если нажата кнопка
# явно указываем, что хотим видеть окно на экране (не будет испаряться)
@fix_show_energy_bar_window = !@create_energy_bar_window.visible
@create_energy_bar_window.opacity = 255
@create_energy_bar_window.contents_opacity = 255
@create_energy_bar_window.visible = !@create_energy_bar_window.visible
end
end
energy_bar_array_update
end
end
def check_energy_bar_value_range(index)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] = 0 if index[:now] < 0
index[:now] = index[:max].to_i if index[:now] > index[:max]
end
def set_energy_bar_value(index, value)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] = value
check_energy_bar_value_range(index)
end
def increase_energy_bar_value(index, value)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] += value
check_energy_bar_value_range(index)
end
def decrease_energy_bar_value(index, value)
index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
index[:now] -= value
check_energy_bar_value_range(index)
end
def update_increase_value_energy_bar(index)
increase_energy_bar_value(index, index[:restore_speed])
end
def update_decrease_value_energy_bar(index)
decrease_energy_bar_value(index, index[:use_speed])
end
def find_id_from_index(index)
return if index == nil
for i in 0..$ENERGY_BAR_ARRAY.size - 1
return i if index[:text] == $ENERGY_BAR_ARRAY[i][:text] && index[:max].to_i == $ENERGY_BAR_ARRAY[i][:max].to_i && index[:now].to_i == $ENERGY_BAR_ARRAY[i][:now].to_i
end
return -1
end
def dispose_one_energy_bar(index)
$ENERGY_BAR_ARRAY[index] = nil
$ENERGY_BAR_ARRAY.compact!
return dispose_energy_bar_window if $ENERGY_BAR_ARRAY.empty?
@create_energy_bar_window.change_window_height
end
def dispose_energy_bar_window
$ENERGY_BAR_ARRAY.clear
return if @create_energy_bar_window.nil?
@create_energy_bar_window.dispose
@create_energy_bar_window = nil
end
end
class Energy_Bar_Window < Window_Base
include Energy_Bar_Settings
def initialize
@optimal_window_height = 72
@optimal_window_height = 48 if $USE_MINIMAL_ENERGY_BAR_STYLE
super($ENERGY_BAR_WINDOW_X, $ENERGY_BAR_WINDOW_Y, $ENERGY_BAR_WINDOW_WIDTH, @optimal_window_height)
change_window_height
end
def draw_rect
rect = Rect.new
rect.x = 0
rect.y = 0
rect.width = contents_width
rect.height = 24
rect
end
def change_window_height
# с одной полосой окно занимает 72 при стандартной отрисовке (24 на отступы + 48 на содержимое)
self.height = @optimal_window_height + ($ENERGY_BAR_ARRAY.size - 1) * (@optimal_window_height - 2 * standard_padding)
self.height = Graphics.height if self.height > Graphics.height
create_contents
end
def window_setup
self.x = $ENERGY_BAR_WINDOW_X if self.x != $ENERGY_BAR_WINDOW_X
self.y = $ENERGY_BAR_WINDOW_Y if self.y != $ENERGY_BAR_WINDOW_Y
if self.width != $ENERGY_BAR_WINDOW_WIDTH
self.width = $ENERGY_BAR_WINDOW_WIDTH
create_contents
end
end
def update
contents.clear
window_setup
i = 0
$ENERGY_BAR_ARRAY.each do |index|
next if index.nil?
rect = draw_rect # получаем rect для текста
rect.y += i * (@optimal_window_height - 2 * standard_padding) # i-ой полосы
if $USE_MINIMAL_ENERGY_BAR_STYLE # рисуем текст
draw_text(rect, index[:text])
else
draw_text(rect, index[:text], 1)
end
if $USE_MINIMAL_ENERGY_BAR_STYLE # рисуем полосу
rect.x = contents_width / 2
rect.y += 4
rect.width = index[:now] * (contents_width - rect.x) / index[:max]
else
rect.y += rect.height
rect.width = index[:now] * contents_width / index[:max]
end
rect.height = 16
contents.fill_rect(rect, text_color(index[:color]))
# рисуем значение
rect.y -= 4
rect.width = contents_width
rect.height = 24
text = $USE_ENERGY_BAR_WINDOW_PERCENT ? (((index[:now].to_f / index[:max] * 100).to_i).to_s + "%") : (index[:now].to_i.to_s + "/" + index[:max].to_i.to_s)
if $USE_MINIMAL_ENERGY_BAR_STYLE
rect.x = 0
draw_text(rect, text, 2)
else
draw_text(rect, text, 1)
end
i += 1
end # $ENERGY_BAR_ARRAY.each do |index|
end
end # class Energy_Bar_Window < Window_Base
class Game_Interpreter
def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse = false, event = -1, button = -1)
return if !SceneManager.scene.is_a?(Scene_Map)
SceneManager.scene.start_new_energy_bar(text.to_s, max, use_speed, restore_speed, color, inverse, event, button)
end
def get_energy_bar_index(text, max)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
index = 0
$ENERGY_BAR_ARRAY.each do |ind|
return index if ind[:text] == text && ind[:max].to_i == max
index += 1
end
return -1
end
def change_energy_bar_parameter(index, type, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return if !type.is_a?(Symbol)
$ENERGY_BAR_ARRAY[index][type] = value
$ENERGY_BAR_ARRAY[index][:auto] = true if type == :button && !value.is_a?(Symbol)
end
def change_all_energy_bar_parameter(type, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
change_energy_bar_parameter(index, type, value)
end
end
def use_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
$ENERGY_BAR_ARRAY[index][:auto] = true
end
def use_all_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
use_energy_bar(index)
end
end
def dont_use_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
$ENERGY_BAR_ARRAY[index][:auto] = false
end
def dont_use_all_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
dont_use_energy_bar(index)
end
end
def change_use_energy_bar(index, flag)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
$ENERGY_BAR_ARRAY[index][:auto] = flag
end
def change_use_all_energy_bar(flag)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
change_use_energy_bar(index, flag)
end
end
def energy_bar_inversed?(index)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return $ENERGY_BAR_ARRAY[index][:inverse]
end
def get_energy_bar_parameter(index, type)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return -1 if !type.is_a?(Symbol)
return $ENERGY_BAR_ARRAY[index][type]
end
def set_energy_bar_value(index, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return SceneManager.scene.set_energy_bar_value(index, 0) if value < 0
SceneManager.scene.set_energy_bar_value(index, value)
end
def set_all_energy_bar_value(value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
set_energy_bar_value(index, flag)
end
end
def increase_energy_bar_value(index, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
SceneManager.scene.increase_energy_bar_value(index, value)
end
def increase_all_energy_bar_value(value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
increase_energy_bar_value(index, value)
end
end
def decrease_energy_bar_value(index, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
SceneManager.scene.deacrease_energy_bar_value(index, value)
end
def decrease_all_energy_bar_value(value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
for index in 0..$ENERGY_BAR_ARRAY.size - 1
decrease_energy_bae_value(index, value)
end
end
def check_energy_bar(index, inverse = false)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
value = $ENERGY_BAR_ARRAY[index][:now].to_i
type = inverse ? $ENERGY_BAR_ARRAY[index][:max].to_i : 0
return value == type
end
def get_energy_bar_value(index)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
return $ENERGY_BAR_ARRAY[index][:now].to_i
end
def energy_bar_exist?(text, max)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
return get_energy_bar_index(text, max) != -1 ? true : false
end
def dispose_one_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
SceneManager.scene.dispose_one_energy_bar(index)
end
def dispose_all_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil?
SceneManager.scene.dispose_energy_bar_window
end
def change_energy_bar_message_stop(flag)
$ENERGY_BAR_MESSAGE_STOP = flag
end
def toggle_energy_bar_message_stop
$ENERGY_BAR_MESSAGE_STOP = !$ENERGY_BAR_MESSAGE_STOP
end
def change_energy_bar_speed(value)
return $ENERGY_BAR_SPEED = value if value == -1
$ENERGY_BAR_SPEED = [[2, value].max, 30].min
end
end # class Game_Interpreter
module DataManager
class << self
alias denis_kyznetsov_energy_bar_dt_mngr_make_save_contents make_save_contents
def make_save_contents
contents = denis_kyznetsov_energy_bar_dt_mngr_make_save_contents
contents[:ENERGY_BAR_ARRAY] = $ENERGY_BAR_ARRAY
contents[:ENERGY_BAR_WINDOW_X] = $ENERGY_BAR_WINDOW_X
contents[:ENERGY_BAR_WINDOW_Y] = $ENERGY_BAR_WINDOW_Y
contents[:ENERGY_BAR_WINDOW_WIDTH] = $ENERGY_BAR_WINDOW_WIDTH
contents[:ENERGY_BAR_MESSAGE_STOP] = $ENERGY_BAR_MESSAGE_STOP
contents[:ENERGY_BAR_SPEED] = $ENERGY_BAR_SPEED
contents[:USE_ENERGY_BAR_WINDOW_PERCENT] = $USE_ENERGY_BAR_WINDOW_PERCENT
contents[:USE_MINIMAL_ENERGY_BAR_STYLE] = $USE_MINIMAL_ENERGY_BAR_STYLE
contents
end
alias denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents extract_save_contents
def extract_save_contents(contents)
denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents(contents)
$ENERGY_BAR_ARRAY = contents[:ENERGY_BAR_ARRAY]
$ENERGY_BAR_WINDOW_X = contents[:ENERGY_BAR_WINDOW_X]
$ENERGY_BAR_WINDOW_Y = contents[:ENERGY_BAR_WINDOW_Y]
$ENERGY_BAR_WINDOW_WIDTH = contents[:ENERGY_BAR_WINDOW_WIDTH]
$ENERGY_BAR_MESSAGE_STOP = contents[:ENERGY_BAR_MESSAGE_STOP]
$ENERGY_BAR_SPEED = contents[:ENERGY_BAR_SPEED]
$USE_ENERGY_BAR_WINDOW_PERCENT = contents[:USE_ENERGY_BAR_WINDOW_PERCENT]
$USE_MINIMAL_ENERGY_BAR_STYLE = contents[:USE_MINIMAL_ENERGY_BAR_STYLE]
end
end
end # module DataManager |
Последнее редактирование: 9 года 8 мес. назад от DK. Причина: обновление
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer, Демий, sinder, Jas6666, MaltonTheWarrior, Eugenius, akito66
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77691
|
Можно использовать как... эдакий таймер.
|
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77693
|
Можно (если без клавиши), а если с клавишей, то как ограничение на что-то (банальное - на бег)
|
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77694
|
Кстати, я бы перенес клавишу в конец, а в методе сделал бы стандартное значение равное -1
Тогда, если клавиша не нужна, можно её просто не писать. Но это моё ИМХО. |
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 10 года 1 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77695
|
в след. версии сделаю
![]() |
Последнее редактирование: 10 года 1 мес. назад от DK.
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77707
|
А вот и обновление до версии 1.1
Что нового: Скрипт ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Восстанавливающаяся полоса #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 1.1
Релиз от: 03.02.15
Инструкция:
используйте вызов скрипта, чтобы создать полосу:
start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse = false, button = -1)
text - текст
max - максимальное значение
use_speed - скорость убывания шкалы
restore_speed - скорость восстановления шкалы
color - цвет полосы (используется цвет текста)
inverse - true/false - инвентирование полосы (увеличение значения вместо уменьшения)
button - символ клавиши, которая отвечает за уменьшение шкалы (когда вы ее жмете),
вы можете не использовать клавишу (просто не указывайте ничего)
Если вы не используете клавишу для изменения шкалы, то вызывайте слудеющие скрипты:
use_energy_bar - чтобы уменьшать шкалу
dont_use_energy_bar - чтобы восстановить шкалу
change_use_energy_bar(flag) - чтобы явно указать, что делать со шкалой
flag = true/false (уменьшать/восстановить)
Проверка шкалы:
check_energy_bar - вернет true, если шкала = 0, иначе false
check_value_energy_bar - вернет текущее значение шкалы
Чтобы уничтожить полосу:
dispose_energy_bar
=end
module Energy_Bar_Settings
# координата X окна
ENERGY_BAR_WINDOW_X = 0
# координата Y окна
ENERGY_BAR_WINDOW_Y = 0
# Ширина окна
ENERGY_BAR_WINDOW_WIDTH = 200
# Высота окна (лучше не трогать)
ENERGY_BAR_WINDOW_HEIGHT = 72
# Отображать проценты вместо текущего значения ?
USE_ENERGY_BAR_WINDOW_PERCENT = false
# Кнопка показа/скрытия окна
# -1, чтобы не использовать
ENERGY_BAR_BUTTON = :Z
end
$USE_ENERGY_BAR = false # не трогать :)
$imported = {} if $imported.nil?
$imported["DenKyz_EnergyBar"] = true
class Scene_Map < Scene_Base
attr_reader :create_energy_bar_window
alias denis_kyznetsov_energy_bar_scn_map_start start
def start
@energy_bar_use_speed = 0 # скорость использования
@energy_bar_restore_speed = 0 # скорость восстановления
@energy_bar_button = 0 # символ кнопки использования
@energy_bar_inverse = false # иневертировать полосу? (не уменьшение, а увеличение)
@create_energy_bar_window = nil
# если false, то окно испаряется, если восстанавливается (при клавише)
# если true, то пользователь явно указывает, что хочет видеть окно на экране
@fix_show_energy_bar_window = false
denis_kyznetsov_energy_bar_scn_map_start
end
def create_energy_bar(text, max, color, inverse)
@create_energy_bar_window = Energy_Bar_Window.new(text, max, color, inverse)
end
def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, button)
dispose_energy_bar_window if @create_energy_bar_window != nil
create_energy_bar(text, max, color, inverse)
@energy_bar_use_speed = use_speed
@energy_bar_restore_speed = restore_speed
@energy_bar_inverse = inverse
if button.is_a?(Symbol)
@energy_bar_button = button
$USE_ENERGY_BAR = false
else
@energy_bar_button = 0
$USE_ENERGY_BAR = true
end
end
alias denis_kyznetsov_energy_bar_scn_map_update update
def update
denis_kyznetsov_energy_bar_scn_map_update
if @create_energy_bar_window != nil # если у нас есть окно на экране
if !Energy_Bar_Settings::ENERGY_BAR_BUTTON.is_a?(Integer) # если кнопка используется
if Input.trigger?(Energy_Bar_Settings::ENERGY_BAR_BUTTON) # если нажата кнопка
# явно указываем, что хотим видеть окно на экране (не будет испаряться)
@fix_show_energy_bar_window = !@create_energy_bar_window.visible
@create_energy_bar_window.opacity = 255
@create_energy_bar_window.contents_opacity = 255
@create_energy_bar_window.visible = !@create_energy_bar_window.visible
end
end
if @energy_bar_button.is_a?(Symbol) # если у нас символ кнопки
if Input.press?(@energy_bar_button) # если жмем кнопку
if !@fix_show_energy_bar_window # если разрешено испаряться
@create_energy_bar_window.opacity += 15
@create_energy_bar_window.contents_opacity += 15
@create_energy_bar_window.visible = true
end
# изменяем шкалу
@energy_bar_inverse == false ? decrease_value_energy_bar : increase_value_energy_bar
else # Input.press?(@energy_bar_button)
# изменяем шкалу
@energy_bar_inverse == false ? increase_value_energy_bar : decrease_value_energy_bar
if !@fix_show_energy_bar_window # если разрещено испаряться
@create_energy_bar_window.opacity -= 10
@create_energy_bar_window.contents_opacity -= 10
if @create_energy_bar_window.opacity <= 0
@create_energy_bar_window.opacity = 0
@create_energy_bar_window.contents_opacity = 0
@create_energy_bar_window.visible = false
end
end
end
else # if @energy_bar_button.is_a?(Symbol)
if $USE_ENERGY_BAR # если у нас автоматическое использование
@energy_bar_inverse == false ? decrease_value_energy_bar : increase_value_energy_bar
else
@energy_bar_inverse == false ? increase_value_energy_bar : decrease_value_energy_bar
end
end
end
end
def dispose_energy_bar_window
@create_energy_bar_window.dispose
@create_energy_bar_window = nil
end
def increase_value_energy_bar
@create_energy_bar_window.now += @energy_bar_restore_speed
if @create_energy_bar_window.now >= @create_energy_bar_window.max
@create_energy_bar_window.now = @create_energy_bar_window.max
end
end
def decrease_value_energy_bar
@create_energy_bar_window.now -= @energy_bar_use_speed
if @create_energy_bar_window.now <= 0
@create_energy_bar_window.now = 0
end
end
end
class Energy_Bar_Window < Window_Base
include Energy_Bar_Settings
attr_accessor :text
attr_accessor :now
attr_accessor :max
def initialize(text, max, color, inverse)
@text = text # текст первой строчки
@max = max # максимальное значение шкалы
@now = inverse ? 0 : max # текущее значение шкалы
@color = color # цвет шкалы
super(ENERGY_BAR_WINDOW_X, ENERGY_BAR_WINDOW_Y, ENERGY_BAR_WINDOW_WIDTH, ENERGY_BAR_WINDOW_HEIGHT)
end
def draw_rect
rect = Rect.new
rect.x = 0
rect.y = 0
rect.width = contents_width
rect.height = 24
rect
end
def update
super
contents.clear
rect = draw_rect
draw_text(rect, @text, 1)
rect.y += rect.height
rect.width = @now * contents_width/@max
rect.height = 16
contents.fill_rect(rect, text_color(@color))
rect.y -= 4
rect.width = contents_width
rect.height = 24
text = USE_ENERGY_BAR_WINDOW_PERCENT ? (((@now/@max * 100).to_i).to_s + "%") : (@now.to_i.to_s + " / " + @max.to_i.to_s)
draw_text(rect, text, 1)
end
end
class Game_Interpreter
def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse = false, button = -1)
return if !SceneManager.scene.is_a?(Scene_Map)
SceneManager.scene.start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, button)
end
def use_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil
$USE_ENERGY_BAR = true
end
def dont_use_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil
$USE_ENERGY_BAR = false
end
def change_use_energy_bar(flag)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil
$USE_ENERGY_BAR = flag
end
def check_energy_bar
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil
value = SceneManager.scene.create_energy_bar_window.now.to_i
type = SceneManager.scene.energy_bar_inverse ? SceneManager.scene.create_energy_bar_window.max.to_i : 0
return value == type ? true : false
end
def check_value_energy_bar
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil
return SceneManager.scene.create_energy_bar_window.now.to_i
end
def dispose_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil
SceneManager.scene.dispose_energy_bar_window
end
end |
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77714
|
Немного не так сделал)
start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse = false, button = -1) def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, button) def start_new_energy_bar(text, max, use_speed, restore_speed, color, button = -1, inverse = false) Да и у кнопки приоритет выше. Но моя правка опять таки ИМХО) |
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77724
|
Новая версия 1.2
Что нового: Скриншоты Скрипт ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin
###############################################################################
# #
# Восстанавливающаяся полоса #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 1.2
Релиз от: 03.02.15
Инструкция:
используйте вызов скрипта, чтобы создать полосу:
start_new_energy_bar(text, max, use_speed, restore_speed, color, button = -1, inverse = false)
text - текст
max - максимальное значение
use_speed - скорость убывания шкалы
restore_speed - скорость восстановления шкалы
color - цвет полосы (используется цвет текста)
button - символ клавиши, которая отвечает за уменьшение шкалы (когда вы ее жмете),
вы можете не использовать клавишу (просто не указывайте ничего)
inverse - true/false - инвентирование полосы (увеличение значения вместо уменьшения)
Если вы не используете клавишу для изменения шкалы, то вызывайте слудеющие скрипты:
use_energy_bar(index) - чтобы уменьшать шкалу (index - индекс полосы)
dont_use_energy_bar(index) - чтобы восстановить шкалу
change_use_energy_bar(index, flag) - чтобы явно указать, что делать со шкалой
flag = true/false (уменьшать/восстановить)
index - индекс полосы
Изменение шкалы:
change_energy_bar_parameter(index, type, value)
type - символ, что менять
Возможно - :text, :max, :now, :use_speed, :restore_speed, :color, :button, :inverse
Проверка шкалы:
check_energy_bar(index) - вернет true, если шкала = 0, иначе false
check_value_energy_bar(index) - вернет текущее значение шкалы
Уничтожение:
dispose_one_energy_bar(index) - убрать конкретную полосу
dispose_all_energy_bar - убрать все полосы
=end
module Energy_Bar_Settings
# координата X окна
ENERGY_BAR_WINDOW_X = 0
# координата Y окна
ENERGY_BAR_WINDOW_Y = 0
# Ширина окна
ENERGY_BAR_WINDOW_WIDTH = 200
# Отображать проценты вместо текущего значения ?
USE_ENERGY_BAR_WINDOW_PERCENT = false
# Использовать минимальный стиль отображения полосы ?
USE_MINIMAL_WINDOW_STYLE = true
# Кнопка показа/скрытия окна
# -1, чтобы не использовать
ENERGY_BAR_BUTTON = :Z
end
$ENERGY_BAR_ARRAY = []
$imported = {} if $imported.nil?
$imported["DenKyz_EnergyBar"] = true
class Scene_Map < Scene_Base
attr_reader :create_energy_bar_window
attr_accessor :fix_show_energy_bar_window
alias denis_kyznetsov_energy_bar_scn_map_start start
def start
@create_energy_bar_window = nil
# если false, то окно испаряется, если восстанавливается (при клавише)
# если true, то пользователь явно указывает, что хочет видеть окно на экране
@fix_show_energy_bar_window = false
create_energy_bar if !$ENERGY_BAR_ARRAY.empty? # создаем окно, если есть полосы
denis_kyznetsov_energy_bar_scn_map_start
end
def create_energy_bar
@create_energy_bar_window = Energy_Bar_Window.new
@fix_show_energy_bar_window = true
end
def start_new_energy_bar(text, max, use_speed, restore_speed, color, button, inverse)
$ENERGY_BAR_ARRAY.push({ :text => text, :max => max, :now => inverse ? 0 : max, :use_speed => use_speed, :restore_speed => restore_speed,
:color => color, :button => button, :inverse => inverse, :auto => button.is_a?(Symbol) ? false : true })
if @create_energy_bar_window == nil
create_energy_bar
else
@create_energy_bar_window.change_window_height
end
end
def energy_bar_array_update
$ENERGY_BAR_ARRAY.each do |index|
next if index == nil
if index[:button].is_a?(Symbol) # если у нас символ кнопки
if Input.press?(index[:button]) # если жмем кнопку
if !@fix_show_energy_bar_window # если разрешено испаряться
@create_energy_bar_window.opacity += 15
@create_energy_bar_window.contents_opacity += 15
@create_energy_bar_window.visible = true
end
index[:inverse] == false ? decrease_value_energy_bar(index) : increase_value_energy_bar(index)
else # Input.press?(index[:button])
if !@fix_show_energy_bar_window # если разрещено испаряться
@create_energy_bar_window.opacity -= 10
@create_energy_bar_window.contents_opacity -= 10
if @create_energy_bar_window.opacity <= 0
@create_energy_bar_window.opacity = 0
@create_energy_bar_window.contents_opacity = 0
@create_energy_bar_window.visible = false
end
end
index[:inverse] == false ? increase_value_energy_bar(index) : decrease_value_energy_bar(index)
end
else # if index[:button].is_a?(Symbol)
if index[:auto] # если у нас автоматическое использование
index[:inverse] == false ? decrease_value_energy_bar(index) : increase_value_energy_bar(index)
else
index[:inverse] == false ? increase_value_energy_bar(index) : decrease_value_energy_bar(index)
end
end # if index[:button].is_a?(Symbol)
end # $ENERGY_BAR_ARRAY.each do |index|
end
alias denis_kyznetsov_energy_bar_scn_map_update update
def update
denis_kyznetsov_energy_bar_scn_map_update
if @create_energy_bar_window != nil # если у нас есть окно на экране
if !Energy_Bar_Settings::ENERGY_BAR_BUTTON.is_a?(Integer) # если кнопка используется
if Input.trigger?(Energy_Bar_Settings::ENERGY_BAR_BUTTON) # если нажата кнопка
# явно указываем, что хотим видеть окно на экране (не будет испаряться)
@fix_show_energy_bar_window = !@create_energy_bar_window.visible
@create_energy_bar_window.opacity = 255
@create_energy_bar_window.contents_opacity = 255
@create_energy_bar_window.visible = !@create_energy_bar_window.visible
end
end
energy_bar_array_update
end
end
def dispose_one_energy_bar(index)
$ENERGY_BAR_ARRAY[index] = nil
$ENERGY_BAR_ARRAY = $ENERGY_BAR_ARRAY.compact
return dispose_energy_bar_window if $ENERGY_BAR_ARRAY.empty?
@create_energy_bar_window.change_window_height
end
def dispose_energy_bar_window
$ENERGY_BAR_ARRAY.clear
@create_energy_bar_window.dispose
@create_energy_bar_window = nil
end
def increase_value_energy_bar(index)
index[:now] += index[:restore_speed]
index[:now] = index[:max] if index[:now] >= index[:max]
end
def decrease_value_energy_bar(index)
index[:now] -= index[:use_speed]
index[:now] = 0 if index[:now] <= 0
end
end
class Energy_Bar_Window < Window_Base
include Energy_Bar_Settings
def initialize
@optimal_window_height = 72
@optimal_window_height = 48 if USE_MINIMAL_WINDOW_STYLE
super(ENERGY_BAR_WINDOW_X, ENERGY_BAR_WINDOW_Y, ENERGY_BAR_WINDOW_WIDTH, @optimal_window_height)
change_window_height
end
def draw_rect
rect = Rect.new
rect.x = 0
rect.y = 0
rect.width = contents_width
rect.height = 24
rect
end
def change_window_height
# с одной полосой окно занимает 72 при стандартной отрисовке (24 на отступы + 48 на содержимое)
self.height = @optimal_window_height + ($ENERGY_BAR_ARRAY.size - 1) * (@optimal_window_height - 2 * standard_padding)
create_contents
end
def update
super
contents.clear
i = 0
$ENERGY_BAR_ARRAY.each do |index|
next if index == nil
rect = draw_rect # получаем rect для текста
rect.y += i * (@optimal_window_height - 2 * standard_padding) # i-ой полосы
if USE_MINIMAL_WINDOW_STYLE # рисуем текст
draw_text(rect, index[:text])
else
draw_text(rect, index[:text], 1)
end
if USE_MINIMAL_WINDOW_STYLE # рисуем полосу
rect.x = contents_width/2
rect.y += 4
rect.width = index[:now] * (contents_width - rect.x)/index[:max]
else
rect.y += rect.height
rect.width = index[:now] * contents_width/index[:max]
end
rect.height = 16
contents.fill_rect(rect, text_color(index[:color]))
# рисуем значение
rect.y -= 4
rect.width = contents_width
rect.height = 24
text = USE_ENERGY_BAR_WINDOW_PERCENT ? (((index[:now]/index[:max] * 100).to_i).to_s + "%") : (index[:now].to_i.to_s + "/" + index[:max].to_i.to_s)
if USE_MINIMAL_WINDOW_STYLE
rect.x = 0
draw_text(rect, text, 2)
else
draw_text(rect, text, 1)
end
i += 1
end # $ENERGY_BAR_ARRAY.each do |index|
end
end # class Energy_Bar_Window < Window_Base
class Game_Interpreter
def start_new_energy_bar(text, max, use_speed, restore_speed, color, button = -1, inverse = false)
return if !SceneManager.scene.is_a?(Scene_Map)
SceneManager.scene.start_new_energy_bar(text, max, use_speed, restore_speed, color, button, inverse)
end
def change_energy_bar_parameter(index, type, value)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil || $ENERGY_BAR_ARRAY.empty?
$ENERGY_BAR_ARRAY[index][type] = value
$ENERGY_BAR_ARRAY[index][:auto] = true if type == :button && !value.is_a?(Symbol)
end
def use_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil || $ENERGY_BAR_ARRAY.empty?
$ENERGY_BAR_ARRAY[index][:auto] = true
end
def dont_use_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil || $ENERGY_BAR_ARRAY.empty?
$ENERGY_BAR_ARRAY[index][:auto] = false
end
def change_use_energy_bar(index, flag)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil || $ENERGY_BAR_ARRAY.empty?
$ENERGY_BAR_ARRAY[index][:auto] = flag
end
def check_energy_bar(index)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil || $ENERGY_BAR_ARRAY.empty?
value = $ENERGY_BAR_ARRAY[index][:now].to_i
type = $ENERGY_BAR_ARRAY[index][:inverse] ? $ENERGY_BAR_ARRAY[index][:max].to_i : 0
return value == type ? true : false
end
def check_value_energy_bar(index)
return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil || $ENERGY_BAR_ARRAY.empty?
return $ENERGY_BAR_ARRAY[index][:now].to_i
end
def dispose_one_energy_bar(index)
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil || $ENERGY_BAR_ARRAY.empty?
SceneManager.scene.dispose_one_energy_bar(index)
end
def dispose_all_energy_bar
return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window == nil
SceneManager.scene.dispose_energy_bar_window
end
end # class Game_Interpreter
module DataManager
class << self
alias denis_kyznetsov_energy_bar_dt_mngr_make_save_contents make_save_contents
def make_save_contents
contents = denis_kyznetsov_energy_bar_dt_mngr_make_save_contents
contents[:ENERGY_BAR_ARRAY] = $ENERGY_BAR_ARRAY
contents
end
alias denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents extract_save_contents
def extract_save_contents(contents)
denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents(contents)
$ENERGY_BAR_ARRAY = contents[:ENERGY_BAR_ARRAY]
end
end
end # module DataManager |
Последнее редактирование: 10 года 1 мес. назад от DK. Причина: Скриншоты
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77729
|
Спасибо поставил, а правку не внес)
Ну да ладно, не критично. |
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77731
|
Как не внес? После color идёт button, затем inverse
|
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77740
|
Я про то, что в методе можно сделать заранее готовое значение, и если последний\ие параметр не обязательно указывать.
Пример: start_new_energy_bar(text, max, use_speed, restore_speed, color) Создаст окно, без воздействия, не инвертированное start_new_energy_bar(text, max, use_speed, restore_speed, color, button = :С) Тоже что выше, но есть кнопка. start_new_energy_bar(text, max, use_speed, restore_speed, color, button = :C, inverse = true) И кнопка есть, и инвертирует. Просто в коде сделать: def start_new_energy_bar(text, max, use_speed, restore_speed, color, button = -1, inverse = false) |
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77741
|
дык посмотри class Game_Interpreter...
там и есть: def start_new_energy_bar(text, max, use_speed, restore_speed, color, button = -1, inverse = false) |
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77744
|
А в сцен_мап нет
|
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77745
|
ну, а там и не надо. Там вызывается через Interpreter
|
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77746
|
Тогда допиши, раз клавишу не обязательно указывать, параметр инверт тоже не нужен.
Инверт же только при нажатии кнопки срабатывает? |
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77747
|
inverse отвечает в какую сторону движется полоса. в режиме false движется влево на убывание значение, true - наоборот. Клавиша тут никак не влияет. Клавиша только влияет на изменение значения при ее нажатии, а в автоматическом режиме это происходит само (как было сказано выше - эдакий таймер). Восстановление полосы в автоматическом режиме происходит с помощью вызова скрипта (в шапке все скрипты указаны)
|
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 10 года 1 мес. назад #77760
|
Я скрипт еще не пробовал, но на днях мысль о чем-то подобном была. Спасибо, пригодится. Единственное, было бы еще круто сделать что-то типа кастом режима, т.е. при выборе обычного режима все работает как на скрине с кучей полос. А в кастомном, можно было бы делать окно прозрачным, оставляя только полосы и надписи, а эти полосы каждую расставлять по экрану в ручном режиме.
|
Последнее редактирование: 10 года 1 мес. назад от sinder.
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 9 года 11 мес. назад #79742
|
|
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 9 года 11 мес. назад #79743
|
Обновил скрипт в шапке, так как не все читают тему.
Демий, ты же знаешь, что строковые переменные оборачивают в кавычки? |
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
|
Восстанавливающаяся полоса 9 года 11 мес. назад #79744
|
|
Последнее редактирование: 9 года 11 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.
|
Модераторы: NeKotZima
Время создания страницы: 0.562 секунд