Очки привязанности (Affection Points)

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

Я знаю, что очки привязанности, на первый взгляд, легко прописать в игре, если вы любопытны и достаточно хорошо разбираетесь с 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 Вернуться к началу статьи