|
---|
![]() |
#1 | |
Cabbie
Лейтенант
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.04.2007
Возраст: 35
Сообщения: 715
Замечания: 2
|
![]() В этой статье, я постараюсь изложить все этапы создания своего персонажа на основе зомби. Думаю если вы наприжете мозги и поймете, что по этому туториалу, вы сможете делать монстров, любой формы, размера, со своей физикой, и анимицией.
Для этого нам понадобиться, модель вашего монстра, или не монстра. Вообщем, если вы еще талантливый (хотя бы более менее), то напишите на основе зомби, и чтонибудь стоешее. Я пользуюсь 7 максом, + СП4 сорсе сдк, думаю все, что вам необоходимо. И так, значит у нас имееться модель, выташенная из игры, или вы две недели, или даже больше до усеру сидели в максе как я, вообщим: ![]() Вообщим эту тетку огонь, мы и будем вставлять. Запускаем ваш макс, загружаем в нее вашу модель. Создаем скелет, можете создать свой, любой формы и размера, я буду пользоваться скелетом Аликс, она больше походит под эту девушку. Подгружаем в макс, к модельке ваш скелет. Выбираем модель, и применяем к ней модификатор skin, он находиться во вкладке modify: ![]() То, что у вас должно получиться. Теперь настраиваем Weights, это необходимо, чтобы привязать скелет, к модели. вообщим творческое такое занятие, но с непривычки можете и психовать, что неполучаеться. Так значит, что делаем дальше? Жмем edit envelopes, не увидеть эту кнопку просто невозможно, затем выделяйте любую кость, и спускайтесь в низ свитка меню, вы быбирайте paint weight, и нажимайте еще кнопочку рядом с многоточием, перед вам всплыло меню, где вы можете настроить размер кисточки, и силу нажима. Теперь можете смело раскрашивать свою модель: ![]() Выбираете рядом расположеную кость, и красите ее, когда закончите, а занятие это может растянуться на долго, если вы задроты, которые гоняться за реалестичностью. Когда все будет более менее готово, попробуйте подвигать ваш скелет, у меня вышло так: ![]() Хреновенька неправдали, снова выбираете paint weight, вы уже в нем профи, о мой друг. Так, что дальше, выбираете, нажим какой-нить поменьше 0.3, и убираете, неровности, вообщим думаю вы уже понимаете, что делать: ![]() Результат, как видете уже лутше. Так поправте где можете, и переходим к компиляции модели. Пока без анимации. Параметры компилятора: $cd "C:\Users\Паша\Desktop\Новая папка (9)" - Путь к ваше папке. $modelname "Zombie/Classic.mdl" $model "studio" "Zombie_reference.smd" $poseparameter move_yaw -180.00 180.00 360.00 $cdmaterials "models\" $attachment "headcrab" "ValveBiped.HC_Body_Bone" -4.49 -1.32 -0.02 rotate -0.00 20.25 29.25 $attachment "eyes" "ValveBiped.HC_Body_Bone" 0.00 0.00 0.00 rotate -0.00 0.00 -50.00 $attachment "head" "ValveBiped.HC_Body_Bone" 0.00 0.00 0.00 rotate -0.00 0.00 -50.00 $attachment "chest" "ValveBiped.Bip01_Spine4" -3.00 6.00 0.00 rotate 0.00 60.00 90.00 $attachment "maw" "ValveBiped.Bip01_Spine2" -0.00 8.00 0.00 rotate 0.00 90.00 90.00 $attachment "Blood_Left" "ValveBiped.Bip01_L_Finger2" -0.00 -0.00 0.00 rotate -0.00 -0.00 0.00 $attachment "Blood_Right" "ValveBiped.Bip01_R_Finger2" -0.00 -0.00 0.00 rotate 0.00 -0.00 0.00 $surfaceprop "zombieflesh" $eyeposition -0.000 0.000 64.000 $illumposition 4,282 2,304 67,973 $sequence Idle01 "Idle01" loop ACT_IDLE 1 fps 30.00 $sequence walk "a_WalkS" loop ACT_WALK 1 fps 24.00 { { event AE_ZOMBIE_STEP_LEFT 5 } { event AE_ZOMBIE_STEP_RIGHT 15 } { event AE_ZOMBIE_SCUFF_LEFT 20 } { event AE_ZOMBIE_STEP_LEFT 28 } { event AE_ZOMBIE_STEP_RIGHT 38 } { event AE_ZOMBIE_SCUFF_LEFT 40 } } $sequence FireWalk "FireWalk" loop ACT_WALK_ON_FIRE 1 fps 30.00 $sequence FireIdle "FireIdle" loop ACT_IDLE_ON_FIRE 1 fps 30.00 $sequence attackA "attackA" ACT_MELEE_ATTACK1 2 fps 30.00 { { event AE_ZOMBIE_ATTACK_SCREAM 5 } { event AE_ZOMBIE_ATTACK_RIGHT 25 } } $sequence attackB "attackB" ACT_MELEE_ATTACK1 2 fps 30.00 { { event AE_ZOMBIE_ATTACK_SCREAM 5 } { event AE_ZOMBIE_ATTACK_RIGHT 25 } } $sequence attackC "attackC" ACT_MELEE_ATTACK1 2 fps 30.00 { { event AE_ZOMBIE_ATTACK_SCREAM 5 } { event AE_ZOMBIE_ATTACK_LEFT 25 } } $sequence attackD "attackD" ACT_MELEE_ATTACK1 2 fps 30.00 { { event AE_ZOMBIE_ATTACK_SCREAM 5 } { event AE_ZOMBIE_ATTACK_LEFT 25 } } $sequence attackE "attackE" ACT_MELEE_ATTACK1 2 fps 30.00 { { event AE_ZOMBIE_ATTACK_SCREAM 5 } { event AE_ZOMBIE_ATTACK_BOTH 25 } } $sequence attackF "attackF" ACT_MELEE_ATTACK1 2 fps 30.00 { { event AE_ZOMBIE_ATTACK_SCREAM 5 } { event AE_ZOMBIE_ATTACK_BOTH 25 } } $sequence swatleftmid "swatleftmid" ACT_ZOM_SWATLEFTMID 1 fps 30.00 { { event AE_ZOMBIE_STARTSWAT 1 } { event AE_ZOMBIE_SWATITEM 9 } } $sequence swatrightmid "swatrightmid" ACT_ZOM_SWATRIGHTMID 1 fps 30.00 { { event AE_ZOMBIE_STARTSWAT 1 } { event AE_ZOMBIE_SWATITEM 9 } } $sequence swatleftlow "swatleftlow" ACT_ZOM_SWATLEFTLOW 1 fps 30.00 { { event AE_ZOMBIE_STARTSWAT 1 } { event AE_ZOMBIE_SWATITEM 15 } } $sequence swatrightlow "swatrightlow" ACT_ZOM_SWATRIGHTLOW 1 fps 30.00 { { event AE_ZOMBIE_STARTSWAT 1 } { event AE_ZOMBIE_SWATITEM 18 } } $sequence releasecrab "releasecrab" ACT_ZOM_RELEASECRAB 1 fps 30.00 $sequence physflinch1 "physflinch1" ACT_FLINCH_PHYSICS 1 fps 30.00 $sequence physflinch2 "physflinch2" ACT_FLINCH_PHYSICS 1 fps 30.00 $sequence physflinch3 "physflinch3" ACT_FLINCH_PHYSICS 1 fps 30.00 $sequence smashfall64 "smashfall64" fps 30.00 { { event AE_NPC_BODYDROP_HEAVY 10 } { event AE_NPC_BODYDROP_HEAVY 27 } { event AE_NPC_BODYDROP_HEAVY 37 } { event AE_ZOMBIE_GET_UP 75 } } $sequence slump_a "slump_a" loop fps 30.00 $sequence slumprise_a "slumprise_a" fps 30.00 { { event AE_NPC_LEFTFOOT 15 } { event AE_NPC_RIGHTFOOT 50 } { event AE_ZOMBIE_GET_UP 80 } } $sequence slumprise_a_attack "slumprise_a_attack" fps 30.00 { { event AE_NPC_LEFTFOOT 15 } { event AE_NPC_RIGHTFOOT 50 } { event AE_ZOMBIE_GET_UP 80 } { event AE_ZOMBIE_ATTACK_SCREAM 16 } { event AE_ZOMBIE_ATTACK_RIGHT 36 } } $sequence slumprise_a2 "slumprise_a2" fps 30.00 { { event AE_NPC_RIGHTFOOT 16 } { event AE_NPC_RIGHTFOOT 22 } { event AE_ZOMBIE_GET_UP 24 } } $sequence slump_b "slump_b" loop fps 30.00 $sequence slumprise_b "slumprise_b" fps 30.00 { { event AE_NPC_LEFTFOOT 13 } { event AE_NPC_RIGHTFOOT 27 } { event AE_ZOMBIE_GET_UP 57 } } $sequence Breakthrough "Breakthrough" fps 30.00 $sequence canal5await "canal5await" fps 30.00 $sequence canal5aattack "canal5aattack" fps 30.00 $sequence Tantrum "Tantrum" loop ACT_ZOMBIE_TANTRUM 1 fps 30.00 $sequence WallPound "WallPound" loop ACT_ZOMBIE_WALLPOUND 1 fps 30.00 { { event AE_ZOMBIE_POUND 14 } { event AE_ZOMBIE_POUND 35 } } $sequence ragdoll "ragdoll" ACT_DIERAGDOLL 1 fps 30.00 $ikchain rhand ValveBiped.Bip01_R_Hand knee 0.640 0.769 0.000 $ikchain lhand ValveBiped.Bip01_L_Hand knee 0.607 0.795 0.000 $ikchain rfoot ValveBiped.Bip01_R_Foot knee 0.545 -0.838 0.000 $ikchain lfoot ValveBiped.Bip01_L_Foot knee 0.518 -0.855 -0.000 $collisionjoints "phymodel.smd" { $mass 60.0 $inertia 5.00 $damping 0.01 $rotdamping 1.50 $rootbone "valvebiped.bip01_pelvis" $jointmerge "ValveBiped.Bip01_Pelvis" "ValveBiped.Bip01_Spine1" $jointconstrain "valvebiped.bip01_spine2" x limit -48.00 48.00 0.20 $jointconstrain "valvebiped.bip01_spine2" y limit -26.00 26.00 0.20 $jointconstrain "valvebiped.bip01_spine2" z limit -39.00 68.00 0.20 $jointconstrain "valvebiped.bip01_r_upperarm" x limit -64.00 64.00 0.20 $jointconstrain "valvebiped.bip01_r_upperarm" y limit -26.00 122.00 0.20 $jointconstrain "valvebiped.bip01_r_upperarm" z limit -122.00 50.00 0.20 $jointconstrain "valvebiped.bip01_l_upperarm" x limit -64.00 64.00 0.20 $jointconstrain "valvebiped.bip01_l_upperarm" y limit -122.00 28.00 0.20 $jointconstrain "valvebiped.bip01_l_upperarm" z limit -100.00 59.00 0.20 $jointconstrain "valvebiped.bip01_l_forearm" x limit 0.00 0.00 0.20 $jointconstrain "valvebiped.bip01_l_forearm" y limit 0.00 0.00 0.00 $jointconstrain "valvebiped.bip01_l_forearm" z limit -140.00 0.00 0.20 $jointconstrain "valvebiped.bip01_l_hand" x limit -68.00 68.00 0.20 $jointconstrain "valvebiped.bip01_l_hand" y limit -37.00 41.00 0.20 $jointconstrain "valvebiped.bip01_l_hand" z limit -44.00 70.00 0.20 $jointconstrain "valvebiped.bip01_r_forearm" x limit 0.00 0.00 0.00 $jointconstrain "valvebiped.bip01_r_forearm" y limit 0.00 0.00 0.00 $jointconstrain "valvebiped.bip01_r_forearm" z limit -149.00 1.00 0.20 $jointconstrain "valvebiped.bip01_r_hand" x limit -75.00 93.00 0.20 $jointconstrain "valvebiped.bip01_r_hand" y limit -37.00 32.00 0.20 $jointconstrain "valvebiped.bip01_r_hand" z limit -48.00 66.00 0.20 $jointconstrain "valvebiped.bip01_r_thigh" x limit -50.00 48.00 0.20 $jointconstrain "valvebiped.bip01_r_thigh" y limit -19.00 70.00 0.20 $jointconstrain "valvebiped.bip01_r_thigh" z limit -79.00 73.00 0.20 $jointconstrain "valvebiped.bip01_r_calf" x limit 0.00 0.00 0.00 $jointconstrain "valvebiped.bip01_r_calf" y limit 0.00 0.00 0.00 $jointconstrain "valvebiped.bip01_r_calf" z limit 0.00 133.00 0.20 $jointconstrain "valvebiped.bip01_head1" x limit -61.00 61.00 0.20 $jointconstrain "valvebiped.bip01_head1" y limit -44.00 44.00 0.20 $jointconstrain "valvebiped.bip01_head1" z limit -32.00 50.00 0.20 $jointconstrain "valvebiped.bip01_l_thigh" x limit -39.00 39.00 0.20 $jointconstrain "valvebiped.bip01_l_thigh" y limit -59.00 23.00 0.20 $jointconstrain "valvebiped.bip01_l_thigh" z limit -84.00 66.00 0.20 $jointconstrain "valvebiped.bip01_l_calf" x limit 0.00 0.00 0.00 $jointconstrain "valvebiped.bip01_l_calf" y limit 0.00 0.00 0.00 $jointconstrain "valvebiped.bip01_l_calf" z limit 0.00 131.00 0.20 $jointconstrain "valvebiped.bip01_l_foot" x limit -23.00 23.00 0.20 $jointconstrain "valvebiped.bip01_l_foot" y limit -28.00 28.00 0.20 $jointconstrain "valvebiped.bip01_l_foot" z limit -46.00 46.00 0.20 $jointconstrain "valvebiped.bip01_r_foot" x limit -23.00 23.00 0.20 $jointconstrain "valvebiped.bip01_r_foot" y limit -23.00 23.00 0.20 $jointconstrain "valvebiped.bip01_r_foot" z limit -35.00 57.00 0.20 } Так, помните, что настройки рагдолла, относиться к физической модели аликс! Поэтому перенесите, пфизмодел.смд, и раггдолл.смд от аликс. Если у вас свой, то об этом поже. ![]() Вас ждет примерно такой результат. Так. В этой статье, я распишу еще 2 пункта. Создание idle, и walk, анимации, чтобы зомби ходил. Чтобы руки у нее не скручивало в бараний рог. Про регдол, и физику расскажу во второй части. И так, ворачиваемься в 3d max, у нас есть персонаж с настроеным скелетом, и я начинаю с того, что выбираю idle позу. ![]() Типа такого, так теперь внизу видем линию, с номерами кадров, установите для idle 57 кадров. Сделать это можно в Time Configuration. Выбираете кость, на 0 кадров, нажимаете, Auto Key, и придаете движение, ваше персонажу. Выбираете 0 кадр, перемешайте ползунок и создавайте, ключевые кадры, например 0 - 15 - 30 - 57 и на 57 зацыкливаете их с первым. И получаем анимацию. ![]() Вот так выглядит моя новая анимация idle, она недоделана, вообщим допишу зафтра. Зафтра научу делать ходьбу: ![]() К сожалению тему проверили поздно. Так, что придеться окончания подождать до зафтра. |
|
Последний раз редактировалось Cabbie, 11.04.2010 в 15:41. |
||
![]() |
![]() |
![]() |
#2 | |
Javelines
The Milky Way
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 10.03.2006
Адрес: Сибирь, Красноярск
Возраст: 32
Сообщения: 2,463
|
![]() Я не совсем понял, это ты сделал урок, как сделать своего зомби с когтями и кровью?
|
|
![]() |
![]() |
![]() |
#3 | |
Cabbie
Лейтенант
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.04.2007
Возраст: 35
Сообщения: 715
Замечания: 2
|
![]() Не, это недописанный урок. Да как сделать своего зомби. Со всей анимацией. И физикой. Вообщим если врубиться. То поймешь сразу как сделать своего нпс, можно сделать динозавров, или собак. Да что угодно. Просто пока недописанно, но думаю понятно или нет?. Он делаеться НА ОСНОВЕ, классического зомби!
|
|
![]() |
![]() |
![]() |
#4 | |
Gaia
Чёрный вертолёт
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 04.08.2008
Возраст: 37
Сообщения: 4,584
Замечания: 5
|
![]() Хаха! Представляю, голая баба идёт и орёт голосом зомби из хл2
![]() Жоский хоррор ![]() А тутор полезный, мб и мне когданить пригодится ![]() |
|
![]() |
![]() |
![]() |
#5 | |
MqM
Гость
Сообщения: n/a
|
![]() 2 Nucleo:
особенно когда ето толпа таких зомбарей))) или ето банда маниячок...от которых нужо убежать))) --- а урок полезный очень...спс! |
|
![]() |
![]() |
#6 | |
Лорд Канистра
ПМС КСМ
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.05.2006
Адрес: 0x00000034 Прерывание: 0x00000015
Возраст: 33
Сообщения: 4,554
Замечания: 14
|
![]() Это называется сделать не персонажа на какой-то там основе зомби, а модель.
Тред надо закрыть за детцкую порнографию. Пусть и замазанную. |
|
![]() |
![]() |
![]() |
#7 | |
Cabbie
Лейтенант
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.04.2007
Возраст: 35
Сообщения: 715
Замечания: 2
|
![]() ![]() ![]() А первое предложение понял, что сам написал? Тутор не дописан. Если ты кодить монстров не умеешь. То конечно модель. Зомби это модель исходный код, и звуки. Расскарыл ли я тебе глаза или нет. Мне дописывать? Самое ведь интересное как научить зомби ходить! |
|
![]() |
![]() |
![]() |
#8 | |
Anikes
Гость
Сообщения: n/a
|
![]() Спасибо! Классный тутор!
![]() |
|
![]() |
![]() |
#9 | |
Cabbie
Лейтенант
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.04.2007
Возраст: 35
Сообщения: 715
Замечания: 2
|
![]() И так продолжение! Все кто пыталься делать монстра, на основе зомби. Сталкивалься с тем, что он не мог ходить! После перкомпиляции. Сейчас я научу вас делать это. Так после того, как вы сделали idle-анимацию, вам необходимо сделать walk-анимацию. Ну чтобы он ходил. Она имеет 47 кадров. Я пойду её как раз и сделаю. Не нужно делать анимацию, человека на месте. Нужно сделать анимацию реальных шагов, в 3х мерном пространстве. Когда в модель вьювере смотрим на модель она вроде бы как все время идет на одном месте, и только ногами передвигает, этого как раз делать не нужно. А наоборот. Вообщем по стандартной максовской сетке, я делаю каждый шаг, левой и правой ноги, 2 клетки, вот вам наглядный рисунок без голых баб: Анимация зомби А для анимации, можно воспользоваться этим изображение, хорошо отображает процесс ходьбы. Ходьба Когда создали анимацию, и экспортировали в a_walkS.smd, и замените в своей QC, который был выше, строчку C: $sequence walk2 "a_WalkS" loop ACT_WALK 1 fps 24.00 { На: $sequence walk2 "a_WalkS" loop LX LY ACT_WALK 1 fps 24.00 { Результат: ![]() Правда, на скрина она немного застряла хД. В проеме. Но ходит. Вообщим, чтобы ваша анимация работала, а там еще есть когда зомби горит ставьте LX LY ну как было выше: $sequence walk2 "a_WalkS" loop LX LY ACT_WALK 1 fps 24.00 { Это чтобы анимация, была связана с моделью. Дальше обьяснять про анимацию смысла нет. Там есть помойму 4-6 ударов. Можете анимировать удары ногой, рукой, или даже головой. Ходьба зомби который горит, который кидает что-то. И стены разрушает. Вообщим это только анимировать сложного нечего нет. |
|
![]() |
![]() |
![]() |
#10 | |
Javelines
The Milky Way
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 10.03.2006
Адрес: Сибирь, Красноярск
Возраст: 32
Сообщения: 2,463
|
![]() 2 Cabbie: в фотошопе есть фильтр "Pixelate -> Mosaic". Вот замазывай им тела пожалуйста.
|
|
![]() |
![]() |
![]() |
#11 | |
sake2008
Ня-ня ниа хао ня ^_^
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 14.04.2009
Адрес: Королёв
Возраст: 31
Сообщения: 774
Замечания: 1
|
![]() почему тёлка в середине летает? о.О
|
|
![]() |
![]() |
![]() |
#12 | |
Psycho-A
![]() ![]() ![]() ![]() ![]()
Регистрация: 29.08.2009
Возраст: 37
Сообщения: 3,967
|
![]() 2 Cabbie:
Молодец, хороший тутор! В будущем по-любому пригодится. |
|
![]() |
![]() |
![]() |
#13 | |
DNK
=)
![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.07.2009
Адрес: Тобольск - Ебург
Возраст: 36
Сообщения: 611
|
![]() кто может выложить анимации от зомбиков и людей?
|
|
![]() |
![]() |
![]() |
#14 | |
Cabbie
Лейтенант
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.04.2007
Возраст: 35
Сообщения: 715
Замечания: 2
|
![]() В каком виде?
У зомби, при декомпиляции, анимации портятся. У людей, они храняться в папке humans: female_animations.mdl female_gestures.mdl Postures и так далее. В smd, анимаций нет. Есть в исходниках sdk, но там не все. Только основные. Можно сделать анимации для зомби, просто сделав $unclude female_animations.mdl or male_animations.mdl, плюсь доанимировать что недостает. Удары руками, и ещё парочку ![]() Ещё стандартные зомбаковские можно использовать в новой модели, там тоже через $unclude, саму модель classic_zombie.mdl. |
|
![]() |
![]() |
![]() |
#15 | |
DNK
=)
![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.07.2009
Адрес: Тобольск - Ебург
Возраст: 36
Сообщения: 611
|
![]() хотелось в smd.
и докомптить мдлки с анимацией не выходит... а каким образом использовать? "$unclude female_animations.mdl or male_animations.mdl," как то не хочется создавать заново анимацию ко всему... или в крайнем случае, просто посмотреть как что выглядит и что есть что... или тупо декомпить человека и обратно компить но уже с другим путем и названием, во как это сделать? а то там некая ошибка с "mdldecompiler_expressions.vta" при компиляции. |
|
![]() |
![]() |
![]() |
#16 | |
Cabbie
Лейтенант
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.04.2007
Возраст: 35
Сообщения: 715
Замечания: 2
|
![]() Ну у тебя есть QC, в нем пишешь, $include female_animations.mdl (там название найди точное, в папке humans, для female_animations.mdl). Но все равно, для зомби ещё нужно сделать самому пару анимаций, удары например. Если ты емеешь ввиду зомби.
Оффтоп Удали эту строчку, и строчку ниже, и всё что с ней связано. И тогда скомпилируеться. Но лицевой анимации уже не будет. Незнаю, какие парметры нужны правельные для лицевой ![]() |
|
![]() |
![]() |
![]() |
#17 | |
DNK
=)
![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.07.2009
Адрес: Тобольск - Ебург
Возраст: 36
Сообщения: 611
|
![]() Значит так.
Начал делать анимацию ходьбы для зомби, и как раз столкнулся с такой проблемой! https://developer.valvesoftware.com...e:Root_move.jpg Вроде я сделал так, но в hlmv зомбик идет в даль по земле, а ведь должно быть так что он стоит и передвигает ножками а земля под ним идет! ведь так? а у меня не так! а в игре тупо стоит. Только я не как на скрине "developer.valvesoftware.com" создав два ключа, вначале и в конце, у меня клюки на каждом кадре, чтоб ноги совпадали а не катался по земле крутя ногами. |
|
![]() |
![]() |