LofZ Опубликовано 11 ноября, 2006 Жалоба Поделиться Опубликовано 11 ноября, 2006 (изменено) После старта глобальный скрипт отсчитывает 3 дня. Затем стоит только игроку уснуть, как его разбудит появление какого-либо существа, например, даэдры Мефалы в облике прекрасной девушки (aa_mephala). Поступаем, как в предыдущей теме создание глобального скрипта отсчета времени 1. Создайте новую журнальную запись ("aaa_note" ) и сделайте запись для нее с индексом 1. Это запись, после которой начинается отсчет времени. Например "Она сказала, чтобы я не беспокоился и продолжал путешествие: она сама найдет меня через несколько дней" 2. Создайте в редакторе новый скрипт. Примерно такой. begin AA_global_time2 short daysPassedshort myDayshort state; составитель - LofZif ( daysPassed == 0 )set myDay to Dayset daysPassed to 1endif if ( myDay != Day )set daysPassed to daysPassed + 1set myDay to Dayendif if ( GetPCSleep == 1 )if ( state == 0 )if ( GetJournalIndex "aaa_note" == 1 )if ( daysPassed >= 3 ) ; количество дней можно регулироватьWakeUpPCplaceatpc "aa_mephala" 1 128 1set state to 1endifendifendifendif 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, введенной Трибуналом. Пример ее использования вы можете посмотреть здесь. Не забудьте дописать диалоги для персонажей, новые журнальные записи и прочие элементы, из которых состоит квест. Изменено 23 июня, 2009 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 11 ноября, 2006 Жалоба Поделиться Опубликовано 11 ноября, 2006 О, хороший скрипт, хех. Как раз что-то подобное надо было. Кстати, меня всегда интересовала конфликтоустойчивость, так сказать, подобных скриптов, с WakeUpPC. Если, например, случайно два скрипта с этой функцией придутся на одно время - например, ассасин темного братства случайно нападет как раз в то же время, - что произойдет? Надо думать, скритпы выполнятся по очереди - сначала игрока разбудет ассасин, а когда он снова ляжет спать - уже Мефала (или наоборот, не важно)? Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 11 ноября, 2006 Автор Жалоба Поделиться Опубликовано 11 ноября, 2006 А если, не дай Бог, не будет строчки if ( GetPCSleep == 1 ), эффект будет ужасен и без Wakeuppc. Произодет даже не зависание, а полный отказ работы. Игра как бы подвиснет и замрет, но клавиша esc и, соответственно, возможность выхода будет функционировать. Я тестировала этот скрипт в разных вариациях, например, сразу "ждала" появления "Мефалы", или долго ходила по миру игры, пока она не появлялась. Ни разу как-то не совпало с атакой ассасина. В то же время этот отсчет не мешал тандартному глобальному скрипту строительства крепости (но там все равно было только "ваш дневник дополнен"). Вообще в теории скорее приоритет отдается элементу, который был подключен последним, т.е. скрипту плагина. Может быть, произойдет глюк, но скорее всего перед игроком просто являтся 2 перса почти сразу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения