You've reached a page on the Ren'Py wiki. Due to massive spam, the wiki hasn't been updated in over 5 years, and much of the information here is very out of date. We've kept it because some of it is of historic interest, but all the information relevant to modern versions of Ren'Py has been moved elsewhere.
Some places to look are:
Please do not create new links to this page.
Данная статья является переводом документации Image Gallery and Music Room Actions.
ГИ - это экран, который позволяет игроку разблокировать изображения и затем просматривать эти изображения. Экран имеет одну или несколько связанных с ним кнопок, и каждая кнопка имеет одно или несколько связанных с ней изображений. Кнопки и изображения также имеют условия, которые определяют разблокированы они или нет.
ГИ управляются экземплярами класса Gallery. Каждый экземпляр класса может быть использован для нескольких экранов ГИ.
ГИ имеет одну или более кнопок, связанных с ней, кнопка имеет одно или более связанных с ней изображений, и каждое изображение имеет одну или более картинок (displayable), связанных с ним. Для кнопок и изображений могут быть назначены условия. Кнопка считается разблокированной, когда все назначенные для нее условия выполнены, и разблокировано хотя бы одно изображение, связанное с ней. Изображение считается разблокированным, когда все назначенные для него условия выполнены.
Создание ГИ происходит в четыре этапа.
1. Создание экземпляра класса Gallery.
2. Добавление кнопок и изображений в галерею, равно как и условий, определяющих будут ли кнопки и связанные с ними изображения считаться разблокированными. Этот процесс также состоит из нескольких этапов.
3. Создание экрана галереи. Экран должен иметь фоновую картинку и какие-нибудь кнопки навигации, которые позволят пользователю посмотреть другие галереи или вернуться в главное либо дополнительное меню. 4. Добавление в главное либо дополнительное меню кода для показа экрана галереи на дисплее.
Далее пример первых трех этапов:
init python:
# Этап 1. Создаем объект галереи.
g = Gallery()
# Этап 2. Добавляем в галерею кнопки и изображения.
# Кнопка, содержащая картинку, которая автоматически считается
# разблокированной.
g.button("dawn")
g.image("dawn1")
g.unlock("dawn1")
# Эта кнопка имеет несколько связанных с ней картинок. Мы используем
# unlock_image
# так что нам не надо использовать оба .image и .unlock. Также, установим
# трансформацию для первого изображения.
g.button("dark")
g.unlock_image("bigbeach1")
g.transform(slowpan)
g.unlock_image("beach1 mary")
g.unlock_image("beach2")
g.unlock_image("beach3")
# Для следующих кнопок установлены условия, позволяющие
# запрограммировать какое изображение считать разблокированным.
g.button("end1")
g.condition("persistent.unlock_1")
g.image("transfer")
g.image("moonpic")
g.image("girlpic")
g.image("nogirlpic")
g.image("bad_ending")
g.button("end2")
g.condition("persistent.unlock_2")
g.image("library")
g.image("beach1 nomoon")
g.image("bad_ending")
# Для последних изображений в этих кнопках установлено условие,
# так что они будут считаться разблокированными, только если пользователь
# получит обе концовки.
g.button("end3")
g.condition("persistent.unlock_3")
g.image("littlemary2")
g.image("littlemary")
g.image("good_ending")
g.condition("persistent.unlock_3 and persistent.unlock_4")
g.button("end4")
g.condition("persistent.unlock_4")
g.image("hospital1")
g.image("hospital2")
g.image("hospital3")
g.image("heaven")
g.image("white")
g.image("good_ending")
g.condition("persistent.unlock_3 and persistent.unlock_4")
# Последние две кнопки содержат изображения, показывающие несколько
# картинок одновременно.
# Это можно использовать для показа картинки персонажа поверх фоновой
# картинки.
g.button("dawn mary")
g.unlock_image("dawn1", "mary dawn wistful")
g.unlock_image("dawn1", "mary dawn smiling")
g.unlock_image("dawn1", "mary dawn vhappy")
g.button("dark mary")
g.unlock_image("beach2", "mary dark wistful")
g.unlock_image("beach2", "mary dark smiling")
g.unlock_image("beach2", "mary dark vhappy")
# Установим перемещение (transition), которое будет использоваться при
# смене изображений.
g.transition = dissolve
# Этап 3. Создаем экран галереи.
screen gallery:
# Убедимся, что он заменит собой главное меню.
tag menu
# Добавим фоновую картинку.
add "beach2"
# Сетка, состоящая из кнопок.
grid 3 3:
xfill True
yfill True
# Вызываем make_button для показа каждой кнопки.
add g.make_button("dark", "gal-dark.png", xalign=0.5, yalign=0.5)
add g.make_button("dawn", "gal-dawn.png", xalign=0.5, yalign=0.5)
add g.make_button("end1", "gal-end1.png", xalign=0.5, yalign=0.5)
add g.make_button("end2", "gal-end2.png", xalign=0.5, yalign=0.5)
add g.make_button("end3", "gal-end3.png", xalign=0.5, yalign=0.5)
add g.make_button("end4", "gal-end4.png", xalign=0.5, yalign=0.5)
add g.make_button("dark mary", "gal-dark_mary.png", xalign=0.5, yalign=0.5)
add g.make_button("dawn mary", "gal-dawn_mary.png", xalign=0.5, yalign=0.5)
# Кнопка, отвечающая за возврат в главное меню. Также, она может
# перенаправлять на другой экран галереи.
textbutton "Return" action Return() xalign 0.5 yalign 0.5
Этап 4 варьируется в зависимости от того, как структурирована ваша игра, один из вариантов – добавить следующую строку:
textbutton "Gallery" action ShowMenu("gallery")
в код экрана главного меню.
class Gallery(self)
МК – это экран, который позволяет пользователю выбрать и воспроизвести музыкальные треки из игры. Изначально, эти треки могут быть заблокированы, когда игрок впервые начинает прохождение игры, и будут разблокированы по мере того, как пользователь прослушивает музыку в процессе игры.
МК управляется экземпляром класса MusicRoom. В игре может быть больше одного экземпляра MusicRoom, что позволяет сделать несколько МК. Создание МК состоит из следующих шагов:
Вот пример первых трех шагов:
init python:
# Шаг 1. Создаем экземпляр MusicRoom.
mr = MusicRoom(fadeout=1.0)
# Шаг 2. Добавляем файлы музыки.
mr.add("track1.ogg", always_unlocked=True)
mr.add("track2.ogg")
mr.add("track3.ogg")
# Шаг 3. Создаем экран музыкальной комнаты.
screen music_room:
tag menu
frame:
has vbox
# Кнопки для воспроизведения каждого трека.
textbutton "Track 1" action mr.Play("track1.ogg")
textbutton "Track 2" action mr.Play("track2.ogg")
textbutton "Track 3" action mr.Play("track3.ogg")
null height 20
# Кнопки, позволяющие переключать треки.
textbutton "Next" action mr.Next()
textbutton "Previous" action mr.Previous()
null height 20
# Кнопка, позволяющая пользователю покинуть МК.
textbutton "Main Menu" action ShowMenu("main_menu")
# Начнем воспроизводить музыку при входе в МК.
on "replace" action mr.Play()
# При выходе из МК вернем музыку главного меню.
on "replaced" action Play("music", "track1.ogg")
Шаг 4 будет варьироваться в зависимости от того как структурирована ваша игра, один из вариантов – это добавление следующей строки кода
textbutton "Music Room" action ShowMenu("music_room")
в экран главного меню.
Используя функцию Preferences(), а именно Preferences("music volume"), можно добавить на экран МК ползунок громкости.
class MusicRoom(channel='music', fadeout=0.0, fadein=0.0)