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

Сброс предмета на пол

Drop, "ObjectID", count_enum

"Actor_ID" -> Drop, "ITEM_ID", 1

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

Примечание: Интересная особенность этой функции состоит в том, что если игрок имеет предмет, он его сбросит, а если нет, то появится новая копия предмета. Также происходит такой же глюк как и с RemoveItem – у игрока уменьшается общий вес предметов (информация с форумов / DinkumThinkum)

Примеры использования в скрипте Беседки SlaveScript.

Отслеживание активности инвентаря: Добавление, сброс и использование камней душ

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

Short OnPCAdd

If ( OnPCAdd == 1 )

Эта переменная устанавливается в 1, когда игрок добавляет предмет в инвентарь. Должна быть сброшена вручную для многократного использования (set OnPCAdd to 0).

Пример: Это пример скрипта, привешенного к кольцу Фаргота, которое дает вам меню магии во время создания персонажа:

if ( OnPCAdd == 1 ); Игрок добавил предмет в инвентарь

if ( State == 0 )

EnableMagicMenu

MessageBox "Теперь у вас есть меню магии, в котором вы можете увидеть все способности, характеристики, заклинания и магические предметы." "Ok"

set state to 10

return

endif

endif

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

Short OnPCDrop

If ( OnPCDrop == 1 )

Эта переменная устанавливается в 1, когда игрок сбрасывает предмет. Должна быть сброшена вручную для многократного использования (set OnPCDrop to 0).

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

Short OnPCSoulGemUse

If (OnPCSoulGemUse == 1 )

Она устанавливается в 1, когда вызываемый объект – камень душ и он использован для перезарядки или создания предметов. Должна быть сброшена вручную для многократного использования (set OnPCSoulGemUse to 0).

Пример: так Звезда Азуры становится бесконечным камнем душ:

begin AzurasStarScript

;this is for Azura's Star. A never ending soulgem item. Mucho good. Kids love it.

short OnPCSoulGemUse

;они ее использовали, дайте им еще

if ( OnPCSoulGemUse == 1 )

Player->additem, "Misc_soulgem_Azura" 1

endif

end

Надевание предметов

Equip, "Object_ID"

"Actor_ID" -> Equip, "p_restore_health_q"

(Также см OnPCEquip ниже)

До Трибунала: Частично испорчена. Это должна была быть очень полезная функция. К сожалению, большая часть ее потенциала нельзя использовать: Вы НЕ можете ничего надеть на игрока автоматически. Вы НЕ можете заставить Актера надеть определенную броню или оружие (это полностью управляется их уровнем и навыками). Вы НЕ можете сделать “неснимаемые” объекты, такие как проклятая броня, и т.д. Вы МОЖЕТЕ заставить Актера выпить зелье, как я слышал.

Эта фукнция была исправлена в Трибунале. Теперь вы можете заставить Актеров надеть броню и одежду, взять в руки оружие. Так что теперь МОЖНО делать все вышеперечисленное . Слава Беседке.

Примечание: Функция Equip может заставить кого-то надеть предмет, который он не носит, добавляя его в инвентарь. Однако, если вы это сделаете, скрипты на предмете не запустятся. Так что используйте AddItem, затем Equip. Скрипт запустится, если выбросить предмет из инвентаря. Но в инвентаре скрипт не активируется (Информация с форумов / ThePal).

Пример: Этот скрипт (требуется Трибунал) проклинает предмет (Хитиновую дубину) так, что ее нельзя будет снять. Даже при использовании быстрых клавиш. Вот так! Теперь вам придется сражаться Хитиновой дубиной до конца своих дней, которые теперь наступят очень скоро  Игрок может по-прежнему использовать магию.

Begin cursed_item

short state

short OnPCEquip

if ( OnPCEquip == 0 ) ; предмет не надет

if ( state == 0 ); если дубина никогда не была надета, ничего пока не делать

return

else

Player -> Equip, "cursed_club" ; надеть дубину!

MessageBox "Этот предмет проклят и никогда не покинт ваши руки!" ;обхамить игрока

endif

else

if ( state == 0 ) ;надел в первый раз. Ловушка захлопнулась

set state to 1

endif

endif

End