Expropriator 2 118 Опубликовано 11 Июля 2017 (изменено) Первый проект: Проект "Регресс". За основу взят движок ЧН 1.5.10. Цель проекта: совместить максимально контент ЗП на движке ЧН, с возможностью использования архивов db 1.6.02. Создана некая база файлов, взятых из ЧН (gamedata), добавляющая необходимый контент для функционирования движка в среде ЗП. Скачать базу (без локаций ЧН) 373.7Мб. 1. Установить базу в Зов Припяти 1.6.02 (другие версии не тестировались). 2. Добавить распакованные локации ЧН самостоятельно (целиком папку level - 1.8Гб.) 3. Запустить программу Regress (запуск для папки scs, xrEngine.exe) В логе ранее были замечены ошибки на материалы - это к сведению, сейчас ошибок нет (непонятно почему нет). Тема создана для обсуждения проблем совместимости двух движков ЧН и ЗП. Известно модели персонажей несовместимы, потому в ЗП придётся использовать ЧН нпс. На первом этапе этот проект представляет собой мод "Чистое небо - оригинальный сюжет" для архивов Зова Припяти (не для движка). Имеются графические правки бликов солнца + environment (Cromm Cruac), погода (Chriotmao), прицел пистолетов ЗП и др. (от автора темы). Кому нужна оригинальная погода - заменить из ЧН папку в базе environment полностью (блики солнца исчезнут так же). Исправлен движковый баг разработчиков, с рендером вокруг ГГ, скриптом. Файл ui_main_menu.script - не заменять!!! Патч N1 (для Кордона). Доп.инфо: Скрытый текст Исходный код 1.5.10 (ред. Дизель - совместимость СДК и VS2005-2008SP1) . Требуется, для компиляции рендера, dxsdk_march2008 (приоритет в VS над DXSDK_Mar09 и DXSDK_Jun10). dxsdk Второй проект: Проект "Прогресс". За основу взят движок ЗП 1.6.02. Цель проекта: совместить максимально контент ЧН на движке ЗП, с возможностью использования архивов db 1.5.10. Впервые, наверно! Тест для ЧН на базе движка ЗП. Спавн-мод "Прогресс" - начало. Progress_benchmarks Я.Диск 557Мб. Устарело: Скрытый текст Скачать 580Мб Я.Д. Общая база (начальная). Патч базы 11Мб. СДК (тестовая версия, основана на СДК07) для проекта Progress. 671.8Мб. Если у вас есть СДК 07, то можно скачать только патч. 90.9Мб. Скрытый текст Авторы сборки СДК: GSC - SDK K.D.- Fix's xrECoreB.dll by K.D.- АЕ ЗП: форсировано использование групп сглаживания при экспорте моделей. Работает с группами сглаживания как макса, так и майки. macron - Для всех редакторов включена поддержка LARGE_ADDRESS_AWARE. Фикс падения LE при построении (Compile -> Build) локации на стадии "Merge LOD textures". Основан на фиксе K.D. для SDK ТЧ. Ошибка возникала из-за большого количества лод-объектов на локации (>128). Они просто не вмещались на текстуру 2048х2048. Теперь текстура будет увеличена до нужных размеров и соответственно лодов можно будет ставить намного больше. Дизель - xrLC.exe - вырезан баг инвалид-фейсов Анимации смарт-коверов, моделей. Скрипты, конфиги. Конверт проекта "marsh". Для патча заведите новую СДК! Как добыть остальные локации из ЧН: нужен конвертер Бардака, и на время конверта заменить конфиги в СДК07 ЧНскими и закинуть сами локации в распаковку ЗП. converter -level cs:marsh -out marsh -mode le -with_lods Обнова для СДК и патча СДК (20.1Мб.): Добавлены: анимации, класс m_car, текстуры всех террайнов и масок ЧН. ================================================================================ 2018 ================================================================================ Расширенная версия СДК Прогресс (на базе SDK 0.7), так же под свой спавн. Версия моя наипоследняя, патчи старые не требуются. Что нового: добавлены архивы с локациями ЧН (через конвертер Бардака). Других сильно отличий, от предыдущей версий, нет. https://mega.nz/#!3OZ1EQTR!99LleiKWX_2YQezu6LOwXQjcfLMkyofM92qYTVjfRAc 1.6Гб. ALL0018 Новый билд: https://yadi.sk/d/RDUxgpk_eckX0w Код: https://yadi.sk/d/wwnn4EeaeRYjrA Подойдёт эта сборка для теста: https://mega.nz/#!eW4SGKib!TldDhrvCipxyu9AJh7cGNhx8yA4a14toklzLCXVQXHE Патч для нового билда ALL0018. Исправляет мутный рендер и тени. SSAO больше не беспокоит - оно заглушено.https://yadi.sk/d/2EQjLTgYHCSBSA Изменено 3 Ноября 2018 пользователем Expropriator 4 7 3 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 11 Июля 2017 (изменено) Замечены первые предупреждения, не приводящие к вылету, на момент начала игры. ! attempt to use non-existent INFOPORTION [ui_talk_show] ! cant find corresponding [id] for action_name Изменено 12 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 12 Июля 2017 (изменено) @UnLoaded, например что бы не тягать локации из ЗП. Движок ЧН читает и понимает почти всё в базе ЗП. ЧН имеет ряд преимуществ, а так же недостатков. Я только одно преимущество видел в ЗП - это dx11 - больше ЗП хвастать нечем. Боевые симуляционные схемы в ЧН гораздо разнообразны: там тебе и за укрытие прячутся и перепрыгивают препятствия - может в ЗП и есть такое, но не в оригинале. Звуки ЧН стереофоничны (в ЗП это есть, но на практике это выглядит скучно). Изменено 12 Июля 2017 пользователем Дизель 1 1 4 1 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 13 Июля 2017 (изменено) На оф сайте Сталкера нашел кое-какую инфу: Совместимость ЧН и ЗП (СДК):Формат уровней (за исключением данных, относящихся к xrAI), практически не менялся, поэтому результаты работы xrLC могут быть использованы и в ЧН. Разумеется, это относится только к мультиплеерным картам либо использованию геометрии. Таким образом, если вы хотите использовать SDK 0.7 для компиляции одиночного уровня к ЧН (скажем, из-за скорости работы xrLC), то это возможно, - но, соответственно, только с xrAI от ЧН. Файлы, собранные xrDO, совместимы как с ЗП, так и с ЧН и ТЧ. Файлы .thm совместимы со всеми версиями игры вплоть до ТЧ 1.0004. Формат скелетных объектов .ogf в ЗП и ЧН одинаков, - результаты работы в ActorEditor можно использовать в обеих играх. Таким образом, в SDK появилась возможность работы со смарткаверами (которые хоть и появились впервые в ЧН, но в его SDK были недоступны) в частности и уровнями для одиночной игры в целом (имевшаяся в LE ЧН, но достаточно ограниченная). Читать полностью... П.С. Буду рад любой инфе о совместимости и различиях движков, эдиторов, файлов ЧН и ЗП. Изменено 14 Июля 2017 пользователем Дизель 2 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 14 Июля 2017 (изменено) Как исправить баг с рендером вокруг ГГ? Можно с помощью консольных команд в скрипте. Например, я добавил в файл ui_main_menu.script, то что выделено синим: Скрытый текст function main_menu:InitControls() self:SetWndRect (Frect():set(0,0,1024,768)) local xml = CScriptXmlInit() xml:ParseFile ("ui_mm_main.xml") xml:InitStatic ("background", self) self.shniaga = xml:InitMMShniaga("shniaga_wnd",self); self.message_box = CUIMessageBoxEx() self:Register (self.message_box, "msg_box") local _ver = xml:InitStatic ("static_version",self) local mm = _G.main_menu.get_main_menu() _ver:SetText ("patch " .. mm:GetGSVer()) local console = get_console() console:execute("bind quit kESCAPE") -- когда забудешь включить кнопки по умолчанию (Diesel). --от сюда и ниже, нормальные настройки рендера DX10 (нет бага с тенями вокруг ГГ)(Diesel). console:execute("r2_volumetric_lights on") console:execute("r2_dof_far 800") console:execute("r2_dof -0.400000,1.400000,500.000000") console:execute("r2_dof_kernel 2.") console:execute("r2_dof_sky 0.") console:execute("r2_exp_donttest_shad off") console:execute("r2_gi off") console:execute("r2_ls_bloom_fast off") console:execute("r2_sun on") console:execute("r2_sun_depth_far_bias -0.00002") console:execute("r2_sun_depth_far_scale 1.") console:execute("r2_sun_depth_near_bias 0.00007") console:execute("r2_sun_depth_near_scale 1.") --настройка лучей и яркости освещения DX10, ниже (Diesel). console:execute("r2_sun_far 51.") --51-180 console:execute("r2_sun_lumscale 0.99") console:execute("r2_sun_lumscale_amb 0.99") console:execute("r2_sun_lumscale_hemi 0.99") console:execute("r2_sun_near 49.0") --1-50 console:execute("r2_sun_near_border 0.75") --0.5-1.0 end Данный баг растёт из движка, точнее даже не из движка, а из дефолтных настроек файла user.ltx Автор корректировки я, так что сильно не пинайте. Кто найдёт другой способ исправления - пишите. Но не предлагайте вносить это в user.ltx - будут последствия - сами поэкспериментируйте. Изменено 14 Июля 2017 пользователем Дизель 1 1 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 15 Июля 2017 (изменено) @Zagolski, я то в принципе за то, о чем ты толкуешь. Я понимаю и комрада UnLoaded, который написал: а на кой??? , но я хочу расшевелить модмейкеров, в частности новичков, которые могут со временем перенять наше дело (хотя я сам нуб). Тема создана не только, для того что я написал в шапке, но еще в образовательных и экспериментальных целях. Хочется понять на 100%, каким было различие движков и что на это побудило разрабров (понятно, что время и технологии). Я встречал модмейкеров, которые в ус не ставили движок ЗП (хотя на мой взгляд он бесспорно технологичнее), потому они до сих пор клепают моды на ЧН. Для понятия был я прав или нет, нужно года два - при условии, что я и другие будут делать что то с движком ЧН. Возможно проект выгорит сам собой - удалить в корзину не проблема. Изменено 15 Июля 2017 пользователем Дизель 1 Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 20 Июля 2017 (изменено) При согласовании баз ЧН,ЗП и движка ЧН - вылезит такой баг в окне торговли с нпс (смещение левой рамки), а так же смещение кругов в центре окна ГГ. Скрытый текст Этот баг я малость не понимаю почему происходит - он то есть, то нету. Может из-за моих дублей gamedata\configs\ui\: actor_menu_item_load actor_menu_item_load_16 actor_menu_load actor_menu_load_16 Их желательно удалить из базы для вашего движка!!! ...Пробую компилировать движок заново. Изменено 20 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 20 Июля 2017 (изменено) Как лечим баг?: FATAL ERROR [error]Description : XML node not found in file map_spots.xml [error]Arguments : primary_task_location Это связано с дублем файла из ЗП, где данная строка закоментирована: Скрытый текст <!-- <primary_task_location> <level_map spot="primary_task_spot" pointer="quest_pointer"/> <mini_map spot="primary_task_spot_mini" pointer="quest_pointer"/> </primary_task_location> <primary_task_spot x="0" y="0" width="21" height="21" stretch="1" alignment="c" location_level="5"> <texture r="242" g="15" b="11">ui_pda2_quest</texture> </primary_task_spot> <primary_task_spot_mini x="0" y="0" width="15" height="15" stretch="1" alignment="c" location_level="5"> <texture r="242" g="15" b="11">ui_mmap_quest</texture> <texture_below r="242" g="15" b="11">ui_mini_sn_spot_below</texture_below> <texture_above r="242" g="15" b="11">ui_mini_sn_spot_above</texture_above> </primary_task_spot_mini> <primary_na_border x="0" y="0" width="37" height="37" alignment="c" stretch="1" location_level="5"> <texture r="0" g="154" b="218">ui_pda2_hl_quest_base</texture> </primary_na_border> <primary_mini_na_border x="0" y="0" width="18" height="18" alignment="c" stretch="1" location_level="5"> <texture r="0" g="154" b="218">ui_pda2_hl_quest_base</texture> </primary_mini_na_border> <primary_ac_border x="0" y="0" width="37" height="37" alignment="c" stretch="1" location_level="5"> <texture r="255" g="240" b="0">ui_pda2_hl_quest_base</texture> </primary_ac_border> <primary_mini_ac_border x="0" y="0" width="18" height="18" alignment="c" stretch="1" location_level="5"> <texture r="255" g="240" b="0">ui_pda2_hl_quest_base</texture> </primary_mini_ac_border> <third_task_location> <level_map spot="third_task_spot"/> </third_task_location> <third_task_spot x="0" y="0" width="27" height="27" stretch="1" alignment="c" location_level="5"> <texture r="0" g="154" b="218">ui_pda2_sq_sos</texture> </third_task_spot> <third_na_border x="0" y="0" width="37" height="37" alignment="c" stretch="1" location_level="5"> <texture r="0" g="154" b="218">ui_pda2_hl_quest_base</texture> </third_na_border> <third_ac_border x="0" y="0" width="37" height="37" alignment="c" stretch="1" location_level="5"> <texture r="255" g="240" b="0">ui_pda2_hl_quest_base</texture> </third_ac_border> --> Что бы это исправить достаточно в исходниках исправить ссылку на этот файл, сменив название. source_cs_1510\clearsky\engine\xrGame\map_location.cpp Ищем строку: g_uiSpotXml->Load (CONFIG_PATH, UI_PATH, "map_spots.xml"); Заменяем на свое.Компилируем xrGame. Делаем копию старого файла из ЧН map_spots.xml с новым названием, например map_spots_load.xml (который есть в базе моей). Возможно, если есть вызов из скриптов этого файла, то будет читаться скриптами файл map_spots.xml ЗП. Это надо учесть в будущем и исправить скрипт!!! Изменено 21 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 20 Июля 2017 (изменено) Записал первое видео. Из ЗП дёрнул загрузочный экран-заставку. Прикольно, не то что было ранее, мизерные картинки. Скрытый текст https://gaming.youtube.com/watch?v=AT_mmKSYQAc&feature=share Прошу прощения за лаги и тёмную картинку. Такая прога. Надо искать старый, добрый фрапс. Изменено 21 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Июля 2017 @aka_sektor 12 часов назад, aka_sektor сказал: Слот шлема Это не фича - это великая глупость разрабов. Это надо было делать по другому - плясать от модели мировой ГГ, а не от конфигов. Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Июля 2017 (изменено) Стилизовать загрузочный экран ЧН под ЗП, можно в исходном коде. Но это делать наверное стоит, когда всё UI меняешь под ЗП, а так смысла нет просто добавлять. С художественной точки зрения, нужно править новую заставку из ЗП под стиль ЧН. source_cs_1510\clearsky\engine\Layers\xrRender\dxApplicationRender.cpp https://yadi.sk/i/6btfqi2q3LGHCE Исходный код, копировать с заменой. Компиляция трёх R рендеров заново, остального не требуется. Изменено 21 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 21 Июля 2017 (изменено) Первоочередная задача: исправить ядро, ограничение с памятью - ищу умных людей. надо проверить это; В 05.10.2010 в 01:33, Rolan сказал: Ну вот пожалуй и самое интересное...Практика. И так начнёмс... Для начала сделайте копию файла xrEngine.exe или ХR_3DA.exe(смотря на что делаете, ЗП , ЧН или ТЧ) Первое качаем WinHex(ссылка в шапке) или открываем любой другой Hex-редактор. Открываем файл,если делаем на ЗП то это - xrEngine.exe , а если на ЧН- xrEngine.exe , а вот на Тень Чернобыля XR_3DA.exe. Открыли и что Мы видим?Каие-то циферки и буковки,про это сразу забываем и изаем поиск,в поиск вбиваем GlobalMemoryStatusEx и ждём пока он найдёт. Вот нашли мы эту строку и что дальше?А вот теперь смотрим на те циферки , выделяем окончание Ех у GlobalMemoryStatusEx выделилось как вы заметили не только Ех но и ещё 4 цифры , вот теперь это нужно удалить , те цифры которые были выделены заменяем нулями, то есть вот так У вас выделились цифры 45 78 их заменяем нулями 00 00 Вот и всё, сохраняем. Запускаем игру и смотрим, игра больше не тормозит у кого тормозила. Изменено 21 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 22 Июля 2017 (изменено) 16 часов назад, warwer сказал: У меня стоит эта правка... Толку - 0 А от неё и не будет толку, гляньте исходники. Как оно там вообще без вылета функционирует - не понятно. C:\Program Files\Microsoft SDKs\Windows\v6.1\Include\WinBase.h Скрытый текст typedef struct _MEMORYSTATUSEX { DWORD dwLength; DWORD dwMemoryLoad; DWORDLONG ullTotalPhys; DWORDLONG ullAvailPhys; DWORDLONG ullTotalPageFile; DWORDLONG ullAvailPageFile; DWORDLONG ullTotalVirtual; DWORDLONG ullAvailVirtual; DWORDLONG ullAvailExtendedVirtual; } MEMORYSTATUSEX, *LPMEMORYSTATUSEX; WINBASEAPI BOOL WINAPI GlobalMemoryStatusEx( __out LPMEMORYSTATUSEX lpBuffer ); В движке всего один раз упоминается X:\source_cs_1510\clearsky\engine\xrEngine\x_ray.cpp(504): if ( ! GlobalMemoryStatusEx( &statex ) ) Если мы убираем Ex, то компилятор ругается: 11>.\x_ray.cpp(505) : error C2664: 'GlobalMemoryStatus' : cannot convert parameter 1 from 'MEMORYSTATUSEX *__w64 ' to 'LPMEMORYSTATUS' Изменено 22 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 22 Июля 2017 (изменено) Полная функция: // Фунция для тупых требований THQ и тупых американских пользователей Скрытый текст BOOL IsOutOfVirtualMemory() { #define VIRT_ERROR_SIZE 256 #define VIRT_MESSAGE_SIZE 512 SECUROM_MARKER_HIGH_SECURITY_ON(1) MEMORYSTATUSEX statex; DWORD dwPageFileInMB = 0; DWORD dwPhysMemInMB = 0; HINSTANCE hApp = 0; char pszError[ VIRT_ERROR_SIZE ]; char pszMessage[ VIRT_MESSAGE_SIZE ]; ZeroMemory( &statex , sizeof( MEMORYSTATUSEX ) ); statex.dwLength = sizeof( MEMORYSTATUSEX ); if ( ! GlobalMemoryStatusEx( &statex ) ) return 0; dwPageFileInMB = ( DWORD ) ( statex.ullTotalPageFile / ( 1024 * 1024 ) ) ; dwPhysMemInMB = ( DWORD ) ( statex.ullTotalPhys / ( 1024 * 1024 ) ) ; // Довольно отфонарное условие if ( ( dwPhysMemInMB > 500 ) && ( ( dwPageFileInMB + dwPhysMemInMB ) > 2500 ) ) return 0; hApp = GetModuleHandle( NULL ); if ( ! LoadString( hApp , RC_VIRT_MEM_ERROR , pszError , VIRT_ERROR_SIZE ) ) return 0; if ( ! LoadString( hApp , RC_VIRT_MEM_TEXT , pszMessage , VIRT_MESSAGE_SIZE ) ) return 0; MessageBox( NULL , pszMessage , pszError , MB_OK | MB_ICONHAND ); SECUROM_MARKER_HIGH_SECURITY_OFF(1) return 1; } Что нам дают эти условия - возвращение ноль или один. Возвращая 1 - игра не запускается вообще. Ноль эмоций. Функуция ЗП // для тупых требований THQ и тупых американских пользователей одинакова. Логично, что это не влияет на память, так как в ЗП она расшарена выше . Эту функцию вообще можно упростить: BOOL IsOutOfVirtualMemory() { return 0; } И будет работать. Возможно возвращая 1 движок вылетает на рабочий стол? Надо проверить. Изменено 22 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 22 Июля 2017 (изменено) 23 часа назад, warwer сказал: Так же, как с полноценным использованием ядер проца больше одного. Есть инфа, где посмотреть? Изменено 22 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 22 Июля 2017 (изменено) Как всё запущено в СДК ЧН! Пришлось эдиторы под 10ку патчить Microsoft Application Compatibility Toolkit. Скрипты и конфиги не совметимы из игры с СДК. Пытался уровень скомпилировать. Компиляторы: первый геометрии молчит - соответственно остальные матерятся. Пришлось свой расшареный из ЗП тащить - как вихрь налетел - чешит геометрию. Да уж! А вот на компиляции сетки, я обломался. Изменено 26 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 23 Июля 2017 (изменено) @Zagolski , специально сегодня смотрел ядра - одно только работает в ЧН. Смысла нет - смысл есть. Да и вообще скоро, пора валить на Юнити. Ковыряем для того, что бы ковырять. Чем бы дитя не тешилась, лижь бы ....(сами знаете). А чем еще заняться? Ура! Я собрал xrSE_Factory.dll ЧН - это было нечто! Теперь АИ. Изменено 23 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 23 Июля 2017 (изменено) @warwer, вот кавер боевой ЧН. И Тут прыгает бот, но кавер один. Прыжок - это есть выход из кавера? Изменено 25 Июля 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 24 Июля 2017 (изменено) Начну собирать разницу в gamedata и в движках. Сколько всего приходится править. Тыщи. 1. секции кофигов flesh_weak нет в ЗП. 2. секции конфигов boar_weak нет в ЗП. 3. секции конфигов bloodsucker_night_king нет в ЗП. 4. секции конфигов pseudodog_strong нет в ЗП... pseudodog_strong bloodsucker_redforest bloodsucker_redhunter Это только начало. Будет длинная портянка. Этих считать: mar_csky_trader и подобные sim_default_csky_0 - наверно не стоит? В СДК 07 уровень ЧН можно открыть, имея небольшие правки. Но наоборот ЗП уровень в ЧН СДК открыть из-за смарт-каверов, не реально (скорее нецелесообразно). Пришел к выводу, что уровни для ЧН создавать нужно в СДК 0.7 Изменено 1 Августа 2017 пользователем Дизель Поделиться этим сообщением Ссылка на сообщение
Expropriator 2 118 Опубликовано 25 Июля 2017 (изменено) В 25.07.2017 в 05:16, Дизель сказал: Пришел к выводу, что уровни для ЧН создавать нужно в СДК 0.7 Скрытый текст Сам с собой разговариваю. Вывод поспешный. Получается Франкинштейн. Геометрию можно делать - даже нужно. Травку. Но аи-сетка, геймграф и весь спавн - не читаемы ЧН. Скрытый текст Вот я заморичился! Короче, так: делаем билд геометрии и компиль в СДК07. Затем билд геометрии тащим в СДК05-06, там билдим аи-сетку и спавн, и там же компилируем. Изменено 25 Июля 2017 пользователем Дизель 1 Поделиться этим сообщением Ссылка на сообщение