×
Меню
Индекс

MSFD Позиционирование объектов в мире или во внутренних ячейках

Position, float_enum_x, float_enum_y, float_enum_z, float_enum_zRot      (для внешних)(float принимаются дополнениями)
 
PositionCell, float_enum_x, float_enum_y, float_enum_z, float_enum_zRot, “cellID”     (для внутренних / внешних ячеек) (float принимаются с дополнениями)
 
position –23515, -15355, 3355, 90
Player -> position –23515, -15355, 3355, 90
"Actor_ID" -> PositionCell, -254, 475, -376, 360, "Balmora, Council Club"
 
Классическое приложение этой функции — кольцо телепортации, перемещающее игрока в нужное место.
Однако ее можно использовать и для перемещения NPC или объектов в новое место.
Заметьте, что эта функция принимает в качестве аргументов только ранее установленные значения (не переменные).
(Возможно, что Трибунал исправил это(нет), но:
Position/PositionCell может принимать переменные типа float, но они должным быть ЛОКАЛЬНЫМИНе знаю, не видел. Это утверждение требует проверки. Иначе все давно бы щеголяли телепортацией в любое место. (Прим. Gwathlobal)! (информация от Indigo Rage)
 
Z_Rot устанавливается не в градусах (0-360°) а в минутах (1° = 60 min): так что, если хотите повернуть кого-то на восток, пишите 5400. На юг - 10800. Запад - 16200.
 
Примечание: Также следует знать, что использование PositionCell в диалогах не надежно, и может вызывать вылетыИспользование возможно, но лучше сделать через StartScript без menumode. Т.е. если требуется сделать телепортацию без выхода из окна диалога, то это вполне решаемо..
Беседка использует StartScript, чтобы запустить глобальный (локальный нацеленный) скрипт, а он, в свою очередь, запускает телепортацию. (Информация с форумов / Emma).
Также не следует использовать эту функцию на предметах в инвентаре игрока, иначе Морр вылетитА также: если вы пытаетесь телепортировать NPC из ячейки, где игрок никогда не был (соответственно ни разу не видел этого NPC), туда, где игрок находится в данный момент, то при попытке поговорить с этим NPC Морр вылетит. (Прим. Gwathlobal) (Информация с форумов / Nigedo).
 
Примечание.
В целом лучше (стабильнее) всегда использовать PositionCell, что для телепорта (игрока, нпс, предметов, существ, активаторов и статиков) в интерьеры, что в экстерьеры.
Отмечались случаи, что Position не срабатывало от слова совсем.
Но PositionCell стабильно работал.
И еще, см. раздел CELL TOP MRK где указано, о крайней пользе полного отказа от русских названий ячеек в плагинах.
Т.е. их можно использовать, но в плагине следует указывать английское название.
Хотя с этим есть некоторый "нюанс" - в ру мастер файлах ячейки названы по русски (район Шегората, например) т.е. с аглицкими мастер файлами придется менять название локации.
 
Пример: Простое кольцо телепортации выглядит так:
 
Begin TeleportScript
; Присоединяем скрипт к, например, кольцу
 
short status
short button
short OnPCEquip
 
if ( MenuMode == 1 )
     return
endif
 
if ( OnPCEquip == 1 )
Set Status to 10
Set OnPCEquip to 0
Endif
 
If ( status == 10 ); Показать меню
MessageBox "Телепоритировать меня в", "Балмору", "Вивек", "Отмена"
     Set Status to 20
Elseif ( status == 20 ); ждем ответа
     Set button to GetButtonPressed
     If ( button == -1 ) ; нет ответа
          Return
     Elseif ( button == 0 ); выбрана Балмора
          Player -> PositionCell -21278, -17613, 534, 0, "Balmora (-3, -3)"
     Elseif ( button == 1 ); выбран Вивек
          Player -> Position 29872, -82108, 578, 180
     Elseif ( button >= 2 )     ; выбрана отмена
 
          Set status to 0    
     Endif
Endif
 
End
 
Заметьте, что оба места назначения — внешние ячейки, для них можно использовать  разные функции.
Если вы попытаетесь перенестись в небезопасное место (внутрь объекта или в пустоту), вы будете мгновенно помещены в ближайшее безопасное место.
При помощи этих функций вы также можете перемещать NPC или объекты.