Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sumrak6835 157 Опубликовано Суббота в 18:47 9 часов назад, Pastalker56 сказал: ui_mm_opt ui_mm_opt_16.xml должен читать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
av661194 126 Опубликовано Суббота в 20:36 StrawFlux Эта функция выдаёт отношения между группировками. Плюс можно получить отношение самой группировки конкретно к игроку: local goodwill = relation_registry.community_goodwill ("dolg", db.actor:id ()) Но это только два слагаемых, из которых складывается отношение конкретного нпс к актеру. Получить же полное значение (как было в случае с клиентским объектом), я так понял, не возможно. Но спасибо и на этом. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CiberZold 822 Опубликовано Суббота в 23:23 2 часа назад, av661194 сказал: Получить же полное значение (как было в случае с клиентским объектом), я так понял, не возможно у серверного объекта нет такого метода, и это логично, потому что все изменения отношения к игроку происходят онлайн, оффлайн неожиданно никто не станет врагом или другом) все изменения происходят онлайн с клиентским объектом, а потом записываются видимо как обычно нет-пакетом в серверный и сохраняются в сейв, потому при загрузке берутся уже из сейва, только как этот параметр называется , который передаётся через нет-пакет я не знаю, но теоретически если его знать, то можно попробовать перехватить его и вывести значение ,только такой вариант. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gnomi123 157 Опубликовано Воскресенье в 02:52 (изменено) del Дополнено 9 минуты спустя av661194 Если говорить о прям оригинальном ТЧ без движковых изменений, то не знаю, может и есть способ. Но в оригинальном движке есть методы, позволяющие узнать и изменить отношение НПС к игроку или другому НПС вне зависимости, НПС в офлайне или в онлайне. Эти методы просто не экспортированы, чтобы их можно было использовать из скриптов. Если вы не против внесения изменений в движок, то это очень легко сделать. Я ради интереса попробовал и сделал на основе движка огср, вроде в сети были исходники и оригинального движка, по идее и на нём должно работать. Там буквально внести изменения в один файл и собрать движок. Изменено Воскресенье в 02:58 пользователем Gnomi123 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
av661194 126 Опубликовано Воскресенье в 06:32 CiberZold Я тоже думал про нет-пакет. Только (в отличие от character_name, money и т.д.) напрямую эти данные там не записываются. Если распечатать нет-пакет, то в конце будет куча значений типа u8, u16 - как показали эксперименты, там это всё и лежит. Вот только в расшифровке этого салата возникают очень большие (а, может, и непреодолимые) трудности. Gnomi123 Да, хотелось реализовать на оригинальном движке. Но, видимо, не судьба - придётся вносить правки в xrGame. У меня есть установленная 2013 студия, оригинальные движки на ней собираются без проблем. Буду признателен, если подскажете, как экспортировать в скрипты эти методы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 855 Опубликовано Воскресенье в 07:00 27 минут назад, av661194 сказал: CiberZold Я тоже думал про нет-пакет. Только (в отличие от character_name, money и т.д.) напрямую эти данные там не записываются. Если распечатать нет-пакет, то в конце будет куча значений типа u8, u16 - как показали эксперименты, там это всё и лежит. Вот только в расшифровке этого салата возникают очень большие (а, может, и непреодолимые) трудности. Проще функцию вывести в движке. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DarkSnowder 65 Опубликовано Воскресенье в 07:13 народ, такой вопрос Спойлер [smart_terrain] type = general_lager capacity = 4 communities = stalker cond = {=is_day} stay = medium groups = 1 лагерь активируется с наступлением дня, и деактивируется ночью. Можно ли прописать в логике лагеря, чтобы с наступлением дня он активировался с 50% шансом (хочу таким образом добавить больше рандома) в логиках респавнов встречал вот такую строку: conditions = {+yan_find_scientist_done} 100, 0. Я так понял числа 100, 0 это вероятность срабатывания респавна. Применим ли данный параметр к гулагам? и ещё вопрос - иногда в лагерях прописываются 2 группировки (яркий пример - гулаг мерков и бандосов на Дикой Территории, который постоянно штурмуют долговцы и одиночки). Можно ли прописать так, чтобы при каждой активации приоритет полностью отдавался одной из двух группировок? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gnomi123 157 Опубликовано Воскресенье в 13:42 (изменено) av661194 Так, нужен файл level_script.cpp Нужно найти: void g_change_community_goodwill(LPCSTR _community, int _entity_id, int val) { CHARACTER_COMMUNITY c; c.set (_community); RELATION_REGISTRY().ChangeCommunityGoodwill(c.index(), u16(_entity_id), val); } После этой функции вставить так: void g_change_community_goodwill(LPCSTR _community, int _entity_id, int val) { CHARACTER_COMMUNITY c; c.set (_community); RELATION_REGISTRY().ChangeCommunityGoodwill(c.index(), u16(_entity_id), val); } int g_get_personal_goodwill(int _who_id, int _to_whom_id) { return RELATION_REGISTRY().GetGoodwill(u16(_who_id), u16(_to_whom_id)); } void g_set_personal_goodwill(int _who_id, int _to_whom_id, int _amount) { RELATION_REGISTRY().SetGoodwill(u16(_who_id), u16(_to_whom_id), _amount); } void g_change_personal_goodwill(int _who_id, int _to_whom_id, int _amount) { CHARACTER_GOODWILL gw = RELATION_REGISTRY().GetGoodwill(u16(_who_id), u16(_to_whom_id)); RELATION_REGISTRY().SetGoodwill(u16(_who_id), u16(_to_whom_id), gw + _amount); } Это сами функции. get возвращает числовое значение личного отношения, set позволяет установить числовое значение личного отношения, change изменить на _amount. Потом нужно экспортировать эти функции для использования в скриптах. Находим: module(L,"relation_registry") [ def("community_goodwill", &g_community_goodwill), def("set_community_goodwill", &g_set_community_goodwill), def("change_community_goodwill", &g_change_community_goodwill) ]; Добавляем наши функции: module(L,"relation_registry") [ def("community_goodwill", &g_community_goodwill), def("set_community_goodwill", &g_set_community_goodwill), def("change_community_goodwill", &g_change_community_goodwill), def("get_personal_goodwill", &g_get_personal_goodwill), def("set_personal_goodwill", &g_set_personal_goodwill), def("change_personal_goodwill", &g_change_personal_goodwill) ]; Собираем движок. Теперь можно вызывать эти функции через relation_registry.get_personal_goodwill (who, to_who) relation_registry.set_personal_goodwill (who, to_who, number) relation_registry.change_personal_goodwill (who, to_who, number) Должно работать. Изменено Воскресенье в 13:46 пользователем Gnomi123 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 517 Опубликовано Понедельник в 04:10 @Gnomi123, мне было лень разжёвыввать такую очевидную херню. 😁 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты