fallout.ru

Гильдия, раса и ранг

Определение состояния игрока

GetPCRank, ID_Гильдии (возвращает short)

Возвращает ранг игрового персонажа в необходимой гильдии. Если такая не указана, тогда она будет определена по гильдии говорящего NPC. Функция возвращает значения от 0 до 9 и -1, если игрок во фракции не состоит.

Пример скрипта: объект доступен, только если игрок не состоит в Великом Доме Редоран.

Begin bandenIndarysScript

if ( CellChanged == 0 )
            Return
endif

if ( GetPCRank "Redoran" == -1 )
            Enable
else
            Disable
endif

End

GetPCFacRep, [“ID Гильдии”] (возвращает short?)

Возможно, возвращает репутацию игрока в гильдии. Не тестировано.

SameFaction (возвращает Boolean/short)

Возвращает 1, если игрок состоит в той же гильдии, что и вызываемый NPC.

PCExpelled ["ID Гильдии"] (returns Boolean/short)

Возвращает 1, если игрок был исключён из гильдии говорящего NPC, имя которой также может быть задана программно. Пример, смотрите ниже в описании функции PCClearExpelled.

GetRace, “ID Расы” (возвращает Boolean/short)

Player->GetRace "Dark Elf"

Возвращает единицу, если раса игрока совпадает с “ID Расы”.

Пример скрипта: этот глобальный скрипт Bethesda использовала, чтобы определить расу игрока и использовать это в диалогах.

begin RaceCheck

;глобальный скрипт, который выполняется лишь один раз для определения расы игрока

if ( Player->GetRace "Argonian" == 1 )
            set PCRace to 1
elseif ( Player->GetRace "Breton" == 1 )
            set PCRace to 2
elseif ( Player->GetRace "Dark Elf" == 1 )
            set PCRace to 3
elseif ( Player->GetRace "High Elf" == 1 )
            set PCRace to 4
elseif ( Player->GetRace "Imperial" == 1 )
            set PCRace to 5
elseif ( Player->GetRace "Khajiit" == 1 )
            set PCRace to 6
elseif ( Player->GetRace "Nord" == 1 )
            set PCRace to 7
elseif ( Player->GetRace "Orc" == 1 )
            set PCRace to 8
elseif ( Player->GetRace "Redguard" == 1 )
            set PCRace to 9
elseif ( Player->GetRace "Wood Elf" == 1 )
            set PCRace to 10
endif

StopScript RaceCheck

end

Изменение отношения и статуса в гильдии

PCJoinFaction ["FactionID"]

Записывает игрока в ряды той или иной фракции. Если её название не указано, то ею будет гильдия говорящего.

LowerRank
RaiseRank

Повышает или понижает NPC в его фракции. В оригинальной версии игры эти функции использовались только в диалоге.

PCLowerRank
PCRaiseRank

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

PCExpell ["ID Гильдии"]

Исключает игрока из гильдии.

PCClearExpelled ["ID Гильдии"]

Восстанавливает игрока в гильдии – очищает флаги исключения.

Пример скрипта: скрипт от Bethesda, который восстанавливает игрока в гильдии по прошествии некоторого времени.

Begin expelledMG

;это всего лишь модель
;подобный скрипт должен быть в каждой из Гильдий Магов

short myDay
short temp

if ( PCExpelled "Mages Guild" == 0 )
            return
endif

if ( ExpMagesGuild == 0 )
            Set ExpMagesGuild to 1
endif

if ( myDay == 0 )
            Set myDay to Day
endif

if ( myDay == Day )
            return
endif

if ( Day > myDay )
            Set temp to ( Day - myDay )
else
            Set temp to ( myDay - Day )
endif

Set myDay to Day
Set temp to ( temp + 2 )
Set ExpMagesGuild to ( ExpMagesGuild + temp )

if ( ExpMagesGuild > 30 )
            Set ExpMagesGuild to 0
            PCClearExpelled "Mages Guild"
            return
endif

End

ModPCFacRep, пер_числ, ["ID Гильдии"]
SetPCFacRep, пер_числ, ["ID Гильдии"]

ModPCFacRep, 5, "Imperial Legion"
SetPCFacRep, 5, "Temple"

Модифицирует или устанавливает отношение к игроку членов его гильдии.

ModFactionReaction, "ID Гильдии 1", "ID Гильдии 2", пер_числ
SetFactionReaction, "ID Гильдии 1", "ID Гильдии 2", пер_числ

Модифицирует или устанавливает отношение членов одной гильдии к членам другой.

Пример: ниже приведена часть скрипта “MoonAndStar”. Игрок становится членом гильдии “Nerevarine”, после чего отношение двух других фракций к ней меняется.

;реакция гильдий и журнальная запись

Journal "A2_6_Incarnate" 50
player->modReputation 5
PCJoinFaction, Nerevarine

if ( GetPCRank, Redoran >= 0 )
            modFactionReaction, "Redoran", "Nerevarine", 4
endif

if ( GetPCRank, Temple >= 0 )
            modFactionReaction, "Temple", "Nerevarine", 4
endif