Найти тему
Renpy с нуля

Часть 6. Теги (флаги)

Оглавление

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

Это самая интересная часть. По крайней мере для меня.

Итак.

У нашего главного героя уже был выбор: открыть дверь или не открывать.

Давайте поработаем с ним.

выбор
выбор
открыть
открыть

Например, если мы выберем вариант с открытием двери, то можно написать такой монолог.

открыть1
открыть1
открыть2
открыть2

А если мы выберем вариант не открывать дверь, то персонаж будет думать уже так:

спать1
спать1
спать2
спать2

Как это сделать?

ОБЫЧНО, советуют писать так:

$ open_door_flag = True

Если мы открыли дверь и так:

$ open_door_flag = False

Если мы не открывали ее.

Но у такого кода есть большой минус.

Если мы пишем хотя бы две ветки события и в одной ветке было True, а в другой False (Например, если при одном развитии событий условная Настя нам встречается, а при другом - нет.),

то игра будет выдавать ошибку, так как нет второго противоположного значения. (ну то есть в одной ветке только True, а в другой ветке только False)

И тогда придется каждый раз писать сразу по два значения.

На первый взгляд кажется, что ничего сложного нет, чтобы написать еще пару слов, но когда вы пройдете отметку примерно в 3000 строк кода, вы будете пытаться сокращать код настолько насколько это возможно.

Поэтому, я использую другой вариант, который для меня проще и удобнее.

Делаем следующее:

события
события

Поднимаемся наверх и после трансформаций и персонажей создаем еще один блок "События".

Там пишем первое наше событие:

define open_door = 0.

То бишь, дверь не открыта.

Вы же помните, что означает команда "define"?)

После этого, спускаемся к строкам, где у нас был выбор:

опен дур
опен дур

Там в варианте "Идти спать" мы НИЧЕГО НЕ ПИШЕМ

Потому что дверь мы так и не открыли и она находится в значении = 0

А в варианте "Открыть дверь" мы пишем:

$ open_door = 1

Все просто)

Но чем же это отличается от пресловутых True и False? - спросите вы.

Тем, что, если нам нужно, чтобы было не два противоположных события, а одно, то нам достаточно будет просто написать $ name = 1. а если событие просто не произошло, то $ name = 0 писать не нужно, потому что оно изначально равно нулю.

Далее:

новый день
новый день

Это новые строки, которых вы еще не видели. Я скину их ниже:

label new_day:
"День 1"
scene room1
with Dissolve(1.0)
pause 0.1
"Вы открыли глаза. Солнце ярко светило и на часах было 12:22"
if open_door >0 and open_door <=1:
"Вы вспомнили вчерашнюю девушку. Как ее там звали?"
"{i}\"Ее поведение было очень странным\"{/i}"
if open_door >=0 and open_door <1:
"{i}\"Интересно... Кто же это, все-таки, мог быть?\"{/i} — подумали Вы"
"Но теперь это было уже не важно, потому что желудок напомнил о том, что со вчерашнего обеда Вы еще ничего не ели."
"Вы решили отправиться на кухню и приготовить что-нибудь поесть"

Теперь самое интересное

Пишем развитие сценария для события при котором мы открыли дверь и для события, при котором пошли спать.

if open_door >0 and open_door <=1:
"Вы вспомнили вчерашнюю девушку. Как ее там звали?"
"{i}\"Ее поведение было очень странным\"{/i}"

Я думаю, вы знаете, что "if" переводится как "если", а "and" как "и".

Соответственно, мы пишем:

Если open_door > 0 и open_door <=1 то будет отображаться текст ниже.

Важно: необходимо писать именно дважды слово open_door для каждого значения и хотя бы одно значение должно иметь знак "=", иначе renpy выдаст ошибку (хотя обычно это пишется как if open_door > 0 and < 1:) Но здесь вот так.

То же делаем и с вариантом когда мы дверь не открыли:

if open_door >=0 and open_door <1:
"{i}\"Интересно... Кто же это, все-таки, мог быть?\"{/i} — подумали Вы"

Как Вы заметили, я просто переместил знак "="

Все просто =)

А вот этот текст:

конец
конец

Будет отображаться уже вне зависимости от выбора игрока.

Ну и, соответственно, когда наш герой встретит Машу, можно точно так же расписать два варианта диалога)

================================================================

А на этом все. Если эта статья была для вас полезна, не забудьте поставить лайк и подписаться на мой канал.

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

Спойлер: Там все тоже завязано на тегах.