Плохо! Плохо!:  0
Показано с 1 по 6 из 6

Тема: Система отношений с сопартийцами

  1. #1
    Маститый Аватар для Nalia
    Информация о пользователе
    Регистрация
    18.09.2009
    Адрес
    Пенза
    Сообщений
    1,364
    Записей в дневнике
    100
    Репутация: 76 Добавить или отнять репутацию

    5 Система отношений с сопартийцами

    Итак, вы поиграли, скажем, в 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]
    Я отрицаю вашу реальность и заменю её своей. (c) Джон Адам Севидж

    Надо работать, работать надо. Ремешки под касками затянуть потуже, шинели в порядок привести, в кобуру засунуть трудолюбие 36 калибра и марш за мейкер! (с) Tall Men

  2. #2
    Супер-модератор Аватар для peter8031983
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    1,887
    Записей в дневнике
    4
    Репутация: 68 Добавить или отнять репутацию

    По умолчанию

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

  3. #3
    Хранитель Форума Аватар для Валера
    Информация о пользователе
    Регистрация
    15.04.2008
    Адрес
    Москва
    Сообщений
    14,018
    Записей в дневнике
    3
    Репутация: 162 Добавить или отнять репутацию

    По умолчанию

    Налия методична, упорна и по-хозяйски обучает нерадивых наполнять игры скрытым серьезным содержанием. Умница!

    Можно еще ввести поправки на устойчивость психики героев, на то, ухудшалось или улучшалось отношение между кем-то до этого ( тенденция ). А еще - случайные всплески эмоций при неожиданных событиях ( удвоение ) или же рандом ( настроение ).

    Спойлер И как тебе не стыдно-то, а, Валера?:


    Оборона форта: http://rghost.ru/8kLGxFtD2
    Сделать, чтоб все происходило, как я хочу, - вот, собственно, и весь мейкер!
    Адский Рейд: http://rpgmaker.su/downloads/%D0%B7%...-2010raid-full

  4. #4
    Новичок Аватар для Lucin
    Информация о пользователе
    Регистрация
    11.11.2015
    Сообщений
    27
    Записей в дневнике
    1
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Это шикарно. Обязательно попробую в RMMV.

  5. #5
    Бывалый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    651
    Записей в дневнике
    19
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    очень полезно,спасибо)
    я хотел другим методом идти, а щас вижу насколько всё можно сделать проще

  6. #6
    Пользователь Аватар для War_Mechs
    Информация о пользователе
    Регистрация
    07.12.2014
    Адрес
    Дальний Восток, Хабаровский Край, г.Амурск
    Сообщений
    46
    Записей в дневнике
    28
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Отлично! На XP система прижилась почти полностью. Огромное спасибо за такое подробное руководство.
    W_M

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •