В этой статье я расскажу как проставлять теги или как их чаще называют флаги для событий, чтобы в последствии игра или персонажи запоминали Ваши слова или действия.
Это самая интересная часть. По крайней мере для меня.
Итак.
У нашего главного героя уже был выбор: открыть дверь или не открывать.
Давайте поработаем с ним.
Например, если мы выберем вариант с открытием двери, то можно написать такой монолог.
А если мы выберем вариант не открывать дверь, то персонаж будет думать уже так:
Как это сделать?
ОБЫЧНО, советуют писать так:
$ 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} — подумали Вы"
Как Вы заметили, я просто переместил знак "="
Все просто =)
А вот этот текст:
Будет отображаться уже вне зависимости от выбора игрока.
Ну и, соответственно, когда наш герой встретит Машу, можно точно так же расписать два варианта диалога)
================================================================
А на этом все. Если эта статья была для вас полезна, не забудьте поставить лайк и подписаться на мой канал.
В следующей статье я расскажу как добавлять деньги, очки отношений, предметы и т.д.
Спойлер: Там все тоже завязано на тегах.