Изменяем меню на VX ACE
Доброго времени суток.Сегодня я научу вас изменять меню, нет это не будет какое-то качественное изменение, я просто научу вас менять местами объекты меню.
Вступление:
Различают три вида меню, меню статусов (Window_MenuStatus ), меню команд (Window_MenuCommand ) и окно с золотом/монетами ( Window_Gold ), плюс ещё в этой статье я расскажу как изменить положение стартового меню. Думаю всем понятно что простыми ивентами такого не сделать, поэтому аки смелые геологи мы будем бурить скрипты.
ВАЖНО!!!
Дабы всё потом можно было быстро вернуть в первоначальный вид я настоятельно рекомендую вам копировать стандартный скрипт и вставить в графу пользовательские, вот там то мы и будем с ним
извращаться работать.
Основная часть:
Начнём с меню статусов. Наверное многие хотели его изменить, быть может сделать по компактнее или ,скажем, сделать его под 2 или 3 персонажей. Сделать это достаточно просто. И так заходим в мэйкер, открываем редактор скриптов.
Находим там Window_MenuStatus ( находится в разделе «Окна»)
Нашли? Отлично. Нас интересует в нём несколько пунктов:
Object Initialization
В нём нас интересует строка super(x, y, window_width, window_height) . Эта строка позволяет изменить положение статусного меню на экране. Что бы поменять положение окна по горизонтали (т.е. по Х , ага вспоминает координатную прямую) нужно прибавить или отнять число от значения Х, поскольку первоначально окно располагается строго справа, то прибавлять смысла нет, будем отнимать что бы сдвинуть его влево.
Например super(x -160, y, window_width, window_height). Что бы оценить насколько сдвинулось окно рекомендую зайти в мэйкер и вызвать меню.
Get Window Width и Get Window Height
Graphics.width – 160 стандартное значение, отвечает за ширину окна, если хотите сделать его шире то прибавляем значение (растёт окно по Х). На мой взгляд длиннее его делать смысла нет, да и короче тоже.
Graphics.height отвечает за высоту окна (имеется в виду размер), определяет насколько окно будет большое. Мы пока пропустим. Если мы изменим его сейчас иконки героев будут наезжать друг на друга.
(
ВАЖНО!!! Обращаем своё внимание на синтаксис после + или – должен быть пробел)
Get Item Height
(height - standard_padding * 2) / 4 стандартное значение для окна на 4 героев, допустим у нас в партии буде 2 героя , например герой и его тян, смело ставим (height - standard_padding * 2) / 2
Теперь окно делится на 2 героев, но его ещё стоит подогнать по размеру. Возвращаемся к
Graphics.height , что бы сделать его под двух герое сделаем Graphics.height – 194 (обращаем своё внимание на синтаксис)
Теперь окно стало компактное и самое время вернуться к Object Initialization , теперь можно изменить положение окна по горизонтали (по Y) (
ВАЖНО!!! в мэйкере + и - по Y инверсированы т.е. - вверху.) Сделаем его чуть ниже
super(x -160, y +50, window_width, window_height) (
ВАЖНО!!!обаращаем своё вимание на синтаксис, тут уже после минуса и плюса нет пробела)
Draw Item
Тут нас интересует строка draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled) и draw_actor_simple_status(actor, rect.x + 106, rect.y + line_height / 2) С первой думаю всё понятно , она изменяет расположение мордашки героя в меню статусов. Вторая строка отвечает за расположение текста и полосок Hp, Mp и Tp. Давайте изменим их таким образом
draw_actor_face(actor, rect.x + 260, rect.y + 1, enabled)
draw_actor_simple_status(actor, rect.x + 6, rect.y + line_height / 2 - 10)
(
ВАЖНО!!!обратим внимание как отнимается от Y)
Заходим в мэйкер смотрим что получилось. Должно получиться такое.
Переходим к меню команд Window_MenuCommand
Object Initialization
Здесь нас интересует строка super(0, 0) . Изменим её например так super(+384, +50). Думаю из примера понятна как что тут меняется.
Get Window Width
Строка return 160 определяет ширину окна. Лично я в своей игре заменил некоторые названия скажем Экипировка на Экип. Боевой строй на Строй и т.д. и сжал её до 95 , но в данном примере этого не будет. Что касается изменения высоты этого окна, как я понял он определяется автоматически в зависимости от количества строк. А знаете как изменить количество строк ? Я нет. Следующая глава.
Окно с нашими финансами
Window_Gold здесь нас интересует разве что Get Window Width строка return 160 , определяет ширину окна с монетами , как по мне то стандартного окна более чем достаточно , но если хотите что бы у вас и квадриллионы поместились то смело расширяйте. Например так return 260
Положение окна с золотом меняется немного в другом месте, в редакторе скриптов находим раздел «Сцены», там находим
Scene_Menu , в самом скрипте ищем раздел
Create Gold Window , тут нас интересуют две строки
@gold_window.x = 0
@gold_window.y = Graphics.height - @gold_window.height
Меняем их таким образом
@gold_window.x = +384
@gold_window.y = Graphics.height - @gold_window.height – 126
Надеюсь понятно как менять. Запускаем проект и смотрим что получилось
Казалось бы готово, но это далеко не всё. Сейчас дядя Волк насыпет вам пепла в вашу чудесную банку со сгущёнкой. Нам ещё предстоит сделать меню боя под двух персонажей. Но к сожалению 2 персонажа это очень мало, и если мы сделаем такое меню то оно будет несколько неудобным. Вообще меню лучше всего оставить на 4 персонажей. Но в когнетивных целях я всё же это расскажу.
Возвращаемся в редактор скриптов в раздел Окна. Ищем там
Window_PartyCommand (окно команд вначале боя, где сбежать и бой) в нём находим раздел Get Number of Lines to Show и меняем return 4 на return 2 . Про Get Window Width в этом скрипте я уже молчу, это вы уже умеете, хотя по сути тут ничего менять не стоит.
Тоже самое делаете в скриптах
Window_ActorCommand и
Window_BattleStatus. Стоит учесть что окна должны быть пропорциональные, иначе они начнут заезжать за края, то есть например все по 2 или все по 4.
Осталось последнее , скрипт
Window_BattleEnemy (окно где мы выбираем кого атаковать)
Ищем Object Initialization , там super(0, info_viewport.rect.y, window_width, fitting_height(4)) , меняем последнюю четвёрку на то количество строк которое требуется. Так же обратите внимание на раздел Get Digit Count , тут есть строка return 2 , это количество отображаемых врагов в одной строке, я рекомендую изменить с двух до одного, тогда список кого можно атаковать будет отображаться в столбик, на мой взгляд удобнее.
Осталось изменить меню при запуске игры. В разделе «Окна» ищем скрипт
Window_TitleCommand , там раздел Update Window Position и строки
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height * 1.6 - height) / 2
Изменим их например вот так
self.x = (Graphics.width - width) / 2 + 60
self.y = (Graphics.height * 1.6 - height) / 2 – 60
На этом всё. Спасибо за внимание. Всем творческих успехов.
На всякий случай Демо-версия
Здесь
Word файл который вы можете почитать
Тут