ТЕМА: Создание меню
Приветик всем :3
Я совсем недавно начала изучение движка Ren’Py и ещё плохо с ним знакома. Сейчас я делаю свою новеллу и передо мной встала задача сделать красивое меню, а то стандартное мне не нравится. Хотелось бы сделать что то вроде такого:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ] [ Нажмите, чтобы скрыть ]

Картинку сделать не проблема, а вот как сделать горизонтальные пункты меню да и ещё что бы свои картинки туда поставить.
Если вас не затруднит, объясните пожалуйста как сделать нечто подобное. Заранее спасибо :3
Последнее редактирование: 11 года 11 мес. назад от Kuro-chan.
Администратор запретил публиковать записи гостям.
Re: Создание меню 11 года 11 мес. назад #51199





Чтоб сделать горизонтальное меню, откройте скрипт (кнопка «Edit Script») и на строчке №190 во вкладке «screens.rpy», замените vbox на hbox.
Там же, на строчках 187 и 188, можно изменить положение блока меню на экране. Насколько понял, число после точки означает количество процентов. Т.е. значение 50, расположит меню по центру экрана.
Насчет меню из своей картинки. Выходит примерно так:
result = renpy.imagemap("main_menu.jpg", "main_menu.jpg", [ (0, 0, 114, 35, "start") (114, 0, 228, 35, "load") (228, 0, 342, 35, "preference") (342, 0, 456, 35, "help") (456, 0, 570, 35, "quit") ]) if result == "start": Start() elif result == "load": ShowMenu("load") elif result == "preference": ShowMenu("preferences") elif result == "help": Help() elif result == "quit": Quit(confirm=False)
Последнее редактирование: 11 года 11 мес. назад от Lekste.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Kuro-chan
Re: Создание меню 11 года 11 мес. назад #51218
Это в «options.rpy» вставлять нужно?
После этой строки?
Или я совсем ничего не понимаю :с
layout.button_menu()
У меня выглядит так:
######################################### # Планы ## Здесь активируется использование игрового меню ## ввыполненного из кнопок. layout.button_menu() $ result = renpy.imagemap("bg/main1.jpg", "bg/main2.jpg", [ (6, 550, 190, 579, "start"), (238, 550, 431, 579, "load"), (495, 550, 627, 579, "preference"), (705, 550, 784, 579, "quit"), ], focus="imagemap") if result == "start": Start() elif result == "load": ShowMenu("load") elif result == "preference": ShowMenu("preferences") elif result == "quit": Quit(confirm=False) #########################################
Выдает ошибку при проверке, говорит что синтаксическая ошибка.
Последнее редактирование: 11 года 11 мес. назад от Kuro-chan.
Администратор запретил публиковать записи гостям.
Re: Создание меню 11 года 11 мес. назад #51219
Нужно делать вот так:
# Планы ## Здесь активируется использование игрового меню ## ввыполненного из кнопок. layout.button_menu() init -2 python: layout.imagemap_main_menu("main1.jpg", "main2.jpg", [ (300, 250, 495, 270, "Start Game"), (300, 273, 495, 294, "Load Game"), (300, 298, 495, 318, "Preferences"), (300, 323, 495, 343, "Quit"), ]) #########################################
Lekste спасибо за идею с imagemap ^^
И да, кстати новое меню:
Внутриигровые меню (In-Game Menus)
Во многих визуальных новеллах игроку предлагается сделать выборы, которые повлияют на исход истории. Язык движка Ren’Py содержит оператор menu, который позволяет легко создавать меню с выборами и на основании него предоставлять пользователю возможность выбора.
Вот пример оператора menu:
menu: "Что мне сделать?" "Выпить кофе.": "Я пью кофе и оно очень вкусное." "Пить чай.": $ drank_tea = True "Я пью чай, стараясь не делать политических заявлений как обычно." "Проявить уважение.": jump genuflect_ending label after_menu: "Выпив напиток, я продолжил свои утренние дела."
Оператор menu начинается с ключевого слова menu. За ним может следовать имя метки, и в этом случае это эквивалентно предыдущему меню с этой меткой. Например:
menu drink_menu: .
За оператором menu следует блок с отступом. Он может содержать оператор say и должен содержать по крайней мере один выбор в меню. Если присутствует оператор say, он отображается на экране одновременно с menu.
Выборы пунктов меню (Menu Choices) [ править | править код ]
Выбор пункта меню – один из вариантов, который пользователь может выбрать в игровом меню. Пункт меню начинается со строки. За строкой может следовать условный оператор, который делает выбор условным, то есть выполняемый при определённых условиях. Выбор меню заканчиваться двоеточием, за которым должен следовать блок операторов Ren’Py.
Когда выбор сделан, выполняется блок операторов. Если выполнение достигает конца блока, оно продолжается с оператора, указанного после оператора menu.
Вышеуказанный условный оператор состоит из ключевого слова if, за которым следует выражение Python. Пункт меню отображается только в том случае, если выражение Python принимает значение True. Например:
menu: "Пойти влево.": . "Пойти направо.": . "Перелететь." if drank_tea: .
Третий вариант будет предложен только в том случае, если переменная drank_tea примет значение True. Однако если для переменной config.menu_include_disabled задано значение True, она будет отображаться как отключенная кнопка.
Оператор set в меню (Menu Set) [ править | править код ]
Меню может содержать оператор set в отдельной строке. При наличии такого оператора в меню отображаются только элементы с заголовками, которых нет в наборе. Когда выбор сделан, заголовок этого выбора может быть добавлен в набор.
Как и во всех меню, если нет доступных вариантов, он переходит к оператору после меню.
По историческим причинам set может быть либо объектом набора, либо списком.
default menuset = set() menu chapter_1_places: set menuset "Куда мне пойти?" "Иди в класс.": jump go_to_class "Сходить в бар.": jump go_to_bar "Сесть в тюрьму.": jump go_to_jail menu chapter_1_after_places: "Вау, это был чертовски хороший вторник."
Аргументы меню (Menu Arguments) [ править | править код ]
Можно передавать аргументы как самому меню, так и отдельным пунктам меню. Чтобы передать аргументы в меню, добавьте их в строку menu после необязательного имени и непосредственно перед двоеточием. Чтобы передать аргументы в выбор пункта меню, поместите их после строки menu и перед ключевым словом if или двоеточием.
menu ("jfk", screen="airport"): "Чикаго, Иллинойс" (200): jump chicago_trip "Даллас, Техас" (150, sale=True): jump dallas_trip "Хот-Спрингс, Арканзас" (300) if secret_unlocked: jump hot_springs_trip
Аргументы меню, передаваемые в само меню, становятся аргументами экрана, за исключением аргумента screen, который определяет экран, и аргумента nvl, который определяет меню NVL-режима. Также существует специальный keyword_mode, который устанавливает режим этого взаимодействия, по умолчанию menu. Аргументы для выбора становятся аргументами для элементов, передаваемых на экран меню.
Для получения более подробной информации смотрите экран choice и config.menu_arguments_callback.
Источник [ править | править код ]
Статья «In-Game Menus» на английском языке.
Renpy для чайников
Renpy для чайников [ править | править код ]
Много всяких полезных Renpy-разработчику фишек в одном месте
ПОМОЩЬ В ПРОГРАММИРОВАНИИ [ править | править код ]
- Автоматическое объявление картинок
- Вызов call из экрана screen
- Изменить время выполнения with moveinleft, moveinright и т.д.
- Изменить размер шрифта
- Костыли для звуков
- Красочное оформление прямой речи
- Неубирающиеся экраны (screen)
- Много полезного в одном модуле
- Музыку на паузу
- Перевод интерфейса на русский
- Переменные в названиях файлов
- Текст из сэйбокса в буфер обмена
- Пример простейшего визуального редактора
- Переключение языков по списку (на случай, если их два и более)
- Пример Drag-and-Drop из документации RenPy с парой доработок
ТЕКСТОВОЕ ОКНО [ править | править код ]
- Прозрачность текстового окна в «Настройках»
- Чтобы не пряталось текстовое окно
- Скрыть текстовое окно по клику в пустой экран
- Несколько текстбоксов
- Смена фона сэйбокса
ГЛАВНОЕ МЕНЮ [ править | править код ]
- Разные фоны для главного меню
- Смена фона главного меню
- Фон меню, который зависит от времени суток
- Музыка в меню зависит от времени суток
- Кнопка «Продолжить игру» и диалог подтверждения
- Рандомные мерцающие звезды внутри Displayable
АНИМАЦИЯ И ВИДЕО [ править | править код ]
- Объявление многокадровой анимации одной короткой командой
- Как заставить птичку кружить по экрану
- Три спрайта одной строкой (моргающих и говорящих)
- Скролл любого, даже не бесшовного фона
- Динамический фон
- Работа с видео в Renpy
- Вставка видео-спрайта. Переключаем каналы
ИГРЫ [ править | править код ]
- Игра «Поиск предметов» одной строкой
- Мини-игра «Memoria»
- Мини-игра жанра QTE (быстро нажимай нужные кнопки)
- Управление свайпами на примере игры «2048»
МЕНЮ ВЫБОРА [ править | править код ]
- Картинки в кнопках выбора
- Кнопки с картинками (новый GUI)
- Меню для выбора курсора
- Перебрать все-все варианты выборов
- Перебрать все пункты меню выбора 2
- Меню выборов, дополненное кликабельными изображениями
ИГРОВЫЕ ДОПОЛНЕНИЯ [ править | править код ]
- Хелсбар в виде сердечка
- Динамическая картинка
- Примитивный кликер
- Своё поле ввода с кнопками «OK» и «Cancel»
- Что-то типа чит-кодов
- Пример инвентаря (кликабельный)
- Инвентарь со счетчиком
- Говорящая голова
- Отступ для «говорящих голов», но не для автора
- Говорящие головы
- Меню в виде анимации отгибающейся страницы
- Листаем страницы книги
- Свой регулятор громкости (слайдер)
- Меняем курсор
- Простейший способ смены времени суток
- Ещё один вариант смены времени суток
- Как вывести на экран время, проведенное в игре
- Секретная концовка
- Имитация СМС
- Имитация СМС для нового GUI
- Как выделить говорящего и отодвинуть молчуна
- Выделение говорящего цветом (версия 2)
- Информационный экран, пополняемый
- Пример дождя, грома и молний
- Пример дождя, грома и молний для нового GUI
- Доработанный параллакс
- Простейший параллакс, который зависит от курсора
- Фон, который зависит от времени суток — 2
- Модуль ачивок (не только для Steam)
- Имитация стены Вконтакте VK
- Инвентарь с количеством одинаковых предметов (для нового GUI)
- Экранная лупа с регулируемой на лету степенью zoom-а
Renpy как сделать меню свое
Зарегистрированный пользователь может оставлять отзывы, оценивать статьи и решать задачи на курсе. В дальнейшем пользователи смогут делиться и своим контентом.
—> Приключения —> —> Фантастика —> —> Комедии —> —> Ужасы —> —> 2020 —> —> 2019 —> —> 2018 —> —> 2017 —> —> 2016 —> —> 2015 —> —> —> —> —> —> 5.0 —> —> —> —> —> —> 4.0 —> —> —> —> —> —> 3.5 —> —> —> —> —> —> 3.0 —> —> —> —> —> —> 2.5 —>
Популярные новеллы

Lucy — The Eternity She Wished For

The House in Fata Morgana

Princess Evangile

Перезапись
Изменение меню в RenPy
Время на чтение:
Автор статьи:
Наверное, при первом запуске своей новеллы вы заметили невзрачные и одноцветные фоны главного меню, меню с настройками и т.д. Если вы еще не разобрались, как это исправить, то сейчас самое время. Разберемся, как заменить встроенное изображение на своё или же вовсе нарисуем весь внешний вид новеллы с нуля.
Изменение изображения в главном меню
Изменение картинки в главном меню делается очень просто: необходимо поместить нужное изображение в папку с файлами графического интерфейса. Рассмотрим подробнее.
В корневой папке “game” проекта RenPy есть папка gui. В этой папке находятся изображения с названием “main_menu” и “game_menu” (если вы их не удаляли и не меняли настройки проекта в файле “options.rpy”). Это и есть изображения главного меню и меню игры в целом.

Посмотрите разрешение изображений через свойства файла или любым другим удобным способом. Это разрешение соответствует тому, которое вы выбрали при создании проекта.

Самый простой способ изменения картинок — просто заменить их на свои с таким же разрешением. Но есть еще один момент: по дефолту RenPy выводит название игры поверх фона. Если оно вам мешает, то это можно поправить через файл “options.rpy”.
Находим строчку следующую строчку и меняем True на False.
define gui.show_name = True
Создание своего меню
Для начала рассмотрим изменение первичного дизайна новеллы, который предлагает сам RenPy. В той же папке gui есть еще несколько подпапок. Одна из них называется “overlay”. Эти изображения накладываются поверх фонов.

Если изображения кажутся слишком темными или наоборот слишком светлыми, то их запросто можно отредактировать в редакторе Gimp или в фотошопе (или в любом другом привычном редакторе). Можно поменять прозрачность, добавить изображениям контраста или вовсе заменить их на свои (с учетом разрешения экрана игры).
Далее можно поменять шрифт в меню, а именно: его цвет. Заходим в файл gui.rpy и ищем строчку:
define gui.idle_color
Это не выделенные пункты меню. После знака равенства пишем любой подходящий цвет в шестнадцатеричном формате.
Есть вариант полностью перерисовать меню игры под себя: если вы хорошо рисуете или у вас есть дизайнер, то подготовьте все нужные экраны, изображения кнопок, боковых панелей и т.д. Узнать список всех необходимых файлов можно из созданного проекта в RenPy: внимательно изучите папку gui, просмотрите вложенные папки. Определите, какие изображения за что отвечают. Узнать это можно из названия картинок и опираясь на официальный гайд по изменению интерфейса.
Рассмотрим вариант изменения главного меню с созданием своих кнопок.
Для этого необходимо подготовить фоновое изображение меню, изображение с пунктами меню (без фона) и изображение с выделенными пунктами меню (как будто бы на них наведена мышка).

Пример фонового изображения

Пример изображения с пунктами меню

Пример выделенных пунктов меню
! У вас должен быть не серый фон, а прозрачный. Скачать картинки из примера можно будет в конце статьи.
Далее все три изображения перемещаем в папку “gui”. Изображение с фоном можно назвать “main_menu”, с кнопками “menu_normal”, с подсвеченными кнопками “menu_hover”. Чтобы настроить отображение своего меню заходим в файл screens.rpy и находим раздел screen main_menu(). В этом блоке можно смело всё удалить, оставив лишь tag menu.
screen main_menu(): tag menu
Воспользуемся объектом imagemap, у которого можно указать фоновое изображение (ground), изображения с кнопками (idle и hover).
screen main_menu(): tag menu imagemap: ground "gui/main_menu.png" idle "gui/menu_normal.png" hover "gui/menu_hover.png"
Но надо еще указать координаты для каждой кнопки, потому что мы задали по одному изображению и RenPy думает, что у нас есть одна большая кнопка на весь экран: исправить это можно через hotspot, указав ему стартовую координату кнопки, её ширину и высоту.
screen main_menu(): tag menu imagemap: ground "gui/main_menu.png" idle "gui/menu_normal.png" hover "gui/menu_hover.png" hotspot(x, y, width, height)
Посмотреть эти координаты можно в графическом редакторе. Когда вы водите мышкой по экрану, то по краю изображения можно найти числа в пикселях или увидеть координаты в отдельном меню (например, в фотошопе стоит зайти в “Окно”>”Навигатор” и выбрать вкладку “Инфо”).

Необходимо определить координаты (это и есть x и y) левого верхнего угла каждой кнопки. Высоту можно определить при помощи разницы координаты Y нижнего левого угла кнопки и ее верхнего левого угла. Ширину аналогично при помощи разницы координаты X правого верхнего угла и левого верхнего угла.
Отлично, мы нашли кнопку на экране. Осталось определить, что эта кнопка будет делать при помощи action. Action бывают следующие: Start — для запуска игры, ShowMenu — для показа какого-то конкретного меню, Quit — выход из игры. Действиям можно передавать параметры: название меню или флаг, который будет указывать на подтверждение выхода из игры.
Вот как это выглядит в коде:
screen main_menu(): tag menu imagemap: ground "gui/main_menu.png" idle "gui/menu_normal.png" hover "gui/menu_hover.png" hotspot(30, 150, 240, 60) action Start() hotspot(30, 240, 320, 80) action ShowMenu("load") hotspot(30, 320, 330, 80) action ShowMenu("preferences") hotspot(30, 400, 250, 80) action ShowMenu("about") hotspot(30, 610, 220, 60) action Quit(confirm=True)
Теперь все кнопки будут вести на нужные экраны. Но есть одна проблема: экраны настроек, сохранений, помощи будут выглядеть как прежде. А всё дело в том, что все они настраиваются отдельно друг от друга, но по тому же принципу, что был рассмотрен в этой статье. Так что вы можете полностью перерисовать внешний вид своей новеллы до неузнаваемости, главное запастись красивыми изображениями и разобраться во всех экранах.
С дальнейшей кастомизацией помогут официальный гайд и многочисленные видео на YouTube.
Дата публикации: Окт. 25, 2022