Artos 99 Опубликовано 17 Ноября 2012 (изменено) independent, совершенно непонятно как и каким ты пользовался поиском, т.к. только на этом форуме ответ на основной вопрос (порча оружия выпадающего с NPC) давался десятки раз. Неужели тебе не попадались(?) упоминания про death_manager.script, в котором сами разработчики игры оставили комментарии к соотв.строкам кода: "--' Тут надо уменьшить кондишн оружия". В ЗП только чуток изменено и "поломку" для всего оружия, находящегося у НПС, выполняет вынесенная отдельная функция с названием говорящим само за себя: 'set_weapon_drop_condition'. Изменив или закомментировав эту функцию можно добиться, что все оружие у НПС будет или тем, каким оно ему досталось или "как от ремонтника". Желать же: "всё оружие в игре без исключения было на 100% исправно" - чистой воды читерство, ИМХО, да и врядли тебе по силам отследить именно 100%, т.к. и оружие порою заведомо спавнится "поломаным", и в игре хиты, полученные объектами/предметами все же движек "считает", а не скрипты. Т.о. любое попадание пули/дроби/осколка/... в оружие - приводит к его порче. В общем, хотя я и против тупого читерства, но ... все же дам совет, дабы не плодить в топике пустой флуд: - по "выпадающему" оружию - ковыряй death_manager.script - по оружию, которое "получает актор" - отслеживай коллбэк актора на получение предметов в свой инвентарь (on_item_take) и ... ремонтируй его "налету" своим скриптом, точнее простенькой строкою. Изменено 17 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 17 Ноября 2012 (изменено) И, кстати, раз строка эта настолько проста, то не проще было бы её написать? Тогда и мне бы не пришлось писать столь пространное сообщение в ответ... Нередко "простота - хуже воровства"... Мы в разделе "Школа моддингу" и цель раздела - помочь самим начинающим модмейкерам научиться делать то, что им захотелось, а не делать за них и/или давать им готовое (нахаляву)! Сам же сетуешь, на попытки поискать, и именно твои недостатки (отсутствие собственного опыта) в составлении запроса и служат тебе плохую службу, "украдывая" и время и недополученные знания/опыт. Тупой копипаст "даденого" хорош только в какой-то одной конкретной ситуации, и хотя экономит порою время, но это только в сию минуту и тормозит работу своею головою, развращая на получение халявы. Через пару шагов или в чуть измененной ситуации - тебе потребуется опять писанина в форум и вопрошалки по простеньким вопросам. Однако, все меньше тех, кто может и хочет читать и давать ответы на подобные открытия америк... Далее не собираюсь продолжать флуд и тем более - давать готовенькое. Не понимаешь в скриптах - все для возможности их начать понимать имеется (кроме твоих желаний). Хочешь только цифирьками в конфигах моддить - или приземлись в своих пожелалках, или жди тех, кто за тебя их тебе сделает. К моддингу, и тем более к обучению, это уже не имеет никакого отношения. ИМХО. P.S. Было бы очень неплохо, если бы ты убрал свои "изыскания" под спойлер! Так и модератору меньше мороки и другим не будет примера как НЕ нужно делать (хотя и твоя "цель" достигнута). Изменено 17 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Ноября 2012 (изменено) serafim-kr, а может будем придерживатиься правил и рекомендаций, т.е. вначале читать тему, а потом мусорить писаниной в топике? Этого тебе #4546 мало? Сталкер Лом, а почему бы тебе не взгянуть в m_stalker.ltx на другие аналогичны [stalker_terrain] секции(?) к строкам которых разработчики дали краткие комментарии. К сожалению, сейчас уже не помню и по-битовую и и по-байтовую трактовку этого параметра, и не помню где почитать... Если найду - дам знать, но ... не стОит надеяться и продолжать неделями ломать себе голову, большинство (если не все) над этим не заморачиваются. ;-) Изменено 23 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Ноября 2012 (изменено) serafim-kr, правила хорошего тона, в первую очередь, подразумевают не требование для себя особого отношения, а соблюдение общепринятых. Если тебе не по нраву обращение на "ты" - почитай и правила и не путай, 'ты'-кание на форумах именно норма с незапямятных времен, а излишние "расшаркивания" в технических форумах/топиках - как раз признак моветона. Если же тебе не нравится, что тебя "носом ткнули" по сути в последнюю страницу, и тебе всего то требовалось поднять глаза и прочесть свой же вопрос и ответ на него - то и в шапке топика отражено и многим не нравится ковыряться и листать постоянно повторяющиеся подобные "мусорные" вопросы от тех, кто не утруждает себя простейшим поиском. Т.о. хороший тон - это и не мусорить там, где сам же ищешь информацию и ответы. И хотя сам не отличаюсь особой грамотностью в своих постах, и нередко допускаю описки иль иные искажения, но ... удивляют такие слова о "правилах хорошего тона", написанные с вопиющей безграмотностью. Или это не входит в правила хорошего тона? , И моя реплика была к посту#4561, в котором только оффтопик и повтор уже заданного и имеющего ответ (не от меня), и о каком "моем примере", оказавшемся не по зубам - не гадаю даже. (дальнейший оффтопик, по правилам хорошего тона, если таковой будет, просьба направлять в ЛС или модератору, чего требуют и правила форума и хороший тон) Изменено 23 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Ноября 2012 (изменено) Если модмейкер (иль ковырялкин) не понимает простую и однозначную фразу: ... добавь в секцию [wpn_knife] строку splash1_hits_count (походу с числовым значением) - ему можно только порекомендовать или не заниматься "ковыряниями" файлов или почитать азы моддинга и только потом начинать "понимать" что же к чему. Ну а под спойлером - как раз о "грамотности" твоих постов, чего нет и о чем также говорится в правилах форума, без каких-либо скидок на телефоны, плохие клавы, модемный интернет и прочие оправдалки... (придешь домой и за компом почитаешь) Изменено 23 Ноября 2012 пользователем Artos 1 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 24 Ноября 2012 (изменено) serafim-kr, Почитай правила форума и прекрати, в конце концов, путать форум с чатом иль аськой. Тебя ясно пояснили и о том, что в теме не оффтопят, не "мусорят".и тем более не занимаются демагогией. Как видно, тебе не понятно, что модератор, уже подчищавший твой флуд, не стал тебе делать замечание иль наказывать... и ты продолжаешь и флудить и разводить демагогию. Более не собираюсь продолжать сей оффтопик, а только напомню, что вероятность получить ответ на свой вопрос зависит от самого вопроса. На банальные, тупые, безграмотные и бессмысленные вопросы, как правило, никто не отвечает, а только модератор дает им соответствующую оценку. Если ты и этого не понимаешь - то предполагаю, что твой "интерес" к моддингу довольно быстро угаснет. (просьба: более ко мне не обращать свои посты) (Предложение модератору, почистить все на этой странице, кроме ответа в #4562 для Сталкер Лом'а.) Изменено 24 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 24 Ноября 2012 немного поправлю/дополню: ... первая ошибка совсем не связана с созданием группировок. ... Учитывая, что и User_X.A.R26 и serafim-kr имеют данную ошибку (связанную с wpn_knife) именно при создании группировок - ошибка может иметь связь. Они, очевидно, при создании профиля неписей для своих 'новых' группировок, прописывают им спавн оружия, в том числе и ножей - вот и всплывает эта ошибка, связанная с устаревшим ножевым конфигом до того, как актор купит иль найдет себе нож. Примечание: Создавая группировку, не следует пихать в спавн членам группировок все что взбредет в голову... НПС не используют ножи в оригинальной игре (ТЧ/ЧН/ЗП). "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 8 Декабря 2012 invulnerable, нет и не может быть конкретного ответа на вопрос о бессмертии, тем более ты даже не удосужился сформулировать, что же ты под "бессмертием" понимаешь. Как минимум "бессмертие" подразделяется на онлайновое и оффлайновое. В первом случае (онлайн), тебе уже достаточно дали информации, и если тебе непонятно "как все это работает", то вряд ли кто-то разжует именно для тебя ту или иную частность. Про "invulnerable" нужно смотреть не в xr_logic.script, а в stalker_generic.script (о чем сам бы мог догатаьься, воспользовавшись простейшим поиском по кодам). Если ты своих "статистов" не можешь засунуть под нужную логику - ну так и не заморачивайся, поднаберись пока опыта в другом. Чтобы НПС не убивали в онлайне - то, например, сунь нос в motivator_binder:hit_callback(...), где даже прокомментировано разрабами: "-- Если пришел смертельный хит, с некоторой вероятностью делаем чувака раненым.". Вот и включай думалку и используй... И, повторяю, тебе никто не даст готовый способ обессмертить "на все случаи" - думай, выбирай и комбинируй из доступного сам. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 8 Декабря 2012 Не собираюсь разводить очередной базар на тему "Как же помочь нубу, который заведомо хочет таковым и оставаться", но не удержусь от пары реплик "на 40 страниц" для подобных тебе, т.е. тех, кто во всем винит не себя а других, "не желающих помогать убогим и сирым": Каждый хорош в своём деле, которому учился и достиг там определённых результатов. И я больше чем уверен, что в той сфере, где специалистом являюсь я, вы не смыслите ровным счётом ничего. Общение между людьми подразумевает обмен опытом и знаниями, взаимопомощь в сложных ситуациях. Человек учится всю жизнь и каждый раз тому, что ему или требуется или чему ему самому же по-той или иной причине захотелось. Никто не неволит тебя заниматься моддингом игры и это не из разряда необходимых и обязательных для каждого... Захотелось - ну так и будь готов к тому, что придется засесть в очередной раз за "азбуки" и поучиться, а не ждать готового решения в качестве гуманитарной помощи. По многим вопросам невозможно дать готовый и/или конкретный вопрос, т.к. вариаций похотелок великое множество и никто не знает что же тебе взрбело в голову. Если ты считаешь, что твое "более конкретно сформулированное" достаточно для однозначного пояснения тебе что и как нужно сдалать - то ты глубоко заблуждаешься и простора для погадалок более чем на десяток страниц разборок твоего вопроса (чем конечно же никто не будет заниматься). Общение в формате форума действительно подразумевает взаимопомощь, однако ты пока только в свою сторону ждешь помощи (в виде готовых кодов) и даже свои мозги не подключаешь. Тебе дали уже достаточно помощи(!), но ты ее или не понимаешь или не способен понять. Опускаться в очередной раз до разжевывания именно персонально тебе никто не будет, тем более без наличия всех исходных данных. Статей по логике, материалов по функциям и методам, по гулагам и работам и т.п. более чем предостаточно. И мне не понятно, почему вместо помощи я получаю неприкрытую агрессию и отказ... Или я слепой или у тебя очень интересная особенность приписывать другим свои мысли... Покажи хоть одно агрессивное слово иль отказ! Пока видно только попытки других дать тебе подсказки по сути для твоего же вопроса и твои "не понимаю". Ну а заведомо подразумевая "и тебе на 40 страниц распишут, какой ты ****" - чего же ты задаешь вопрос именно на русском форуме? ... (ну и немного по существу, может все же сгодиться) 1. Создав свою группу "выжившего Монолита", тебе требуется как-то ее пометить, точнее членов группировки. Как и чем метить - разбирайся сам, вариаций десятки. Метки потребуются для того, чтобы именно для твоей группы выполнять то или иное. 2. Учитывая все вышесказанное про "invulnerable" - можно сделать вывод, что или тебе это не подойдет или потребуется перелопатить кучку скриптов/схем, чтобы получить желаемое. Т.о. об этом можно забыть. 3. Сделать так, "чтобы все персонажи этой группы не зависимо от того где находится Actor и что он делает, не пропадали и можно было встретить их в любой точке локации Юпитер живыми и здоровыми." - невозможно, т.к. пожелалка высказана и слишком общими словами и бессмысленная. Алгоритм, воплощенный в скрипты не понимает общностей, присущих человеческому языку... - не могут все члены группировки находиться в точке, а могут быть в районе какой-то точки. Ну а радиус - только тебе ведом. - не может актор встретить в любой точке, а только в той где в текущее время находится группа. - непременным условием встречи актора с группой является радиус алайфа, т.о. если группа за пределами алайфа - о встрече можно только помечтать (ну если только по КПК виртуально связаться). Если же принудительно держать всегда в онлайне - то все перипетии Зоны в любое время будут воздействовать на группу. - насчет бессмертия - понятна пожелалка, но вот здоровыми - хм, а чем вообще должны являться твои "выжившие"? Деревьями иль ящиками? Если это группа сталкеров (людей), из той или иной группировки, то все в Зоне подчиняется уже имеющимся законам. Т.е. и монстры и враги должны будут нападать, выброс иль иное - убивать иль вредить здоровью. ... можно далее до бесконечности говорить о нюансах и взаимоисключающих моментах, которые только ты можешь или игнорировать или принимать во внимание. Т.о. почитай ка про логику, про взаимоотношения и взаимодействия объектов в Зоне и т.д., и только тогда сможешь решить что же выполнимо и чего же тебе нужно. Ну и наконец, если тебе подсказка про "смертельный хит" ничего не говорит, то врядли тебе что-то конкретное стОит ожидать на этом форуме. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 9 Декабря 2012 (изменено) stalker_343, прежде чем задавать подобный вопрос в форум, следует проверить на ошибки свои правки/скрипты любым удобным "Lua Syntax Checker"-ом. Изменено 9 Декабря 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 14 Декабря 2012 Shredder, мало "знать способ", не менее важно уметь его применять... Нет "другого" штатного способа для твоей задумки. Тут если только дорабатывать движок или использовать функционал кейлоггера, который может отлавливать клики ПКМ. Вот тогда по каждому такому клику можешь проверять изменение fov и принимать решение. Ну а без клик-мониторинга ПКМ, тебе просто напросто чтобы не запаздывало, требуется исключить это "запаздывание", т.е. делать проверки с достаточной периодичностью, чтобы не заметно было запаздывание. Учитывая, что апдейты актора следуют в среднем каждые ~20ms - запаздывание практически можно свести к незаметности. Но, конечно, высокая частота проверок ведет к расходованию ресурсов, так что важна максимальная оптимизация алгоритма и кода проверок. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 15 Декабря 2012 (изменено) Мною упомянут 'функционал' кейлоггера... , т.е. то, что отслеживает нажатия клавиш на клавиатуре/мыши и дает об этом информацию. Это может быть реализовано самыми различными способами, как внешними приблудами (вспомним о наработке by kstn or alpet), так и доработкой/расширением библиотек движка (например LuaFix). Ну и любая "похотелка" требует жертв - хочешь без запаздывания - отслеживай без запаздывания... ;-) Изменено 15 Декабря 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 22 Декабря 2012 stalker_343, вроде как demo_record никто не отменял. А вообще, если ты подключил новую локацию, то неужели без SDK собираешься ее обустраивать/заселять? Ну а в SDK получить координаты и вопроса не возникает. Ну и напоследок, ежели у тебя ГГ появляется при спавне "под локацией" - что мешает скорректировать координату Y, чтобы спавнился повыше, т,е. "над"? "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Декабря 2012 (изменено) stalker_343, советую вначале всегда включать свою думалку и искать решение, а не ожидать что кто-то подскажет. 1. Научись читать и по возможности понимать то, что тебе пишется в логе, особенно по ошибкам. Тебе явно намекается на ошибку связанную с level_graph и в частности про несоответствие каких-то параметров/значений (в данном случае - заголовка объекта твоей карты) текущей версии движка. Делай выводы - т.е. что-то недопортировал именно под CoP. 2. Выбирай для вопросов соответствующую тему, не забывая предоставлять свои материалы/изменения. На тему карт и их подключений имеются соответствующие топики. Изменено 23 Декабря 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Декабря 2012 (изменено) Сталкер Лом, в подобных вопросах, которые касаются модифицированных скриптов, чтобы другие не гадали - приводят хотя бы куски "своего" кода со строками, на которые ссылается лог ошибки. У тебя явно не оригинальный скрипт state_mgr.script задействован. Ну и советую включить (расскомментировать и активировать printf) отображение в логе технологических строк для вывода в лог в функции state_manager:set_state(...). Так ты и остальные смогут понять на что конкретно ругается движок, на неизвестный state_name, иль отсутствие параметра special_danger_move, или иное... Изменено 23 Декабря 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 24 Декабря 2012 (изменено) Сталкер Лом, к чему этот "мусор"? Ведь было написано: "У тебя явно не оригинальный скрипт state_mgr.script задействован", и поэтому невозможно понять к чему конкретно относится строка указанная в логе ошибки. Именно строки из этого скрипта (state_mgr.script:502) ты так и не показал. Посоветую еще раз: 1. Включи отображение в логе технологических строк для вывода в лог-файл (расскомментируй и активируй printf). 2. Полученный лог-файл с ошибкой и сами скрипты state_mgr.script и state_lib.script заархивируй и выложи на шару, а в топик дай ссылку. Вот тогда можно что-то будет понять поконкретнее и советовать дальше. Изменено 24 Декабря 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 25 Декабря 2012 (изменено) Сталкер Лом, мог бы сам найти в форуме пост: "комплект функций для вывода в лог" (и тут поновее). Проблемы многих ковыряющихся в кодах игры в том, что делают это вслепую, т.е. не знают и/или не утруждают себя выводом в лог-файл полезной для разработки или отладки информации, и предпочитают заниматься постоянными погадалками. На твоем примере: 1. Разработчики GSC, дабы не иметь от игроков причитаний по поводу прерываний игры - закомментировали аварийный вывод в лог информации. Ты совершенно правильно восстановил этот вывод ( error_log(reason) ), что и дало тебе в лог именно то, что и задумано было разработчиками, т.е. при ошибке в аргументе наименования состояния (иль др.) - была вызвана функция прерывания (abort) и тебе в лог была дана информация, которая и помогла найти ошибку (binicular). Т.о. если есть желание или необходимость выловить ошибки в скриптах/конфигах - НЕ следует комментировать функцию abort! Именно она помогает вылавливать заведомые ошибки. 2. Т.к. функция прерывания была закомментирована, то ошибка в имени состояния не была обнаружена и выполнение сценария (скрипта) в state_manager:set_state было продолжено, что привело к получению нИлевого значения для state_lib.states[binicular] и соответственно 502-ая строка: if state_lib.states[state_name].special_danger_move == true then споткнулась на попытке получить поле 'special_danger_move' из несуществующей субтаблицы. Т.о. твой 1-ый вопрос по ошибке - это следствие, причину которого ты и обнаружил, найдя ответ/причину для 2-го вопроса/вылета. 3. В текстах скриптов можно видеть немало строк типа: --printf("Set State called: for %s State: %s", self.npc:name(), state_name) Как видно, это закомментированная строка. Если ее раскомментировать, то... к сожалению все одно в лог-файле ничего не будет, т.к. как функция printf, как и функция abort, отключена разработчиками... Вот для ее активизации и требуется упомянутый в начале "комплект функций для вывода в лог". Это позволяет отслеживать выполнение сценариев и получать информацию по мере выполнения. Ну а имея информацию и думалку - гораздо проще и быстрее находить и исправлять ошибки. ;-) Ну и собственно "грамматика" то тут ни при чем. Причина в банальной описке, которую никакой чекер кодов не обнаружит, т.к. имена переменным и их значения в таких случаях часто "в соответствии с синтаксисом и правилами" языка. Это как раз отлавливается контролем выполнения сценариев, для чего и существуют функции printf и abort, т.к. сам движок далеко не всегда предоставляет при фатальных ошибках достточную информацию о причине. Если всерьез занялся моддингом - советую дополнительно почитать на эту тему про debug в Lua (хотя для реализации потребуется вносить правки в библиотеки движка или внешние добавлять). Изменено 25 Декабря 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 2 Апреля 2013 (изменено) Nostrik, клиентский объект актора (game_object) НИКОГДА не меняет локации, т.е.актор всегда находится на той локации, которая загружена из сэйва. Поэтому любые проверки связанные с ним никогда не покажут смену уровня. В момент "перед переходом", когда создается автосэйв - серверному объекту актора устанавливаются соответствующие координаты локации, куда актор перейдет после перезагрузки... Можешь написать что-то свое или использовать проверку из utils.level_changing(), которая как раз и определяет будет ли переход на др.уровень или нет. Однако, я бы посоветовал, чтобы не рестриктор сам из своего апдейта выполнял бы проверку, а в момент создания автосэйва логика рестриктора должна принудительно проверяться и изменяться. В противном случае, не гарантированно, что сработает очередной апдейт для рестриктора и он сменит логику до записи его состояния в автосэйв. Изменено 2 Апреля 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 2 Апреля 2013 (изменено) Nostrik, есть вопросы, на которые невозможно ответить информативно но кратко... Автосэйвом заведует движок и нам, тем кто только скриптами и конфигами манипулирует в моддинге, сей момент доступен только наравне со всеми остальными аналогичными событиями, т.е. обычными сэйвами и квик-сэйвами... Т.о. у тебя два три пути: - по факту активизации метода actor_binder:save(...) ловить момент любого сэйва и уже из него определять "авто-" или нет. - в биндере твоего рестриктора в соответствующем методе сохранения делать то, что выше... - добавить в соотв.схему (например в твою sr_idle) недостающий метод сохранения и из него уже выполнять проверки и корректировки активной секции... Собственно готовые решения имеются в некоторых модах, но... парой строчек, без знаний Lua и алгоритмов игры тебе не обойтись. Ищи и обрящешь. ;-) Изменено 2 Апреля 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение