|
Модостроение. Спавн и логика
|
|
| 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 за это полезное сообщение: |
|
|
| prohodchik | Дата: Вс, 10.04.2016, 20:19 | Сообщение # 1231 |
 Новичок
Пользователи
Сообщений: 50
| Приветствую всех! Как заставить сталкеров не сталкиваться, взаимодействовать с объектами (подбирать артефакты и т.д.)? "Обычных" НПС, не "квестовых".
Проект в разработке – "Болотные легенды"
|
| |
|
| Эти 0 пользователя(ей) поблагодарили prohodchik за это полезное сообщение: |
|
|
| denis2000 | Дата: Пн, 11.04.2016, 08:28 | Сообщение # 1232 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата prohodchik (  ) Как заставить сталкеров не сталкиваться Или переработать в движке функции движения НПС по сетке или придумать скриптовую схему поведения (на счет второго варианта не уверен).
Цитата prohodchik (  ) взаимодействовать с объектами (подбирать артефакты и т.д.)? Сделать соответствующие схемы поведения НПС на подобии например обыска трупов: xr_corpse_detection.script
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| men_stalker | Дата: Чт, 14.04.2016, 17:05 | Сообщение # 1233 |
 Инженер «Свободы»
Свобода
Сообщений: 184
| Доброго времени суток,возникла проблема со спавном нпс. Много раз видел похожие проблемы но решения так и не не нашёл. [cut=Файл сквада:][smart_terrain];esc_c1 squad_id = 1 max_population = 1[/cut] [cut=simulation_objects_props][esc_c1_militari_squad]:default_squad sim_avail = true[/cut]
[cut=simulation:] [start_position_escape] esc_c1__militari_squad = esc_c1[/cut]
[cut=squad_descr_escape:][esc_c1_militari_squad]:online_offline_group faction = stalker npc = sim_default_bandit_1 spawn_point = esc_c1_spawn target_smart = esc_c1 story_id = esc_c1_militari_squad[/cut]
[cut=лог:]FATAL ERROR
[error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ... - Зов Припяти\gamedata\scripts\smart_terrain.script:1139: attempt to perform arithmetic on field 'arrive_dist' (a nil value)
stack trace:[/cut]
з.ы. заменив нпс на монстров всё нормально
Сообщение отредактировал men_stalker - Чт, 14.04.2016, 17:06 |
| |
|
| Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
| denis2000 | Дата: Чт, 14.04.2016, 18:56 | Сообщение # 1234 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| men_stalker, Явно пропишите:
Код [smart_terrain];esc_c1 squad_id = 1 max_population = 1 arrive_dist = 30
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| men_stalker | Дата: Пт, 15.04.2016, 10:28 | Сообщение # 1235 |
 Инженер «Свободы»
Свобода
Сообщений: 184
| Код [smart_terrain];esc_c1 squad_id = 1 max_population = 1 arrive_dist = 30
Не помогло более того я окончательно запутался. При изменении _g.script как рекомендует Хован в логе написано что отсутсвует конфигурация смарта, причём в любом случае: будь то нпс или мутант
[cut=лог]FATAL ERROR [error]Expression : 0 [error]Function : ErrorLog [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp [error]Line : 49 [error]Description : [smart_terrain esc_c1] no configuration!
stack trace:[/cut]
Сообщение отредактировал men_stalker - Пт, 15.04.2016, 13:48 |
| |
|
| Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
| denis2000 | Дата: Пт, 15.04.2016, 14:38 | Сообщение # 1236 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| men_stalker, Странное поведение, могу только предположить кривизну сборки игры.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| men_stalker | Дата: Пн, 02.05.2016, 15:21 | Сообщение # 1237 |
 Инженер «Свободы»
Свобода
Сообщений: 184
| Спасибо за помощь. Начал всё с нуля: создал новый смарт всё работает. Путём эксперементов понял, что система не видела конфигурацию смарта. Только одно не понятно почему в первом случае с монстрами прокатывало) Добавлено (02.05.2016, 15:21) --------------------------------------------- Здравствуйте, такой вот вопрос. Можно ли эксклюзивного нпс сделать без звёздочки, чтобы не откликался на актора (типо говорил чтоб отстал) А и есть ли инфоршень выброса (чтоб когда начинался выброс он убегал в укрытие)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
| Сахар | Дата: Пн, 02.05.2016, 17:53 | Сообщение # 1238 |
 Гражданский
Пользователи
Сообщений: 2
| men_stalker, Цитата men_stalker (  ) А и есть ли инфоршень выброса (чтоб когда начинался выброс он убегал в укрытие) В логику НПС прописываешь переход на другой тип логики:
Код on_info = {=surge_started} дргуй блок логики А чтобы НПС вернулся обратно после того как выброс закончится нужно прописать условие
Код on_info = {=surge_complete} дргуй блок логики
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
| men_stalker | Дата: Ср, 04.05.2016, 12:40 | Сообщение # 1239 |
 Инженер «Свободы»
Свобода
Сообщений: 184
| Сахар, ещё раз здравствуйте. Не могли бы вы написать пример такой логики. К примеру к эксклюзиву
Сообщение отредактировал men_stalker - Чт, 05.05.2016, 08:39 |
| |
|
| Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
| Сахар | Дата: Пт, 06.05.2016, 04:37 | Сообщение # 1240 |
 Гражданский
Пользователи
Сообщений: 2
| Здравствуй, извини что пишу с задержкой были проблемы с интернетом. [cut=Вот как-то так]Код [logic] active = walker@1 ;схема которая запускается первой suitable = {=check_npc_name(профиль НПС)} true ;здесь мы указываем условия при которых можно занять эту работу, в нашем случай мы проверяем профиль НПС prior = 100 ;приоритет чем больше число тем предпочтительней будет работа для НПС (по идей этот параметр в нашем случай не нужен, но я не помню (все-таки год в армий сказался на моих знания в области модинга) обезательно нужно его прописывать или нет) meet = no_meet ; запрещаем НПС говорить с ГГ совсем level_spot = quest_npc ; тип отметки и подписи на карте: quest_npc – важный персонаж, mechanic – техник, trader - торговец. можно также в теорий поставить nil но не факт что сработает, а если и сработает то НПС на карте отмечаться не будет
[walker@1] path_walk = <имя пути> on_info1 = {!is_day} sleeper ; ночь идем спать on_info2 = {=surge_started} walker@surge_cover ;при выбросе прячемся в укрытия
[walker@surge_cover] path_walk = <имя пути> on_info1 = {!is_day} sleeper ; ночь идем спать on_info2 = {=surge_complete} ; выброс кончился идём обратно
[sleeper] path_main = <имя пути> on_info1 = {=is_day =surge_started} walker@surge_cover ;если день и начался выброс то бежим сразу в укрытие on-info2 = {=is_day} walker@1 ;днем едём обратно на свое место [/cut]
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
| men_stalker | Дата: Пн, 09.05.2016, 17:03 | Сообщение # 1241 |
 Инженер «Свободы»
Свобода
Сообщений: 184
| Доброго времени суток, снова вопрос: можно ли члена сквада состоящего из одного нпс сделать без звёздочки, если нет, то можно ли эксклюзиву в логику прописать точку спавна, а то спавнить на одной точке три человека не вариант.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
| denis2000 | Дата: Пн, 09.05.2016, 18:44 | Сообщение # 1242 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата men_stalker (  ) можно ли эксклюзиву в логику прописать точку спавна Нет точка спавна задается для смарта, а не для сквада и тем более для одного из его членов. Если уж так это надо делайте сугубо индивидуального НПС со своей точкой спавна и своей логикой (тогда и звезды не будет).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| men_stalker | Дата: Вт, 17.05.2016, 16:36 | Сообщение # 1243 |
 Инженер «Свободы»
Свобода
Сообщений: 184
| denis2000, здравствуйте
Цитата denis2000 (  ) тогда и звезды не будет А как тогда для этого надо прописать параметр Level_spot?
А и ещё, наблюдается такой баг: когда нпс спавнится через точку пути то он сначала нарезает круги вокруг неё, а только потом идёт по этому пути. Можно ли это как то исправить?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 17.05.2016, 19:45 | Сообщение # 1244 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата men_stalker (  ) А как тогда для этого надо прописать параметр Level_spot? А в чем проблема?
Цитата men_stalker (  ) Можно ли это как то исправить? Если АИ-сетка в этом месте идеально ровная то спавн в начальной точке пути все решает, если сетка не идеальная то НПС нужно некоторое время чтобы занять указанную позицию.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| men_stalker | Дата: Ср, 18.05.2016, 13:53 | Сообщение # 1245 |
 Инженер «Свободы»
Свобода
Сообщений: 184
| denis2000, допустим вот логика эксклюзива [logic@esc_c1_millitary_guard_4] suitable = {=check_npc_name(esc_c1_millitary_guard_4)} active = walker@guard_4 prior = 200
[walker@guard_4] path_walk = guard_4_walk path_look = guard_4_look meet = no_meet
А на мини карте всё равно отображается как лидер отряда (с звездой)
Сообщение отредактировал men_stalker - Ср, 18.05.2016, 13:55 |
| |
|
| Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|