Модостроение. Спавн и логика
|
|
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 за это полезное сообщение: |
|
|
sergej5500 | Дата: Ср, 29.05.2013, 15:31 | Сообщение # 421 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| kosidor, Логика смарта [smart_terrain];zat_sh_padonki_smart squad_id = 59 respawn_params = respawn@zat_sh_padonki_smart max_population = 2 [respawn@zat_sh_padonki_smart] spawn_stalker@padonki [spawn_stalker@padonki] spawn_squads = zat_sh_padonki_squad spawn_num = 1 Всегда спавнится 1 сквад. Условием рождения будет смерть предыдущего сквада.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
NIV | Дата: Пт, 31.05.2013, 07:40 | Сообщение # 422 |
Полевой исследователь
Ученые сталкеры
Сообщений: 167
| Добрый день, подскажите пожалуйста по паре вопросов: 1) При создании нового смарта параметр squad_id обязателен? В него включаются сталкеры и мутанты и для каждой локации squad_id считается отдельно? Тогда находим последний номер и в каждый новый смарт пишем n+1? 2) У меня сделано перемещение сквада из одного смарта в другой по инфопоршню, при этом получается такая картина. Сначала командир не торопясь доходит до нового смарта, потом остальные подрываются и бегут догонять. Сами смарты расположены не очень далеко друг от друга, метров 30-40. Можно ли сделать, чтобы сквад перемещался одновременно?
P.S. Вообще, насчет неодновременности, я погорячился. При разном спауне НПС занимают немного разные места на смарте и потом бегают немного по-разному, в основном - более или менее группой.
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
Сообщение отредактировал NIV - Пт, 31.05.2013, 18:29 |
|
|
Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 31.05.2013, 18:46 | Сообщение # 423 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| NIV, 1. Параметр quad_id обязателен, в пределах локации id должны быть разные. 2. Непонятно зачем делать перемещение между близкими смартами, но в скваде который в пути маршрут считается только для лидера, остальные идут в режиме "следования за лидером" (то есть идут при расстоянии до него меньше определенного или бегут при расстоянии больше некоторого определенного). Если нужны конкретные действия от сквада рисуй им всем конкретную логику перемещений.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
NIV | Дата: Вс, 02.06.2013, 11:14 | Сообщение # 424 |
Полевой исследователь
Ученые сталкеры
Сообщений: 167
| Возникла еще одна проблемка: в ЗП (SGM 2.2) не могу заставить нормально летать вертолет, хотя в ТЧ делал точно также и все работало. При выдаче инфопоршня вертолет просто исчезает и игра вылетает или начинает дико тормозить. Прописал путь вертолету в all.spawn (way_escape.ltx) [cut=ПУТЬ][esc_heli_fly1] points = p0,p1,p2,p3 p0:name = name00 p0:position = -179.550003051758,-27.1599998474121,-377.929992675781 p0:game_vertex_id = 1953 p0:level_vertex_id = 70365 p0:links = p1(1)
p1:name = name01 p1:position = -179.550003051758,14.00,-377.929992675781 p1:game_vertex_id = 1953 p1:level_vertex_id = 70365 p1:links = p2(1)
p2:name = name02 p2:position = -172.24089050293,14.00,-198.244125366211 p2:game_vertex_id = 2001 p2:level_vertex_id = 77077 p2:links = p3(1)
p3:name = name03 p3:position = -89.3976287841797, 14.00,-63.8544311523438 p3:game_vertex_id = 1870 p3:level_vertex_id = 178692[/cut]. Подозреваю, что причина в неправильных game и level_vertex_id (или м.б. флагах?). Пока вертексы взяты с точек на земле. Как можно получить их для точек, лежащих в воздухе? Сами координаты получал командой "rs_cam_pos on".
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
Сообщение отредактировал NIV - Вс, 02.06.2013, 11:18 |
|
|
Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 02.06.2013, 12:23 | Сообщение # 425 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| NIV, Я когда делал путь для вертолета снимал все координаты на земле, а потом увеличивал координату Y, то есть высоту над уровнем моря, на 20 метров и проблем не было. Вероятнее всего проблема и не в координатах. Получаешь вылет - Лог в студию, иначе разговор не о чем.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
NIV | Дата: Пн, 03.06.2013, 11:28 | Сообщение # 426 |
Полевой исследователь
Ученые сталкеры
Сообщений: 167
| Да, забыл сказать, что вылет был безлоговый
Тогда первое пробуй сделать путь по моей методике, по результату отчет в теме. denis2000Добавлено (03.06.2013, 11:28) --------------------------------------------- Вертолет начал стартовать, зависания исчезли. Эксперименты показали, что первую точку пути вертолета нужно ставить немного над землей (Кнопка "координировать" и функция "rs_cam_pos on" дает немного разную высоту). Если точка старта на земле - то вертолет исчезает (цепляет землю при старте?) Слишком большую высоту точек полета задавать не надо, достаточно где-то от -5 до +5 (может там нет AI сетки?). Однако после старта вертолет летит не по пути, а куда хочет, иногда под землю. Осталась такая неясность: в ЗП в описании вертолета присутствует "[story_object] story_id = имя" Если их прописать так, то all.spawn не собирается. В каком файле нужно добавлять новый story_object? (В ТЧ вместо этого присутствовали строки типа "id = 65535 spawn_id = 749".
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
|
|
|
Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 03.06.2013, 18:46 | Сообщение # 427 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (NIV) то вертолет исчезает (цепляет землю при старте?) Вертолет в полете не реагирует на геометрию (может спокойно пролетать через любые объекты). Цитата (NIV) может там нет AI сетки? Естественно ее там нет! Вертолету АИ-сетка не нужна. Цитата (NIV) Однако после старта вертолет летит не по пути, а куда хочет, иногда под землю Вертолет не летает "четко" по пути, траектория расчитывается так чтобы он пролетал через заданные точки, но между точками не прямая линия а некоторая кривая, поэтому вертолет вполне может на этой кривой залетать в объекты и т.п. Цитата (NIV) описании вертолета присутствует "[story_object] story_id = имя" Если их прописать так, то all.spawn не собирается. В каком файле нужно добавлять новый story_object? В all.spawn и нужно прописывать, но прописали что-то не так.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
NIV | Дата: Пн, 03.06.2013, 20:56 | Сообщение # 428 |
Полевой исследователь
Ученые сталкеры
Сообщений: 167
| Цитата (denis2000) Вертолет не летает "четко" по пути Вот в этом, похоже, и есть основная проблема. Нужно экспериментировать с точками пути. Я перенес старт вертолета в другое место - оттуда он стартует как-то удачнее. Сначала кружится немного (разгоняется до max_velocity ???), и потом летит более или менее по заданным точкам. Правда, попасть в аномалию очень легко, что приводит к разрушению верта (собственно, в оригинале ЗП об этом и рассказывалось ). Кстати, если не указывать max_velocity, то будет вылет, где ругаются на то, что эта величина = nil. И еще - после достижения последней точки пути верт летит к точке 0, независимо от того, указать линк на последнюю точку "p7:links = p7(1)" или не указывать link совсем.
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
|
|
|
Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 04.06.2013, 20:55 | Сообщение # 429 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (NIV) Сначала кружится немного Это он, вроде, на первую точку выходит. Даже если точка спавна совпадает с первой точкой пути, вертолет может произвести некоторые маневры для "выхода" на нее.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Азазель | Дата: Вс, 09.06.2013, 18:27 | Сообщение # 430 |
Новичок
Пользователи
Сообщений: 77
| Доброго дня. Такая проблема. Выполнял урок по спальному месту в чн. И не могу скомпилировать спавн. Проблема именно в секции спейс рестриктора. Ибо если удалить её все отлично. Вот секция [10000] ; cse_abstract properties section_name = space_restrictor name = mar_sleep_zone position = -175.399993896484,4.80000019073486,-279.100006103516 direction = 0,0,0
; cse_alife_object properties game_vertex_id = 146 distance = 0 level_vertex_id = 53796 object_flags = 0xffffff3e
custom_data = <<END [logic] cfg = "scripts\sr_sleep.ltx" END
; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 8.77420711517334,0,0 shape0:axis_y = 0,9.81659603118896,0 shape0:axis_z = 0,0,16.5520057678223 shape0:offset = 0,0,0
; cse_alife_space_restrictor properties restrictor_type = 3
|
|
|
Эти 0 пользователя(ей) поблагодарили Азазель за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 09.06.2013, 19:44 | Сообщение # 431 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Азазель, 1. Почему в кавычках cfg = "scripts\sr_sleep.ltx" 2. Зачем такое огромное спальное место 9 метров х 16 метров и почти 10 метров в высоту.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Азазель | Дата: Пн, 10.06.2013, 07:28 | Сообщение # 432 |
Новичок
Пользователи
Сообщений: 77
| denis2000, Таки с кавычками ошибся немного. Но что с ними что без результат один. Насчет координат не знаю секцию скопировал с урока
|
|
|
Эти 0 пользователя(ей) поблагодарили Азазель за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 10.06.2013, 19:10 | Сообщение # 433 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Азазель, В разных версиях ACDC вид секциий может отличаться, сравните свою с любой другой из распакованных файлов.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Азазель | Дата: Пн, 10.06.2013, 20:19 | Сообщение # 434 |
Новичок
Пользователи
Сообщений: 77
| denis2000, Ошибка исчезла при смене номера секции на больший. Но вылезла другая. Теперь ACDC кидает кучу ошибок про шейпы и отсутствие секции спейс рестриктор
А скриншотом не порадуете? denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили Азазель за это полезное сообщение: |
|
|
9vova8 | Дата: Вт, 18.06.2013, 16:08 | Сообщение # 435 |
Новичок
Пользователи
Сообщений: 91
| Доброго времени суток ,подскажите пожалуйста, как запретить мутантам воевать друг против друга (в game relation отношение им поставил 5000). Зарание спасибо.
Сообщение отредактировал 9vova8 - Вт, 18.06.2013, 16:08 |
|
|
Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
|