[MV] Custom Progress Bar - есть ли такой ?

Больше
10 года 5 мес. назад #87859 от Netral
Нужен скрипт, который бы рисовал что-то вроде шкалы, которая заполнялась бы от нажатие клавиши. Такой скрипт есть для Ace, называется Windows Gauge или как-то так, но аналогов в MV я не нашёл.Сам скрипт был прост в применение и завязывался на переменных. Даже текст над шкалой написать можно было. Очень полезная вещь при создание интерактива.
Но сколько я не исследовал инет, нечто подобное для MV не находил, хотя сам скрипт должен быть вроде простой.
Может кто находил нечто подобное ?
Спасибо сказали: RastaManGames, TheMaximGames

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87868 от KageDesu
Netral, можешь дать ссылку на скрипт для ACE?
Посмотрю что да как. Может его можно быстро переписать для MV.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87878 от Netral
Пробовал искать этот скрипт с шкалой под Ace в инете, но не нашёл. Сам его выдрал из какой-то японской игры.
Вот скрипт:
Code:
# Window_Gauge (2013/ 1/ 9) #______________________________________________________________________________ module FreeGauge # 色の指定 ( Color.new(R,G,B) または \C[n] の n (数値) で指定 ) COLOR1 = Color.new(165, 156, 245) # 左端の色 COLOR2 = Color.new(73, 55, 236) # 右端の色 FILLED_COLOR = Color.new(73, 55, 236) # 満タン時の色 end #______________________________________________________________________________ class Game_Interpreter def draw_gauge(r, x = nil, y = nil, z = nil) scene = SceneManager.scene return unless scene.is_a?(Scene_Battle) window = scene.gauge_window window.x = x if x window.y = y if y window.z = z if z window.gauge_rate = r end #-------------------------------------------------------------------------- def show_gauge scene = SceneManager.scene return unless scene.is_a?(Scene_Battle) scene.gauge_window.show end #-------------------------------------------------------------------------- def hide_gauge scene = SceneManager.scene return unless scene.is_a?(Scene_Battle) scene.gauge_window.hide end #-------------------------------------------------------------------------- def change_gauge_color(color, i) scene = SceneManager.scene return unless scene.is_a?(Scene_Battle) case i when 1; scene.gauge_window.gauge_color1 = color when 2; scene.gauge_window.gauge_color2 = color when 3; scene.gauge_window.filled_color = color end end end class Window_Gauge < Window_Base attr_reader :gauge_rate attr_writer :gauge_color1 attr_writer :gauge_color2 attr_writer :filled_color def initialize(x = 0, y = 0, width = 160, height = 48) super self.hide.opacity = 0 @gauge_rate = 0.0 @gauge_color1 = FreeGauge::COLOR1.clone @gauge_color2 = FreeGauge::COLOR2.clone @filled_color = FreeGauge::FILLED_COLOR.clone end #-------------------------------------------------------------------------- def gauge_rate=(r) return if @gauge_rate == r @gauge_rate = r refresh end #-------------------------------------------------------------------------- def gauge_color1 return filled_color if @gauge_rate >= 1.0 return text_color(@gauge_color1) if @gauge_color1.is_a?(Integer) return @gauge_color1 end #-------------------------------------------------------------------------- def gauge_color2 return filled_color if @gauge_rate >= 1.0 return text_color(@gauge_color2) if @gauge_color2.is_a?(Integer) return @gauge_color2 end #-------------------------------------------------------------------------- def filled_color return text_color(@filled_color) if @filled_color.is_a?(Integer) return @filled_color end #-------------------------------------------------------------------------- def refresh contents.clear draw_gauge(0, 0, contents_width, gauge_rate, gauge_color1, gauge_color2) end end class Scene_Battle < Scene_Base attr_reader :gauge_window alias window_gauge__create_all_windows create_all_windows def create_all_windows window_gauge__create_all_windows @gauge_window = Window_Gauge.new end end

Как по мне, скрипт довольно прост.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87888 от KageDesu
Netral, по коду скрипта, который ты скинул. Он рисует шкалу, но только в сцене битвы. Управляется при помощи команд скрипта, а не при помощи кнопок. Это то что тебе нужно?

Вот такой ещё есть скрипт для ACE: Восстанавливающаяся полоса .

Может он больше подходит для твоих нужд.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87904 от Netral
Ну да. В моём случаи изменялась переменная из-за нажатия клавиши, а это уже в событии прописанно было. Я забыл совсем, как скрипт использовался. Там переменная указывалась в команде и через неё высчитывалось количество.
Самое полезное, что скрипт показывал количество в процентах, а не в точных единицах. Правда то, что он работает только в сценах битвы, сужает его полезность.
Скрипт " Восстанавливающаяся полоса" тоже хорош, но он заточен под определённые цели и для него многовато настроек надо будет делать.
Для моих целей больше подходит мой скрипт, так как он более гибок. Было бы здорово, если бы он не только в сценах битвы шкалу рисовал. Вот только его нигде не найти для MV.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87919 от KageDesu
Хорошо.
Переписал скрипт для MV, отвязал от сцены боя, можно в любой сцене создавать.
Заменил вызов скриптов на вызов команд плагина. Сами команды плагина в описании.

Плагин
Спасибо сказали: Netral, Lucin

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87934 от Netral
Спасибо. Скрипт тот что нужен, но из-за отсутсвия некоторых функций оказался менее гибким.
Я в нём не увидел привязки к переменной и создания текста над шкалой.
В старом скрипте с помощью таких вот команд скрипта можно было это сделать.
Code:
r = $game_variables[6] / 100.0 draw_gauge(r, 200, 30) show_gauge $window.create_contents text1 = $game_variables[6] text2 = "%" $window.draw_text(4,0,100,24,text1) $window.draw_text(32,0,100,24,text2)

Как видно из команд, переменная r приравнивалась к игровой переменной и делилась на 100, а потом уже рисовалась сама шкала. При этом, если игровая переменная менялась, то менялась и r. Соответственно шкала либо заполнялась, либо наоборот становилась постепенно пустой. Либо вообще останавливалась на одном значении, если такое прописанно в событии. Но чтобы такой скрипт работал, приходилось эти команды писать в событие цикла, который происходил мгновенно. При всём при этом точность шкалы была до 1%.

Так вот вопрос: В твоём скрипте можно использовать подобные команды скрипта(если они вообще есть) или для вышеописанного результата потребуется дорабатывать весь код скрипта ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87946 от KageDesu
Немного доработал скрипт под твои нужды.

Если тебе нужно чтобы полоса прогресса автоматически менялась в зависимости от переменной, то вот
пример:
CP draw 0 10 20 - создаём progressBar со значением 0 в координатах (10,20)
CP set 6 6 % - progressBar будет брать значение из переменной номер 6, текст тоже из 6 и дописывать % к тексту.
CP auto - progressBar будет обновляться автоматически, когда значение в заданных выше переменных будет меняться.
CP show - показать progressBar на экране.

Теперь только осталось менять значение переменных и прогресс будет меняться.

Заместо команды CP set 6 6 %, можно задать эти параметры в настройках плагина, но CP auto обязательно нужно вызвать командой.

Код не особо сложный, если что, думаю уже сам сможешь подправить.

Обновлённый скрипт по ссылке в моём посте выше.
Спасибо сказали: Netral, Ren310

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 года 5 мес. назад #87952 от Netral
Спасибо. Буквально то что нужно. В самом коде я разобрался и более его дорабатывать не надо. Осталось только в играх применить, но думаю с этим проблем не будет.
Этож сколько надо этим JavaScript заниматься, чтобы так просто скрипты писать ? Наверное очень долго.
Ещё раз Большое спасибо!
Спасибо сказали: KageDesu

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.108 секунд
Работает на Kunena форум