Norman Eisenherz 355 Опубликовано 19 Октября 2020 @Kirgudu Как определить, что отряд стал враждебным и, возможно, уже начал стрелять по ГГ, оставаясь при этом на нейтральном отношении? Какой параметр отряда меняется, когда отряд становится свидетелем нападения? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 20 Октября 2020 Вот именно там и смотрю, и именно эта проверка при явном наличии командиров выдает для соседних отрядов отношение "нейтрал". Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 30 Октября 2020 Можно обратиться к движковому счетчику патронов: если active_item:get_ammo_in_magazine() и active_item:get_ammo_total() уменьшились на одну величину, это как раз выстрел. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 31 Октября 2020 Здрасьте. Задача: создать одноименный текстовый файл при создании сейва. В [ui_save_dialog.script] можно отследить имя и создать свой файл при сейве через меню "Сохранить игру". Как сделать то же самое при вводе имени нового сейва через консоль? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 2 Ноября 2020 @AndreySol Где найти разобранный на файлы C++ движок ЧН? Движок ЗП тоже было бы интересно почитать. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 22 Ноября 2020 Здрасьте. Как проверить, что дождь не только идет в данный момент, но и попадает на ГГ (ГГ не находится в здании)? Версия игры любая без движковых правок. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 23 Ноября 2020 В ЧН часто есть готовые рестрикторы – укрытия от выброса, но у них нет внешних конфигов логики. Можно ли без перебора [all.spawn] определить, что ГГ находится в рестрикторе с именем "(level)_vibros_#"? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 25 Ноября 2020 @naxac Нашел перебор укрытий в [xr_surge_hide.script]: Spoiler local board = sim_board.get_sim_board() local hide_tbl = {} local n = 0 for k,v in pairs(board.smarts) do if v.smrt.actor_hides~=nil then for kk,vv in pairs(v.smrt.actor_hides) do local obj = alife():object(vv) if(obj) then n = n + 1 hide_tbl[n] = obj end end end end После этого как раз выполняется проверка через inside. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 18 Декабря 2020 Здрасьте. Оконный класс на базе CUIScriptWnd() + статик с текстурой для видимости. ТЧ 1.0006: перезагрузка проходит без ошибок даже при открытом окне – окно успешно удаляется методом __finalize(). ЧН 1.5.10: • перезагрузка при открытом окне приводит к вылету без лога, как будто окно теряется. • принудительное обнуление окна в net_destroy() также приводит к вылету без лога, если окно было открыто хотя бы один раз и точно было закрыто на момент перезагрузки. Что-то изменилось в методах __init() и __finalize()? Spoiler local w -- // actor_binder:on_item_use(obj) -- custom // -- function use_check(obj) if obj:section() == "bandage" then w = pda() level.start_stop_menu(w, true) end end function Init(cuiw, x, y, w, h) cuiw:SetWndRect( Frect():set(x, y, x + w, y + h) ) end local W, H = 1024, 768 class "pda" (CUIScriptWnd) function pda:__init() super() Init(self, W/2, H/2, 1, 1) local bk = CUIStatic() self:AttachChild(bk) Init(bk, 0, 0, 1, 1) bk:InitTexture("---") end function pda:__finalize() end Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 31 Декабря 2020 В ЧН есть проверка установленного обвеса через (wpn):weapon_is_scope(), _silencer(), _grenadelauncher(). В ЗП тоже такие методы должны быть. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 18 Марта 2021 @Colder [ui_main_menu.script], по аналогии с блоком if dik == DIK_keys.DIK_Q. Обязательно добавить проверку if level.present() – игра должна быть загружена в момент расходования предмета. Сделать применение предметов через быстрые слоты, как в ЗП, без расширенного движка невозможно – разве что добавить условие вида "если потрачен бинт, то съесть еще колбасу". 1 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 23 Апреля 2021 Здрасьте. [ЗП 1.6.02] Проблема: при каждом повторе сейва и загрузки добавляется примерно 10 секунд реального времени к значению game.time(). Дельта постоянная – время в главном меню при создании сейва и время ожидания на экране загрузки не влияют. Пример: вывод внутреннего таймера в сообщение, сразу же сейв и загрузка – начальное время 35 653 секунд, время после загрузки – 35 665 секунд. Как с этим бороться? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 23 Апреля 2021 Снимаю вопрос. Через pstor-запись в момент сейва и сравнение на первом апдейте разница ловится достаточно точно. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 24 Апреля 2021 @BFG game.time() – счетчик времени в активном сейве, и этот счетчик должен обновляться только при апдейте актера, который начинается после загрузки сейва и отключения меню. Или не совсем так? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 27 Апреля 2021 @Баба ЯГА [bind_physic_object.script] generic_physics_binder:use_callback(obj, who) Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 9 Мая 2021 Здрасьте. [ЗП 1.6.02] Создание кнопки CUI3tButton() с тегом frame_mode=1. Судя по описанию, должна получиться кнопка с состояниями d/e/h/t и масштабированием по горизонтали через подстановку частей b/back/e (= CUIFrameLine). Создал 12 текстур-частей _d_b/back/e, _e_b/back/e, …, указал ссылку на базовое имя – вылет. Указал текстуры в описании кнопки блоками <texture_d>name_d</texture_d> в расчете на подстановку текстур b/back/e – вылет. По образу и подобию кнопки "ui_inGame2_pda_button" создал набор d/e/h/t с полными текстурами и отдельные наборы с частями, названными _E_b/back/e, _H_b/back/e, _T_b/back/e – вылет. Добавил в [configs\ui\textures_descr] описание для частей b/back/e по полным текстурам – вылет. Указал ссылку на текстуру "ui_inGame2_pda_button" – вылет. Для справки, все предполагаемые части этой текстуры даны ссылками на пустое место. Создание кнопки в обычном состоянии по полным текстурам d/e/h/t работает – скриптовая часть и ссылка на папку с текстурами точно правильные. Ошибка каждый раз одна и та же: "similar(m_tex_rect[flFirst].height(), m_tex_rect[flSecond].height())" – разная высота частей масштабируемой текстуры, хотя все части нарезаны из одной текстуры и имеют одинаковую высоту. Такое впечатление, что масштабирование текстуры кнопки не работает, и его просто забыли закомментировать в движке. Есть какая-то информация? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 11 Мая 2021 @naxac Так это еще в ТЧ, а в ЧН и ЗП описание с виду вполне рабочее. На всякий случай, уточняю место: [xrGame\ui\UIXmlInit.cpp] bool CUIXmlInit::Init3tButton(…). Должно получиться 4 окна CUIFrameLine – по одному на каждое состояние кнопки; или где-то дальше обработчик спотыкается, или я не понимаю, как правильно назвать части текстур. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 13 Мая 2021 @naxac Подставил ссылку на имеющийся вариант кнопки – вылет. Разделил эту же кнопку на 12 текстур (+d + h/t отдельно) – выводится. Осталось понять, что было не так в первом эксперименте… Ну, может кому пригодится: • в обозначениях частей нельзя использовать верхний регистр (пример с кнопкой ui_inGame2_pda_button из того же файла [ui_actor_pda] – мусор из старых версий); • части принимаются только с описанием – файлы-кусочки не подходят ни в каком виде, хотя для обычной кнопки можно указывать набор текстур и так. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 17 Мая 2021 Здрасьте. Кто умеет читать C++, подскажите, что должен делать следующий код (платформа ЗП): Spoiler [xrGame\ui\UIComboBox.cpp] void CUIComboBox::disable_id(int id) { if(m_disabled.end()==std::find(m_disabled.begin(),m_disabled.end(),id)) m_disabled.push_back(id); } void CUIComboBox::enable_id(int id) { xr_vector<int>::iterator it = std::find(m_disabled.begin(),m_disabled.end(),id); if(m_disabled.end()!=it) m_disabled.erase(it); } Ожидаемый результат: отключение и обратное включение строки с заданным id в выпадающем списке CUIComboBox(). Видимый результат отсутствует: строка не удаляется и не становится неактивной, а методы CurrentID() и GetTextOf(id) дают старые значения при ее выборе. Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение
Norman Eisenherz 355 Опубликовано 21 Мая 2021 Здрасьте. ЗП 1.6.02. Задача: вывести поверх инвентаря окно с набором дочерних статиков. Ссылка level.main_input_receiver() отсутствует, остается отслеживание режима инвентаря в [actor_menu.script] и вывод окна поверх через add_dialog_to_render с небольшой задержкой. Проблема 1: любые дочерние окна рендер-статика не видны, даже если применить к метод Show(true) – каждый элемент приходится выводить по отдельности. Проблема 2: рендер-статик выводится поверх всех элементов инвентаря, включая всплывающие окна с информацией. Кроме варианта "вырезать область в текстуре инвентаря и подставить ее обратно через AddCustomStatic вместе с новым окном", как можно решить задачу? Мини-моды: ТЧ ЧН ЗП Шпаргалка Поделиться этим сообщением Ссылка на сообщение