Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скрипты Morrowind.doc
Скачиваний:
91
Добавлен:
29.10.2018
Размер:
2.81 Mб
Скачать

Раса, Фракция и Ранг Определение расы

GetRace, “RaceID” (returns Boolean/short)

Player->GetRace "Dark Elf"

Возвращает 1, если раса объекта соответствует RaceID

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

begin RaceCheck

; глобальный скрипт, который запускается 1 раз, чтобы проверить расу игрока, так, чтобы это можно было использовать в диалоге.

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

Определение статуса игрока во фракции

[no fix] GetPCRank, FactionID_enum (returns short)

if ( GetPCRank "Telvanni" == 9 )

Возвращает ранг игрока во фракции. По умолчанию, это фракция говорящего актера, если FactionID не определен. Возвращает 0-9 и –1, если не игрок не член фракции.

Пример: Актер/объект со следующим скриптом доступны, только если игрок не член дома Редоран:

Begin bandenIndarysScript

if ( CellChanged == 0 )

Return

endif

if ( GetPCRank "Redoran" == -1 )

Enable

else

Disable

endif

End

[no fix?] GetPCFacRep, [FactionID] (returns short?)

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

SameFaction (returns Boolean/short)

Возвращает 1, если игрок состоит во фракции вызывающего объекта (NPC).

PCExpelled ["factionID"] (returns Boolean/short)

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

Изменение реакции и положения во фракции

[no fix] PCJoinFaction ["FactionID"]

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

LowerRank

RaiseRank

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

[no fix] PCLowerRank

[no fix] PCRaiseRank

Повышает и понижает ранг игрока на 1 во фракции NPC. Если игрок не принадлежит фракции, это установит его ранг в 1.

Пример:

Begin treboniusScript

;если вы на Арене

;квет гтльдмастера активен...

;обновляет журнал и повышает игрока

;когда требониус умрет.

short doOnce

short nolore

if ( doOnce == 1 )

Return

endif

if ( GetJournalIndex MG_Guildmaster < 50 )

Return

endif

if ( GetPCCell "Vivec, Arena" == 0 )

Return

endif

if ( duelActive == 0 )

Return

endif

if ( OnDeath == 1 )

Set DuelActive to 0

Set doOnce to 1

PCRaiseRank "Mages Guild"

PCRaiseRank "Mages Guild"

Journal MG_Guildmaster 100

endif

End

[no fix] PCExpell ["FactionID"]

Исключает игрока из фракции NPC.

[no fix] PCClearExpelled ["FactionID"]

Сбрасывает флаг об исключении.

Пример:

Скрипт от 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

[no fix] ModPCFacRep, var_enum, ["FactionID"]

[no fix] SetPCFacRep, var_enum, ["FactionID"]

ModPCFacRep, 5, "Imperial Legion"

ModPCFacRep, 5, "Temple"

Модифицирует или устанавливает модификатор реакции для членов определенной фракции (по отношению к игроку).

ModFactionReaction, "factionID1", "factionID2", var_enum

SetFactionReaction, "factionID1", "factionID2", var_enum

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

Пример: Это часть скрипта 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