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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Вс, 02.06.2013, 11:14 | Сообщение # 421
Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 422
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Пн, 03.06.2013, 11:28 | Сообщение # 423
Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 424
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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

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

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

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

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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Пн, 03.06.2013, 20:56 | Сообщение # 425
Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 426
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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

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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
АзазельДата: Вс, 09.06.2013, 18:27 | Сообщение # 427
Новичок
Пользователи
Сообщений: 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 | Сообщение # 428
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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


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

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

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

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

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

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

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




Сообщение отредактировал 9vova8 - Вт, 18.06.2013, 16:08
 
sergej5500Дата: Вт, 18.06.2013, 16:19 | Сообщение # 433
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

9vova8,
Полагаю, что нужно редактировать таблицу [monster_relations] в game_relations.
Значения
; [1] друг, [0] нейтрал, [-1] враг, [-2] злейший враг.
 
АзазельДата: Чт, 20.06.2013, 15:07 | Сообщение # 434
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

Всем доброго времени суток. smile Такой вопрос. Заспавнил нпс через скрипт. Прописал логику meet все хорошо работает. Но вот при добавлении victim нпс же должен вроде как оборачиваться на актора а он так и стоит столбом. Как бы исправить ?

Какая версия? denis2000
 
МарксДата: Чт, 20.06.2013, 23:35 | Сообщение # 435
Новичок
Пользователи
Сообщений: 73
Награды: 2
Репутация: [ 81 ]

Вечер Добрый.
Создал НПС.Но не появляется окно диалога.Подскожите?
 
Поиск: