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

Ограничение левитации

[no fix] EnableLevitation

[no fix] DisableLevitation

Эти функции используются для разрешения и запрещения левитации. Когда вызывается DisableLevitation, все существующие эффекты левитации отменяются. Когда игрок пытается скастоваться заклинание с эффектом Левитации, когда она отключена, будет показано следующие сообщение, хранящееся в sLevitateDisabled, - «Levitation magic does not work here».

Примеры:

Это скрипт установлен на объект в комнате с выключенной левитацией.

Begin clampstone

short turnedoff

short gavemessage

if ( turnedoff == 0 )

DisableLevitation

if ( gavemessage == 0 )

set gavemessage to 1

MessageBox "Странный камень на крыше не дает левитеировать."

Endif

else

EnableLevitation

if ( gavemessage == 1 )

set gavemessage to 0

MessageBox "Камень отключен. Теперь можно левитировать."

Endif

endif

if ( OnActivate == 1 )

if ( turnedoff == 0 )

set turnedoff to 1

else

set turnedoff to 0

endif

endif

end

Этот скрипт на двери, ведущий из комнаты.

Begin enable_lev_on_exit

if ( OnActivate == 1 )

MessageBox "Покидаете комнату с камнем..."

EnableLevitation

Activate

endif

end

Проверка и работа с душами и камнями душ

HasSoulgem, "CreatureID"

If ( Actor -> HasSoulGem, "golden saint" )

Эта функция проверяет, есть ли у игрока камень душ, содержащий указанную душу. Маленькая полезная функция, которая может дать какое-нибудь интересное задание или новую область использования камней душ.

Пример: Это часть скрипта StrongSoulCheck:

if ( Player->HasSoulGem "atronach_storm" > 1 )

Set counter to ( counter + 2 )

elseif ( Player->HasSoulGem "atronach_storm" > 0 )

Set counter to ( counter + 1 )

endif

RemoveSoulgem, "CreatureID", number_enum

If ( Actor -> RemoveSoulGem, "golden saint", 1 )

Удаляет камень с указанной душой из инвентаря игрока.

Пример: это дополнительная часть скрипта RemoveStrongSoul для примера, описанного выше:

if ( counter > 0 )

if ( Player->HasSoulGem "atronach_storm" > 0 )

Player->RemoveSoulGem "atronach_storm" 1

Set counter to ( counter - 1 )

endif

endif

Заметьте, что у игрока можно таким образом отнять Звезду Азуры. Вот решение:

short StarCount ;не может быть больше одной.

if ( OnActivate )

if ( Player->HasSoulGem "Golden Saint" > 0 )

set StarCount to ( Player->GetItemCount "Misc_Soulgem_Azura" )

Player->RemoveSoulGem "Golden Saint" 1

if ( ( Player->GetItemCount "Misc_Soulgem_Azura" ) < StarCount )

Player->AddItem "Misc_Soulgem_Azura" 1

endif

Player->AddItem Gold_001, 10000

MessageBox "Спасибо, заходите еще."

else

MessageBox "You У вас не камней душ с Золотыми Святошами."

endif

endif

AddSoulGem "creature ID", "soulgem ID"

AddSoulGem "atronach_storm", Misc_Soulgem_Grand

AddSoulGem добавляет камень душ указанного типа и с указанной душой в инвентарь игрока. Не уверен, что здесь можно указать количество камней.

DropSoulgem, "Creature ID"

DropSoulGem "atronach_storm"

Я это еще не тестировал – думаю, это заставит вызывающего актера бросить камень, содержащий указанную душу.

[no fix] OnPCSoulGemUse (is short variable)

Объект – это камень душ и он был использован или для перезарядки или для создания предмета.

Камни душ в игре имеют следующие ID: