При создание нового модуля, у вас уже будет пять стандартных фракций.
1. Фракция П имеет константу т.е. фракция нашего героя
2. Враждебный int STANDARD_FACTION_HOSTILE = 0;
3. Простолюдин int STANDARD_FACTION_COMMONER = 1;
4. Торговец int STANDARD_FACTION_MERCHANT = 2;
5. Защитник int STANDARD_FACTION_DEFENDER = 3;
Можно при необходимости добавить и свои фракции, кликнув кнопку “Добавить фракцию”. В шкале градации нужно настроить и отношение новой фракции с другими. В нашем случае фракция "Voin” будет нейтральна ко всем стандартным фракциям и дружественна к соплеменникам.
Если включить галку “Глобальный эффект”, то если герой поссорится с одним членом этой фракции, то во всех локациях сразу у всех членов этой фракции изменится репутация. Если вам это не нужно, то удалите галку, тогда репутация сменится только у тех членов фракции, которые в данный момент могут видеть или реагировать на героя. Даже находясь в одной локации, не говоря о других локациях, члены этой фракции могут оставаться нейтральными, если они не среагировали на атаку героя.
Величина репутации целое число от 0 до 100. В скрипте это значение записывается так:
int iRep = GetReputation(oNPC, oPC);
Отношение между фракциями зависит от величины репутации, и выглядит так:
0-10 враждебны
11-89 нейтральны
90-100 дружествены
Настраивать отношение нужно на шкале, прижав нужный столбец, левой кнопкой мыши, и двигая вверх или вниз. Также можно менять отношения фракций и скриптами. Советую иметь по одному члену от каждой фракции, где-либо в закрытой от доступа героя локации, чтобы менять репутацию героя к этим определенным персонажам. Для этого им нужно присвоить уникальные тэги. Этих НПС необходимо разделить, чтобы они не атаковали друг друга, и поставить им галку Бессмертный, чтобы случайно не погибли. (Сюжет ставить нельзя, т.к. при таком раскладе нельзя менять репутацию...) Пример скрипта:
void main()
{
object oPC = GetFirstPC(); // наш герой
object oByTag = GetObjectByTag("DEVA"); // NPC в закрытой локе
AdjustReputation(oPC, oByTag, 50);
}
//Повысить на 50 единиц (понизить цифра со знаком - ) |
В этом скрипте мы повышаем репутацию фракции на 50 единиц от установленных. Репутацию можно и понижать, тогда значение нужно ставить со знаком минус. Для стандартных фракций есть функция установки необходимой величины репутации. Она не работает на фракции созданные вами...
void main()
{
object oPC = GetFirstPC();
// Установить репутацию 30 единиц фракции Простолюдин
SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 30, oPC);
} |
Атаковав члена фракции, мы изменим репутацию у всех членов этой фракции, а затем где-либо в разговоре мы может опять помириться с этой фракцией, зная, что тэг персонажа в закрытой локации “DEVA” Скриптом можно сменить фракцию одиночному персонажу, это сразу же сменит и его репутацию:
void main()
{
object oNPC = GetObjectByTag("TAG");
object oPC = GetFirstPC();
AssignCommand(oPC, ClearAllActions(TRUE)); //Чистим актионы у игрока
AssignCommand(oNPC, ClearAllActions(TRUE)); //Чистим актионы у NPC
ClearPersonalReputation(oPC, oNPC); // Чистим репутацию PC к NPC
ClearPersonalReputation(oNPC, oPC); // Чистим репутацию NPC к герою
// Делаем фракцию простолюдин
ChangeToStandardFaction(oNPC, STANDARD_FACTION_COMMONER);
} |
Перед сменой репутации конечно лучше почистить персональную репутацию героя и НПС.
Можно даже враждебного монстра сделать дружественным, сменив ему фракцию, допустим на Voin:
void main()
{
object oPC = GetFirstPC();
object oGoblin = GetObjectByTag("TAG");
object oNeytral = GetObjectByTag("DEVA");
if(GetIsEnemy(oPC, oGoblin)) // Если враги
ChangeFaction(oGoblin, oNeytral); // Дать oGoblin фракцию oNeytral
} |
Вся информация о фракциях модуля, находится в папке temp0, которая временно создается при отрытие модуля редактором "Аврора", в папке modules. Имя файла: Repute.fac
|