Войти на сайт

Авторизация, ждите ...
×

ТЕМА: [MV] Custom Progress Bar - есть ли такой ?

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87859

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

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87868

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Мастер
  • Сообщений: 101
  • Спасибо получено: 346
Netral, можешь дать ссылку на скрипт для ACE?
Посмотрю что да как. Может его можно быстро переписать для MV.
Администратор запретил публиковать записи гостям.

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87878

  • Netral
  • Netral аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 76
  • Спасибо получено: 18
Пробовал искать этот скрипт с шкалой под Ace в инете, но не нашёл. Сам его выдрал из какой-то японской игры.
Вот скрипт:
# 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

Как по мне, скрипт довольно прост.
Администратор запретил публиковать записи гостям.

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87888

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Мастер
  • Сообщений: 101
  • Спасибо получено: 346
Netral, по коду скрипта, который ты скинул. Он рисует шкалу, но только в сцене битвы. Управляется при помощи команд скрипта, а не при помощи кнопок. Это то что тебе нужно?

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

Может он больше подходит для твоих нужд.
Администратор запретил публиковать записи гостям.

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87904

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

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87919

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Мастер
  • Сообщений: 101
  • Спасибо получено: 346
Хорошо.
Переписал скрипт для MV, отвязал от сцены боя, можно в любой сцене создавать.
Заменил вызов скриптов на вызов команд плагина. Сами команды плагина в описании.

Плагин
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Netral, Lucin

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87934

  • Netral
  • Netral аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 76
  • Спасибо получено: 18
Спасибо. Скрипт тот что нужен, но из-за отсутсвия некоторых функций оказался менее гибким.
Я в нём не увидел привязки к переменной и создания текста над шкалой.
В старом скрипте с помощью таких вот команд скрипта можно было это сделать.
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%.

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

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87946

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Мастер
  • Сообщений: 101
  • Спасибо получено: 346
Немного доработал скрипт под твои нужды.

Если тебе нужно чтобы полоса прогресса автоматически менялась в зависимости от переменной, то вот
пример:
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

[MV] Custom Progress Bar - есть ли такой ? 8 года 4 мес. назад #87952

  • Netral
  • Netral аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 76
  • Спасибо получено: 18
Спасибо. Буквально то что нужно. В самом коде я разобрался и более его дорабатывать не надо. Осталось только в играх применить, но думаю с этим проблем не будет.
Этож сколько надо этим JavaScript заниматься, чтобы так просто скрипты писать ? Наверное очень долго.
Ещё раз Большое спасибо!
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: KageDesu
Модераторы: NeKotZima
Время создания страницы: 0.256 секунд