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

Пример: Дурацкий простой скрипт, демонстрирующий весь возможный синтаксис:

Begin test1

short var_1

long var_2

float var_3

; GameHour глобальная переменная типа float

set var_1 to 1

set var_2 to 2

set var_3 to 3

MessageBox "^PCName, у вас %g голов, %G рук, и %.5f золота. Можно сказать, что здесь в ^cell уже поздно. Сейчас ^GameHour часов, а точнее, %.2f часов!", var_1, var_2, var_3, GameHour

End

Добавление темы для диалога

[no fix] AddTopic, "Topic"

AddTopic, "Topic"

Даже когда вы поставите тему для диалога в TESCS, вы можете обнаружить, что все еще не можете говорить об этом с NPC, которым вы назначили этот диалог, так как вы еще не знаете эту конкретную тему. Есть два способа поправить положение: либо вы представляете тему в другой, объясняющей теме (например, в своем приветствии) или вы можете дать ее игроку через скрипт, что имеет значение, когда игрок должен говорить на эту тему без представления ему этого в объясняющем диалоге (например, если вы видите NPC, стоящего под водопадом, вы можете захотеть спросить его: "тебе не мокро?", даже если NPC не давал эту тему).

Чтобы сделать это, просто добавьте NPC маленький скрипт:

Begin AddSpecialDialogue

;добавить возможность спросить об этом

AddTopic, "тебе не мокро?"

End AddSpecialDialogue

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

AddTopic добавляет тему в список известных тем игрока. Так что это не верно:

"Actor_ID"->AddTopic "blabla".

Начало и окончание диалога

ForceGreeting

ForceGreeting используется, чтобы заставить актера начать диалог. При вызове ForceGreeting откроется диалоговое окно, и актер использует приветствие, исходя из установок диалога. Поэтому, если вы хотите вызвать специальное приветствие от актера, вы должны дать его через окно диалога в TES CS. Не важно, где находится NPC, эта функция работает всегда, так что лучше использовать ее в связке с функциями GetDistance или GetPCCell33.

Примечание: этот скрипт показывает хороший набор условий для проверки перед вызовом функции ForceGreeting

Begin balynScript

float timer

short doOnce

if ( GetJournalIndex "DA_Mephala" < 40 )

Return

endif

if ( GetJournalIndex DA_Mephala >= 60 )

Return

endif

Set timer to ( timer + GetSecondsPassed )

if ( timer < 5 )

Return

endif

Set timer to 0

if ( doOnce == 0 )

if ( GetDistance Player <= 1024 )

if ( player->GetDistance "hlaalu_loaddoor_ 02_balyn" <=256 )

if ( GetLOS Player == 1 )

ForceGreeting

Journal DA_Mephala 55

set doOnce to -1

endif

endif

endif

endif

End

[no fix?] Goodbye

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

Инициация диалога с оборотнем (Bloodmoon)

[no fix] AllowWereWolfForceGreeting (is short variable)

Short AllowWereWolfForceGreeting

Эта переменная позволяет использовать ForceGreeting с игроком-оборотнем. Используется в cariushuntscript, dulkscript, heartfanghuntscript. Не нужно ее ни во что устанавливать, только объявите ее.

Example Пример:

Begin dulkScript

short doOnce

short playerwolf

short AllowWerewolfForceGreeting

if ( GetJournalIndex BM_FrostGiant2 == 10 )

if ( doOnce == 0 )

if ( GetDistance Player <= 512 )

if ( Player->IsWerewolf == 1 )

ForceGreeting

set doOnce to 1

endif

endif

endif

elseif ( GetJournalIndex BM_FrostGiant2 == 70 )

if ( doOnce == 1 )

if ( GetDistance Player <= 512 )

;if ( Player->IsWerewolf == 1 )

ForceGreeting

set doOnce to 2

;endif

endif

endif

endif

End dulkScript