Перейти к содержанию

Глобальный скрипт отсчета времени


LofZ

Рекомендуемые сообщения

После старта глобальный скрипт отсчитывает 3 дня. Затем стоит только игроку уснуть, как его разбудит появление какого-либо существа, например, даэдры Мефалы в облике прекрасной девушки (aa_mephala).

 

Поступаем, как в предыдущей теме создание глобального скрипта отсчета времени

 

 

1. Создайте новую журнальную запись ("aaa_note" ) и сделайте запись для нее с индексом 1. Это запись, после которой начинается отсчет времени.

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

 

 

2. Создайте в редакторе новый скрипт. Примерно такой.

 

begin AA_global_time2

 

short daysPassed

short myDay

short state

; составитель - LofZ

if ( daysPassed == 0 )

set myDay to Day

set daysPassed to 1

endif

 

if ( myDay != Day )

set daysPassed to daysPassed + 1

set myDay to Day

endif

 

if ( GetPCSleep == 1 )

if ( state == 0 )

if ( GetJournalIndex "aaa_note" == 1 )

if ( daysPassed >= 3 ) ; количество дней можно регулировать

WakeUpPC

placeatpc "aa_mephala" 1 128 1

set state to 1

endif

endif

endif

endif

 

if ( state == 1 )

stopscript "AA_global_time2"

endif

 

end

 

 

Примечания:

1. Скрипт не сразу скомпилируется. Дело в том, что он пока отсутствует в реестре. Редактор считает, что ему нечего останавливать.

 

Выделите кусочек

 

if ( state == 1 )

stopscript "AA_global_time2"

endif

 

и вырежьте его (клавиши alt-x).

Сохраните скрипт.

Затем вставьте все как было через клавиши ctrl-V и пересохраните.

 

2. После строчки WakeUpPC можно добавить

MessageBox "Вам снилось то-то и то-то"

 

 

3. Запустите новый скрипт. Это можно сделать, напрмиер, написав journal "aaa_note" 1

"startscript "AA_global_time" в результате диалога (рекомендуется использовать для этого не стандартную морровиндскую тему, а новую, оригинальную).

 

4. Не путайте локальную переменную DaysPassed используемую в этом примере с глобальной переменной DaysPassed, введенной Трибуналом. Пример ее использования вы можете посмотреть здесь.

 

 

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

Изменено пользователем TJ
Ссылка на комментарий
Поделиться на другие сайты

О, хороший скрипт, хех. Как раз что-то подобное надо было.

 

Кстати, меня всегда интересовала конфликтоустойчивость, так сказать, подобных скриптов, с WakeUpPC. Если, например, случайно два скрипта с этой функцией придутся на одно время - например, ассасин темного братства случайно нападет как раз в то же время, - что произойдет? Надо думать, скритпы выполнятся по очереди - сначала игрока разбудет ассасин, а когда он снова ляжет спать - уже Мефала (или наоборот, не важно)?

Ссылка на комментарий
Поделиться на другие сайты

А если, не дай Бог, не будет строчки if ( GetPCSleep == 1 ), эффект будет ужасен и без Wakeuppc. Произодет даже не зависание, а полный отказ работы. Игра как бы подвиснет и замрет, но клавиша esc и, соответственно, возможность выхода будет функционировать.

 

Я тестировала этот скрипт в разных вариациях, например, сразу "ждала" появления "Мефалы", или долго ходила по миру игры, пока она не появлялась. Ни разу как-то не совпало с атакой ассасина. В то же время этот отсчет не мешал тандартному глобальному скрипту строительства крепости (но там все равно было только "ваш дневник дополнен"). Вообще в теории скорее приоритет отдается элементу, который был подключен последним, т.е. скрипту плагина.

Может быть, произойдет глюк, но скорее всего перед игроком просто являтся 2 перса почти сразу.

Ссылка на комментарий
Поделиться на другие сайты

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...