Плохо! Плохо!:  0
Показано с 1 по 4 из 4

Тема: Полоса энергии (Energy Bar)

  1. #1

    По умолчанию Полоса Энергии (Energy Bar)

    Полоса Энергии
    Автор: Я (Денис Кузнецов)
    Версия: 1.43 от 03.07.15
    Тип: Добавляющий возможности

    Особенности:
    • Можно использовать клавишу для уменьшения значения полосы
    • Возможность использовать разные цвета для полосы (используются цвета текста)
    • Если не используйте клавишу, то шкала будет автоматически уменьшаться
    • Возможность проверять состояние шкалы (текущее значение и равенство 0) и разные другие функции (см. шапку скрипта)


    Демо 1.41: Яндекс.диск

    Использование:
    Вся инструкция и настройки в шапке скрипта!

    Скрипт 1.43:
    Спойлер Код:
    Код:
    =begin
    ###############################################################################
    #                                                                             #
    #          					Восстанавливающаяся полоса (Energy Bar)   	              #
    #                                                                             #
    ###############################################################################	
    	
    Автор: Денис Кузнецов (http://vk.com/id8137201)
    Группа ВК: https://vk.com/scriptsrpgmakervxace
    Версия: 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
    Последний раз редактировалось DK; 22.08.2015 в 13:43.

  2. #2
    Маститый Аватар для Seibur
    Информация о пользователе
    Регистрация
    07.01.2012
    Адрес
    Изумрудный город
    Сообщений
    1,206
    Записей в дневнике
    3
    Репутация: 58 Добавить или отнять репутацию

    По умолчанию

    А будет ли в последующих версиях возможность создания круглой шкалы?
    Прохлада и спокойствие мне вполне по душе

    Спойлер :

    き っ と 、 女 の 子 は お 砂 糖 と ス パ イ ス と 素 敵 な 何 か で で き て い る。

  3. #3

    По умолчанию

    Цитата Сообщение от Seibur Посмотреть сообщение
    А будет ли в последующих версиях возможность создания круглой шкалы?
    Возможно, но с использованием файлов графики.

  4. #4
    Маститый Аватар для Seibur
    Информация о пользователе
    Регистрация
    07.01.2012
    Адрес
    Изумрудный город
    Сообщений
    1,206
    Записей в дневнике
    3
    Репутация: 58 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Subzeroy Посмотреть сообщение
    Возможно, но с использованием файлов графики.
    Замечательно. Могу предложить вам посмотреть аналог вашего скрипта, возможно вы что-то оттуда почерпнете или вдохновитесь)
    http://forums.rpgmakerweb.com/index....-kuro-any-bar/
    Прохлада и спокойствие мне вполне по душе

    Спойлер :

    き っ と 、 女 の 子 は お 砂 糖 と ス パ イ ス と 素 敵 な 何 か で で き て い る。

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Полоса энергии (Energy Bar)