|
Модостроение. Спавн и логика
|
|
| 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 | Дата: Сб, 18.05.2013, 09:33 | Сообщение # 406 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| coomer330, Логика расстановки скобок тут простая. Пример оригинального кода: if get_item_section_f_inventory_box(box,"ammo_gauss") and get_item_section_f_inventory_box(box,"medkit") and get_item_section_f_inventory_box(box,"bandage") and (get_item_section_f_inventory_box(box,"antirad") or get_item_section_f_inventory_box(box,"psy_complex")) and ((get_item_section_f_inventory_box(box,"wpn_ak74") and get_item_section_f_inventory_box(box,"ammo_5.45x")) or (get_item_section_f_inventory_box(box,"wpn_lr300") and get_item_section_f_inventory_box(box,"ammo_5.56x")) or (get_item_section_f_inventory_box(box,"wpn_spas12") and get_item_section_f_inventory_box(box,"ammo_12x")))
Элементы, соединённые оператором or, заключены в дополнительные скобки. Ваш код по аналогии, надо писать примерно так: if (get_item_section_f_inventory_box(box,"wpn_akm") or get_item_section_f_inventory_box(box,"wpn_akms")) and get_item_section_f_inventory_box(box,"ammo_7.62x39_") and (get_item_section_f_inventory_box(box,"wpn_beretta") or get_item_section_f_inventory_box(box,"wpn_walther")) and get_item_section_f_inventory_box(box,"ammo_9x19") and get_item_section_f_inventory_box(box,"medkit_army") and get_item_section_f_inventory_box(box,"bandage") and get_item_section_f_inventory_box(box,"antirad") and (get_item_section_f_inventory_box(box,"sardina") or get_item_section_f_inventory_box(box,"olivki")) then
Кроме того, скобки у Вас расставлены с ошибками. Закрывающая есть, а открывающей нет. 2-я скобка после антирада. Правильность расстановки скобок легко контролировать Notepad. Там они подсвечиваются.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| Барон_Пампа | Дата: Чт, 23.05.2013, 16:21 | Сообщение # 407 |
|
Удаленные
| Доброго дня. У меня такой вопрос, какие могут быть причины, что бы созданый и нормально работающий НПС, не поддавался распознаванию?? Отметка на карте есть, а при наведении на него прицела, прицел не меняет цвет и не выдаёться инфа о нём. За ранее благодарен любому ответу.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Барон_Пампа за это полезное сообщение: |
|
|
| sergej5500 | Дата: Чт, 23.05.2013, 16:34 | Сообщение # 408 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Барон_Пампа, Проверьте, работает ли отображение других НПС. Может, Вы отключили эту опцию в игре. Если с прочими НПС всё в норме, то выложите Ваши файлы относящиеся к этому НПС.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| denis2000 | Дата: Чт, 23.05.2013, 21:32 | Сообщение # 409 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Барон_Пампа, Такое еще возможно если в модели НПС нет бонешейпов. Тогда ему не возможно нанести хит или с ним поговорить.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| yakuti | Дата: Вс, 26.05.2013, 10:00 | Сообщение # 410 |
|
Отмычка
Пользователи
Сообщений: 46
| Почему некоторые сквады сами переходят в офф без всяких команд. Это можно исправить?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили yakuti за это полезное сообщение: |
|
|
| denis2000 | Дата: Пн, 27.05.2013, 20:16 | Сообщение # 411 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (yakuti) Почему некоторые сквады сами переходят в офф без всяких команд. Что вы имеете ввиду? Какие команды? Как вы это наблюдаете?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| yakuti | Дата: Вт, 28.05.2013, 08:35 | Сообщение # 412 |
|
Отмычка
Пользователи
Сообщений: 46
| Цитата (denis2000) Что вы имеете ввиду? Какие команды? Как вы это наблюдаете? Я имею ввиду то, что некоторые сквады переходят в офф самостоятельно
Это норма, когда сквады переходят в онлайн или оффлайн по воле движка. denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили yakuti за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вт, 28.05.2013, 11:02 | Сообщение # 413 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| yakuti, Сквады могут иметь целевые смарты, параметр target_smart в конфиге сквада. В этом случае сквад либо занимает целевой смарт и с него никуда не уходит, или стремится на этот смарт попасть. Если этот параметр отсутствует или равен nil, то сквад переходит под управление движка и попадает под симуляцию. В этом случае он гуляет по всей локации и подвергается всем случайностям "бродячей жизни". Также к скваду может быть применена команда remove_squad. В этом случае сквад удаляется с локации. В любом случае проверяйте записи и функции, относящиеся к конкретным сквадам.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| kosidor | Дата: Вт, 28.05.2013, 11:34 | Сообщение # 414 |
|
Отмычка
Пользователи
Сообщений: 28
| Ребята подскажите плиз, прочитал много ,но, не очень понятно- что надо изменить , что бы спавнился сквад в разных местах? и после своей гибели спавнился снова?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили kosidor за это полезное сообщение: |
|
|
| yakuti | Дата: Ср, 29.05.2013, 08:59 | Сообщение # 415 |
|
Отмычка
Пользователи
Сообщений: 46
| Подскажите как заспавнить предмет в инвентарь нпс?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили yakuti за это полезное сообщение: |
|
|
| sergej5500 | Дата: Ср, 29.05.2013, 11:02 | Сообщение # 416 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| yakuti, Проще всего прописать этот предмет в секцию НПС в character_desc_ . Также можно в активной логике НПС или в логике рестриктора прописать код типа: on_info = {-инфопорция спавна} %=spawn_object_in(ид объекта:ид НПС) +инфопорция спавна% Объект нужно зарегистрировать в death_generic.ltx, чтобы после смерти НПС его не подчистили.
kosidor, Изучите Урок 6.
Сообщение отредактировал sergej5500 - Ср, 29.05.2013, 11:10 |
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| kosidor | Дата: Ср, 29.05.2013, 15:27 | Сообщение # 417 |
|
Отмычка
Пользователи
Сообщений: 28
| sergej5500, урок почитал, но там нет ответа, что где править, чтоб уничтоженній отряд , после того как погулял по локации, и повоевал с врагами, опять появился? Тоесть, чтобы отряд вновь спаввнился постоянно? Спасибо.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили kosidor за это полезное сообщение: |
|
|
| sergej5500 | Дата: Ср, 29.05.2013, 15:31 | Сообщение # 418 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 419 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 420 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| NIV, 1. Параметр quad_id обязателен, в пределах локации id должны быть разные. 2. Непонятно зачем делать перемещение между близкими смартами, но в скваде который в пути маршрут считается только для лидера, остальные идут в режиме "следования за лидером" (то есть идут при расстоянии до него меньше определенного или бегут при расстоянии больше некоторого определенного). Если нужны конкретные действия от сквада рисуй им всем конкретную логику перемещений.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
|