Есть множество способов создания главного меню. Рассмотрим пару из них. 1. Меню со своим фоном и созданием контейнера с однообразными кнопками. Почти то же, что и стандартное Ren'Py меню. 2. С использованием метода «Горячих точек» (ImageMap). Но добавление точек происходит иначе.
Метод первый: Создание контейнера с кнопками.
Нужно 3 вещи: 1. Фон 2. Пустая кнопка 3. Пустая наведённая кнопка.
Фон устанавливается стандартно, в options.rpy.
Код
mm_root = "back.png"
.
А для создания кнопок нам желательно иметь 2 кнопки: обычную и наведённую (hover)
Обычная:
Наведённая:
Можно обойтись и одной кнопкой.
Заходим в screens.rpy и опускаемся до 174 строки, далее, если необходимо заменяем код.
Код
screen main_menu: # Это заменяет другие меню. tag menu
textbutton - создание кнопки с текстом, который будет написан поверх неё.. action - действие, происходящее по клику. area(50,10,305,70) - точки координат размещения кнопки и текста на ней. Координаты: Первая точка (50) - расположение кнопки по координате X. Вторая точка (10) - расположение кнопки по координате Y. Третья точка (300) - расположение надписи по координате X. Четвёртая точка (70) - расположение надписи по координате Y.
P.S.S. Ниже, стандартно на 218 строке, необходимо удалить/исключить из кода следующие строки:
Код
init -2 python: style.mm_button.size_group = "mm"
ground "mmo.png" - обычное фоновое изображение. hover "mmh.png" - изображение с отличающейся областью выделения. alpha True - разрешает прозрачность (альфа-канал). hotspot - создание новой «Горячей точки». (262, 117, 497, 68) - координаты «Горячей точки». Вычисляются иначе, чем в обычном ImageMap. action - действие, которое происходит, по клику на выделенную область (горячую точку).
Вычисление координат: 1.Закидываем изображения в папку game, можно создавать свои папки, но не выше game. 2.Заходим в Ren'Py . 3. Запускаем свой проект. 4. Нажимаем комбинацию клавиш Shift + D (раскладка должна быть на английском).
5. В Developer Menu жмём по Image Location Picker. 6. Выбираем любое из двух нужных изображений.
7. Выделяем нужную область. С верхнего левого угла, до нижнего правого.
8. И в отличие от обычного ImageMap, здесь нам необходимы все четыре точки с Rectangle
9. В итоге получим что-то, вроде (262, 117, 497, 68). Их и необходимо вписать в координаты точки. 10. Повторяем действия 7, 8, 9 для остальных горячих точек.
Но здесь чего-то не хватает. Попробуем добавить летающие полоски, а также какой-нибудь движущейся туман.
Код
screen main_menu: imagemap:
#Добавляем круг, и заставляем его крутится по часовой стрелки. add "mm/poe4.png" at RotoZoom(0, 360, 10, 50, 1, 1, rot_repeat=True, rot_anim_timebase=True, opaque=False, xalign=-0.07, yalign=0.18)
P.S.S.S. При использовании второго метода, после первого запуска проекта, в папке game, создастся папка cache. В ней находятся вырезанные выделенный области. Если у вас не абсолютно прямоугольные области, файл, лежащий в данной папке можно подредактировать, стерев в нём всю область, которая лишняя в горячей точки. К примеру я стёр области с левой стороны "кнопок", ибо они у меня не идеально-прямоугольные. В итоге получилась не прямоугольная область. Но если бы я не отредактировал файл, было бы примерно так:
И помните, встречают по одежке, не игнорируйте главное меню. Это практически первое, что видит игрок, и оно является лицом вашей визуальной новеллы. Так что, создайте поистине уникальное и прекрасное главное меню.
Ооочень полезная статья :3 Спасибо за информацию! Скажите пожалуйста, а SnowBlossom можно добавить по аналогии с той анимацией, которую ввели вы в примере? И какие параметры ему нужно прописывать? Ведь аналогичный код, вставляемый в саму новеллу, не подойдет..
Как я понимаю, таким же способом и можно Просто к кнопкам приписываются другие действия, их можно из screens.rpy взять Если необходимо, могу расписать всё в подробностях, хотя если вы откроете и посмотрите, то увидите, что там всё прописано по аналогии Единственное что, я не знаю, что делать с ползунками, сама в данный момент ищу решение этой проблемы
Однако ж я полагаю, если меню настроек и сохр./загр. остаются прежними, то в них нужно что то дописать... Иначе кнопка назад в них тупо не работает )))
Таки доступ к компу у меня появился, теперь могу таки написать, как я справилась с нерабочей кнопкой "назад". Не знаю, может у вас это просто не сработает, но у меня рабит вроде) Ладно, перейду к делу. В общем, найдите такую строчку в screen: textbutton _("Назад") action Return() Я в ней поменяла действие Return на ShowMenu("main_menu") в итоге выглядит так: textbutton _("Назад") action ShowMenu("main_menu") Пока работает) Может у этого и свои недочёты есть, но до большего я додумать не смогла, увы Спасибо за терпение)
Эта статья мне не плохо помогла, но теперь возникли проблемы с быстрым меню под диалоговым окном в самой игре. Я знаю, где находятся ее данные, но никак не могу понять, как эти кнопки убрать вообще или переместить в бок.
Немного разобрался со своей проблемой, у меня весь фон главного меню покрывается пеленой цвета ## The color of a frame containing widgets. Может кто-нибудь помочь с этим?
P.S.S. Ниже, стандартно на 218 строке, необходимо удалить/исключить из кода следующие строки: ЧТО ЭТО!? ГДЕ ЭТО!? Я не понимаю сейчас голова в зарвется "Ниже, стандартно" - это rpy файл???
Помогите с кодом я всё испробовал все способы которые знаю. На сайте написано что надо что-то заменить но я не знаю что и где! screen main_menu: tag menu imagemap: ground "mods/Souma Yukihira/menu/Menu_ground.png" hover "mods/Souma Yukihira/menu/Menu_hover.png" alpha True
Про первый метод: Координаты: Первая точка (50) - расположение кнопки по координате X. Вторая точка (10) - расположение кнопки по координате Y. Третья точка (300) - расположение надписи по координате X. Четвёртая точка (70) - расположение надписи по координате Y. На самом деле так: Первая точка (50) - расположение верхней левой вершины кнопки по координате X. Вторая точка (10) - расположение верхней левой вершины кнопки по координате Y. Третья точка (300) - число пикселей которые отступаются вправо. Четвёртая точка (70) - число пикселей которые отступаются вниз. Т. е. последние две точки это размеры кнопки: 3-я по оси Х, 4-я по оси У.
Может быть в статье и имелось ввиду именно это, но я ни черта не понял.
Ребят помогите я пытаюсь сделать Второй метод: Использование «Горячих точек» (ImageMap) screen main_menu: imagemap: ground "mmo.png" hover "mmh.png" alpha True
"При использовании второго метода, после первого запуска проекта, в папке game, создастся папка cache" каким образом можно редактировать файлы в этой папке?
Ребят, сделал таким способом все меню включая сохранения/загрузку/настройки/главное. Теперь, когда в самой игре нажимаю на паузу, выскакиевает меню сохранений. Как сделать внутриигровое меню?(
Комментарии к записи: 38
Просто к кнопкам приписываются другие действия, их можно из screens.rpy взять
Если необходимо, могу расписать всё в подробностях, хотя если вы откроете и посмотрите, то увидите, что там всё прописано по аналогии
Единственное что, я не знаю, что делать с ползунками, сама в данный момент ищу решение этой проблемы
Не знаю, может у вас это просто не сработает, но у меня рабит вроде)
Ладно, перейду к делу. В общем, найдите такую строчку в screen:
textbutton _("Назад") action Return()
Я в ней поменяла действие Return на ShowMenu("main_menu") в итоге выглядит так:
textbutton _("Назад") action ShowMenu("main_menu")
Пока работает) Может у этого и свои недочёты есть, но до большего я додумать не смогла, увы
Спасибо за терпение)
screen main_menu:
imagemap:
ground "mmo.png"
hover "mmh.png"
alpha True
hotspot (262, 117, 497, 68) action Start()
hotspot (314, 196, 447, 32) action ShowMenu("load")
hotspot (314, 238, 445, 32) action ShowMenu("preferences")
hotspot (298, 278, 463, 32) action Help()
hotspot (270, 318, 490, 32) action Quit(confirm=False)
Так вот, в этот код следует добавить строчки:
tag menu
Итог:
screen main_menu:
# Это заменяет другие меню.
tag menu
imagemap:
ground "mmo.png"
hover "mmh.png"
alpha True
hotspot (262, 117, 497, 68) action Start()
hotspot (314, 196, 447, 32) action ShowMenu("load")
hotspot (314, 238, 445, 32) action ShowMenu("preferences")
hotspot (298, 278, 463, 32) action Help()
hotspot (270, 318, 490, 32) action Quit(confirm=False)
screen main_menu:
tag menu
imagemap:
ground "mods/Souma Yukihira/menu/Menu_ground.png"
hover "mods/Souma Yukihira/menu/Menu_hover.png"
alpha True
hotspot (250, 250, 400, 437) clicked Return("dv")
hotspot (1500, 500, 1650, 680) clicked Return("us")
label example3:
$ result = _return
if result == "dv":
jump dv10
elif result == "us":
jump us10
return
label dv10:
scene bg Menu_18+ with dissolve2
jump stert_111
label us10:
scene bg Menu_18- with dissolve2
label stert_111:
Это кнопка графическая предупреждает читателя 18+
call screen main_menu1.
и modal True ставим после tag menu
(alpha True) надо переместить после hotspot
hotspot (250, 250, 400, 437)
hotspot (1500, 500, 1650, 680)
alpha True
Координаты:
Первая точка (50) - расположение кнопки по координате X.
Вторая точка (10) - расположение кнопки по координате Y.
Третья точка (300) - расположение надписи по координате X.
Четвёртая точка (70) - расположение надписи по координате Y.
На самом деле так:
Первая точка (50) - расположение верхней левой вершины кнопки по координате X.
Вторая точка (10) - расположение верхней левой вершины кнопки по координате Y.
Третья точка (300) - число пикселей которые отступаются вправо.
Четвёртая точка (70) - число пикселей которые отступаются вниз.
Т. е. последние две точки это размеры кнопки: 3-я по оси Х, 4-я по оси У.
Может быть в статье и имелось ввиду именно это, но я ни черта не понял.
screen main_menu:
imagemap:
ground "mmo.png"
hover "mmh.png"
alpha True
hotspot (165, 206, 360, 85) action Start()
hotspot (762, 219, 360, 77) action ShowMenu("load")
hotspot (157, 314, 395, 94) action ShowMenu("preferences")
hotspot (156, 428, 346, 86) action Help()
hotspot (914, 517, 253, 97) action Quit(confirm=False)
куда этот код вставлять??? Помогите пожалуйста
мой вк https://vk.com/sergey0804
И чтобы он менялся не по клику а рандомно с переходом?