Перейти к содержанию

Рекомендуемые сообщения

 
 
4 минуты назад, Stgs сказал:

denis2000 

А если симуляционные НПС или монстры вдруг решать по такому подъему прогуляться? ?

Вообщем то, логически рассуждая, симуляционные сквады не зайдут туда... Они выбирают кратчайший путь до точки, и если у островка будет только одна точка связи, то они её обойдут, игра просчитывает кратчайший путь... вот если у островка будет 2 точки доступа, то да, симуляционные на него могут попасть... Если путь через него короче...


Дополнено 7 минуты спустя
6 минут назад, Stgs сказал:

Policai, а в Вашей модификации есть симуляционные сквады? Потому что именно они - самые непредсказуемые и ходят куда им только вздумается. Похоже, и на островки тоже...

Нету... Но я сталкивался с подобной ситуацией, когда сталкеры бегут спасаться от выброса, и если на кротчайшем пути на точку попадается ещё один НПС, то они тупо упираются друг в друга и стоят толкаются... Например у меня на кордоне в баре, стоит непись за столом, а во время выброса в бар забегают другие неписи. и на пути следования на точку упирается в непись за столом... я правил сетку, делал разрыв на кротчайшем пути, чтоб моб обходил это место, просто убирал 2-3 нода на пути следования.


DCM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
18 минут назад, Stgs сказал:

А если симуляционные НПС или монстры вдруг решать по такому подъему прогуляться?

Если у такого куска только одна нода соединяет с остальной сеткой, то симулянты туда не сунуться (если на этом участке нет смартов или графпоинтов) им же нужен проходной маршрут от одного смарта до другого.

  • Мастер! 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Я уже описывал свою проблему с агрящимися через всю карту друг на друга отрядами, но сейчас заметил ещё одну закономерность - члены одной группировки начинают идти на помощь к "своим" из любой точки локации. Например сталкеры идут в место, где начали бой другие сталкеры через всю карту. Мне такое не надо, как избавится от этого?

Ещё вопрос - как урезать радус обнаружения предметов НПС? Чтобы они за километр не шли подбирать оружие с пола, а только когда оно в метрах 10-15 от них

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Цитата

Ещё вопрос - как урезать радус обнаружения предметов НПС?

В оригинальном ЗП НПС не подбирают все подряд предметы с пола. Только собирают оружие, если оно у них на пути, а также обыскивают тела. Что редактировали?

Изменено пользователем Stgs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как реализовать новую кнопку в ПДА? При нажатии на  новую кнопку ничего не происходит, кроме смены текста в левом верхнем углу.1345272192_ss__09-09-20_18-46-51_(escape).thumb.jpg.3a7cc4b1ca826919f738f800a18e4954.jpg

ss_дато_09-09-20_18-46-45_(escape).jpg

ss_дато_09-09-20_18-46-53_(escape).jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Winzor Движек в курсе ваших желаний?

Отрисовать кнопку в ПДА - самый первый этап. Теперь вопрос: кто эту кнопку будет обрабатывать?

Изменено пользователем denis2000

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, denis2000 сказал:

Winzor Движек в курсе ваших желаний?

Сейчас как раз правлю его. Но можно и через GUI это сделать, но я не знаю как.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 минуты назад, Winzor сказал:

Но можно и через GUI это сделать, но я не знаю как.

Ясен пень GeneralUserInterface, кто его обрабатывать будет?


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, denis2000 сказал:

Ясен пень GeneralUserInterface, кто его обрабатывать будет?

В Пути во Мгле видел в ПДА новый раздел, так вот это наверное GUI, который обрабатывается скриптом (сейчас посмотрел, как я понял обрабатывается скриптом _s_notepad).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
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

c01570bf2e07524.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
18 минут назад, Winzor сказал:

В Пути во Мгле видел в ПДА новый раздел, так вот это наверное GUI, который обрабатывается скриптом (сейчас посмотрел, как я понял обрабатывается скриптом _s_notepad).

Совершенно верно, прежде всего в этом моде движек обрабатывает нажатие на новую закладку раздела выдавая инфопорцию с именем этого раздела (это древняя правка X-Ray extensions которая была сделана без исходников), а указанный вами скрипт занимаеться отрисовкой GUI этого раздела обнаружив эту инфопорцию.

Но если вы редактируете движек, то как мне кажеться не стоит копировать уже устаревший способ, а воспользоваться рекомендациями и наработками которые предлагает уважаемый Overfirst.

Изменено пользователем denis2000
  • Лайк 1
  • Мастер! 1
  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Да этому коду уже тоже сто лет. Его, вроде бы, писал ещё Charsi в 2016-2017. А так подобные правки с функторами - очень простая и одновременно полезная штука - можно хоть куда прикрутить, любые штуки обрабатывать. ?


c01570bf2e07524.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
10 часов назад, Stgs сказал:
Цитата

Ещё вопрос - как урезать радус обнаружения предметов НПС?

В оригинальном ЗП НПС не подбирают все подряд предметы с пола. Только собирают оружие, если оно у них на пути, а также обыскивают тела. Что редактировали?

В том и дело, что ничего не редактировал подобного... В каких файлах искать это?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Gerbys А alife.switch_distance часом не увеличивали?


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Проблема решена, код был немного переделан.
 

Спойлер

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;
    }
}

 

 

Изменено пользователем Winzor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Winzor Зачем цитировать весь пост? Можно ведь цитировать только нужный фрагмент.

Выделяешь нужный для цитаты участок поста и жмешь на появившуюся кнопочку "Цитировать выделенное".

1.png

  • Аплодисменты 1

EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Заметил, что в 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 - выходит ерунда, враги появляются только когда почти дошёл до их местоположения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Что означают эти параметры в файле 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Народ! Изначально, при вызове консоли игра блокируется, а возможно как то вывести консоль чтоб была видна постоянно? чтоб видеть лог во время игры.


DCM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
11 часов назад, Gerbys сказал:

Сейчас попробовал с 400 поставить 120 - выходит ерунда, враги появляются только когда почти дошёл до их местоположения.

Скорее всего количество графпоинтов на локации минимально, а это неправильно.


Дополнено 2 минуты спустя
5 часов назад, Policai сказал:

видеть лог во время игры

Если вы в лог выводите свои сообщения, то просто дублируйте их в стандартных сообщениях ГГ, тогда они всегда будут на экране во время игры и во время-же игры вы всегда сможете их просмотреть в ПДА - это довольно удобно.

Если же вы смотрите сообщения движка в консоли, то это проблема, так как придется править движек, чтобы открытая консоль не блокировала игру, а нажатия клавиш в игре не попадали в командную строку консоли.

Изменено пользователем denis2000
  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000  Жаль конечно (((  Просматривать лог долго в поисках ошибок, а там красным выделяется, сразу видно...
Я думал  существует какая то команда консольная на вывод движковых сообщений на экран?

Изменено пользователем Policai

DCM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

flush, но это в лог собирает и только консольные логи


AI is new feature

 

spacer.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, RoboCat сказал:

flush, но это в лог собирает и только консольные логи

То есть чтоб в игре сразу выводило на экран нету ничего?


DCM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

RoboCat Консольная команда flush сбрасывает сообщения консоли в лог-файл, а чтобы видеть их на экране в реальном времени по хорошему нужно править движек.

Если уж говорить о костыльных-костылях, то можно в апдейте скидывать сообщения консоли в лог-файл (упомянутой командой flush), одновременно с этим, скриптом, пытаться читать лог-файл и новые сообщения из него выводить на экран. Что из этого может получиться сложный вопрос.

Изменено пользователем denis2000
  • Лайк 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000  Увы, это выше моего уровня знаний..)))   Придётся визуально логи просматривать, просто думал что можно упростить....))


DCM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу