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

Отслеживание, был ли надет предмет

[no fix] OnPCEquip (локальная переменная типа short)

Short OnPCEquip

If ( OnPCEquip == 1 )

Игрок надел объект (остается истиной (то есть 1), пока объект одет)

Это игровая переменная (должна быть объявлена) принимает значение 1, если игрок надевает вызывающий объект. Она остается “истиной”, пока объект надет и сбрасывается в 0, если объект снят. Так что, в некоторых случаях, Вы, возможно, захотите сами сбросить ее18:

if ( OnPCEquip == 1 ) ; когда предмет надет

[делать что-то]

set OnPCEquip to 0 ; делать это один раз за каждое надевание…

endif

В следующий раз, когда предмет будет снят и надет снова, функции в [делать что-то] снова выполнятся. Также можно использовать другую переменную для отслеживания однократного выполнения функций. Также это можно выполнять, находясь в режиме меню:

If (MenuMode ==1)

if ( OnPCEquip == 1 ) ; когда предмет надет

[делать что-то]

set OnPCEquip to 0 ; делать это один раз за каждое надевание…

endif

endif

Этот скрипт будет выполнен, когда вы находитесь в меню, как только предмет будет надет, тогда как следующий только когда вы выйдете из меню:

If (MenuMode ==1)

Return

Endif

if ( OnPCEquip == 1 ) ; когда предмет надет

[делать что-то]

set OnPCEquip to 0 ; делать это надин раз за каждое надевание…

endif

Дополнительный пример можно найти выше, с описанием функции Equip.

Примечания: OnPCEquip тестировалось со следующими типами предметов:

Clothing (Одежда)

Armor (Броня)

Weapons (Оружие)

Books/Scrolls (Книги/Свитки) (см раздел советов и трюков для верного использования)

Miscellaneous items (Разное)

Usable lights (Источники света)

Probes (Щупы для ловушек)

Зелья и ингредиенты могут устанавливать OnPCEquip, только если вы используете SkipEquip, иначе предмет «уничтожится» прежде, чем функция будет установлена! Предметы починки также страдают от этого, а алхимические реторты работают наоборот. Это единственные предметы, которые работают, если PCSkipEquip не установлена (Информация с форумов / ManaUser).

Вообще книги (а может и другие типы предметов, которые ведут себя странно?) устанавливают SkipEquip, а не OnPCEquip! См раздел Советы и Трюки по этому вопросу.

Выключение возможности надеть предмет

[no fix] PCSkipEquip (локальная переменная типа short)

Short PCSkipEquip

Set PcSkipEquip to 1

Задайте значение 1, чтобы пропустить надевание предмета. Подходит для всплывающих сообщений об опечатанной книге и прочего. Для расширенного примера смотрите скрипт SealedTreasuryReport в редакторе. Также может быть использовано на одежде как триггер скриптов связанных с OnPCEquip (см мой мод про скалолазание, там приспособление для скалолазания – это пояс, но он конечно не может быть надет)

Примечание: Надевание книги в инвентаре устанавливает эту переменную в 1 (вместо установки OnPCEquip, как надо). См раздел Советы и Трюки.

Есть баг, связанный с удвоением предметов, имеющий функцию SkipEquip. Я его видел и, используя горячие клавиши, и, надевая предмет через инвентарь, когда используется OnPCEquip. Чтобы избежать этого, добавляйте и удаляйте пробный предмет (из той секции скрипта, где проверяется OnPCEquip). Не удаляйте сам предмет со скриптом, игра вылетит (см RemoveItem). Если у вас много предметов со SkipEquip, используйте глобальный скрипт, вызывая его через StartScript:

Begin doubling_fix

Player -> Additem "Item ID", 1

Player -> RemoveItem "Item ID", 1

StopScript doubling_fix

End

Пример: Вот короткий скрипт, который я сделал для мода с оборотнями, он делает предмет ненадеваемым при определенных условиях:

Begin non_equippable

; не позволяет игроку-оборотню надевать предметы охотника на оборотней по причине баланса

; если игрок надел их до того, как стал оборотнем, он будет носить их, пока не снимет сам.

; но после не сможет надеть их. Так что после первой трансформации он не сможет надеть их снова

short PCSkipEquip

short OnPCEquip

if ( PCWerewolf != 1); если игрок не оборотень, он может использовать эту броню

set PCSkipEquip to 0

return

else

set PCSkipEquip to 1

endif

if ( OnPCEquip == 1 )

MessageBox " Этот предмет зачарован заклинанием, отгоняющим оборотня. Ты не можешь надеть его!"

set OnPCEquip to 0

endif

End