Overf1rst 1 502 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 333 Опубликовано 9 сентября, 2020 4 минуты назад, Stgs сказал: denis2000 А если симуляционные НПС или монстры вдруг решать по такому подъему прогуляться? ? Вообщем то, логически рассуждая, симуляционные сквады не зайдут туда... Они выбирают кратчайший путь до точки, и если у островка будет только одна точка связи, то они её обойдут, игра просчитывает кратчайший путь... вот если у островка будет 2 точки доступа, то да, симуляционные на него могут попасть... Если путь через него короче... Дополнено 7 минуты спустя 6 минут назад, Stgs сказал: Policai, а в Вашей модификации есть симуляционные сквады? Потому что именно они - самые непредсказуемые и ходят куда им только вздумается. Похоже, и на островки тоже... Нету... Но я сталкивался с подобной ситуацией, когда сталкеры бегут спасаться от выброса, и если на кротчайшем пути на точку попадается ещё один НПС, то они тупо упираются друг в друга и стоят толкаются... Например у меня на кордоне в баре, стоит непись за столом, а во время выброса в бар забегают другие неписи. и на пути следования на точку упирается в непись за столом... я правил сетку, делал разрыв на кротчайшем пути, чтоб моб обходил это место, просто убирал 2-3 нода на пути следования. Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 9 сентября, 2020 18 минут назад, Stgs сказал: А если симуляционные НПС или монстры вдруг решать по такому подъему прогуляться? Если у такого куска только одна нода соединяет с остальной сеткой, то симулянты туда не сунуться (если на этом участке нет смартов или графпоинтов) им же нужен проходной маршрут от одного смарта до другого. 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 9 сентября, 2020 Я уже описывал свою проблему с агрящимися через всю карту друг на друга отрядами, но сейчас заметил ещё одну закономерность - члены одной группировки начинают идти на помощь к "своим" из любой точки локации. Например сталкеры идут в место, где начали бой другие сталкеры через всю карту. Мне такое не надо, как избавится от этого? Ещё вопрос - как урезать радус обнаружения предметов НПС? Чтобы они за километр не шли подбирать оружие с пола, а только когда оно в метрах 10-15 от них Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0ouch 143 Опубликовано 9 сентября, 2020 (изменено) Цитата Ещё вопрос - как урезать радус обнаружения предметов НПС? В оригинальном ЗП НПС не подбирают все подряд предметы с пола. Только собирают оружие, если оно у них на пути, а также обыскивают тела. Что редактировали? Изменено 9 сентября, 2020 пользователем Stgs Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 9 сентября, 2020 Как реализовать новую кнопку в ПДА? При нажатии на новую кнопку ничего не происходит, кроме смены текста в левом верхнем углу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 9 сентября, 2020 (изменено) Winzor Движек в курсе ваших желаний? Отрисовать кнопку в ПДА - самый первый этап. Теперь вопрос: кто эту кнопку будет обрабатывать? Изменено 9 сентября, 2020 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 9 сентября, 2020 1 минуту назад, denis2000 сказал: Winzor Движек в курсе ваших желаний? Сейчас как раз правлю его. Но можно и через GUI это сделать, но я не знаю как. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 9 сентября, 2020 3 минуты назад, Winzor сказал: Но можно и через GUI это сделать, но я не знаю как. Ясен пень GeneralUserInterface, кто его обрабатывать будет? Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 9 сентября, 2020 Только что, denis2000 сказал: Ясен пень GeneralUserInterface, кто его обрабатывать будет? В Пути во Мгле видел в ПДА новый раздел, так вот это наверное GUI, который обрабатывается скриптом (сейчас посмотрел, как я понял обрабатывается скриптом _s_notepad). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 502 Опубликовано 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 971 Опубликовано 9 сентября, 2020 (изменено) 18 минут назад, Winzor сказал: В Пути во Мгле видел в ПДА новый раздел, так вот это наверное GUI, который обрабатывается скриптом (сейчас посмотрел, как я понял обрабатывается скриптом _s_notepad). Совершенно верно, прежде всего в этом моде движек обрабатывает нажатие на новую закладку раздела выдавая инфопорцию с именем этого раздела (это древняя правка X-Ray extensions которая была сделана без исходников), а указанный вами скрипт занимаеться отрисовкой GUI этого раздела обнаружив эту инфопорцию. Но если вы редактируете движек, то как мне кажеться не стоит копировать уже устаревший способ, а воспользоваться рекомендациями и наработками которые предлагает уважаемый Overfirst. Изменено 9 сентября, 2020 пользователем denis2000 1 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 502 Опубликовано 9 сентября, 2020 Да этому коду уже тоже сто лет. Его, вроде бы, писал ещё Charsi в 2016-2017. А так подобные правки с функторами - очень простая и одновременно полезная штука - можно хоть куда прикрутить, любые штуки обрабатывать. ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 9 сентября, 2020 10 часов назад, Stgs сказал: Цитата Ещё вопрос - как урезать радус обнаружения предметов НПС? В оригинальном ЗП НПС не подбирают все подряд предметы с пола. Только собирают оружие, если оно у них на пути, а также обыскивают тела. Что редактировали? В том и дело, что ничего не редактировал подобного... В каких файлах искать это? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 10 сентября, 2020 Gerbys А alife.switch_distance часом не увеличивали? Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 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 944 Опубликовано 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 333 Опубликовано 10 сентября, 2020 Народ! Изначально, при вызове консоли игра блокируется, а возможно как то вывести консоль чтоб была видна постоянно? чтоб видеть лог во время игры. Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 11 сентября, 2020 (изменено) 11 часов назад, Gerbys сказал: Сейчас попробовал с 400 поставить 120 - выходит ерунда, враги появляются только когда почти дошёл до их местоположения. Скорее всего количество графпоинтов на локации минимально, а это неправильно. Дополнено 2 минуты спустя 5 часов назад, Policai сказал: видеть лог во время игры Если вы в лог выводите свои сообщения, то просто дублируйте их в стандартных сообщениях ГГ, тогда они всегда будут на экране во время игры и во время-же игры вы всегда сможете их просмотреть в ПДА - это довольно удобно. Если же вы смотрите сообщения движка в консоли, то это проблема, так как придется править движек, чтобы открытая консоль не блокировала игру, а нажатия клавиш в игре не попадали в командную строку консоли. Изменено 11 сентября, 2020 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 333 Опубликовано 11 сентября, 2020 (изменено) denis2000 Жаль конечно ((( Просматривать лог долго в поисках ошибок, а там красным выделяется, сразу видно... Я думал существует какая то команда консольная на вывод движковых сообщений на экран? Изменено 11 сентября, 2020 пользователем Policai Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RobocatiK 96 Опубликовано 11 сентября, 2020 flush, но это в лог собирает и только консольные логи Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 333 Опубликовано 11 сентября, 2020 1 минуту назад, RoboCat сказал: flush, но это в лог собирает и только консольные логи То есть чтоб в игре сразу выводило на экран нету ничего? Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 11 сентября, 2020 (изменено) RoboCat Консольная команда flush сбрасывает сообщения консоли в лог-файл, а чтобы видеть их на экране в реальном времени по хорошему нужно править движек. Если уж говорить о костыльных-костылях, то можно в апдейте скидывать сообщения консоли в лог-файл (упомянутой командой flush), одновременно с этим, скриптом, пытаться читать лог-файл и новые сообщения из него выводить на экран. Что из этого может получиться сложный вопрос. Изменено 11 сентября, 2020 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 333 Опубликовано 11 сентября, 2020 denis2000 Увы, это выше моего уровня знаний..))) Придётся визуально логи просматривать, просто думал что можно упростить....)) Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты