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

Преступления Определение и изменение уровня преступлений

Get/Mod/SetPCCrimeLevel (только для игрока)

PCCrimeLevel определяет количество золота, которое нужно выплатить за все преступления, влияет на отношение NPC к игроку и на поведение стражей. См также функцию PayFine.

Заключение игрока в тюрьму

[no fix?] GotoJail

Посылает игрока в (ближайшую доступную) тюрьму, точнее к Тюремному Маркеру (PrisonMarker) (объект Door) и применяет обычные тюремные штрафы.

Пример:

Вот маленький заскриптованный предмет от B из мода Modern Adventurer. Проклятые Праздничные Штаны, которые посылают вас в тюрьму:

Begin Holiday_script

Short OnPCEquip

Short message

if ( OnPCEquip == 1 )

if ( MenuMode==1 )

return

else

Set message to Random 2

if ( message==0 )

MessageBox "Праздничные штаны зачарованы мощным зарядом счастья. Когда охранники нашли вас, танцующим Кан-кан на площадке ближайшего Силт Страйдера, они не были очень обрадованы.", "ok"

elseif ( message==1 )

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

endif

Player -> GoToJail

endif

Set OnPCEquip to 0

endif

End holiday_script

Очистка игрока от преступлений

[no fix] PayFine

Функция PayFine удаляет украденные предметы из инвентаря игрока, но не удаляет золото. Вызывается после оплаты штрафа, чтобы очистить ИИ. Также убирает руки игрока (то есть он не готов сражаться или кастовать).

[no fix] PayFineThief

Такая же как PayFine, но украденные предметы не отбираются. Вызывается, чтобы очистить ИИ. Без одного из патчей может некорректно удалять украденные предметы. См примеры ниже, в «Полезных глобальных переменных».

Уровень преступления игрока

[no fix] GetPCCrimeLevel (returns short)

Сообщает текущий уровень преступления игрока. Может использоваться, чтобы обнаружить, видели ли преступление, совершенное игроком. Смотрите скрипты "Bill_MT_writxxxxx" для примеров использования.

Альтернатива от Nigedo:

OnPCHitMe

Когда вы объявляете OnPCHitMe в скрипте для NPC, любое преступление, виденное им, устанавливает эту переменную в 1. Преступление не обязательно должно быть совершено на NPC, он просто должен иметь достаточный уровень тревоги и видеть его, тогда преступление будет считаться как удар с нулевым повреждением. Хотя это делает OnPCHitMe менее надежным для обнаружения собственно ударов, она может использоваться и для обнаружения преступлений.

Возможно использовать это для обнаружения всех типов преступлений в одном скрипте, без NPC, который был сообщал о них.

Я обнаружил, что следующие установки тревоги (обычно) устанавливают OnPCHitMe в 1 для следующих событий:

Событие Минимальная тревога

Любое воровство 10

Атака NPC 90

Убийство NPC 10

[no fix] GetPCInJail (returns Boolean/short)

Bloodmoon добавляет эту функцию, чтобы проверять – в тюрьме ли игрок. Возвращает 1, если в тюрьме. Это используется в скрипте оборотня, чтобы игрок не превращался, если путешествует или в тюрьме.

Пример:

if ( PCWerewolf != 1 ) ; НЕ ИСПОЛНЯТЬ, ЕСЛИ ИГРОК НЕ ОБОРОТЕНЬ

return

endif

if ( GetPCinJail == 1 )

return

endif

if ( GetPCTraveling == 1 )

return

endif