Очки привязанности (Affection Points)
Я знаю, что очки привязанности, на первый взгляд, легко прописать в игре, если вы любопытны и достаточно хорошо разбираетесь с Python, а также работаете с Renpy уже несколько месяцев или лет. Но я решил, что напишу скрипт, который поможет некоторым новичкам, которые хотят научиться программировать, разобраться в том, как создать систему привязанности, а также покажет, как привязанность влияет на выборы в дальнейшей игре. Вот код моего скрипта:
define m = Character('Я', color="#c8ffc8")
define g1 = Character('Мэй', color="#c8ffc8")
define g2 = Character('Юи', color="#c8ffc8")
define g3 = Character('Хина', color="#c8ffc8")
# Игра начинается здесь.
label start:
# Определяем привязанность
$girl_one_aff = 0
$girl_two_aff = 0
$girl_three_aff = 0
m "Давай попробуем улучшить твои отношения с девушками!"
m "ВНИМАНИЕ: Некоторые решения, которые ты примешь, приведут к тому, что отношения с некоторыми девушками испортятся, поэтому будь осторожен!"
menu:
"С кем мне начать разговор?"
"Мэй":
jump choice_mai
"Юи":
jump choice_yui
"Хина":
jump choice_hina
label choice_mai:
m "Привет, Мэй!"
g1 "О, привет! Как ты?"
m "У меня всё хорошо...эй, послушай..гм.."
menu:
"О чём мне её спросить?"
"Хочешь пойти на свидание?":
$girl_one_aff += 5
$girl_two_aff = 0
$girl_three_aff -=5
jump mai_date
"Что у тебя новенького?":
$girl_one_aff -=5
$girl_two_aff = 0
$girl_three_aff +=5
jump next_day
label mai_date:
g1 "Свидание? *краснеет* Ну конечно!"
m "{i}Ого, не могу поверить, что это было так просто...{/i}"
"Ты и Мэй идёте на свидание. Вы оба пьете теплый сидр на променаде, а затем наслаждаетесь оставшейся частью вечера на пляже."
m "{i}Ну и ну, Мэй очень милая девушка..{/i}"
"Мэй смотрит в твои глаза, улыбаясь."
menu:
"Что мне сделать?"
"Сделать первый шаг!":
$girl_one_aff += 10
$girl_two_aff -= 5
$girl_three_aff -= 20
"Ты наклоняешься и целуешь Мэй. Она удивлена, но на мгновение можно увидеть любовь в её глазах."
g1 "..Люблю тебя!"
jump next_day
"Обнять её и вернуться домой..?":
$girl_one_aff -= 3
$girl_two_aff = 0
$girl_three_aff +=3
m "Ну, увидимся позже."
g1 "О...хорошо..."
jump next_day
label choice_yui:
"Ты сталкиваешься с Юи в ресторане рядом с твоим домом."
m "Привет, Юи!"
g2 "Эй, ты! Что случилось?"
menu:
"Что мне ответить?"
"Ты... хочешь пойти на свидание?":
$girl_one_aff -= 5
$girl_two_aff -= 5
$girl_three_aff = 0
g2 "Я бы не стала называть это свиданием, но хорошо... Неважно."
jump yui_date
"Просто спрашиваю.":
$girl_one_aff = 0
$girl_two_aff -= 10
$girl_three_aff = 0
jump next_day
label yui_date:
"Ты и Юи идёте в клуб, чтобы выпить и потанцевать. Это нормальное развлечение для друзей..."
"Затем ты понимаешь, что немного навеселе.."
g2 "Уверен, что чувствуешь себя хорошо, а??"
menu:
"Что сказать?"
"Ничего не говорить и просто поцеловать Юи!":
$girl_one_aff -= 20
$girl_two_aff += 15
$girl_three_aff -= 10
"К твоему удивлению, после того, как ты понял, что натворил, Юи отвечает на твой поцелуй! Поздравляю!"
g2 "Это было... удивительно!"
jump next_day
"Я в порядке, спасибо за заботу..":
$girl_one_aff = 0
$girl_two_aff -= 10
$girl_three_aff = 0
jump next_day
label choice_hina:
m "Привет, Хина!"
g3 "Эй. Что случилось??"
menu:
"Что ответить?"
"Хочешь..эээ...пойти на свидание?":
$girl_one_aff = 0
$girl_two_aff -= 10
$girl_three_aff += 10
g3 "ОООО! Я ТОЖЕ ТЕБЯ ЛЮЮЮЮЮЮБЛЮ! ХЕХЕЕ, Я ТАК СЧАСТЛИВА, ЧТО ТЫ СПРОСИЛ!"
jump hina_date
"Ничего.":
$girl_one_aff = 0
$girl_two_aff = 0
$girl_three_aff -= 20
g3 "Оо..эмм...хорошо.."
jump next_day
label hina_date:
"Ты и Хина идёте к тебе домой и играете в видеоигры. Ты удивлён её навыкам."
m "Вау, Хина. Ты действительно хороша в этой игре."
g3 "Спасибо!!!"
"Она смотрит на тебя с очаровательной улыбкой и блеском в глазах."
menu:
"Что будешь делать?"
"Поцеловать!":
$girl_one_aff -= 5
$girl_two_aff -= 20
$girl_three_aff += 25
"Ты наклоняешься, чтобы поцеловать Хину, но она, к твоему удивлению, целует тебя первой!!"
g3 "Ты не знаешь, как я долго этого ждала. :) ...."
jump next_day
"Продолжить игру.":
$girl_one_aff = 0
$girl_two_aff +=1
$girl_three_aff -=5
"Вы продолжаете играть..."
"Больше ничего интересного в ту ночь не происходит...."
jump next_day
label next_day:
m "Хорошо! Теперь, когда я поговорил с девушками, пришло время задать большой вопрос одной из них!!"
"Пришло время сделать предложение девушке, которая тебя заинтересовала."
"Во-первых, давайте посмотрим, как девушки в тебе относятся!!"
"У Мэй %(girl_one_aff)d очков. У Юи %(girl_two_aff)d очков. А у Хины %(girl_three_aff)d очков!"
menu:
"На ком ты женишься?"
"Мэй":
if girl_one_aff <= 9:
g1 "Жениться? Прости, но ты мне не нравишься..."
jump bad_end
else:
$hina_marry = False
g1 "Же-жениться! Конечно! О, у нас будет замечательная свадьба!"
jump good_end
"Юи":
if girl_two_aff <= 9:
g2 "Жениться? Ахахах, это отличная шутка. Если ты серьезно, то ответ - нет."
jump bad_end
else:
$hina_marry = False
g2 "Я ждала этого вопроса! Не могу дождаться, когда стану твоей женой!"
jump good_end
"Хина":
if girl_three_aff <= 9:
g3 "Прости, но ты проигнорировал меня и разбил мне сердце. Я не могу выйти за тебя замуж..."
jump bad_end
else:
$hina_marry = True
g3 "ДА ДА ДА ДА! Я ждала, что ты спросишь об этом всю свою жизнь!"
jump good_end
label bad_end:
"Значит, ты не понравился ни одной из девушек. И ты не стал мужем."
"Очень плохо. ~Плохая концовка."
return
label good_end:
"У тебя была замечательная свадьба! Торт, все твои друзья, твои родители, целые 9 ярдов."
"Затем вы вернулись домой, чтобы провести свой медовый месяц.."
if hina_marry:
"Вы также узнали, что Хина преследует вас со средней школы."
else:
"Конец!"
return
В начале каждая девушка ничего не чувствует к вам (0 очков привязанности), но вы хотите жениться на одной из девушек, не так ли? Поэтому вам нужно построить свою привязанность. Примечание: важно сохранить блоки как есть. Renpy использует блоки Python при кодировании, и каждый блок будет содержать метку/имя/диалог и т.д. А затем данные детализируются в блоке после: с использованием четырех пробелов. Для проверки просто скопируйте и вставьте код в ваш файл script.rpy.
Влияние на меню и выборы (Effecting Menus and Choices)[править | править код]
Я чувствовал, что должен добавить это, поэтому эта тема достаточно стара для новой версии, и так как мои навыки в Ren'py стали намного лучше в течение последних нескольких месяцев. В любом случае, вы можете легко превратить эти очки привязанности в гораздо большее, например, как способ отображения в меню только определенных вариантов или в определенном меню, например, так: Скрытие/отображение различных меню на основе очков привязанности:
if girl_one_aff >=5 and girl_one_aff <=10:
menu:
"Позвонить Мэй.":
jump call_mai
"Пойти на свидание с Мэй":
jump date_mai
if girl_two_aff >=5 and girl_two_aff <=10:
menu:
"Позвонить Юи.":
jump call_yui
"Пойти на свидание с Юи":
jump date_Yui
Выше приведен очень простой пример того, как это сделать. В основном, если у вас больше 5 очков привязанности, но меньше 10 с Май или Юи (девушка один и девушка два), то меню будет отображаться. Естественно, вы должны определить базовое меню, которое не потребует каких-либо очков и создать меню, определенное для более высоких значений. Давайте немного углубимся в это: Отображение определенных параметров на основе очков привязанности:
menu:
"Позвонить Юи.":
jump call_yui
"Пойти на свидание с Юи":
jump date_Yui
"Активировать \'Кофейный мод\' с Юи." if girl_two_aff >=20 and girl_two_aff <=25:
jump yui_coffee_mod
Выше будет показано меню с двумя вариантами по умолчанию, и если ваши очки привязанности с Юи выше 20, но меньше 25, вы сможете выбрать опцию «Кофейный мод» (+ 1 печенье тому, кто знает эту небольшую отсылку). Вы также можете добавить больше к вышесказанному, что потребует от игрока сделать больше дополнительных предписаний, чтобы увидеть опцию:
menu:
"Позвонить Юи.":
jump call_yui
"Пойти на свидание с Юи":
jump date_Yui
"Активировать \'Кофейный мод\' с Юи." if yuis_club and girl_two_aff >=20 and girl_two_aff <=25:
jump yui_coffee_mod
Итак, теперь, чтобы увидеть опцию "Кофейный мод", вам нужно установить для переменной yuis_club значение True и получить нужное количество очков привязанности.
Упрощенный синтаксис... какого-то рода.
Упрощение: если очки привязанности девушки больше 5, но меньше 10, сделайте следующее:
if girl_one_aff >=5 and <=10:
Упрощение: Если yuis_club принимает значение True (В основном, если $yuis_club = True), а очки привязанности девушки больше 20 и меньше 25, сделайте следующее:
if yuis_club and girl_two_aff >=20 and girl_two_aff <=25:
Это очень простые примеры того, как это сделать. Вы сможете определенно сделать гораздо больше с этим. Надеюсь, вам это поможет!
Источник[править | править код]
Статья "Affection Points" на английском языке.
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Форумы Lemma Soft | Вернуться к началу статьи |