Каждая сцена содержит минимум три объекта: сам дескриптор сцены, объект монитора и объект камеры.
Все события имеют одинаковую структуру:
{ Time, Action, Targets, Properties }
Время определяет время активации события и измеряется в секундах, прошедших с момента запуска скрипта THN.
Действие определяет тип события, например, перемещение объектов, изменение ориентации камеры и т. д.
Цели — это набор основных аргументов, определяющих целевые объекты для действия. Обычно они ссылаются на свойство entity_name. Некоторые события принимают несколько целей, и порядок перечисленных имён важен.
Свойства — это набор дополнительных аргументов, специфичных для каждого типа действия.
Обычно для работы каждой сцены необходимо как минимум одно событие SET_CAMERA
.
💥 Оглавление
- Оглавление
📎 SET_CAMERA
monitor, camera
Активировать камеру для мониторинга сцены. У события нет свойств.
{
0.000, SET_CAMERA, { "Shot02_Monitor_1", "CnB_Camera_00_copy_5" }
},
⚡ SET_SUBTITLE
Не работает. Предположительно, это должно было добавлять текст на экран, но так и не было использовано. Титры, которые появляются на экране в заставках кампании, — это названия баз и систем, где выполняется скрипт, точно так же, как при входе в систему.
📌 ATTACH_ENTITY
object, parent
Присоедините объект к целевому родительскому объекту. Это формирует иерархию между объектами, позволяя группировать их различными способами. Объекты можно прикреплять к подкомпонентам, например, к точкам крепления.
Например, можно прикрепить объект эффекта двигателя к точке подвески HpEngine01
объекта корабля. При перемещении объекта корабля эффект также будет действовать.
Однако объекты не обязательно должны следовать за другими. Примером косвенного использования может служить наблюдение за объектом с помощью камеры, прикреплённой к этому объекту с флагами, установленными только на LOOK_AT
. Имейте в виду, что это будет происходить только в течение определённого времени события.
Свойство | Тип | Описание |
---|---|---|
duration |
float | Как долго объект будет прикреплён к родителю (в секундах). |
offset |
float[3] | Смещение по позиции. |
up |
AXIS | Какая ось считается «вверх». |
front |
AXIS | Какая ось считается «вперёд». |
target_type |
string | ROOT : Цель — корень объекта.HARDPOINT : Цель — hardpoint объекта.PART : Цель — часть составного объекта (multi-part mesh). |
target_name |
string | Имя цели прикрепления, имя hardpoint или кости; пусто, если тип ROOT . |
flags |
string | POSITION : Объект будет следовать позиции родителя.ORIENTATION : Объект наследует ориентацию родителя.LOOK_AT : Объект будет ориентирован на родителя.ENTITY_RELATIVE ORIENTATION_RELATIVE PARENT_CHILD |
Свойство flags
представляет собой битовую маску, значения можно комбинировать через символ +
.
{
0.000, ATTACH_ENTITY, { "CnB_Camera_00_copy_4", "aa_main_object" },
{
duration = 43.000,
offset = { 0, 0, 3 },
up = Y_AXIS,
front = NEG_Z_AXIS,
target_part = "",
target_type = ROOT,
flags = LOOK_AT + ENTITY_RELATIVE
}
},
📌 CONNECT_HARDPOINT
object, target
Соедините точки подвески между различными объектами.
Свойство | Тип | Описание |
---|---|---|
duration |
float | Длительность соединения. |
hardpoint |
string | Hardpoint исходного объекта. |
parent_hardpoint |
string | Hardpoint родительского объекта. |
{
40.000, CONNECT_HARDPOINTS, { "Prop_glass_green_Bart_Fixt", "Char_li_bartender_Fixture" },
{
duration = 6.375,
hardpoint = "hprightconnect_prop_glass_green",
parent_hardpoint = "hprightconnect"
}
},
🔭 START_SOUND
sound
Воспроизводит звуковой эффект.
Свойство | Тип | Описание |
---|---|---|
duration |
float | Длительность воспроизведения звукового эффекта. |
flags |
LOOP | Повторять звуковой эффект на протяжении события. |
{
39.520, START_SOUND, { "sfx_fs_ml_hard03_4" },
{
duration = 0.254
}
},
🔥 START_MOTION
object
Воспроизведение сценария анимации.
Скрипты анимации составных объектов (.cmp) обычно встроены в файлы в узле «Анимация/Скрипт».
Анимации персонажей находятся в файлах .anm в папке DATA\CHARACTERS\ANIMATIONS
.
Свойство | Тип | Описание |
---|---|---|
animation |
string | Имя последовательности анимации |
duration |
float | Длительность |
time_scale |
float | Масштаб времени анимации (1) |
weight |
float | 1 |
heading |
float | -1 |
event_flags |
integer | 2, похоже, означает повторение (loop), 3 — воспроизведение один раз? |
{
39.769, START_MOTION, { "Char_li_bartender_Fixture" },
{
animation = "Sc_MLBODY_WLKG_000LV_XA_01",
duration = 6.607,
time_scale = 1,
weight = 1,
heading = -1,
event_flags = 2
}
},
💥 START_IK
{
42.375, START_IK, { "Char_trent", "Char_Tr_Mk_IKeyes_glass" },
{
duration = 2.921,
end_effector = "Eye IK Left",
count_to_root = 1,
target_part = "",
target_type = ROOT,
damping = 1,
up = Y_AXIS,
front = Z_AXIS,
point_at = 1,
move_to = 0,
transition_duration = 0.300,
event_flags = 128
}
},
⚡ START_PSYS
effect
Инициализируйте и воспроизведите эффект системы частиц.
Свойство | Тип | Описание |
---|---|---|
duration |
float | Длительность жизни эффекта частиц. |
{
22.000, START_PSYS, { "Ship_civ_freighter_1_engine2" },
{
duration = 7.000
}
},
💨 START_FOG_PROP_ANIM
scene
Анимируйте настройки тумана в сцене (fogprops
). По умолчанию в сценах туман отсутствует, поэтому для его настройки необходимо использовать это событие.
💢 fogprops
Свойство | Тип | Описание |
---|---|---|
fogon |
boolean | Включение/выключение тумана в сцене. |
fogcolor |
integer[3] | Цвет тумана в формате RGB. |
fogmode |
string | Возможные варианты:F_LINEAR : Линейное затухание туманаF_EXP : Экспоненциальное затуханиеF_EXP2 : Неясно, что делаетF_NONE : Не используется |
fogstart |
float | Расстояние начала тумана. |
fogend |
float | Расстояние конца тумана. |
{
0.000, START_FOG_PROP_ANIM, { "Layer_Br_08_Bar_hardpoint" },
{
duration = 0.100,
fogprops =
{
fogon = Y,
fogtable = N,
fogcolor = { 62, 62, 80 },
fogmode = F_LINEAR,
fogstart = 0,
fogend = 1000,
fogdensity = 0.1
}
}
},
📎 START_SPATIAL_PROP_ANIM
object
Анимируйте общие пространственные свойства объекта (spatialprops
, т. е. положение, ориентация и т. д.). Если вы хотите, чтобы объект двигался по заданной траектории, используйте событие START_PATH_ANIMATION
.
Свойство | Тип | Описание |
---|---|---|
duration |
float | Длительность анимации. |
target_type |
string | Возможные варианты:ROOT PART |
{
149.100, START_SPATIAL_PROP_ANIM, { "Ambi_Roids_solar_badlands_dynamic_03", "Ambi_Roids_solar_badlands_dynamic_03_Target" },
{
duration = 60.000,
target_part = "",
target_type = ROOT,
spatialprops =
{
pos = { 170.7793, 1584.076, 966.3994 }
},
param_curve =
{
CLSID = "FreeFormPCurve",
points =
{
{ 0.000000, 0.000000, 0.000000, 0.952381 },
{ 1.000000, 1.000000, 0.947368, 0.000000 },
}
},
pcurve_period = -1000
}
},
💥 START_LIGHT_PROP_ANIM
light
Анимируйте свойства объекта освещения (lightprops
). С помощью этого события можно настраивать свойства источника света для создания различных визуальных эффектов, таких как стробоскопический свет, эффекты затухания и молнии.
{
6.500, START_LIGHT_PROP_ANIM, { "Ambi_Lt_Decon_Burst" },
{
duration = 1.100,
lightprops =
{
diffuse = { 0.729412, 1, 0.729412 },
ambient = { 0.121569, 0.376471, 0.121569 },
},
param_curve =
{
CLSID = "FreeFormPCurve",
points =
{
{ 0.000000, 0.000000, 0.000000, 0.000000 },
{ 0.243590, 1.000000, 0.000000, -4.250000 },
{ 1.000000, 0.000000, 0.000000, 0.000000 },
}
},
pcurve_period = -1000
}
},
💥 START_CAMERA_PROP_ANIM
camera
Анимируйте свойства объекта камеры (cameraprops
). Свойства, специфичные для камеры, включают настройку угла обзора.
{
89.744, START_CAMERA_PROP_ANIM, { "Cam_09_TCI_artifact", "Cam_09_PathPt3_PCOL" },
{
duration = 9.553,
cameraprops =
{
fovh = 20
},
param_curve =
{
CLSID = "FreeFormPCurve",
points =
{
{ 0.000000, 0.000000, 0.000000, 0.000000 },
{ 1.000000, 1.000000, 0.000000, 0.000000 },
}
},
pcurve_period = -1000
}
},
💨 START_PSYS_PROP_ANIM
effect
Анимируйте свойства объекта эффекта (psysprops
). Вы можете управлять одним свойством: sparam. Sparam — это число с плавающей точкой, передаваемое в эффекты и используемое для управления некоторыми эффектами, такими как интенсивность свечения выхлопных газов двигателя, инверсионных следов и двигателей.
Значения Sparam обычно задаются в диапазоне от 0 до 1, где 0 — анимация холостого хода двигателя, а 1 — полный крейсерский режим. Вы также можете задать длительность. Это время, необходимое двигателю для перехода из текущего состояния в заданное вами значение sparam. Обратите внимание, что анимация «заряда на крейсерском режиме» зашита в эффект следа двигателя, а не в сам эффект двигателя.
{
7.500, START_PSYS_PROP_ANIM, { "rtc_shipdust_2" },
{
duration = 0.100,
psysprops =
{
sparam = 0.7
}
}
},
📌 START_FLR_HEIGHT_ANIM
character, marker
Анимация высоты пола персонажа. Используйте это событие для анимации вертикального положения персонажа в таких ситуациях, как подъём по лестнице или поездка в лифте.
{
75.573, START_FLR_HEIGHT_ANIM, { "char_order_extra_04" },
{
duration = 0.000,
target_type = ROOT,
floor_height = -10.40001
}
},
📌 START_AUDIO_PROP_ANIM
sound
Анимированные свойства звуковых эффектов (аудиореквизит).
{
66.027, START_AUDIO_PROP_ANIM, { "sfx_fs_mr_hard01_13" },
{
duration = 4.000,
audioprops =
{
attenuation = -100
},
param_curve =
{
CLSID = "FreeFormPCurve",
points =
{
{ 0.000000, 0.000000, 0.000000, 0.000000 },
{ 1.000000, 1.000000, 0.000000, 0.000000 },
}
},
pcurve_period = -1000
}
},
📌 START_REVERB_PROP_ANIM
sound
Анимированные свойства реверберации звукового эффекта.
{
0.000, START_REVERB_PROP_ANIM, { "Layer_Hi_02_City_Ambi_Day" },
{
duration = 0.100,
reverbprops =
{
}
}
},
📌 START_PATH_ANIMATION
object, path
Перемещение объекта по траектории.
Свойство | Тип | Описание |
---|---|---|
duration |
float | Длительность. |
start_percent |
float | Начальная точка в процентах от длины пути (по умолчанию: 0.0). |
stop_percent |
float | Конечная точка в процентах от длины пути (по умолчанию: 1.0). |
offset |
float[3] | Дополнительное смещение позиции, применяемое во время анимации. |
up |
AXIS | Какая ось считается «вверх» (по умолчанию: Y_AXIS). |
front |
AXIS | Какая ось считается «вперёд» (по умолчанию: NEG_Z_AXIS). |
flags |
string | Возможные варианты:POSITION : Использовать координаты позиции из данных путиORIENTATION : Использовать кватернион ориентации из данных путиLOOK_AT : Объект будет ориентирован вдоль пути (игнорирует кватернион ориентации пути) |
{
0.000, START_PATH_ANIMATION, { "CnB_Camera_00_copy_1", "Path_1" },
{
duration = 30.000,
start_percent = 0,
stop_percent = 1,
offset = { 0, 0, 0 },
up = Y_AXIS,
front = NEG_Z_AXIS,
flags = POSITION,
param_curve =
{
CLSID = "FreeFormPCurve",
points =
{
{ 0.000000, 0.000000, 0.000000, 0.000000 },
{ 1.000000, 1.000000, 0.000000, 0.000000 },
}
},
pcurve_period = -1000
}
},