Эта функция изменяет погоду в указанном регионе на тип TypeEnum, и это изменение произойдет через время указанное, видимо, в Morrowind.ini в разделе Weather, например[42]: Hours Between Weather Changes=20
Изменяет шансы появления разных типов погоды для региона RegionID. Используется, чтобы убирать или добавлять определенные виды погоды навсегда. При сумме значений больше 100, можно получить странные результаты.
Определение текущей погоды
[no fix] GetCurrentWeather(returns short)
If ( GetCurrentWeather == 1)
;[Делать что-то, если облачно]
endif
Возвращает TypeEnum из таблицы выше.
Пример: Bethesda использует это, чтобы заставлять вывески двигаться на ветру при разных типах погоды:
begin OutsideBanner
;это скрипт для вывески снаружи,
;который анимирует ее на ветру.
;Idle – нет ветра, Idle2 – легкий бриз, и Idle3 – сильный бриз
short ran
if ( MenuMode == 0 )
set ran to random 100
if ( ran < 30 ) ;30% шанс, что флаг сделает что-то новое
;это проверка для будущих типов погоды
if ( GetCurrentWeather >= 5 ) ;гроза, пепел и мор
LoopGroup, Idle3, 5
endif
;последняя анимация вызванная в скрипте и будет проигрываться
if ( ran <= 10 )
PlayGroup, Idle
elseif ( GetCurrentWeather < 5 )
PlayGroup, Idle2
endif
endif
endif
Определение скорости ветра
Недокументированно:
[no fix] GetWindSpeed(returns float)
Я только быстро протестировал эту функцию. Она возвращает 0 в интерьерах и float снаружи (который может сильно изменяться, при пасмурной погоде равняется где-то двум) (Спасибо XPCagey за то, что нашел ее)
Средства управления игрока
Игрок спит
[no fix] 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 )
Включение и выключение средств управления и интерфейса
Отключение средств управления
Все эти функции выключают часть интерфейса пользователя и ограничивают действия игрока.
[no fix] DisablePlayerControls
Игрок может только смотреть вокруг и использовать главное меню, больше ничего.
[no fix] DisablePlayerFighting
[no fix] DisablePlayerMagic
Эти две функции ненадежны согласно информации с форумов: если игрок «достал руки» до того, как они были использованы, то он все равно может использовать оружие и заклинания, а также заклинания и оружие на горячих клавишах также работают. Я не знаю, как это обойти.
[no fix] DisablePlayerJumping
[no fix] DisablePlayerLooking
[no fix] DisablePlayerViewSwitch
[no fix] DisableVanityMode
Включение средств управления
После использования одной из выключающих функция, возможности игрока можно восстановить соответствующей включающий функцией.
[no fix] EnableLevelUpMenu
[no fix] EnablePlayerControls (Включает меню.)
[no fix] EnablePlayerJumping
[no fix] EnablePlayerFighting
[no fix] EnablePlayerLooking
[no fix] EnablePlayerMagic
[no fix] EnablePlayerViewSwitch
[no fix] EnableRest
[no fix] EnableVanityMode
Проверка статуса средств управления
Все эти функции возвращают 1, если соответствующая отключающая функция была вызвана и активна, и 0, если данное средство управления работает.
[no fix] GetPlayerControlsDisabled
[no fix] GetPlayerFightingDisabled
[no fix] GetPlayerJumpingDisabled
[no fix] GetPlayerMagicDisabled
[no fix] GetPlayerLookingDisabled
GetPlayerViewSwitch
(Не работает. Используйте: )
[no fix] GetVanityModeDisabled
Переключение в вид от первого и от третьего лица
[no fix] PCGet3rdPerson (returns Boolean/short)
возвращает 1, если игрок использует вид от третьего лица
[no fix] PCForce3rdPerson
переключает в вид от третьего лица (может потребоваться время, чтобы завершить анимацию)
[no fix] PCForce1stPerson
то же самое, что и выше, но для первого лица
(См также команду консоли "ToggleVanityMode" (TVM)).
Функции для меню генерации персонажа
Это недокументированные функции для создания персонажа. Они включат все меню, используемые в создании персонажа и включают такие возможности персонажа, как инвентарь, окно характеристик и карту: