Усыпление игрока
ShowRestMenu
Вызывает меню отдыха и позволяет игроку спать. Используется, например, на кроватях в ячейках, где иначе запрещено спать. Пример: Это стандартный скрипт для кровати:
begin Bed_Standard
;исп. На станд.кроватях, которые игрок может активировать и спать на них
if ( MenuMode == 0)
if ( OnActivate == 1 )
ShowRestMenu
endif
endif
end
GetPCSleep (возвращает Boolean/short)
Возвращает истину (1), если игрок спит. Примечание: Выбор времени сна и счетчик, который показывается во время сна, являются меню. Так что будьте внимательны, если используете в скрипте эту функцию и функцию MenuMode!
WakeUpPC
Заставляет игрока проснуться до того, как истечет выбранное им время сна. Иногда создает монстров, если игрок спит не в помещении (и, видимо, вне города /прим.переводчика/). Это обязательно произойдет при попытке поспать только 1 час, если время сна будет жольше, тогда это может и не призойти (Спасибо Manauser эа информацию). WakeUpPC прерывает отдых только когда игрок действительно *спит*. Она не влияет, если игрок пережидает в местах, где отдых запрещен (Форум.инф. / Kir).
Пример: Это подредактированная выдержка из длинного скрипта "sleepers" от Bethesda. Он ответственен за сны о Дагот Уре, мучающие игрока во время основного квеста. Он показывает как использовать GetPCSleep и WakeUpPC:
if ( GetPCSleep == 0 )
return
endif
Set dream to 0
if ( GetPCCell "Balmora" == 1 )
Set dream to 1
endif
if ( GetPCCell "Ald-ruhn" == 1 )
Set dream to 2
endif
[…]
if ( dream == 0 )
Set doOnce to 0
;это для того, чтобы новый кошмар появился после ухода и нового захода в город
return
endif
AddTopic "Тревожные сны "
;добавляет тему, неважно, если это происходит снова и снова
;ПЕРВЫЙ СОН...
if ( GetJournalIndex A1_2_AntabolisInformant >= 10 )
if ( GetJournalIndex A1_Dreams < 1 )
WakeUpPC
MessageBox "У Вас был тревожный сон. Бла бла бла", “Ok"
Journal A1_Dreams 1
return
endif
endif