Итак, вы поиграли, скажем, в Dragon Age, вдохновились, и решили сделать таких же сопартийцев, как там. Прописанных, с кучей диалогов, и, конечно, с отношениями, которые будут понижаться и повышаться в зависимости от ваших действий. Это не так сложно, как звучит; трудоёмко, но не сложно. Опишу-ка я систему, которую сама использовала в «Паладине»; работает на событиях с незначительной поддержкой скриптов, впрочем, без них можно обойтись.

Шаг I
Нам понадобится количество переменных, равное удвоенному количеству сопартийцев, отношения с которыми будут отслеживаться. То есть если у вас есть главный герой и четверо сопартийцев, то нужно восемь переменных; если, помимо главного героя, у вас семь сопартийцев-- то четырнадцать переменных. На каждого сопартийца— две переменные. Одна будет позволять отслеживать текущие отношения, другая— их общий уровень. Подробнее объясню ниже, пока примите: переменных должно быть две на каждого сопартийца. У меня они, например, называются по такому формату <имя персонажа>_rel и <имя персонажа>_all. Например, Brann_rel и Brann_all. Rel— сокращение от «relation», отношения по-аглицки. Однако ничего не мешает вам назвать эти переменные по-своему. Главное— чтобы вы в них не запутались.

Шаг II
Помимо переменных, нам будет нужно количество «пустых» героев в базе данных, соответствующее количеству сопартийцев. Например, у меня всего шесть сопартийцев (не считая временных, отношения с которыми не отслеживаются), а потому в базе данных имеется шесть «пустых» героев, у которых нет ни графики, ни класса, ничего. Называем их одинаково— «нейтральные». Или «нейтрально». Как вы догадались, наверное, их имена мы будем использовать для того, чтобы обозначать уровень отношений с главным героем: «Вражда», «Приятели», «Дружба», «Любовь» и прочая. Не забудьте пометить в поле примечаний, к какому сопартийцу какая «пустышка» относится.

Спойлер Как оно должно выглядеть в базе данных.:
[IMG][/IMG]


А в описании героя напишите вещь вроде: «Отношения: \n[х]», где вместо х— номер персонажа-пустышки, который «хранит» отношения сопартийца с героем.

Спойлер Как оно должно выглядеть в базе данных-2:

[IMG][/IMG]


Шаг III
Это всё присказка, подготовка. Настоящее мучение, о, пардон, мукеринг, начинается с того момента, когда мы создаём общее событие. Одно. Назовите его «Отношения», «Регулировка отношений» или как-то так. Триггер поставьте на «None». Это не параллельное событие. Мы будем вызывать его в конце каждого диалога, во время которого отношения могли измениться.
Как это работает? Просто. Во время диалога мы меняем переменную, отвечающую за текущие отношения. Развилка в диалоге: сказать Бранну, какой он милашка, и сказать Бранну, какой он жестокий отморозок. В первом случае отношения с Бранном ухудшатся (ну, это же Бран): командуем— Brann_rel – 5. Во втором— улучшатся: Brann_rel + 5. Никаких общих событий пока не вызываем— диалог ещё не кончился. Дальше опять развилка: сказать Бранну, что он круто выпустил кишки вон тому парню во время последней драки, и сказать Бранну, что не надо быть таким жестоким. Первая реплика Бранну понравится: Brann_rel + 10. На вторую Бранн проворчит, что он тут, форморово семя, чтобы охранять паладина, а не выслушивать его тупые лекции: Brann_rel - 10. Предположим, в диалог включилась Рианнон, высказав, например, опасение о том, что Бранн социально опасен. На что Бранн ответит, что Ри тоже социально опасна, потому что дура, умеющая метать фаерболы. Словом, эти двое обменяются дежурными оскорблениями, и паладину снова предстоит сказать слово «Ты права, Ри», «Ты прав, Бран», «Заткнитесь ОБА». Первый ответ понравится Ри, не понравится Бранну: Ri_rel + 5, Brann_rel – 5. Второй— наоборот: Ri_rel -5, Brann_rel + 5. Во втором случае обидятся оба: Ri_rel - 5, Brann_rel -5.
И только когда диалог заканчивается, мы вызываем общее событие «Отношения».
Я специально привела такой объёмный пример, чтобы показать, как эти самые «Отношения» будут работать, и что там зачем. Заметьте: в диалоге мы меняем только rel-переменные, то есть те, которые отвечают за текущий уровень отношений! Это важно.
А теперь— само общее событие «Отношения».
Здесь всё довольно-таки просто.
На каждого сопартийца— свой блок команд. Каждый состоит из трёх частей.
Первая часть— проверка переменной текущих отношений: она больше нуля или она меньше нуля. Если она равна нулю, то это значит, что отношения в диалоге не поменялись, и никакого сообщения выдавать не нужно. Иначе— если переменная больше нуля, то выдаётся сообщение (в стиле Dragon Age): «Бранн одобряет: + \v[x]», где x— номер переменной, в которую записываются текущие отношения. Иначе: «Бранн не одобряет: -\v[x]». Как выдавать сообщение, спрашиваете? Ну, я пользовалась для этого скриптами event window и gab window. Но можно пользоваться и обычными сообщениями мейкера (хоть это будет и громоздко), или просто выдавать звуковой сигнал в зависимости от того, повысились отношения или понизились. Или не выдавать ничего— пусть игрок сам думает, что и насколько понизило/повысило отношения.
Вторая часть блока— мы изменяем общий уровень отношений. All-переменную. Мы прибавляем к ней rel-переменную. То есть в блоке Бранна это будет выглядеть как: Brann_all = Brann_all + Brann_rel. Да-да, всегда плюс. Если Brann_rel ниже нуля, то Brann_all уменьшится (да-да, вспоминаем школьную математику). После чего обнуляем Brann_rel: оно нам не нужно до следующего диалога.
И, наконец, третья часть— проверяем имя героя-пустышки и меняем его согласно тому, как изменился уровень отношений. Лично я пользовалась стобальной шкалой. Отношения меньше нуля? «Вражда». От 0 до 25? «Нейтрально». От 25 до 50? «Приятель». Выше 50? «Дружба». Соответственно, в моём случае— четыре условия, одно за другим. Проверяем, не ниже ли переменная Brann_all нуля. Ниже? Меняем имя пустышки на «Вражда». Проверяем, не выше ли переменная Brann_all нуля. Выше? Меняем имя пустышки на «Нейтрально». Проверяем, не выше ли переменная Brann_all двадцати пяти. Выше? Меняем имя пустышки на «Приятель». Проверяем, не выше ли переменная Brann_all пятидесяти. Выше? Меняем имя пустышки на «Дружба». Никаких вложенных условий не надо, просто поставьте все указанные условия друг за другом— перебирая их, мейкер неминуемо остановится на правильном. И в статусе, в описании персонажа, будет отображаться: «Дружба», «Вражда», «Приятель» и пр.
И так делаем для каждого персонажа. Сначала для Бранна, потом— для Рианнон, потом—для Кея, потом—Для Герды, потом… не буду спойлерить.
Вот и всё, пожалуй. Согласитесь— это не так уж трудно, верно?

Спойлер Вот так:


[IMG][/IMG]

[IMG][/IMG]

[IMG][/IMG]




Как использовать уровень отношений в диалогах?
Например, вы дали герою возможность спросить сопартийца: «Как ты ко мне относишься?» и он должен выдавать ответ в зависимости от уровня отношений. Казалось бы, естественно использовать переменную, отвечающую за общий уровень отношений— но есть способ гораздо проще: использовать имя героя-пустышки.
Например, задаёт герой такой вопрос Бранну. Ставим условие:
ЕСЛИ имя героя #15 (тот самый герой-пустышка, что отвечает за отношения с Бранном) = «Дружба», то выдаём сообщение: «Ну, я ненавижу тебя меньше, чем остальных, так что, наверное, мы— друзья».
ЕСЛИ имя героя #15 = «Нейтрально», то другое сообщение: «Да мне от тебя ни жарко, ни холодно».

Спойлер Так ставим условие:
[IMG][/IMG]