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

Определение готовности к бою

GetWeaponDrawn (short)

GetSpellReadied (short)

if ( player -> GetWeaponDrawn )

Эти функции могут использоваться для определения, достал ли Актер свое оружие (GetWeaponDrawn) или приготовил заклинание для кастинга29 (GetSpellReadied).

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

Begin player_notifications

short weapstate

short spelstate

if ( player->GetWeaponDrawn )

if ( weapstate != 1 )

set weapstate to 1

MessageBox "Игрок вытащил оружие."

Endif

else

if ( weapstate != 0 )

set weapstate to 0

MessageBox "Игрок зачехлил оружие."

Endif

endif

if ( player->GetSpellReadied )

if ( spelstate != 1 )

set spelstate to 1

MessageBox "Игрок приготовил заклинание."

Endif

else

if ( spelstate != 0 )

set spelstate to 0

MessageBox "Игрок отложил вызов заклинания."

Endif

endif

end

Заставляем кого-то падать

Fall

Actor -> Fall

Похоже, дает NPC дополнительный толчок вниз, который им необходим, даже когда вы убрали пол у них под ногами. Также спускает вниз летающие существа. Используется на падающем товарище с Полетом Икара. Когда я пытался применить ее на игроке в моем моде про скалолазание, она иногда телепортировала, а не спускала игрока прямо на землю под ним.

Доля в экипировке и другие функции компаньонов

[no fix] companion (is local short)

short companion

Set companion to 1

В Трибунале есть опция для дележа вещей с NPC и монстрами. Что ее включить, объявите локальную переменную типа short с именем companion и установит ее в 1. Установка в 0 отключит возможность дележа.

[no fix] minimumprofit (is local float)

Float minimumprofit

If ( minimumprofit < 0 )

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

Пример: Вот важная часть скрипта Калвуса (наемник в Морнхолде). Эта секция оперирует изменением состояния, когда Калвус разрывает контракт, или потому что срок контракта истек, или потому что игрок взял вещи Калвуса. Дележ запускается в диалоге (установкой companion в 1), не в самом скрипте.

if ( GetJournalIndex Merc_Calvus_Quit < 1 ) ;если Калвус уже ушел, не делать этого

if ( Contract_Calvus == 1 ) ;если Калвус не заключил контракт, не делать этого

if ( minimumProfit < 0 ) ;Калвус уходит, так как игрок взял его вещи

AiWander 128 6 0 40 30 20 0 0 0 0 0 0

Set Companion to 0; прекаратить дележ

StopScript Contract_Calvus

Set Contract_Calvus to 0

ForceGreeting

return

else

if ( Contract_Calvus == 0 ) ;управляет Калвусом после истечения срока

AiWander 128 6 0 40 30 20 0 0 0 0 0 0

Set Companion to 0; прекратить дележ

if ( GetJournalIndex Merc_Calvus < 10 )

Journal Merc_Calvus 10 ;первый контракт истек

else

Journal Merc_Calvus 20 ; самый недавний контракт истек

endif

endif

endif

endif

endif

[no fix] StayOutside (is local float)

short StayOutside

set StayOutside to 1

Ценная переменная для использования с компаньонами. Когда используется в скрипте, она заставляет всякого, у кого установлена в 1, автоматически оставаться (и ждать) снаружи любого интерьера, пока игрок не вернется (потом автоматически с ним соединяется). (Информация с форумов / Grumpy)