Команды с объектами
В этой статье я перечислю более 30 команд для работы с объектами! Сначала рассмотри обычные опкоды, через которые происходит управление самим объектом.
Этими командами можно создать объект, принципиально они ничем не отличаются: 0107: $2706 = create_object #AD_FLATDOOR at 1833.36 -1995.45 12.5
029B: 27@ = init_object #NF_BLACKBOARD at 0.0 0.0 0.0
Уничтожает объект: 0108: destroy_object $1147
Записать в переменную 13@ угол объекта: 0176: 13@ = object 0@ z_angle
Устанавливает угол 180.0°: 0177: set_object 27@ z_angle_to 180.0
Создаёт маркер над объектом (подробно в статье "Создание маркеров, сфер и корон"): 0188: 123@ = create_marker_above_object 109@
Записывает координаты объекта в переменные $x $y $z: 01BB: store_object 0@ position_to $x $y $z
Мгновенно перемещает объект 0@ в нужные координаты (телепорт): 01BC: put_object 0@ at 0.0 0.0 0.0
Эти команды удаляют объект из памяти (вторая действует только после опкода 00D8): 01C4: remove_references_to_object 0@
01C7: remove_object_from_mission_cleanup_list 27@
Постепенно можно переместить объект следующим образом: 0001: wait 0 ms
00D6: if 0
034E: move_object 0@ to 1@ 2@ 3@ speed 13@ 16@ 19@ flag 1
004D: jump_if_false ЈЈMOVE
Прицепить объект к тачке (то же 2 опкода): 035C: place_object $208 relative_to_car $198 offset -7.0 74.0 -0.5
0681: attach_object 71@ to_car 60@ at_offset 0.5 0.3 0.3 rotation 0.0 0.0 0.0
Подбросить объект: 0381: throw_object 0@ distance 23@ 24@ 25@
Материальность: 0382: set_object 0@ collision_detection 1
Создаёт координаты на заданный ofset, т.е. на заданное расстояние от центра объекта: 0400: create_coordinate 20@ 21@ 22@ from_object 9@ offset 17@ 18@ 19@
Заставляет объект повернуться на определённый угол по осям: 0453: object $2729 set_rotation 15.0 0.0 $72
Привязывает объект к интерьеру (подробно о том, что такое интерьеры и какие они бывают написано в соответствующей статье): 0566: object $2703 set_interior 1
Прицепить объект к объекту: 069A: attach_object 39@ to_object 46@ at_offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0
Прицепить объект к актёру: 069B: attach_object 88@ to_actor 38@ at_offset 0.0 0.5 -1.0 rotation 0.0 0.0 0.0
Задать массу: 071F: set_object 109@(214@,5i) mass 1
Задать масштаб: 08D2: object 347@(39@,10i) scale_model 0.3
Задать иммунитеты: 09CA: set_object $1242 immunities 1 1 1 1 1
Теперь поговорим об условных командах, т.е. командах с помощью которых в игре можно проверить совершено то или иное действие с объектом, находится ли он в определённых координатах и т.д.
Проверяет взорван ли объект: 0366: object $1754 blown_up
Существует ли вообще объект: 03CA: object $2727 exists
Два опкода, которые проверяют находится ли актёр на заданном расстоянии от объекта: 0471: unknown_actor $PLAYER_ACTOR near_object $2727 radius 50.0 50.0 unknown 0
0474: actor $PLAYER_ACTOR near_object 51@ offset 15.0 15.0 4.0 unknown 0
Разрушен ли объект: 04DA: has_object 110@(176@,10i) collided
Находится ли объект около точки: 04E5: unknown_object 38@(119@,4i) near_point 90@ 91@ radius 20.0 7.0 unknown 0
04E6: unknown_object 0@ near_point 1@ 2@ 3@ radius 0.1 0.1 0.1 unknown 0
В воде объект или нет: 04E7: object 117@(34@,7i) in_water
Находится ли объект в заданном кубе: 04EA: unknown_object 62@(42@,25i) in_cube 2774.308 -2405.28 12.68 2801.607 -2430.073 15.39 unknown 0
Проверят модель объекта: 09CC: object 0@ model_is #CJ_COIN_OP_2
Вот всё, основные действия работы с объекты я указал.