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

Полезные глобальные переменные

CrimeGoldDiscount (is global short)

Содержит количество золота для выплаты уменьшенного штрафа в Гильдии Воров.

CrimeGoldTurnIn (is global short)

Содержит уменьшенный штраф, когда вы сознаетесь.

PCHasCrimeGold (is global short)

Используется в диалогах. Устанавливается в 1, когда игрок имеет достаточно золота, чтобы выплатить штраф.

PCHasGoldDiscount (is global short)

Используется в диалогах. Устанавливается в 1, когда игрок имеет достаточно золота, чтобы выплатить штраф в Гильдии Воров.

PCHasGoldTurnIn (is global short)

Используется в диалогах. Устанавливается в 1, когда игрок имеет достаточно золота, чтобы выплатить штраф, когда сдается.

Пример: Поле result диалога для темы «цена за твою голову» для выплаты штрафа через Гильдию Воров:

Player->RemoveItem Gold_001 CrimeGoldDiscount

SetPCCrimeLevel 0

PayFineThief

Для сравнения, поля result для стражей, когда вы сдаетесь.

Player->RemoveItem Gold_001 CrimeGoldTurnIn

SetPCCrimeLevel 0

PayFine

или когда вас ловят, и вы должны заплатить полную стоимость.

Player->RemoveItem Gold_001 GetPCCrimeLevel

SetPCCrimeLevel 0

PayFine

Магия Ограничение на телепортацию

[no fix] DisableTeleporting

[no fix] EnableTeleporting

Название говорит само за себя. Эти функции используются для включения и выключения возможности магии телепортации. Прекрасно подходит, чтобы не дать игроку возможности сбежать из подземелья. В оригинальной игре это используется только при встрече игрока с Дагот Уром.

Я не буду показывать весь скрипт, так как он содержит в себе спойлер, но вот его часть, использующая эти функции:

short teleportDisabled

if ( teleportDisabled == 0 )

DisableTeleporting

Set teleportDisabled to 1

endif

Позже эта установка сбрасывается в скрипте EndGame.

Пример: когда установлен Трибунал, эта функция сломана: Один из стартовых скриптов в Трибунале прерывает все другие команды телепорта и включает телепортацию везде, кроме одной особой области в Морнхолде (спасибо Slink и Riiak за информацию). Я уверен, что это можно легко поправить, отредактировав скрипт.

Begin TribunalMain

; проверка на телепортацию

if ( GetPCCell "Sotha Sil," == 1 )

DisableTeleporting

else

EnableTeleporting

endif

; проверка на левитацию

if ( GetPCCell "Sotha Sil," == 1 )

DisableLevitation

elseif ( GetPCCell "Mournhold" == 1 )

DisableLevitation

else

EnableLevitation ; Потосу можно телепортироваться везде кроме части Морнхолда

endif

end

Вот не тестировавшееся предложение для исправления. Последняя версия выглядит так:

Begin TribunalMain short disablestate short newstate ;по умолчанию, включить телепортауию и левитацию set newstate to 0 ;проверять только интерьеры if ( GetInterior ) if ( GetPCCell "Sotha Sil," == 1 ) ;отключить здесь телепортациб и левитацию set newstate to 1 elseif ( GetPCCell "Mournhold" == 1 ) ;отключить здесь левитацию set newstate to 2 endif endif ;если состояие изменилось if ( disablestate != newstate ) if ( newstate == 1 ) DisableTeleporting DisableLevitation elseif ( newstate == 2 ) DisableLevitation elseif ( newstate == 0 ) EnableTeleporting EnableLevitation endif set disablestate to newstate endif end

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

Begin DT_Test_BalmoraTrap If ( GetPCCell, "Balmora" == 1 ) Return Endif MessageBox "Давай назад в Балмору!" Player -> PositionCell, -21278, -17613, 534, 0, "Balmora (-3, -3)" End DT_Test_BalmoraTrap