Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Спавн и логика
denis2000Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Ср, 29.05.2013, 15:31 | Сообщение # 421
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

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 сквад. Условием рождения будет смерть предыдущего сквада.
 
NIVДата: Пт, 31.05.2013, 07:40 | Сообщение # 422
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Добрый день, подскажите пожалуйста по паре вопросов:
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
 
denis2000Дата: Пт, 31.05.2013, 18:46 | Сообщение # 423
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV,
1. Параметр quad_id обязателен, в пределах локации id должны быть разные.
2. Непонятно зачем делать перемещение между близкими смартами, но в скваде который в пути маршрут считается только для лидера, остальные идут в режиме "следования за лидером" (то есть идут при расстоянии до него меньше определенного или бегут при расстоянии больше некоторого определенного). Если нужны конкретные действия от сквада рисуй им всем конкретную логику перемещений.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Вс, 02.06.2013, 11:14 | Сообщение # 424
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Возникла еще одна проблемка: в ЗП (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
 
denis2000Дата: Вс, 02.06.2013, 12:23 | Сообщение # 425
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, Я когда делал путь для вертолета снимал все координаты на земле, а потом увеличивал координату Y, то есть высоту над уровнем моря, на 20 метров и проблем не было. Вероятнее всего проблема и не в координатах. Получаешь вылет - Лог в студию, иначе разговор не о чем.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Пн, 03.06.2013, 11:28 | Сообщение # 426
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Да, забыл сказать, что вылет был безлоговый

Тогда первое пробуй сделать путь по моей методике, по результату отчет в теме. 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"
 
denis2000Дата: Пн, 03.06.2013, 18:46 | Сообщение # 427
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (NIV)
то вертолет исчезает (цепляет землю при старте?)

Вертолет в полете не реагирует на геометрию (может спокойно пролетать через любые объекты).
Цитата (NIV)
может там нет AI сетки?

Естественно ее там нет! Вертолету АИ-сетка не нужна.
Цитата (NIV)
Однако после старта вертолет летит не по пути, а куда хочет, иногда под землю

Вертолет не летает "четко" по пути, траектория расчитывается так чтобы он пролетал через заданные точки, но между точками не прямая линия а некоторая кривая, поэтому вертолет вполне может на этой кривой залетать в объекты и т.п.
Цитата (NIV)
описании вертолета присутствует "[story_object] story_id = имя" Если их прописать так, то all.spawn не собирается. В каком файле нужно добавлять новый story_object?

В all.spawn и нужно прописывать, но прописали что-то не так.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Пн, 03.06.2013, 20:56 | Сообщение # 428
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Цитата (denis2000)
Вертолет не летает "четко" по пути
Вот в этом, похоже, и есть основная проблема. Нужно экспериментировать с точками пути. Я перенес старт вертолета в другое место - оттуда он стартует как-то удачнее. Сначала кружится немного (разгоняется до max_velocity ???), и потом летит более или менее по заданным точкам. Правда, попасть в аномалию очень легко, что приводит к разрушению верта (собственно, в оригинале ЗП об этом и рассказывалось smile ). Кстати, если не указывать max_velocity, то будет вылет, где ругаются на то, что эта величина = nil. И еще - после достижения последней точки пути верт летит к точке 0, независимо от того, указать линк на последнюю точку "p7:links = p7(1)" или не указывать link совсем.


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
denis2000Дата: Вт, 04.06.2013, 20:55 | Сообщение # 429
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (NIV)
Сначала кружится немного

Это он, вроде, на первую точку выходит. Даже если точка спавна совпадает с первой точкой пути, вертолет может произвести некоторые маневры для "выхода" на нее.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
АзазельДата: Вс, 09.06.2013, 18:27 | Сообщение # 430
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

Доброго дня. Такая проблема. Выполнял урок по спальному месту в чн. И не могу скомпилировать спавн. Проблема именно в секции спейс рестриктора. Ибо если удалить её все отлично. Вот секция
[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
 
denis2000Дата: Вс, 09.06.2013, 19:44 | Сообщение # 431
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Азазель,
1. Почему в кавычках cfg = "scripts\sr_sleep.ltx"
2. Зачем такое огромное спальное место 9 метров х 16 метров и почти 10 метров в высоту.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
АзазельДата: Пн, 10.06.2013, 07:28 | Сообщение # 432
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

denis2000, Таки с кавычками ошибся немного. Но что с ними что без результат один.
Насчет координат не знаю секцию скопировал с урока smile
 
denis2000Дата: Пн, 10.06.2013, 19:10 | Сообщение # 433
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Азазель, В разных версиях ACDC вид секциий может отличаться, сравните свою с любой другой из распакованных файлов.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
АзазельДата: Пн, 10.06.2013, 20:19 | Сообщение # 434
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

denis2000, Ошибка исчезла при смене номера секции на больший. Но вылезла другая. Теперь ACDC кидает кучу ошибок про шейпы и отсутствие секции спейс рестриктор

А скриншотом не порадуете? denis2000
 
9vova8Дата: Вт, 18.06.2013, 16:08 | Сообщение # 435
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Доброго времени суток ,подскажите пожалуйста, как запретить мутантам воевать друг против друга (в game relation отношение им поставил 5000).
Зарание спасибо.




Сообщение отредактировал 9vova8 - Вт, 18.06.2013, 16:08
 
Поиск: