Перейти к содержимому

Фотография

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


  • Пожалуйста, авторизуйтесь, чтобы ответить
2 ответов в этой теме

#1
LofZ

LofZ
  • Рыцарь

Уровень: 1280
  • Группа:Dreamers Guild
  • сообщений:978
  • Регистрация:01-Декабрь 05
После старта глобальный скрипт отсчитывает 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, 23 Июнь 2009 - 05:13 .


#2
Boma Kuro

Boma Kuro
  • feigr

Уровень: 1280
  • Группа:Фанаты Фуллреста
  • сообщений:17 039
  • Регистрация:28-Ноябрь 04
  • Город:Stellar Solitude
О, хороший скрипт, хех. Как раз что-то подобное надо было.

Кстати, меня всегда интересовала конфликтоустойчивость, так сказать, подобных скриптов, с WakeUpPC. Если, например, случайно два скрипта с этой функцией придутся на одно время - например, ассасин темного братства случайно нападет как раз в то же время, - что произойдет? Надо думать, скритпы выполнятся по очереди - сначала игрока разбудет ассасин, а когда он снова ляжет спать - уже Мефала (или наоборот, не важно)?
I am the creator-destroyer. I am the false form. I am the joy and the dirge.

#3
LofZ

LofZ
  • Рыцарь

Уровень: 1280
  • Группа:Dreamers Guild
  • сообщений:978
  • Регистрация:01-Декабрь 05
А если, не дай Бог, не будет строчки if ( GetPCSleep == 1 ), эффект будет ужасен и без Wakeuppc. Произодет даже не зависание, а полный отказ работы. Игра как бы подвиснет и замрет, но клавиша esc и, соответственно, возможность выхода будет функционировать.

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


Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей

Rambler's Top100   Рейтинг@Mail.ru