×
Меню
Индекс

MSFD Игрок спит

[no fix] ShowRestMenu
 
Вызывает меню отдыха и позволяет игроку поспать.
Это используется, например, на кроватях в ячейках, где спать запрещено.
 
Можно вызывать прямо из диалога.
В поле result - ShowRestMenu.
 
Пример: Вот стандартный скрипт для кроватей:
 
begin Bed_Standard
 
;используется для обычных кроватей, на которых игрок может спать
 
if ( MenuMode == 0)
     if ( OnActivate == 1 )
          ShowRestMenu
     endif
endif
 
end
 

[no fix] GetPCSleep         (returns Boolean/short)
 
     if ( GetPCSleep == 0 )
 
Возвращает 1, если игрок спит.
 
Примечание: Меню сна и счетчик во время отдыха считаются как меню, так что будьте осторожны, когда используете эту функцию и MenuMode вместе!
 
Пример использует совершенно бесполезный предмет, но он показывает возможности функции:
Begin pillowScript
 
short comfy
 
if ( PCVampire == 1 )
     return
endif
 
if ( comfy == -1 )
     if ( player->GetItemCount "misc_uni_pillow_unique" > 0 )
          if ( GetPCSleep == 0 )
               set comfy to 0
               return
          endif
     endif
endif
 
 
if ( comfy == 0 )
     if ( player->GetItemCount "misc_uni_pillow_unique" > 0 )
          if ( GetPCSleep == 1 )
               MessageBox "Ваш сон был невероятно сладким на Супер-Удобной Подушке"
               set comfy to -1
               return
          endif
     endif
endif
 
 
End pillowScript
 

[no fix] WakeUpPC
 
Заставляет игрока просыпаться до указанного времени.
Иногда создает монстра, если игрок спит снаружи.
Так происходит всегда, когда игрок спит по часу. (Спасибо Manauser за эту инфу).
WakeUpPC прерывает сон, только когда игрок по-настоящему спит, и не влияет на простое прокручивание времени в местах, где сон запрещен (Информация с форумов / Kir).
 
Пример: это часть скрипта "sleepers" от Беседки.
Он дает игроку сны о Дагот Уре во время выполнения основного скрипта.
Здесь можно увидеть использование и 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