Перейти к содержанию
  • Создание и управление организацией в Морровинде


    Автор оригинала: Lofz

    Научный трактат для изощренных умов

    I. Создание новой организации

    Создать новую организацию в Морровинде просто. Зайдите в Character -> Faction, нажмите кнопку New и введите новый ID, а затем название своей организации в поле Name. То, что вы напишете в Name, будет видно игроку в диалогах и т.д., а ID видно только разработчику в КС. Однако не совсем ясно, зачем понадобилось создавать 2 поля - ID и Name, ведь информация, что в них написана, в оригинальном Морровинде просто дублируется. Однако, если вы проводите какие-то операции с этой организацией в скриптах и т.д., указывайте именно ID, а не имя. Например, ModPCFacRep, 5, "Imperial Legion" (повышает репутацию у игрока на 5 среди членов Имперского легиона).

    Обратите внимание - если вы начали создавать организацию, а вас что-то не устроило, то даже если вы нажмете на крестик, закрыв окно, ID и Name новой организации все равно останутся. Чтобы удалить организацию, используйте кнопку delete, что рядом с new.

    Приступаем к заполнению других полей в окне.

    Галочка Hidden from PC обещает сделать организацию не отображаемой для игрока в процессе игры.

    С помощью мышки можно выбрать Primary Skill, т.е. характеристики, которые ценятся в новой фракции, а также Favored Skills - навыки. Советую не писать, что левой ноге угодно, или что первое на глаза попалось, а тщательно продумать концепцию организации. В фентезийном мире, как правило, существует 3 направления - воины, маги и воры. Но в принципе в этом есть плацдарм, чтобы развернуться.

    Между прочим, уже можно записывать неписей в новую фракцию. Это делается через свойства персонажа. Теперь в топике «биография», если вы не написали оригинальную фразу или не повесили на персонажа скрипт с nolore, он будет представляться и называть «своим местом работы» эту новую фракцию.

    Итак, у нас уже достаточно материала для работы над плагином. На этом можно и остановиться, но если создавать полноценную организацию, то нужно продолжить. Какие черты у полноценных организаций в Морровинде? Конечно, в первую очередь система рангов!

    Начинаем создавать ранги. Это делается через выделение ячейки в специальном окне и нажатие кнопки F2. Тогда в ячейку можно будет вписать новое имя. Параллельно с надписью Favored Skill располагается несколько полей, куда вписываются значения характеристик, навыков и отношения среди членов фракции, которые необходимы для получения данного ранга. Разумеется, все это сделано для игрока. Обычного персонажа вы всегда можете записать в любые чины, независимо от его данных.

    Лучше всего сначала вписать все ранги, а потом отредактировать требования для них, чтобы карьерный рост шел равномерно.

    Если чувствуете, что добавили слишком много рангов, лишние можно удалить: выделите ячейку, нажмите F2 и клавишей back space (стрелочка над клавишей enter) снесите все знаки, - вместе с названием исчезнет весь ранг.

    В самом низу окна faction находится поле Reaction List, в котором можно указать реакцию (отношение к этой организации) других фракций. Правой клавишей мыши вызывает контекстное меню, нажимаем new, выбираем фракцию и выставляем отношение.

    Как видно, здесь можно вписать не значение расположения от 1 до 100, а только несколько цифр, так сказать, коэффициент расположения - это цифры -3, -2, -1, 0, 1, 2, 3. Соответственно, -3 обеспечивает самое негативное отношение, а 3 - самое высокое из возможных.

    Если вписать другие цифры, КС примет их, но при следующей попытке открыть плагин или запустить игру, устроит настоящую истерику по поводу «неправильного размера параметров» с отказом обрабатывать эти значения.  

    Все это также сделано только для игрока. Так что можно включить в список реагирующих саму новую организацию и выставить значение, как относятся одногруппники к Нереварину, если он состоит в этой же организации. Как правило, отношение у них очень хорошее: 3.

    Необязательно вписывать все существующие организации Морровинда.

     В общем, в итоге у вас должно получиться примерно, как на скриншоте:

    faction-1.png

     

    Ну, теперь редактирование свойств новой организации можно считать законченным. Остается только создать в мире игры представителей этой организации, их филиалы, книги и другие вещи.  

    II. Вступление и карьерный рост. Работа с диалогами

    Приступаем ко второй интересной части этой статьи. Рассмотрим, как можно организовать вступление Нереварина во фракцию и дальнейший карьерный рост.

    Это дело осуществляется, естественно, по большей части через диалоги. Можно привязать способность назначать должности к конкретным персонажам/высшим чинам во фракции через условия диалога - по ID, а можно, как в Доме Телванни, дать способность увеличивать ранг всем членам определенного ранга, выставив в условиях диалога фракцию и ранг говорящего. Повышение в ранге через скрипт здесь не рассматривается.

    Итак, создаем диалог с новой темой - предложение присоединиться к такой-то организации. Диалог можно развернуть. Ваш вербовщик может рассказывать о правилах и требованиях, ставить какие-то условия для вступления, выслушать отказ и т.д. Однако, если игрок согласен, нужно написать на этот случай в поле результата диалога - PCJoinFaction "ID_организация", что означает вступление в организацию.

    Теперь если игрок открыто прибьет кого-нибудь из своих, или если вы при редактировании предметов в интерьере указали extra data владельцем члена той фракции или всю фракцию, а игрока засекут при попытке взять предмет, то появится прекрасное окно с сообщением «Вас изгнали».

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

     Существует несколько специальных диалоговых функций, которые можно использовать в диалогах и скриптах. Многое из нижеперечисленного работает только при условии, что игрок и непись являются членами указанных организаций:

    • PCJoinFaction "ID_организации" присоединить игрока к организации.
    • %PCRank называет чин игрока в диалоге.
    • %NextPCRank следующий чин игрока по отношению к текущему.
    • %Rank называет чин персонажа.
    • GetPCRank, «ID_организации» в скриптах вычисляет ранг игрока в организации по порядку (то есть GetPCRank, «Blades» == 0 укажет на первый ранг среди Клинков, - Новичок). Значение -1 показывает, что игрок не является членом данной фракции.
    • PCRaiseRank повышает ранг игрока.
    • PCLowerRank понижает ранг игрока.
    • RaiseRank повышает ранг персонажа.
    • LowerRank понижает ранг персонажа.
    • PCExpell "ID_организации" изгоняет игрока. Между прочим, статус «изгнан» не вычеркивает из организации, как вы можете заметить.
    • PCClearExpelled "ID_организации" — восстанавливает положение.
    • ModPCFacRep, 5, "ID_организации" повышает расположение к игроку (в данном случае на 5 единиц) для членов всей организации в целом. Можно написать отрицательное значение.
    • SetPCFacRep, 100, "ID_организации" устанавливает определенное расположение к игроку.
    • ModFactionReaction, "ID_организации1", "ID_организации2", 5 изменяет отношение фракции 1 к членам фракции 2. Разумеется, заметить это может только игрок.
    • ModFactionReaction, "ID_организации1", "ID_организации2", 5 устанавливает расположение членов одной фракции к членам другой.
    • Get/Mod/SetReputation определяет/изменяет/устанавливает значение для репутации игрока.
    • Get/Mod/SetDisposition тоже самое с расположением непися к игроку.

    Условия в диалогах

    Faction если говорящий принадлежит к определенной организации. Rank если говорящий имеет ранг в вышеуказанной организации, не менее чем выбранный по условию. PCfaction если игрок принадлежит к определенной фракции. PCRank если игрок имеет определенный ранг. Function -> Same Faction Когда выставляется значение 1, говорящий произнесет фразу только если игрок принадлежит к той же организации, что и он. Function -> Faction Rank Difference используется в диалогах, чтобы вычислить расстояние на карьерной лестнице между говорящим и игроком. См. об этом ниже. Function -> Rank Requirement требования к рангу. Используются при повышении. См. ниже.

    Для карьерного роста обязательно нужно создать новые фразы в топике Повышение, или создать другой топик со сходным названием. Тут будет решаться карьерный вопрос. Разумеется, говорящий должен состоять в нужной организации и игрок также, а то получится странная картина.  

    Повышение в сущности зависит от двух факторов, а точнее даже от того, как  эти два фактора соотносятся с требованиями для того или иного ранга. Эти факторы - репутации во фракции (создается через команду ModPCFacRep Число «ID_фракции») и значения навыков игрока, важных для этой организации.

    Не обязательно для каждого ранга создавать особую фразу. Карьерный рост был автоматизирован разработчиками из Bethesda. Существует функция rank requirement (требования ранга), у которой могут быть значения 0, 1, 2, 3.

    Ориентируйтесь на нижеприведенную таблицу и располагайте свои фразы в той же последовательности. 

    Что случилось Пример фразы Условие в диалог Что пишем в поле result диалога
    1 Игрок был изгнан Вы преступили воровские законы чести. Внесите компенсацию, или вам никогда не получить звание %PCNextRank. Function -> PC Expelled == 1 Ничего
    2 Если игрока нужно восстановить во фракции Говорят, вы были изгнаны. Я позабочусь об этом для вас Function->PC Expelled== 1 PCClearExpelled «ID_организации»
    3 Игрок спрашивает о повышении. Но его репутация пока слишком мала в организации, недостаточно развиты нужные навыки С честью исполняйте приказы и совершенствуйте свои навыки. Вы еще не готовы. Function -> Rank Requirement == 0 Ничего
    4 Игрок спрашивает о повышении. Навыки достигли нужного уровня, но репутации мало Ваша техника превосходна, но некоторые ставят под сомнение глубину вашей преданности. Вы должны с честью исполнить еще больше приказов для Мораг Тонга. Эти приказы уже выходят. Function -> Rank Requirement == 1 Ничего
    5 Игрок спрашивает о повышении. Репутация на достаточном уровне, но навыки - нет Пока что у вас нет тех качеств, которые мне нужны, %PCName. Может быть, позже. Function -> Rank Requirement == 2 Ничего
    6 Игрок получает повышение. И навыки, и репутация на нужном уровне Отлично, %PCName. Теперь вы %PCName %NextPCRank. Function -> Rank Requirement == 3 PCRaiseRank  
    7 Игрока понижают в ранге Как ты мог вызвать атронахов и плясать с ними на столах в библиотеке, дразня при этом Требониуса?! Что-то должно быть указано в PCFaction и PCRank, а кроме того нужна причина для понижения, отраженная в условиях диалога PCLowerRank  
    8 Игрока нужно изгнать из фракции Пошел нафиг! Function -> PC Expelled == 0 PCExpell «ID_организации»

    III. Разные полезные штуки

    Нарушения или «первый раз прощается, второй раз запрещается».

    Чтобы не создавалась ситуация, когда игроку за нарушение достаточно поговорить с кем надо, и таким образом нарушать правила бесконечно, можно сделать условия, при которых игрока прощают за нарушение только 1 раз. Затем, если он изгоняется повторно, восстановление невозможно.

    Создайте новую глобальную переменную типа short под названием типа ExpFaction. Когда восстанавливаете его в первый раз, напишите в результате диалога:

    PCClearExpelled "ID_организации"
    Set ExpFaction to 1 

    Затем создайте новую печальную фразу на случай очередного изгнания с условиями

    Function -> PC Expelled == 1
    Global -> ExpFaction == 1
    

    С содержанием типа - «прости, дорогой, ты уже нарушал правила и был изгнан. Восстановление невозможно».

    В услуге отказано

    Можно создать ситуацию, когда некоторые учителя или торговцы отказываются вступать в сделки с игроком, пока он не достигнет высокого звания.

    Для этого откройте диалоги и во вкладке Persuasion ->Service Refusal создайте для отказника фразу, где он говорит об этом отказе. Нужно указать ранг для говорящего (высокий, ведь «мои услуги зарезервированы только для высших чинов») и условия диалога:

    Function - Same Faction == 1
    Function - Faction Rank Difference - 3 (то есть разница между говорящим и игроком 3 и больше звания. Можно указать другое число).

    Сундук с припасами

    Хорошая вещь. Создается через редактирование какого-нибудь стандартного сундука. Чтобы припасы восстанавливались раз в месяц,  поставьте галочку Organic Container и Respawns. Обязательно нажмите флажок extra data и выставите владельца, то есть фракцию. Вашу новую организацию, как и стандартные морровиндские фракции, можно найти в этом списке на букву F (Faction). Рядом можно выставить ранг, при достижении которого дозволяется пользоваться сундуком.

    Зарплата

    Неплохим бонусом для молодого Нереварина может послужить ежемесячная зарплата. Причем, она тем больше, чем больше его статус в организации.

    Такая фича была реализована в западном плагине Salaire Legion Imperiale by BOUCLETTE, адаптированном Winddancer, иначе говоря - зарплата членам Имперского Легиона. Выплаты производятся каждый месяц первого числа. Золото сразу оказывается в инвентаре. Чем выше ранг в Имперском Легионе, тем выше зарплата.

    А создается эта ситуация всего лишь одним глобальным скриптом. Он вычисляет ранг и месяц. Как только месяц меняется, происходит однократное добавление денег в инвентарь игрока в соответствии с определенным рангом. Посмотрите:

    Begin SalaireLegionImperiale
    
    short currentMonth
    
    if (currentMonth != Month)
        set currentMonth to Month
    
        if (getPCRank "Imperial Legion" == 0)
            Player->AddItem Gold_001 100
        endIf
    
        if (getPCRank "Imperial Legion" == 1)
            Player->AddItem Gold_001 230
        endIf
    
        if (getPCRank "Imperial Legion" == 2)
            Player->AddItem Gold_001 410
        endIf
    
        if (getPCRank "Imperial Legion" == 3)
            Player->AddItem Gold_001 670
        endIf
    
        if (getPCRank "Imperial Legion" == 4)
            Player->AddItem Gold_001 990
        endIf
    
        if (getPCRank "Imperial Legion" == 5)
            Player->AddItem Gold_001 1340
        endIf
    
        if (getPCRank "Imperial Legion" == 6)
            Player->AddItem Gold_001 1710
        endIf
    
        if (getPCRank "Imperial Legion" == 7)
            Player->AddItem Gold_001 2150
        endIf
    
        if ( getPCRank "Imperial Legion" == 8)
            Player->AddItem Gold_001 2540
        endIf
    
        if ( getPCRank "Imperial Legion" == 9)
            Player->AddItem Gold_001 3100
        endIf
    endIf
    
    End SalaireLegionImperiale
    

    Напоследок несколько советов:

    • Хороший карьерный рост осуществляется только при наличии интересных квестов.
    • Не забывайте в поле result диалога по мере продвижения игрока в карьере периодически прописывать ему повышение отношения и/или репутации. А то как же он будет расти в карьере?
    • Странная была бы ситуация, если бы повышать в высокий ранг могли персонажи любого ранга! Проследите, чтобы тот, кто занимает ранг Новичок, не смог повысить игрока до звания Мастер. Для этого создайте повыше фразу для Новичка с условием PCFaction, PCRank «ранг, выше которого он не может повысить» с содержимым: «Я не могу повысить тебя до звания %PCNextRank, т.к. я только %Rank».
    • Хорошо бы обыгрывать получение самого высокого ранга с отдельным квестом, с особым испытанием для игрока, так чтобы получение этого высшего ранга стало для него достойной наградой за труды.

    Удачи и творческих успехов!

    Между прочим, изгнание в Морровинде не стоит всегда воспринимать как позорное изгнание. Эта функция может открыть много перспектив.

    • Нравится 43

    Обратная связь

    Рекомендуемые комментарии

    Михаил2323

    Опубликовано

    Спасибо! Очень поможет с моддинге! Жаль лайки не проходят в смс!



    Для публикации сообщений создайте учётную запись или авторизуйтесь

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

    Регистрация нового пользователя

    Войти

    Уже есть аккаунт? Войти в систему.

    Войти

×
×
  • Создать...