Перейти к контенту

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

== Функции получения стандартных окон ==

local wnd = level.get_pda_wnd() -- PDA

local wnd = level.get_talk_wnd() -- окно диалога

local wnd = level.get_car_body_wnd() -- инвентарь трупа или ящика

local wnd = level.get_trade_wnd() -- окно торговли

Кто нибудь юзал такое?

Какой класс получаем,, наследника CUIDialogWnd?

Что можно с этим сделать? Такие вещи работать будут?

 

local pda_wnd = level.get_pda_wnd()

pda_wnd.button_close = xml:Init3tButton ("button",pda_wnd.dialog)

pda_wnd:Register (pda_wnd.button_close, "btn_cls")

 

 

Ссылка на комментарий

То-ли я такой криворукий, то-ли еще чего...

Скачал пакет. Скачал и установил masm32, положил xrGame.dll, предварительно переименованный в xrGame_orig.dll в папку с батниками, в папку tools и 3312_shoc_10006.

Запустил батник - вываливается с ошибками:

 

 

 Assembling: mydll.asm
matrix_fix.asm(243) : error A2008: syntax error : xmm
matrix_fix.asm(248) : error A2008: syntax error : xmm
matrix_fix.asm(249) : error A2008: syntax error : xmm
matrix_fix.asm(251) : error A2008: syntax error : xmm
matrix_fix.asm(252) : error A2008: syntax error : xmm
matrix_fix.asm(253) : error A2008: syntax error : xmm
matrix_fix.asm(254) : error A2008: syntax error : xmm
matrix_fix.asm(257) : error A2008: syntax error : xmm
matrix_fix.asm(258) : error A2008: syntax error : xmm
matrix_fix.asm(259) : error A2008: syntax error : xmm
matrix_fix.asm(260) : error A2008: syntax error : xmm
matrix_fix.asm(261) : error A2008: syntax error : xmm
matrix_fix.asm(267) : error A2008: syntax error : xmm
matrix_fix.asm(268) : error A2008: syntax error : xmm
matrix_fix.asm(269) : error A2008: syntax error : xmm
matrix_fix.asm(271) : error A2008: syntax error : xmm
matrix_fix.asm(272) : error A2008: syntax error : xmm
matrix_fix.asm(273) : error A2008: syntax error : xmm
matrix_fix.asm(275) : error A2008: syntax error : xmm
matrix_fix.asm(277) : error A2008: syntax error : xmm
matrix_fix.asm(278) : error A2008: syntax error : xmm
matrix_fix.asm(279) : error A2008: syntax error : xmm
matrix_fix.asm(280) : error A2008: syntax error : xmm
matrix_fix.asm(281) : error A2008: syntax error : xmm
matrix_fix.asm(286) : error A2008: syntax error : xmm
matrix_fix.asm(287) : error A2008: syntax error : xmm
matrix_fix.asm(288) : error A2008: syntax error : xmm
matrix_fix.asm(290) : error A2008: syntax error : xmm
matrix_fix.asm(291) : error A2008: syntax error : xmm
matrix_fix.asm(292) : error A2008: syntax error : xmm
matrix_fix.asm(294) : error A2008: syntax error : xmm
matrix_fix.asm(296) : error A2008: syntax error : xmm
matrix_fix.asm(297) : error A2008: syntax error : xmm
matrix_fix.asm(298) : error A2008: syntax error : xmm
matrix_fix.asm(299) : error A2008: syntax error : xmm
matrix_fix.asm(300) : error A2008: syntax error : xmm
matrix_fix.asm(305) : error A2008: syntax error : xmm
matrix_fix.asm(306) : error A2008: syntax error : xmm
matrix_fix.asm(307) : error A2008: syntax error : xmm
matrix_fix.asm(309) : error A2008: syntax error : xmm
matrix_fix.asm(310) : error A2008: syntax error : xmm
matrix_fix.asm(311) : error A2008: syntax error : xmm
matrix_fix.asm(313) : error A2008: syntax error : xmm
matrix_fix.asm(315) : error A2008: syntax error : xmm
matrix_fix.asm(316) : error A2008: syntax error : xmm
matrix_fix.asm(317) : error A2008: syntax error : xmm
matrix_fix.asm(318) : error A2008: syntax error : xmm
matrix_fix.asm(319) : error A2008: syntax error : xmm
matrix_fix.asm(324) : error A2008: syntax error : xmm
matrix_fix.asm(325) : error A2008: syntax error : xmm
matrix_fix.asm(326) : error A2008: syntax error : xmm
matrix_fix.asm(328) : error A2008: syntax error : xmm
matrix_fix.asm(329) : error A2008: syntax error : xmm
matrix_fix.asm(330) : error A2008: syntax error : xmm
matrix_fix.asm(331) : error A2008: syntax error : xmm
matrix_fix.asm(334) : error A2008: syntax error : xmm
matrix_fix.asm(335) : error A2008: syntax error : xmm
matrix_fix.asm(336) : error A2008: syntax error : xmm
matrix_fix.asm(337) : error A2008: syntax error : xmm
matrix_fix.asm(338) : error A2008: syntax error : xmm
matrix_fix.asm(343) : error A2008: syntax error : xmm
matrix_fix.asm(344) : error A2008: syntax error : xmm
matrix_fix.asm(345) : error A2008: syntax error : xmm
matrix_fix.asm(347) : error A2008: syntax error : xmm
matrix_fix.asm(348) : error A2008: syntax error : xmm
matrix_fix.asm(349) : error A2008: syntax error : xmm
matrix_fix.asm(350) : error A2008: syntax error : xmm
matrix_fix.asm(353) : error A2008: syntax error : xmm
matrix_fix.asm(354) : error A2008: syntax error : xmm
matrix_fix.asm(355) : error A2008: syntax error : xmm
matrix_fix.asm(356) : error A2008: syntax error : xmm
matrix_fix.asm(357) : error A2008: syntax error : xmm
matrix_fix.asm(362) : error A2008: syntax error : xmm
matrix_fix.asm(363) : error A2008: syntax error : xmm
matrix_fix.asm(364) : error A2008: syntax error : xmm
matrix_fix.asm(366) : error A2008: syntax error : xmm
matrix_fix.asm(367) : error A2008: syntax error : xmm
matrix_fix.asm(368) : error A2008: syntax error : xmm
matrix_fix.asm(370) : error A2008: syntax error : xmm
matrix_fix.asm(372) : error A2008: syntax error : xmm
matrix_fix.asm(373) : error A2008: syntax error : xmm
matrix_fix.asm(374) : error A2008: syntax error : xmm
matrix_fix.asm(375) : error A2008: syntax error : xmm
matrix_fix.asm(376) : error A2008: syntax error : xmm
matrix_fix.asm(381) : error A2008: syntax error : xmm
matrix_fix.asm(382) : error A2008: syntax error : xmm
matrix_fix.asm(383) : error A2008: syntax error : xmm
matrix_fix.asm(385) : error A2008: syntax error : xmm
matrix_fix.asm(386) : error A2008: syntax error : xmm
matrix_fix.asm(387) : error A2008: syntax error : xmm
matrix_fix.asm(389) : error A2008: syntax error : xmm
matrix_fix.asm(391) : error A2008: syntax error : xmm
matrix_fix.asm(392) : error A2008: syntax error : xmm
matrix_fix.asm(393) : error A2008: syntax error : xmm
matrix_fix.asm(394) : error A2008: syntax error : xmm
matrix_fix.asm(395) : error A2008: syntax error : xmm
matrix_fix.asm(399) : error A2008: syntax error : xmm
matrix_fix.asm(400) : error A2008: syntax error : xmm
matrix_fix.asm(401) : error A2008: syntax error : xmm
matrix_fix.asm(404) : error A2008: syntax error : xmm
matrix_fix.asm(405) : fatal error A1012: error count exceeds 100; stopping assembly
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK : fatal error LNK1181: cannot open input file "mydll.obj" 

 

 

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

Stalker_AleX333 используй SVN portable. Он для 142 ревизии, но до 163 обновить не сложно будет, разберешься.

http://www.amk-team.ru/forum/index.php?showtopic=10538&page=31#entry831341

Ссылка на комментарий

@macron, отличная вещь, удобно и никакого гемороя.

 

Вот только какая-то из правок, требует чего-то: 

FATAL ERROR
 
[error]Expression    : xml_doc.NavigateToNode(path,index)
[error]Function      : CUIXmlInit::InitDragDropListEx
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIXmlInit.cpp
[error]Line          : 426
[error]Description   : XML node not found
[error]Arguments     : dragdrop_knife

Сразу скажу, что список изменений для xrGame оставлял дефолтными.

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

,

Спасибо за быстрый ответ ;)
Значит это мне подходит, осталось перенести на ЗП...
Но самое интересное для меня, функция register_ns_dialog_void. Почему пришлось писать свою? Почему не подходит "прототип" от какой нить "Object_by_id" ?

 

,

Мб слот ножа в инвентаре? Попробуй добавить по аналогии с другими слотами.

Ссылка на комментарий

 

 

Попробуй добавить по аналогии с другими слотами.

Или отключай на фиг правки связанные со слотами. Там много чего по умолчанию может потребовать правок в xml или даже в шейдерах, не доверяй авторам. :nono:

Ссылка на комментарий

Но самое интересное для меня, функция register_ns_dialog_void. Почему пришлось писать свою? Почему не подходит "прототип" от какой нить "Object_by_id" ?

Если я правильно понял суть вопроса: своих там нет, везде юзаются прототипы, которые уже были в движке. Иначе бы уже давно переделали костыли "set_arg1" etc.

 

А почему не "object_by_id" - видимо просто уже нашли другую функцию с подобным прототипом.

 

Вот только какая-то из правок, требует чего-то:

Драгдроп элемент ножа в инвентаре. Ещё затребует для бинокля, фонарика и кучи подобного.

В идеале конечно слоты надо выключать по дефолту...

Изменено пользователем Shadows
Ссылка на комментарий

,

register_ns_dialog_void proc


var_8 = dword ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h

push ebp
mov ebp, esp
push ecx
push ecx
mov ecx, ds:Memory
push esi
push 14h ; _DWORD
call ds:xrMemory__mem_alloc
mov esi, eax
test esi, esi
jz short loc_101AFC1F
mov ecx, esi
call ds:??0registration@detail@luabind@@QAE@XZ ; luabind::detail::registration::registration(void)
mov eax, [ebp+arg_4]
mov [esi+8], eax
mov eax, [ebp+arg_8]
mov dword ptr [esi], offset off_10481F40
mov [esi+0Ch], eax
jmp short loc_101AFC21
; ---------------------------------------------------------------------------

loc_101AFC1F: ; CODE XREF: sub_101AFBE9+18j
xor esi, esi

loc_101AFC21: ; CODE XREF: sub_101AFBE9+34j
and [ebp+var_8], 0
push ecx
mov eax, esp
lea ecx, [ebp+var_4]
mov [eax], esi
call ds:??0scope@luabind@@QAE@V?$auto_ptr@Uregistration@detail@luabind@@@std@@@Z ; luabind::scope::scope(std::auto_ptr)
mov ecx, [ebp+arg_0]
push eax
call ds:??0scope@luabind@@QAE@ABU01@@Z ; luabind::scope::scope(scope::scope const &)
lea ecx, [ebp+var_4]
call ds:??1scope@luabind@@QAE@XZ ; luabind::scope::~scope(void)
mov ecx, [ebp+var_8]
test ecx, ecx
jz short loc_101AFC53
mov eax, [ecx]
push 1
call dword ptr [eax]

loc_101AFC53: ; CODE XREF: sub_101AFBE9+62j
mov eax, [ebp+arg_0]
pop esi
leave
retn
register_ns_dialog_void endp

 

Если эта функция "из движка", то зачем её копировать?
Вроде обычно юзают "указатель", типа такого:

org 103CA530h - shift
register_ns_dialog_void:
Ссылка на комментарий

, ок, с этим разобрался. А как насчет подмены шейдеров прицела и где вообще искать файлы для подобных фитч? 

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

А как насчет подмены шейдеров прицела и где вообще искать файлы для подобных фитч?

У разрабов ОГСЕ видимо. А вообще, проще отключить её.
Ссылка на комментарий

, Эээ, это что за "правка":

 

2989152.jpg

 

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

Однозначно все правки неприемлемы, только из-за того, весь ландшафт вокруг ГГ начинает дёргаться. Есть от этого какое-то спасение. (Опасаюсь ответа "не использовать").

Ссылка на комментарий

, дык в том-то и дело, что дллки рендеров я тоже пропатичл. Правка тени от ГГ включена везде. Кривая реализация?

 

З.Ы. Как с включенной, так и с выключенной правкой в игре явно не проходит инициализация и апдейт погоды. На всех локах "висит" стадия выброса.

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

 

 

Кривая реализация?

Вряд ли, у меня работает. А ты точно раскоментил строку в corrections list в папке с рендером? Если совмещал с портаблом, то в SVN'е эта строчка закоменчена.

Do what thou wilt shall be the whole of the Law.

Ссылка на комментарий

@sto1en, да фиг с ней - этой тенью...

 

З.Ы. Вот почему погода не инициализируется, это более насущный вопрос. (проверял, дело точно в xrGame.dll)

На всякий случай, список включённых правок: 

 

0x10190492 5 ; jmp global_space_ext ; врезка с инструкцией перехода - 5 байт
0x10149CA2 5 ; jmp global_space_ext2
0x10149D24 5 ; jmp global_space_ext2_additional
0x10155D87 5 ; jmp game_object_fix
0x1014A7CA 5 ; jmp game_object_fix2 ; вторая часть, под свойства

0x101A6E50 5 ; jmp call_key_press_callback
0x101A71F0 5 ; jmp call_key_release_callback
0x101A7330 5 ; jmp call_key_hold_callback
0x101A6CA5 5 ; jmp call_mouse_wheel_callback
0x101DE710 5 ; jmp call_mouse_move_callback
0x10443CED 8 ; предоствращение вылета при невключении ствола в mp_ranks
0x101C6DC0 5 ; jmp CActor_HitSignal_ext
0x10204D75 5 ; jmp on_belt_callback
0x10204F13 5 ; jmp on_ruck_callback
0x10204BCF 5 ; jmp on_slot_callback
0x1004C9AD 5 ; jmp alife_simulator_fix
0x1028E30E 5 ; jmp add_console_commands_fix 
0x102862E0 5 ; jmp inventory_box_fix
0x101AEF0F 5 ; level_ns_extension_1 ; get_target_dist, get_target_obj
0x101AF1C1 8 ; level_ns_extension_2 ; get_target_dist, get_target_obj
0x103561C9 5 ; jmp     addr_103561DD ; skip annoying msg "sv ownership id_parent ..."
0x103561DD 8 ; part2: mov esi,10h; nop; nop; nop;
0x1035646D 5 ; jmp     addr_10356481 ; skip annoying msg "sv reject. id_parent ..."
0x10356481 8 ; part2: mov ebx,10h; nop; nop; nop;
0x10355D85 5 ; jmp addr_10355D9B ; skip annoying msg "sv destroy object ..."
0x103B8DEB 5 ; jmp addr_103B8DFF ; skip annoying msg "[16-9] get_xml_name for ..."
0x1004C3D2 5 ; jmp release_fix
0x101477AF 6 ; отключение проверки при выкидывании из ящиков
0x1026C525 5 ; jmp car_fix
0x10269391 5 ; jmp car_panel_fix ; врезка для управления видимостью панели машины
0x103FB34F 5 ; jmp cuiwindow_fix
0x102C4632 5 ; jmp ctime_fix
0x101398CD 5 ; jmp matrix_fix
0x1045E73C 6 ; фикс имени функции speed

0x10146D00 5 ; jmp disable_info_portion_fix ; убираем лишние действия при выключении уже выключенной инфопорции

0x103BE8C0 5 ; jmp CUITradeWnd__CanMoveToOther_fix ; ручное управление торгуемостью предметов
0x10416E89 5 ; jmp CUIInventoryCellItem__EqualTo_fix ; ручное управление группируемостью предметов

0x104A067C 4 ; замена пустого виртуального метода Projector::Hit на наш

0x104760D4 4 ; CAI_Stalker__IsVisibleForZones
0x10118C50h 5 ; jmp CAI_Stalker__feel_touch_new_fix

0x102AC460 5 ; jmp game_cl_GameState__net_import_GameTime_dbg_fix

0x1021CA22 5 ; jmp UpdateAddonsVisibility_fix
0x1021C632 5 ; jmp UpdateHUDAddonsVisibility_fix


0x101F267F 5 ; jmp CHangingLamp__net_Spawn_fix
0x101F269A 5 ; jmp CHangingLamp__net_Spawn_fix_2
0x101E1180 5 ; jmp CEntityAlive__Hit_fix
0x101E35EC 4 ; убираем степень двойки иммунитета пси-хита
0x1020616D 5 ; jmp CInventory__Eat_fix ; колбек на предиспользование

0x1019FFA0 5 ; jmp [CEffectorZoomInertion__Process]

;rus_phantom
0x103BFF64 5 ; jmp call_pda_contact_callback
0x103E5C6E 5 ; jmp to xml AdjustHeightToText and AdjustWeigthToText

;использование патронов на поясе
0x10205D71 5
0x1021C266 5

;тень ГГ на R2 (требует также включения в рендере)
0x101C85CF 6 ;jmp CActor__Update_fix
0x101C8948 2

;kstn
;Перекл. на болт + откл/вкл колеса мышки для переключения м/у слотами
0x101DEEA0 7 ; jmp CActor__OnNextWeaponSlot
0x101DEF40 7 ; jmp CActor__OnPrevWeaponSlot

;Коллбэк актора на выделение предмета в инвентаре
0x103E1B28 5 ; jmp CUIItemInfo__InitItem_EXT_CHUNK

; добавляем метод установки выбранного элемента в CUIListWnd
0x10420423 5 ; jmp CUIListWnd__script_register_fix
; поддержка русского языка в поле ввода
0x103F5F3A 5 ; jmp CUICustomEdit_fix
0x103F4B21 5 ; jmp CUICustomEdit__KeyPressed_fix
0x103F4CCD 5 ; jmp CUICustomEdit__KeyPressed_fix_1
0x103F4CE6 5 ; jmp CUICustomEdit__KeyPressed_fix_2
0x103F4CFF 5 ; jmp CUICustomEdit__KeyPressed_fix_3
0x103F4D15 5 ; jmp CUICustomEdit__KeyPressed_fix_4
0x103F4D60 5 ; jmp CUICustomEdit__KeyPressed_fix_5
0x103F4D79 5 ; jmp CUICustomEdit__KeyPressed_fix_6
0x103F4D47 5 ; jmp CUICustomEdit__KeyPressed_fix_7

0x1040B935 5 ; jmp CUITrackBar_fix
0x103D7BC4 5 ; jmp CUIOptionsItem__SaveOptFloatValue_fix

0x1040EF76 5 ; jmp CUIComboBox_fix
0x1040E540 5 ; jmp CUIComboBox__SaveValue_fix
0x1040DF6A 5 ; jmp loc_1040DFA5 ; исправляеем феерический баг движка

0x103D7C60 5 ; jmp CUIOptionsItem__SaveValue_fix - добавляем свои опции, требующие рестарта видео

0x10258840 5; jmp CCustomZone__PlayHitParticles ; Коллбек аномалии на хит живого объекта
0x10258CD1 5; jmp CCustomZone__hit_callback ; Коллбек аномалии на хит неживого объекта

0x102485D4 6; jmp CTorch__Switch_Callback ; Коллбек на переключение фонаря.

0x1006CA0A 5; jmp CALifeStoryRegistry__add_fix ; Исправление вылета при дублировании story id и вывод самого ида в лог.
0x103CADB8 5; jmp CUITalkWnd__Hide_fix ; Исправление невыдачи инфопоршня при закрытии окна разговора.

; no weapons in car (запрет на использование любого оружия в машине)
0x101CF1DF 5
0x1053E810 4

; test lamps
;0x101F3EEE 5
0x102EA535 5 ; jmp CSE_Abstract__script_register_fix
0x10356433 5 ; jmp xrServer__Process_event_reject_fix // затычка на вылет "по xrServer::Process_event_reject ... e_parent && e_entity"
0x102F3663 5 ; jmp CSE_ALifeObject__script_register_fix

; Вызов коллбека после set_dest_level_vertex_id
0x1014369F 5

; =========================================================================================
; ========================= added by Ray Twitty (aka Shadows) =============================
; =========================================================================================
; ====================================== START ============================================
; =========================================================================================
0x103581CE 8 ; phGravity
0x103CC560 2 ; костыль от вылета при юзе предмета из трупа часть 1
0x103CC564 2 ; костыль от вылета при юзе предмета из трупа часть 2
0x103CC56A 5 ; костыль от вылета при юзе предмета из трупа часть 3
0x103F12C5 5 ; jmp cuistatic_fix
0x103BB997 5 ; CUIInventoryWnd__SendEvent_Item_Drop
0x103E0123 5 ; CUICharacterInfo__InitCharacter_fix
0x103E0D97 5 ; CUIWpnParams__Check_fix
0x101C6D69 5 ; CActor__HitMark_callback
0x1007DC5B 5 ; CBaseMonster__HitEntity_callback
0x104BD2DC 1 ; убираем из лога сообщения "!SV:ge_destroy: [%d] not found on server"
; =========================================================================================
; ======================================= END =============================================
; =========================================================================================

; by Real Wolf
0x1008F72D 2 ; Исправление вылета f73e xrGame, возникающем при разрушении в аномалии CPhysicDestroyableObject.
0x101DF1D5 5 ; Коллбек (137 для игрока) на посадку в машину.
0x101DF2AA 5 ; Коллбек (139 для игрока) на выход из машины.
0x101DF506 6 ; Коллбек (138 для игрока) на использование (но не посадку\выход) машины. Проверку на дистанцию делать в скриптах.
0x104A5B84 1 ; Отключение вывода в лог "* Log file has been saved successfully!".
0x104A5BAC 1 ; Отключение вывода в лог "* Log file has been cleaned successfully!".
0x1048C3C4 1 ; Отключение вывода в лог "Destroying local grenade[%d][%d]".

0x10418330 5 ; Коллбек (136 для игрока) на создание объекта CUICellItem. Передается игровой объект. Статик получать в коллбеке
0x103FAD40 5 ; через подмененную функцию CUIFramWindow():GetTitleStatic()
0x103F0D18 5 ; Коллбек (141 для игрока) на получение фокуса объектом CUICellItem. Использование аналогично приведенному выше.
0x103F0D50 5 ; Коллбек (142 для игрока) на потерю фокуса объектом CUICellItem. Использование аналогично приведенному выше.
0x1006A189 5 ; Коллбек (140 для игрока), вызываемый сразу после сохранения игры.

; =========================================================================================

; принудительная очистка пула моделей при завершении игры (полезно, чистит память)
0x101A8C9D 2

0x103EDEE6 5 ; jmp CUICustomItem__Render_fix ; фикс для исправления соотношения сторон CUIStatic 

 

 

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...