Overf1rst 1 535 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 10 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 347 Опубликовано 9 сентября, 2020 4 минуты назад, Stgs сказал: denis2000 А если симуляционные НПС или монстры вдруг решать по такому подъему прогуляться? ? Вообщем то, логически рассуждая, симуляционные сквады не зайдут туда... Они выбирают кратчайший путь до точки, и если у островка будет только одна точка связи, то они её обойдут, игра просчитывает кратчайший путь... вот если у островка будет 2 точки доступа, то да, симуляционные на него могут попасть... Если путь через него короче... Дополнено 7 минуты спустя 6 минут назад, Stgs сказал: Policai, а в Вашей модификации есть симуляционные сквады? Потому что именно они - самые непредсказуемые и ходят куда им только вздумается. Похоже, и на островки тоже... Нету... Но я сталкивался с подобной ситуацией, когда сталкеры бегут спасаться от выброса, и если на кротчайшем пути на точку попадается ещё один НПС, то они тупо упираются друг в друга и стоят толкаются... Например у меня на кордоне в баре, стоит непись за столом, а во время выброса в бар забегают другие неписи. и на пути следования на точку упирается в непись за столом... я правил сетку, делал разрыв на кротчайшем пути, чтоб моб обходил это место, просто убирал 2-3 нода на пути следования. Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 1 065 Опубликовано 9 сентября, 2020 18 минут назад, Stgs сказал: А если симуляционные НПС или монстры вдруг решать по такому подъему прогуляться? Если у такого куска только одна нода соединяет с остальной сеткой, то симулянты туда не сунуться (если на этом участке нет смартов или графпоинтов) им же нужен проходной маршрут от одного смарта до другого. 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 9 сентября, 2020 Я уже описывал свою проблему с агрящимися через всю карту друг на друга отрядами, но сейчас заметил ещё одну закономерность - члены одной группировки начинают идти на помощь к "своим" из любой точки локации. Например сталкеры идут в место, где начали бой другие сталкеры через всю карту. Мне такое не надо, как избавится от этого? Ещё вопрос - как урезать радус обнаружения предметов НПС? Чтобы они за километр не шли подбирать оружие с пола, а только когда оно в метрах 10-15 от них Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0ouch 144 Опубликовано 9 сентября, 2020 (изменено) Цитата Ещё вопрос - как урезать радус обнаружения предметов НПС? В оригинальном ЗП НПС не подбирают все подряд предметы с пола. Только собирают оружие, если оно у них на пути, а также обыскивают тела. Что редактировали? Изменено 9 сентября, 2020 пользователем Stgs Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 434 Опубликовано 9 сентября, 2020 Как реализовать новую кнопку в ПДА? При нажатии на новую кнопку ничего не происходит, кроме смены текста в левом верхнем углу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 1 065 Опубликовано 9 сентября, 2020 (изменено) Winzor Движек в курсе ваших желаний? Отрисовать кнопку в ПДА - самый первый этап. Теперь вопрос: кто эту кнопку будет обрабатывать? Изменено 9 сентября, 2020 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 434 Опубликовано 9 сентября, 2020 1 минуту назад, denis2000 сказал: Winzor Движек в курсе ваших желаний? Сейчас как раз правлю его. Но можно и через GUI это сделать, но я не знаю как. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 1 065 Опубликовано 9 сентября, 2020 3 минуты назад, Winzor сказал: Но можно и через GUI это сделать, но я не знаю как. Ясен пень GeneralUserInterface, кто его обрабатывать будет? Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 434 Опубликовано 9 сентября, 2020 Только что, denis2000 сказал: Ясен пень GeneralUserInterface, кто его обрабатывать будет? В Пути во Мгле видел в ПДА новый раздел, так вот это наверное GUI, который обрабатывается скриптом (сейчас посмотрел, как я понял обрабатывается скриптом _s_notepad). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 535 Опубликовано 9 сентября, 2020 10 минут назад, Winzor сказал: можно и через GUI это сделать, но я не знаю как. Отловить нажатие на вкладки в ПДА без правок движка никак нельзя. Нужно делать соответствующую движковую правку, создав в нужном месте функтор, куда будет передаваться идентификатор выбранной вкладки. В файле UIPdaWnd.cpp находишь метод: void CUIPdaWnd::SetActiveSubdialog(const shared_str& section) После блока: else if (section == "eptLogs" && pUILogsWnd) { m_pActiveDialog = pUILogsWnd; } Вставляешь такой блок: else { luabind::functor<CUIDialogWndEx*> funct; if (GEnv.ScriptEngine->functor("engine_callbacks.set_active_subdialog", funct)) { CUIDialogWndEx* ret = funct((LPCSTR)section.c_str()); CUIWindow* pScriptWnd = ret ? smart_cast<CUIWindow*>(ret) : 0; if (pScriptWnd) m_pActiveDialog = pScriptWnd; } } Создаёшь скрипт engine_callbacks.script, в него закидываешь функцию: function set_active_subdialog(tab_id) if tab_id == "eptEncyclopedia" then return -- тут нужно вернуть экземпляр скриптового GUI окна энциклопедии end return nil end Если что, эта правка сделана на OpenXRay, там могут немного отличаться версии кода, поэтому ты сам там гляди и прикидывай, если поиском не найдёшь нужный блок. 1 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 1 065 Опубликовано 9 сентября, 2020 (изменено) 18 минут назад, Winzor сказал: В Пути во Мгле видел в ПДА новый раздел, так вот это наверное GUI, который обрабатывается скриптом (сейчас посмотрел, как я понял обрабатывается скриптом _s_notepad). Совершенно верно, прежде всего в этом моде движек обрабатывает нажатие на новую закладку раздела выдавая инфопорцию с именем этого раздела (это древняя правка X-Ray extensions которая была сделана без исходников), а указанный вами скрипт занимаеться отрисовкой GUI этого раздела обнаружив эту инфопорцию. Но если вы редактируете движек, то как мне кажеться не стоит копировать уже устаревший способ, а воспользоваться рекомендациями и наработками которые предлагает уважаемый Overfirst. Изменено 9 сентября, 2020 пользователем denis2000 1 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 535 Опубликовано 9 сентября, 2020 Да этому коду уже тоже сто лет. Его, вроде бы, писал ещё Charsi в 2016-2017. А так подобные правки с функторами - очень простая и одновременно полезная штука - можно хоть куда прикрутить, любые штуки обрабатывать. ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 9 сентября, 2020 10 часов назад, Stgs сказал: Цитата Ещё вопрос - как урезать радус обнаружения предметов НПС? В оригинальном ЗП НПС не подбирают все подряд предметы с пола. Только собирают оружие, если оно у них на пути, а также обыскивают тела. Что редактировали? В том и дело, что ничего не редактировал подобного... В каких файлах искать это? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 1 065 Опубликовано 10 сентября, 2020 Gerbys А alife.switch_distance часом не увеличивали? Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 434 Опубликовано 10 сентября, 2020 (изменено) Проблема решена, код был немного переделан. Спойлер else { luabind::functor<CUIDialogWnd*> funct; if (ai().script_engine().functor("pda.set_active_subdialog", funct)) { CUIDialogWnd* ret = funct((LPCSTR)section.c_str()); CUIWindow* pScriptWnd = ret ? smart_cast<CUIWindow*>(ret) : 0; if (pScriptWnd) m_pActiveDialog = pScriptWnd; } } Изменено 10 сентября, 2020 пользователем Winzor Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
WolfHeart 1 008 Опубликовано 10 сентября, 2020 Winzor Зачем цитировать весь пост? Можно ведь цитировать только нужный фрагмент. Выделяешь нужный для цитаты участок поста и жмешь на появившуюся кнопочку "Цитировать выделенное". 1 AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 10 сентября, 2020 Заметил, что в alife.ltx последняя строчка start_game_callback прописана не _g.script, а _G.script. Исправил, теперь такой вылет ловлю: (и уже заметил, что там в скрипте не хватает классов оружия из пака оружейного, может быть чего-то ещё) Спойлер User Message: ---------------------------------------- Expression : !m_error_code Function : raii_guard::~raii_guard File : ..\xrServerEntities\script_storage.cpp Line : 748 Description : ...e.r. call of pripyat\gamedata\scripts\xr_meet.script:630: attempt to index local 'meet' (a nil value) 11 часов назад, denis2000 сказал: Gerbys А alife.switch_distance часом не увеличивали? Сейчас попробовал с 400 поставить 120 - выходит ерунда, враги появляются только когда почти дошёл до их местоположения. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Chiliaz 165 Опубликовано 10 сентября, 2020 Что означают эти параметры в файле alife.ltx? [alife] schedule_min = 1 ; milliseconds schedule_max = 1 ; milliseconds process_time = 10000 ; microseconds update_monster_factor = 0.1 switch_factor = 0.1 ; objects_per_update = 10 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 347 Опубликовано 10 сентября, 2020 Народ! Изначально, при вызове консоли игра блокируется, а возможно как то вывести консоль чтоб была видна постоянно? чтоб видеть лог во время игры. Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 1 065 Опубликовано 11 сентября, 2020 (изменено) 11 часов назад, Gerbys сказал: Сейчас попробовал с 400 поставить 120 - выходит ерунда, враги появляются только когда почти дошёл до их местоположения. Скорее всего количество графпоинтов на локации минимально, а это неправильно. Дополнено 2 минуты спустя 5 часов назад, Policai сказал: видеть лог во время игры Если вы в лог выводите свои сообщения, то просто дублируйте их в стандартных сообщениях ГГ, тогда они всегда будут на экране во время игры и во время-же игры вы всегда сможете их просмотреть в ПДА - это довольно удобно. Если же вы смотрите сообщения движка в консоли, то это проблема, так как придется править движек, чтобы открытая консоль не блокировала игру, а нажатия клавиш в игре не попадали в командную строку консоли. Изменено 11 сентября, 2020 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 347 Опубликовано 11 сентября, 2020 (изменено) denis2000 Жаль конечно ((( Просматривать лог долго в поисках ошибок, а там красным выделяется, сразу видно... Я думал существует какая то команда консольная на вывод движковых сообщений на экран? Изменено 11 сентября, 2020 пользователем Policai Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RobocatiK 100 Опубликовано 11 сентября, 2020 flush, но это в лог собирает и только консольные логи Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 347 Опубликовано 11 сентября, 2020 1 минуту назад, RoboCat сказал: flush, но это в лог собирает и только консольные логи То есть чтоб в игре сразу выводило на экран нету ничего? Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 1 065 Опубликовано 11 сентября, 2020 (изменено) RoboCat Консольная команда flush сбрасывает сообщения консоли в лог-файл, а чтобы видеть их на экране в реальном времени по хорошему нужно править движек. Если уж говорить о костыльных-костылях, то можно в апдейте скидывать сообщения консоли в лог-файл (упомянутой командой flush), одновременно с этим, скриптом, пытаться читать лог-файл и новые сообщения из него выводить на экран. Что из этого может получиться сложный вопрос. Изменено 11 сентября, 2020 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 347 Опубликовано 11 сентября, 2020 denis2000 Увы, это выше моего уровня знаний..))) Придётся визуально логи просматривать, просто думал что можно упростить....)) Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты