Очень альтернативная CG/BG галерея с помощью Imagebutton (A very alternative CG/BG Gallery using Imagebutton)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

Я делаю этот урок, потому что он должен был бы мне очень помочь, если бы я нашел его некоторое время назад, и я надеюсь, что он может помочь кому-то еще.

Предупреждение: в данном уроке будет описано, как создать альтернативную CG или BG галерею, не зная почти ничего о коде, и хотя это может выглядеть сложным, я уверяю, что это очень просто. То, что мы собираемся создать, - это не настоящая галерея (например, она не использует ничего из кода галереи из книги рецептов), а нечто, похожее на галерею, почти. Я использовал слово "почти" из-за одной недостающей функции: как вы можете видеть, используя эту галереи, вы будете иметь различные версии CG после прохождения флага, который вы поместили в скрипт, но вы не сможете вернуться к предыдущему до конца серии в том порядке, который вы определили, когда вы будете перенаправлены на дополнительный экран.


Зачем использовать этот урок вместо других коротких руководств?

Это хороший вопрос! Ответ, вероятно, заключается в том, что кому-то может понадобиться простой способ сделать очень настраиваемую галерею, не сходя с ума от редактирования непонятного (для многих людей) кода. Например, вам может потребоваться определить точное положение ваших одиночных миниатюр, и они не выровнены по сетке (как у меня).

Если вы один из этих пользователей, пожалуйста, продолжайте читать:


Что вам нужно?

1) Фоновое изображение, подобное моему, с "заблокированными" миниатюрами (вы можете создать их по своему усмотрению):

Экран CG screen взят из Akumangel: The Madhouse Swing

2) Все CG в небольшом формате сохраняются в папке с игрой (они должны точно соответствовать вышеуказанным кадрам на фоновом изображении, поэтому создайте кадры так, чтобы CG помещались внутри них):

CG3 idle.png
CG3 hover.png

Вам также понадобятся скрытые версии миниатюр ваших CG, чтобы кнопка менялась при наведении курсора на неё. Важно: вы должны присвоить одно и то же имя кнопкам idle и hover с подчеркиванием _ в середине, например "CG3_idle.png" и CG3_hover.png", чтобы программа могла автоматически установить их, читая "CG3_%s.png" и так далее (_s% обязательно, чтобы это работало).

3) Запишите этот код в файл screens.rpy:

screen extra_events:
    tag menu
    add "YOUR BACKGROUND NAME.png" #Замените YOUR BACKGROUND NAME.png на имя вашего фонового файла.
    
    ##Кнопки с миниатюрами: здесь мы помещаем небольшие версии наших CGs, которые мы ранее сохраняли в папке игры.
    if persistent.CG3_unlocked:
        imagebutton auto "CG3_%s.png" xpos 216 ypos 180 focus_mask True action ShowMenu('cg3')
    
    if persistent.CG4_unlocked:
        imagebutton auto "CG4_%s.png" xpos 615 ypos 250 focus_mask True action ShowMenu('cg4')
    
    
    ##Другие кнопки: здесь мы помещаем другие кнопки, которые нам нужны на этом экране, например, «Главное меню» или «Далее» и «Назад» - если у вас более одной страницы - и всё, что вам нужно.
    imagebutton auto "button_mainmenu_%s.png" xpos 165 ypos 627 focus_mask True action ShowMenu('main_menu')
    imagebutton auto "next_%s.png" xpos 768 ypos 168 focus_mask True action ShowMenu('extra_events2')

4) Добавьте флаги в файл script.rpy. Вы должны поместить их - как в примере ниже - сразу после появления относительного CG, чтобы галерея могла его разблокировать:

scene CG3 with Dissolve (1.0)
$ persistent.CG3_unlocked = True

5) Наконец, последнее, что вам нужно сделать, это написать очень простой код с помощью экранов:

screen cg1_1:
    tag menu
    imagemap:
       ground 'CG1_1.png'      #CG1_1 это первая версия CG1
       
       hotspot (0, 0, 1500, 720) action ShowMenu("cg1_2")
       
screen cg1_2:
    tag menu
    imagemap:
       ground 'CG1_2.png'     #CG1_2 это вторая версия CG1
       
       hotspot (0, 0, 1500, 720) action ShowMenu("cg1_n")
       
screen cg1_n:
    tag menu
    imagemap:
       ground 'CG1_n.png'      #CG1_n это первая версия CG1
       
       hotspot (0, 0, 1500, 720) action ShowMenu("extra_events")

Как видите, мы используем цепочку экранов, которая позволяет игроку видеть разные версии любого CG. Точка доступа, определенная здесь, имеет такое же соотношение сторон экрана (вы напишите свой), так что вы можете продолжить, просто щёлкнув в любом месте на нем.

Затем вы сможете создать столько экранов, сколько CG (и вариаций) у вас есть.

Совет: Более того, если ваши CG больше, чем те, которые могут содержаться на одном экране, вам придётся создать новые дополнительные экраны, копируя и вставляя код, содержащийся в экране "extra_events" (вы можете назвать их "extra_events1", "extra_events2" и так далее) и изменить все флаги, CG файлы и т.д. для новой страницы.

Важное замечание: убедитесь, что вы перенаправляете на экран галереи (в данном случае, на "extra_events"), когда вы определяете последнюю версию вашего CG или вы создадите бесконечный цикл.


Заключительные обсуждения

Это определенно очень большое количество кодовых строк, но с некоторым "копировать и вставить" вы сможете сэкономить большую часть своего времени. Если вам нужна полная настройка, это руководство, вероятно, поможет вам. Если вы этого не сделаете, это может стать бесполезной тратой времени, поэтому это ваш выбор.

Источник[править | править код]

Статья "A very alternative CG/BG Gallery using Imagebutton" на английском языке.


На главную страницу Книга рецептов Энциклопедии Ren'Py Форумы Lemma Soft Вернуться к началу статьи