Модостроение. Спавн и логика
|
|
denis2000 | Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Спавн и логика Создание объектов на локации и логика поведения этих объектов Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7
Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML [cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл: 1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R]) 2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx" 3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо) Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#" Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти? Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда. Для того чтоб найти LOG необходимо зайти вот сюда:
В Win хр лог находится:
C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs
Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.
В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs
Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка: ... $app_data_root$ = true | false| $fs_root$| users\(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx) ... $logs$ = true| false| $app_data_root$| logs\(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи) ... [/cut][cut=Получение более подробной информации о вылете (ХОВАН)] Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...) Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так: Code function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Code Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil) Второй: Code Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic' [/cut]
Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы, статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Дизель | Дата: Вт, 18.11.2014, 15:27 | Сообщение # 1051 |
Сталкер
Разработчики
Сообщений: 260
| Цитата sergej5500 ( ) path_walk = surge_czech_walk path_look = surge_czech_look
Это всего лишь вей поинты, они могут быть различны в названиях, зависит от сборки локации, либо от внесения в аллспавн их. В логике они являются вектором.
Хотя я молчу, что там вы нагородили я не знаю, может вы и правы.
Если работаете в Зов Припяти, то на выброс, это легко сделать при помощи создания анипоинта в смарт кавере. Так будет работать точно - проверено, хотя если нет там аи сетки, то тоже не фига не получится.
andreyholkin
|
|
|
Эти 0 пользователя(ей) поблагодарили Дизель за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 18.11.2014, 19:26 | Сообщение # 1052 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый день.
Сделал рестриктор радиоточки.
[cut=Логика][logic] active = sr_idle@start
[sr_idle@start] on_info = {=dist_to_actor_le(10)} sr_idle@stop %=play_sound(radio_music)%
[sr_idle@stop] on_info = {=dist_to_actor_ge(25)} sr_idle@start %=stop_sound%[/cut]
[cut=script_sound][radio_music] type = 3d path = radio_music\radio_music_ shuffle = rnd idle = 0,0,100[/cut]
В папке sounds\radio_music имеется 30 файлов radio_music_1, radio_music_2, radio_music_3 и т.д.
При подходе к приемнику (рестриктору) рандомно запускается одна из композиций. Если просто стоять и слушать, то после окончания трека музыка прекращается. Чтобы запустить музыку по новой, надо отойти на 25 метров. Потом вернуться к рестриктору.
Вопрос такой. Можно ли сделать так, чтобы после окончания ролика немедленно запускался следующий? Музыка должна звучать непрерывно. Что надо поправить?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Вт, 18.11.2014, 19:48 | Сообщение # 1053 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата sergej5500 ( ) чтобы после окончания ролика немедленно запускался следующий?
[sr_idle@stop] on_info = {=dist_to_actor_ge(25)} sr_idle@start %=stop_sound% on_info2 = {!is_playing_sound()} sr_idle@start
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
Дизель | Дата: Ср, 19.11.2014, 03:11 | Сообщение # 1054 |
Сталкер
Разработчики
Сообщений: 260
| Цитата makdm ( ) Вопрос такой. Можно ли сделать так, чтобы после окончания ролика немедленно запускался следующий? Музыка должна звучать непрерывно. Что надо поправить?
Музыка должна играть, сменяясь сама. Значит неправильно создали логику.
Я свой пример приведу, а там разгребите попробуйте. Может работает, не ругайтесь если не пашет при выбросе, я давно её не включал.
[cut noguest]#include "dizel_sound_autostation.ltx" добавить в Z:\S.T.A.L.K.E.R. - Зов Припяти\gamedata\configs\misc\script_sound.ltx
Дописать в лист: : list_music_and_stories, list_script_sound_zaton, list_script_sound_jupiter, list_script_sound_pripyat, list_script_sound_underpass, list_dizel_sound_autostation
Далее:
Создать Z:\S.T.A.L.K.E.R. - Зов Припяти\gamedata\configs\misc\dizel_sound_autostation.ltx
Написать в нём:
[list_dizel_sound_autostation] avto_bar_ph_music avto_bar_ph_music_surge
[avto_bar_ph_music] type = 3d path = avto_bar_ph_music\avto_bar_ph_music_ shuffle = rnd idle = 1,2,10 play_always = true npc_prefix = false
[avto_bar_ph_music_surge] type = 3d path = avto_bar_ph_music\avto_bar_ph_music_surge_ shuffle = rnd idle = 1,2,10 play_always = true npc_prefix = false
Создать файл avto_bar_ph_music.ltx в Z:\S.T.A.L.K.E.R. - Зов Припяти\gamedata\configs\scripts\avto_bar_ph_music\
Написать в нём:
[logic] active = ph_idle@wait
[ph_idle@wait] on_info = {-avto_sr_light_off} ph_idle@ph_sound3000 on_info2 = {+avto_sr_light_off} ph_idle@ph_sound on_info3 = { =surge_complete =actor_in_zone(avto_surge_hide_centr_krysha)} ph_idle@ph_sound3000_rupor
[ph_idle@ph_sound3000] on_info = %=play_sound(avto_bar_ph_music)% on_game_timer = 10 | {=surge_complete =actor_in_zone(avto_surge_hide_centr_krysha)}ph_idle@ph_sound
[ph_idle@ph_sound] on_game_timer = 10 | ph_idle@ph_sound3000_surge %=stop_sound(avto_bar_ph_music)%
[ph_idle@ph_sound3000_surge] on_info = %=play_sound(avto_bar_ph_music_surge) % on_game_timer = 30 | ph_idle@ph_sound3000_wait
[ph_idle@ph_sound3000_wait] on_info = {-avto_sr_light_off} ph_idle@ph_sound3000 %=stop_sound(avto_bar_ph_music_surge) %
[ph_idle@ph_sound3000_rupor] on_info = {=actor_in_zone(avto_surge_hide_centr_krysha)} ph_idle@wait %=play_sound(avto_bar_ph_music)%
Далее надо создать в аллспавне простой рестриктор у радиоточки и прописать в нём путь к файлу в конфигах avto_bar_ph_music.ltx
Закинуть в звуки sounds\avto_bar_ph_music\avto_bar_ph_music_surge_1,2,3....ogg и avto_bar_ph_music_1,2,3...ogg
Это возможно рабочая схема, к сожалению я давно её не проверял. Это всего лишь направление к вашему действию![/cut]
andreyholkin
Сообщение отредактировал Дизель - Вс, 23.11.2014, 14:28 |
|
|
Эти 0 пользователя(ей) поблагодарили Дизель за это полезное сообщение: |
|
|
Сахар | Дата: Вс, 23.11.2014, 05:56 | Сообщение # 1055 |
Гражданский
Пользователи
Сообщений: 2
| Доброго здравия сегодня ковырялся в xr_effects.script и наткнулся на функцию send_tip она служит для отправки сообщений и имеет такую структуру =send_tip(news_id:sender:sender_id) с news_id всё понятно это индфикатор текстовой строки, но вот как использовать sender и sender_id я так и не понял, пробовал так может, кто знает как этими двумя параметрами пользоваться с меня +
|
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 23.11.2014, 12:12 | Сообщение # 1056 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Сахар, Итак функция xr_effects.send_tip(actor, npc, p), это лишь обертка для функции news_manager.(actor, news_id, timeout, sender, showtime, sender_id), которой передаются еще и не все параметры, а только p[1]=news_id, p[2]=sender, p[3]=sender_id. Достаточно взгянуть на функцию news_manager.(actor, news_id, timeout, sender, showtime, sender_id), чтобы понять для чего нужны эти параметры: news_id - идентификатор строки текста новости sender - иконка новости из таблицы tips_icons (строго говоря может быть или строкой - имя иконки или объектом - указателем на НПС отправившего сообщение тогда иконка сообщения есть иконка этого НПС через xr_effects.send_tip естественно не применимо) sender_id - story_id НПС отправителя используется только для того, чтобы определить не умер ли НПС или не тяжело ранен, если он мертв или ранен то сообщение не отправиться.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 24.11.2014, 22:28 | Сообщение # 1057 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер.
[cut=Логика непися][logic] prior = 100 known_info = known_info
[known_info] zat_b100_military_1_serchd[/cut]
Это логика одного из мертвых солдат у вертолета в Железном Лесу.
Согласно справочнику по логике:
Секция known_info
По обыску тела NPC выдает прописанные в секции инфопорции.
[known_info] info1 info2
Есть два вопроса.
1. Трупы солдат в Железном Лесу "вечные". Они валяются и после осмотра вертолета. После визита в Припять. Уборщик их не берет. По крайней мере у меня. Данная особенность есть только у неписей с known_info. Связано ли это с known_info, или есть другая причина устойчивости трупов?
2. Можно ли из секции known_info запускать функции в xr_effects? Или можно выдать только инфопорцию?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Вт, 25.11.2014, 11:42 | Сообщение # 1058 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата sergej5500 ( ) Связано ли это с known_info, или есть другая причина устойчивости трупов? Связано напрямую.
Цитата sergej5500 ( ) Можно ли из секции known_info запускать функции в xr_effects? Только инфопорцию.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Вт, 25.11.2014, 16:29 | Сообщение # 1059 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Доброго вечера всем !!!Не так давно спрашивал логику на спринт, получил логику данного формата [logic] active = walker
[walker] path_walk = путь_бега path_look = путь_взгляда def_state_moving1 = sprint ;ГГ будет бежать из-за выставленной анимации "sprint" def_state_moving2 = sprint def_state_moving3 = sprint
Элементарно прописал согласно этой логику создал пути точки но будьте добры поясните мне почему гг бежит ну вот так в развалку http://www.youtube.com/watch?v=MglmRGR_Vck&feature=youtu.be не подумайте это не реклама, просто мне нужно логику то ли паники то ли страха, что бы он бежал просто без оружия и не смотрел на мутантов, есть же такой бег, очень жаль, не могу доделать до конца видеоролик, правда он еще в плане теста, помгите прописать правильно, тут логика нпс http://SSMaker.ru/efb591f0/ --- перепробовал все версии которые только возможны тут логика вей путь http://SSMaker.ru/0c14b104/ ---видно весь путь может кто то знает логику паники, или может какую мою ошибку покажет но по путям перепробовал тоже все позиции
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 25.11.2014, 19:03 | Сообщение # 1060 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, sprint - это довольно медленный бег НПС (бег трусцой на уровне быстрого шага ГГ), пробуй другие анимационные состояния из файла state_lib.script, там должен быть и быстрее, вроде rush быстрее...
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Вт, 25.11.2014, 21:26 | Сообщение # 1061 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Цитата denis2000 ( ) sprint - это довольно медленный бег НПС Я тут порылся немного в анимках, получается вот такая картина ; |a=rush бежит с оружием
|a=run Бежит с оружием в руках |a=sprint быстро бежит (а-ля сталкер Вобла с артом) без оружия\не прицеливаясь Он бежит при спринте спокойно потому что ему ничего не угрожает, мне нужна помощь, а именно в логике что бы прописать коэф. паники, прошу прощения, я логике нуб, и сам сочеинить не смогу , если есть соображения на сей счет прошу обьяснить
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 25.11.2014, 22:45 | Сообщение # 1062 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, def_state_moving = sprint - означает, что НПС будет быстро бежать ДО ПЕРВОЙ ТОЧКИ СВОЙ РАБОТЫ (до первой точки пути), чтобы он бежал по всему пути, на всех точках этого самого пути должна стоять соответствующая анимация: wp00|a=sprint
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 29.11.2014, 20:00 | Сообщение # 1063 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер.
Возникло несколько вопросов.
1. Увидел в консоли желтую надпись.
~ cannot remove restriction with id [9803][jup_b211_zone_mine_acidic_average] to the entity with id [17093][jup_b6_bloodsucker_117093], because it is not added
Чем то движку не приглянулась секция.
[cut=Секция][9762]
; cse_abstract properties section_name = zone_mine_acidic_average name = jup_b211_zone_mine_acidic_average position = 259.21484375, -5.2786750793457, 436.170776367188 direction = 0, 0, 0 id = 65535 version = 128 script_version = 12 spawn_id = 7493
; cse_alife_object properties game_vertex_id = 522 distance = 12.599999 level_vertex_id = 1150504 object_flags = 0xffffff3e
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 2
; cse_alife_space_restrictor properties restrictor_type = 0
; cse_alife_custom_zone properties
; cse_alife_anomalous_zone properties offline_interactive_radius = 30 artefact_spawn_count = 32 artefact_position_offset = 0x3ca0
; se_zone_anom properties
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]
В секции вроде ничего криминального нет. Кроме restrictor_type = 0. У большинства предметов restrictor_type = 3. Вопрос, чем нулевой тип отличается от третьего?
2. В консоли красные надписи типа
! ERROR: SV: can't find children [25040] of parent [-1782603936] ! ERROR: SV: can't find children [25041] of parent [-1782603440]
Что они могут означать?
3. Вопрос по учебнику Хована. Подключил к СГМ 2.1 локацию Кордон из ЧН. Обнаружил, что неписи не хотят открывать двери на базе сталкеров возле моста. Воспользовался советом Хована.
[cut=Совет]
61. NPC не открывают новые двери
Убедиться что двери заспавнены как physic_door
удалить в ph_door.script функции try_to_open_door и try_to_close_door строку
if true then return {} end [/cut]
Двери на Кордоне пришли в норму. Зато на Юпитере вылез глюк.
Двери на Янове постоянно открыты. И не закрываются. Проблема в функции if true then return {} end. Если её восстановить, то двери на Янове работают нормально. Зато не работают двери на Кордоне.
4. Непись обшаривает погибшего.
Как называется эта анимация?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Сб, 29.11.2014, 23:31 | Сообщение # 1064 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| 1. Не обращай внимания (обычные стенания движка, что где то что-то не так, но существенных проблем это не вызывает). Разные типы рестрикторов для разных задач, 0 обычно для аномалий, 2 для ограничителей неких областей, а 3 для рестрикторов с логикой. 2. Они значат, что некий объект является зависимым по отношению к некому родительскому объекту (например предмет в инвентаре НПС или в ящике или в трупе), но зависимый объект с ид таким то не найден. Это опасное состояние (так как может привести к вылету в дальнейшем) и нужно обратить внимание на скрипты удаляющие такие объекты. 3. Пропустили первый пункт совета: Убедиться, что двери заспавнены как physic_door. 4. Анимационное состояние называется search_corpse или тебе именно имя анимации? Имя анимации: dinamit_1
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 30.11.2014, 01:35 | Сообщение # 1065 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата denis2000 ( ) 3. Пропустили первый пункт совета: Убедиться, что двери заспавнены как physic_door.
[cut=Секции дверей.] [8373]
; cse_abstract properties section_name = physic_door name = jup_physic_door position = -60.2000007629395, 3.90000009536743, 199.600006103516 direction = 0, -1.57079601287842, 0 id = 65535 version = 128 script_version = 12 spawn_id = 6104
; cse_alife_object properties game_vertex_id = 317 level_vertex_id = 1231404 object_flags = 0xffffff3a custom_data = <<END [collide] ignore_static ignore_ragdoll
[logic] cfg = scripts\jupiter\jup_a6_main_doors.ltx END
; cse_visual properties visual_name = dynamics\door\door_metal_220x260_01_l
; cse_ph_skeleton properties
; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = link upd:num_items = 0x3f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[8374]
; cse_abstract properties section_name = physic_door name = jup_physic_door_0000 position = -60.2000007629395, 3.90000009536743, 197.399993896484 direction = 0, -1.57079601287842, 0 id = 65535 version = 128 script_version = 12 spawn_id = 6105
; cse_alife_object properties game_vertex_id = 317 level_vertex_id = 1231404 object_flags = 0xffffff3a custom_data = <<END [collide] ignore_static ignore_ragdoll
[logic] cfg = scripts\jupiter\jup_a6_main_doors.ltx END
; cse_visual properties visual_name = dynamics\door\door_metal_220x260_01_r
; cse_ph_skeleton properties
; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = link upd:num_items = 0x3f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[8375]
; cse_abstract properties section_name = physic_door name = jup_physic_door_0001 position = -40.2900009155273, 3.90000009536743, 197.399993896484 direction = 0, 1.57081401348114, 0 id = 65535 version = 128 script_version = 12 spawn_id = 6106
; cse_alife_object properties game_vertex_id = 317 level_vertex_id = 1231404 object_flags = 0xffffff3a custom_data = <<END [collide] ignore_static ignore_ragdoll
[logic] cfg = scripts\jupiter\jup_a6_main_doors_2.ltx END
; cse_visual properties visual_name = dynamics\door\door_metal_220x260_01_l
; cse_ph_skeleton properties
; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = link upd:num_items = 0x3f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[8376]
; cse_abstract properties section_name = physic_door name = jup_physic_door_0002 position = -40.2900009155273, 3.90000009536743, 199.600006103516 direction = 0, 1.57081401348114, 0 id = 65535 version = 128 script_version = 12 spawn_id = 6107
; cse_alife_object properties game_vertex_id = 317 level_vertex_id = 1231404 object_flags = 0xffffff3a custom_data = <<END [collide] ignore_static ignore_ragdoll
[logic] cfg = scripts\jupiter\jup_a6_main_doors_2.ltx END
; cse_visual properties visual_name = dynamics\door\door_metal_220x260_01_r
; cse_ph_skeleton properties
; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = link upd:num_items = 0x3f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]
Как physic_door они прописаны разработчиками.
[cut=Логика двери.][logic] active = ph_door@closed
[ph_door@closed] closed = true locked = false on_use = ph_door@open %+jup_a6_main_door_open% on_info = {+jup_a6_main_door_open !is_door_blocked_by_npc} ph_door@open snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop
[ph_door@open] closed = false locked = false on_use = ph_door@closed %-jup_a6_main_door_open% on_info = {-jup_a6_main_door_open !is_door_blocked_by_npc} ph_door@closed on_game_timer = 35 | {!is_door_blocked_by_npc} ph_door@closed %-jup_a6_main_door_open% snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop
[ph_door@locked] closed = true locked = true on_info = {=check_smart_alarm_status(jup_a6:normal)} ph_door@closed snd_open_start = trader_door_locked tip_open = tip_door_closed_hide_weapon
[ph_door@locked_alarm] closed = true locked = true on_info = {=check_smart_alarm_status(jup_a6:normal)} ph_door@closed snd_open_start = trader_door_locked tip_open = tip_door_closed_base_alarm [/cut]
Двери постоянно открыты. Каждые 5-6 секунд они пытаются закрыться. Поворачиваются на 15-20 градусов вокруг петель и снова принудительно открываются.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|