[VX Ace] Радиокнопки в списках

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 3 мес. назад - 9 года 2 мес. назад #95772 от DeadElf79
Радиокнопки в списках
de79 radio selectables

Информация:
Автор: DeadElf79
Версия: 1.2

Описание:
Позволяет использовать иконки для выбора вместо прямоугольника.
Раскрывающий суть скриншот:


Установка:
  1. ставим скрипт как обычно
  2. в модуле De79Radios ставим следующее:
    ICON_DRAW_RADIO = № иконки из иконсета, которая будет использоваться, когда элемент выделен
    ICON_THROW_RADIO = № иконки, которая будет использоваться, когда элемент не выделен.

Демо:
Скачать архив ZIP (1,31 МБ)

Скриншот:
ВНИМАНИЕ: Спойлер!


Код:
Code:
# de79 radio selectables # version: 1.2 module De79Radios # № иконки из иконсета, которая будет использоваться, когда элемент выделен ICON_DRAW_RADIO = 3 # № иконки, которая будет использоваться, когда элемент не выделен ICON_THROW_RADIO = 2 end class Window_Selectable alias de79radios_initialize initialize def initialize(x, y, width, height) de79radios_initialize(x, y, width, height) @last_index = @index end def radio_offset 26 end def draw_radio_icon De79Radios::ICON_DRAW_RADIO end def throw_radio_icon De79Radios::ICON_THROW_RADIO end alias de79radios_item_rect item_rect def item_rect(index) rect = de79radios_item_rect(index) rect.x += radio_offset rect end def update_cursor if @cursor_all draw_all_radios self.top_row = 0 elsif @index < 0 throw_all_radios else ensure_cursor_visible throw_radio( item_rect( @last_index ) ) draw_radio( item_rect(@index) ) @last_index = @index end end def draw_all_radios item_max.times do |index| draw_radio( item_rect( index ) ) end end def throw_all_radios item_max.times do |index| throw_radio( item_rect( index ) ) end end def clear_all_radios item_max.times do |index| clear_radio( item_rect( index ) ) end end def draw_radio( rect ) rx = rect.x - radio_offset ry = rect.y clear_rect = Rect.new( rx, ry, 24, 24 ) contents.clear_rect( clear_rect ) icon = draw_icon( draw_radio_icon, rx, ry ) end def throw_radio( rect ) rx = rect.x - radio_offset ry = rect.y clear_rect = Rect.new( rx, ry, 24, 24 ) contents.clear_rect( clear_rect ) icon = draw_icon( throw_radio_icon, rx, ry ) end def clear_radio( rect ) rx = rect.x - radio_offset ry = rect.y clear_rect = Rect.new( rx, ry, 24, 24 ) contents.clear_rect( clear_rect ) end alias de79radios_activate activate def activate refresh de79radios_activate end alias de79radios_deactivate deactivate def deactivate clear_all_radios de79radios_deactivate end alias de79radios_refresh refresh def refresh de79radios_refresh throw_all_radios update_cursor end end class Window_HorzCommand alias de79radios_horz_item_rect item_rect def item_rect(index) rect = de79radios_horz_item_rect(index) rect.x += radio_offset rect end def alignment return 0 end end
Последнее редактирование: 9 года 2 мес. назад пользователем DeadElf79.
Спасибо сказали: DK, caveman, Демий, Amphilohiy, Paranoid

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

Больше
9 года 3 мес. назад #95774 от Paranoid
В предметах и экипировке не видно первой иконки.

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

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

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 3 мес. назад - 9 года 3 мес. назад #95775 от DK

Paranoid пишет: В предметах и экипировке не видно первой иконки.

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


Насколько я помню для предметов специальный класс Window_ItemList или как-то так и в нем своя прорисовка "команд". Наверное, тоже самое и с сохранениями.

P.S. Может мне такое же на мв замутить :laugh:

P.S.S. А, неправильно прочитал коммент. Если не видно только первой, то там скорее всего пустой предмет ?
Последнее редактирование: 9 года 3 мес. назад пользователем DK.

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 3 мес. назад #95788 от DeadElf79
В предметах и экипировке, насколько я помню, используются дети класса Window_HorzCommand, с которым как раз могут возникуть такие проблемы. Поправлю, когда доберусь.

В сохранениях вообще используется не список в одно окно, а десяток отдельных окон. Тут не буду править, потому что мало ли у кого какие скрипты на экран сохранения. С нестандартными должно работать на ура.

Дк, замути, реализация несложная, как видишь)

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

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
9 года 3 мес. назад #95789 от DK
Точно не HorzCommand. HorzCommand для категорий используется. Это же горизонтальное непрокручивающееся окно

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 3 мес. назад #95793 от DeadElf79
ДК, ты, кажись, запутался в классах и сценах ^_^ Еще раз перечитай посты.

Отвлекся от проекта, сделал обновление с исправлением ошибок, заодно демку сделал. Демку, скриншоты из нее и код сейчас добавлю в топик.

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

Больше
9 года 3 мес. назад #95805 от Paranoid
Псс, Эльф. Сделай в самом коде объяснялку напротив нужных строк, а то можно и забыть.

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 3 мес. назад #95806 от DeadElf79
Готово, пара комментариев в модуль настроек добавлена.
Спасибо сказали: Paranoid

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 2 мес. назад #96672 от DeadElf79
Сделал небольшое обновленьице, которое выносит настройки из модуля в настройки внутри окна. Теперь вы можете поменять номера иконок глобально для всех окон, но для некоторых окон взять и заменить номера иконок без необходимости писать алиасы под каждое окно, просто скопируйте нужный метод и вставьте свое число вместо De79Radios::ICON_*_RADIO. Не знаю, зачем вам это может быть нужно, но мало ли кто-то решит сделать индивидуальные иконки в каждом окне.

Код в топике и в демке обновлён.

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

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