|
Модостроение. Спавн и логика
|
|
| 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 за это полезное сообщение: |
|
|
| NIV | Дата: Вс, 02.06.2013, 11:14 | Сообщение # 421 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 422 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| NIV, Я когда делал путь для вертолета снимал все координаты на земле, а потом увеличивал координату Y, то есть высоту над уровнем моря, на 20 метров и проблем не было. Вероятнее всего проблема и не в координатах. Получаешь вылет - Лог в студию, иначе разговор не о чем.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| NIV | Дата: Пн, 03.06.2013, 11:28 | Сообщение # 423 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 424 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (NIV) то вертолет исчезает (цепляет землю при старте?) Вертолет в полете не реагирует на геометрию (может спокойно пролетать через любые объекты). Цитата (NIV) может там нет AI сетки? Естественно ее там нет! Вертолету АИ-сетка не нужна. Цитата (NIV) Однако после старта вертолет летит не по пути, а куда хочет, иногда под землю Вертолет не летает "четко" по пути, траектория расчитывается так чтобы он пролетал через заданные точки, но между точками не прямая линия а некоторая кривая, поэтому вертолет вполне может на этой кривой залетать в объекты и т.п. Цитата (NIV) описании вертолета присутствует "[story_object] story_id = имя" Если их прописать так, то all.spawn не собирается. В каком файле нужно добавлять новый story_object? В all.spawn и нужно прописывать, но прописали что-то не так.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| NIV | Дата: Пн, 03.06.2013, 20:56 | Сообщение # 425 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 426 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (NIV) Сначала кружится немного Это он, вроде, на первую точку выходит. Даже если точка спавна совпадает с первой точкой пути, вертолет может произвести некоторые маневры для "выхода" на нее.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Азазель | Дата: Вс, 09.06.2013, 18:27 | Сообщение # 427 |
|
Новичок
Пользователи
Сообщений: 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 | Сообщение # 428 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Азазель, 1. Почему в кавычках cfg = "scripts\sr_sleep.ltx" 2. Зачем такое огромное спальное место 9 метров х 16 метров и почти 10 метров в высоту.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Азазель | Дата: Пн, 10.06.2013, 07:28 | Сообщение # 429 |
|
Новичок
Пользователи
Сообщений: 77
| denis2000, Таки с кавычками ошибся немного. Но что с ними что без результат один. Насчет координат не знаю секцию скопировал с урока
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Азазель за это полезное сообщение: |
|
|
| denis2000 | Дата: Пн, 10.06.2013, 19:10 | Сообщение # 430 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Азазель, В разных версиях ACDC вид секциий может отличаться, сравните свою с любой другой из распакованных файлов.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Азазель | Дата: Пн, 10.06.2013, 20:19 | Сообщение # 431 |
|
Новичок
Пользователи
Сообщений: 77
| denis2000, Ошибка исчезла при смене номера секции на больший. Но вылезла другая. Теперь ACDC кидает кучу ошибок про шейпы и отсутствие секции спейс рестриктор
А скриншотом не порадуете? denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Азазель за это полезное сообщение: |
|
|
| 9vova8 | Дата: Вт, 18.06.2013, 16:08 | Сообщение # 432 |
|
Новичок
Пользователи
Сообщений: 91
| Доброго времени суток ,подскажите пожалуйста, как запретить мутантам воевать друг против друга (в game relation отношение им поставил 5000). Зарание спасибо.
Сообщение отредактировал 9vova8 - Вт, 18.06.2013, 16:08 |
| |
|
| Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вт, 18.06.2013, 16:19 | Сообщение # 433 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| 9vova8, Полагаю, что нужно редактировать таблицу [monster_relations] в game_relations. Значения ; [1] друг, [0] нейтрал, [-1] враг, [-2] злейший враг.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| Азазель | Дата: Чт, 20.06.2013, 15:07 | Сообщение # 434 |
|
Новичок
Пользователи
Сообщений: 77
| Всем доброго времени суток. Такой вопрос. Заспавнил нпс через скрипт. Прописал логику meet все хорошо работает. Но вот при добавлении victim нпс же должен вроде как оборачиваться на актора а он так и стоит столбом. Как бы исправить ?
Какая версия? denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Азазель за это полезное сообщение: |
|
|
| Маркс | Дата: Чт, 20.06.2013, 23:35 | Сообщение # 435 |
 Новичок
Пользователи
Сообщений: 73
| Вечер Добрый. Создал НПС.Но не появляется окно диалога.Подскожите?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Маркс за это полезное сообщение: |
|
|
|