Перейти к содержимому


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

  • Добавлено:
  • Обновлено:
  • Просмотры: 1948
  • Автор: Lofz
  • |

 


* * * * *
0 Рейтинг

Управление организацией

Написано в Мар 16 2013 21:01

Создание и управление организацией в Морровинде

 

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

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.

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

 

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

construction_set.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».
  • Хорошо бы обыгрывать получение самого высокого ранга с отдельным квестом, с особым испытанием для игрока, так чтобы получение этого высшего ранга стало для него достойной наградой за труды.

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

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