Помогите создать экшн / кастом экшн / скрипт

Тема в разделе "Reaper", создана пользователем @Michael, 2 авг 2015.

  1. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    --- добавлено 28 янв 2019 ---
    Последним трогаешь Айтем и экшен добавит FX на айтем
    т.е. Потрогал трек запустил экшен и FX добавится на трек, потрогал айтем запустил экшен и FX добавится на айтем
     
    Последнее редактирование: 28 янв 2019
  2. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    63
    Симпатии:
    0
    Пол:
    Мужской
    Огромное спасибо
     
  3. Wefilev

    Wefilev Member

    Регистрация:
    22 мар 2015
    Сообщения:
    185
    Симпатии:
    21
    Пол:
    Мужской
    У меня почему-то добавляется плагин только на несколько первых дорожек, потом перестает... почему?
     
  4. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    В Рипере (точнее в SWS) есть экшены SWS/S&M: Bypass FX 1 for selected tracks
    Никто не встречал похожие скрипты для удаления FX типа Delete FX 1 for selected tracks. Идеально конечно, чтобы в самом скрипте можно было настроить какой по счету FX должен быть удален, чтобы растиражировать нужное кол-во скриптов. Заранее, спасибо
     
  5. Snjuk

    Snjuk Member

    Регистрация:
    10 июн 2014
    Сообщения:
    79
    Симпатии:
    46
    Пол:
    Мужской
    Адрес:
    Житомир UA
    @Supa75,

    SWS/S&M: Select FX 1-8 for selected tracks
    SWS/S&M: Remove selected FX for selected tracks
     
    Supa75 нравится это.
  6. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    никто не вчтречал кастом или скрипт, чтобы можно было двигать левый и правый край тайм-селекшена (таким образом увеличивая или уменьшая его) по сетке?
     
  7. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    @Archchie, ни один из этих экшенов не двигает границы с учетом сетки :(
     
  8. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    @Supa75,
    Archie_Time selection; Nudge left edge left to nearest grid.lua
    Archie_Time selection; Nudge left edge right to nearest grid.lua
    Archie_Time selection; Nudge right edge left to nearest grid.lua
    Archie_Time selection; Nudge right edge right to nearest grid.lua
     
    Supa75 нравится это.
  9. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    264
    Симпатии:
    36
    Адрес:
    Новосибирск
    Подскажите, есть кастом или скрипт выделяющий на активном треке один ближайший к курсору(не касающийся его) справа айтем?
     
    Последнее редактирование: 30 янв 2019
  10. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    shuco нравится это.
  11. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    264
    Симпатии:
    36
    Адрес:
    Новосибирск
    СПАСИБО!
     
  12. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    63
    Симпатии:
    0
    Пол:
    Мужской
    где найти видео или подскажите как настроить курсор правки что бы он работал ну например как в студио оне.Спасибо
     
  13. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    здесь далеко не все на форуме знают, как "это работает в студи оне". Объясните
     
  14. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    63
    Симпатии:
    0
    Пол:
    Мужской
    ну например у меня курсор работает хаотично где бы я не ткнул мышкой он там же выставляется мне нужно что бы он работал только на линейке и на айтемах
     
  15. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Screenshot_1.jpg

    Screenshot_2.jpg
     
  16. Andernik

    Andernik New Member

    Регистрация:
    7 апр 2009
    Сообщения:
    27
    Симпатии:
    21
    Приветсвую! Когда назначаешь любую команду из Action list в Mouse modifier на left click, курсор начинает перемещаться к месту клика. Подскажите пожалуйста, как сделать чтоб курсор оставался на месте.

    Или хотя-бы чтоб чтоб при нажатии на пробел в Midi editor воспроизведение начиналось с начала выделенного Item

    Нашёл способ делать кастом и добавлять в конце Script: me2beats_Move cursor to start of current measure (MIDI Editor).lua но это немного не то.
     
    Последнее редактирование: 31 янв 2019
  17. muzicgrand

    muzicgrand Well-Known Member

    Регистрация:
    26 ноя 2009
    Сообщения:
    323
    Симпатии:
    490
    Пол:
    Мужской
    Адрес:
    СССР
    Альт с колесом мыши двигает проект по горизонтали но при остановке нужно нажать на трек или на айтем что бы дальше делать какие то манипуляции,можно ли как то сделать чтобы при остановке не делать лишние клики?
     
  18. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    17.564
    Симпатии:
    9.722
    Пол:
    Мужской
    Адрес:
    Киев
    @muzicgrand, а как Рипер должен узнать - с каким треком или айтемом вы решили работать после остановки прокрутки?
     
  19. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    Да риперу то как раз известно с чем работать, так как там уже что то выбрано трек, айтем и т.д. вот только кнопка alt в windows перекидывает фокус на верхнее меню, то которое upload_2019-2-1_2-14-19.png
    и этот вопрос относится уже не к риперу, а к windows так как кнопка alt запрограммирована операционной системой и ничего с этим не поделать!

    Не хочешь кликать мышью, нажми второй раз на alt :) и тебя кнопка alt опять сфокусирует в рипер.
    Кнопка alt фокусирует верхнее меню (что бы ты смог зайти туда без мыши) и обратно в окно в котором ты работаешь, то есть фокус перекидывает туда-сюда-обратно
     
    YuriOl и muzicgrand нравится это.
  20. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    @muzicgrand, @Archchie, у меня ALT никуда фокус не перебрасывает. Вот тут то делается:
    Screenshot_1.png
     
    sve, Aleksandr Oleynik, YuriOl и 2 другим нравится это.
  21. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    264
    Симпатии:
    36
    Адрес:
    Новосибирск
    Подскажите, есть ли такой скрипт?
     

    Вложения:

    • trim.gif
      trim.gif
      Размер файла:
      157,2 КБ
      Просмотров:
      21
  22. Broojacker

    Broojacker Active Member

    Регистрация:
    4 сен 2010
    Сообщения:
    181
    Симпатии:
    106
    Адрес:
    Киев
    @shuco, Script: me2beats_Trim sel items edges to nearest grid divisions.lua
    или Script: me2beats_Trim sel items edges to nearest measure (increase items length).lua ровняет края по bar`ам
     
  23. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    264
    Симпатии:
    36
    Адрес:
    Новосибирск
    Они не корректно работают, уже выровненные айтемы по новой удлиняют, т. е. если в проекте помимо ровняемого айтема окажется случайно выделенный уже ровный, скрипт к нему тоже добавит такт слева. Причём справа всё нормально.
     

    Вложения:

    • trim.gif
      trim.gif
      Размер файла:
      150,7 КБ
      Просмотров:
      7
  24. Broojacker

    Broojacker Active Member

    Регистрация:
    4 сен 2010
    Сообщения:
    181
    Симпатии:
    106
    Адрес:
    Киев
    @shuco, Как по мне, работает корректней некуда. Просто нужно исключать случайности из работы.
     
  25. shuco

    shuco Active Member

    Регистрация:
    26 ноя 2005
    Сообщения:
    264
    Симпатии:
    36
    Адрес:
    Новосибирск
    Какая же это корректная работа, когда в разных темпах, разный результат. Исключать случайные темпы?(не 120)))))
     

    Вложения:

    • trim.gif
      trim.gif
      Размер файла:
      2 МБ
      Просмотров:
      10
    Последнее редактирование: 1 фев 2019
  26. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    63
    Симпатии:
    0
    Пол:
    Мужской
    Скажите пожалуйста как сделать следующее.Язагружаю семпл(например Crash) (не луп) в окно оранжировки.И когда я меняю темп композиции ,то и меняется темп семпла.Как сделать так чтоб при изменении темпа семпл не стрейчился. Спасибо.
     
  27. Broojacker

    Broojacker Active Member

    Регистрация:
    4 сен 2010
    Сообщения:
    181
    Симпатии:
    106
    Адрес:
    Киев
    @zenykmusic, Project settings - time base for item\envelopes\markers - beats (position only) - общие настройки проекта
    media item properties - item - track\project default timebase (если включена опция выше) или же beats (position only)
     
  28. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    63
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо но извините у меня рипер русифиц. Смотрю прожегт сетинг и не могу найти.
    --- добавлено 2 фев 2019 ---
    все разобрался огромнишое спасибо.
     
  29. zenykmusic

    zenykmusic Member

    Регистрация:
    16 авг 2018
    Сообщения:
    63
    Симпатии:
    0
    Пол:
    Мужской
    Скажите пожалуйста как мне зделать следующе.На мастер канале у меня стоит анализатор.Как мне зделать так чтоб он открывался кнопкой в толбаре.Спасибо.
     
  30. Broojacker

    Broojacker Active Member

    Регистрация:
    4 сен 2010
    Сообщения:
    181
    Симпатии:
    106
    Адрес:
    Киев
    @zenykmusic, Для кастома нужно правильно выбрать номер FX ячейки анализатора
    Custom: test
    SWS: Select master track
    SWS/S&M: Float FX 1 for selected tracks
     
  31. Dimilyan

    Dimilyan Active Member

    Регистрация:
    23 янв 2008
    Сообщения:
    506
    Симпатии:
    189
    Пол:
    Мужской
    Адрес:
    Владивосток
    Ребятки, привет.

    В рипере уже кем-то из наших создан скрипт, позволяющий делать это:


    ?
    Тайминг я уже выставил. Показывают как чопинг сделать
     
  32. Broojacker

    Broojacker Active Member

    Регистрация:
    4 сен 2010
    Сообщения:
    181
    Симпатии:
    106
    Адрес:
    Киев
    @Dimilyan, это можно сделать Image-Line Slicex.
     
  33. Snjuk

    Snjuk Member

    Регистрация:
    10 июн 2014
    Сообщения:
    79
    Симпатии:
    46
    Пол:
    Мужской
    Адрес:
    Житомир UA

    Вложения:

    • Slicer.rar
      Размер файла:
      25,8 КБ
      Просмотров:
      6
    Dimilyan нравится это.
  34. Dimilyan

    Dimilyan Active Member

    Регистрация:
    23 янв 2008
    Сообщения:
    506
    Симпатии:
    189
    Пол:
    Мужской
    Адрес:
    Владивосток
    @Snjuk, Это просто чумачечно. Ну очень и очень крутая вещь. Большущее спасибо:)
     
  35. riko

    riko Active Member

    Регистрация:
    27 авг 2007
    Сообщения:
    364
    Симпатии:
    134
    Ищу экшен или скрипт, для удаления item, и всех огибающих к нему. Есть ли такая возможность?
     
  36. fundorin

    fundorin Active Member

    Регистрация:
    11 апр 2011
    Сообщения:
    286
    Симпатии:
    165
    Адрес:
    Москва
    Как узнать, относится ли огибающая к какому-то конкретному item или не относится?

    [​IMG]

    Если мы удалим зелёный item, какие огибающие должны быть удалены вместе с ним? Синяя Volume? Оранжевая Pan? Серая Mute?
    Допустим, все огибающие должны остаться на месте. А если мы, следом, удалим фиолетовый item? Какие огибающие должны удалиться теперь?
     
  37. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    такой экшен есть и штатно сдалан на клавише Delete :)
     
  38. riko

    riko Active Member

    Регистрация:
    27 авг 2007
    Сообщения:
    364
    Симпатии:
    134
    :) Выделяю, Time selection, item. Удаляю на треке только нужные item, жму delete, огибающие остаются.
     
  39. Andernik

    Andernik New Member

    Регистрация:
    7 апр 2009
    Сообщения:
    27
    Симпатии:
    21
    Снимок экрана 2019-02-19 в 20.11.02.png
    может можно и проще, но делал как умел, главное он работает.
     
    Последнее редактирование: 19 фев 2019 в 15:38
    riko нравится это.
  40. riko

    riko Active Member

    Регистрация:
    27 авг 2007
    Сообщения:
    364
    Симпатии:
    134
    Не много доработал экшен , для удаления огибающих, на выделенном item, с сохранением time selection, не зависимо какие item удаляются с огибающими.
     

    Вложения:

    Последнее редактирование: 20 фев 2019 в 16:17
    Andernik нравится это.
  41. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    @riko,
    В начало кастома
    SWS: Save time selection, slot 1​
    В конец кастома
    SWS: Restore time selection, slot 1​
     
    riko нравится это.
  42. Дима Горелик

    Дима Горелик Member

    Регистрация:
    25 июл 2017
    Сообщения:
    30
    Симпатии:
    13
    Пол:
    Мужской
    Добрый день. Подскажите, можно ли добавить FX с пресетом на выбранный трек при помощи Скрипта. Не через Resourses. Так, чтобы после открытия эффекта, можно было бы добавить ещё один такой же. Или при помощи другого скрипта (отредактированной копией) открыть другую инстанцию того же плагина с другим пресетом. Надеюсь объяснил задачу. Существует похожий скрипт, делающий подобную вещь для айтема. Это не то что мне нужно, но вот скрипт:
    item = reaper.GetSelectedMediaItem(0,0)

    MediaItem_Take = reaper.GetTake(item, 0)
    reaper.TakeFX_AddByName(MediaItem_Take, "ReaEQ", 1)

    reaper.TakeFX_SetPreset(MediaItem_Take, 0, "Stock - Basic 11 band")

    reaper.TakeFX_Show(MediaItem_Take, 0, 1)

    Есть скрипт, который по идее должен добавлять на трек ИЛИ на айтем, в зависимости от того, что выбрано. Но он у меня не работает - может делаю что-то не так. https://github.com/chooze/ReaScripts/blob/master/FX/Chooze_Add FX to selected track(s) or item(s).lua Там надо в начале вставить название пресета и fx. Делаю это и ничего не происходит. И ещё есть рабочий скрипт добавляющий эффект на выбранный трек без пресета. Вот он: Спасибо!
     
    Последнее редактирование: 21 фев 2019 в 03:24
  43. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    @Дима Горелик, Я делал что то подобное,посмотри у меня в репозитории.
    Я посмотреть сейчас не могу, нету компа под рукой, называется, Добавить фх по имени (что то такое), В категории Fx. внутри скрипта должны быть настройки какой плагин добавить, какой пресет добавить,и т.д.
    -------------------------
    P.S. Archie_FX; Add Fx by Name in selected tracks (a description of settings inside script)(`).lua (GitHub)
    Настройки внутри скрипта. Обрати внимание на то, что когда вводишь имя плагина или пресета, то между кавычками и названием не должно быть пробелов, правильно: "name", неправильно: "name "," name" ," name ".

    Тот скрипт который у тебя не работает "Add FX to selected track(s) or take(s)", он работает от мыши, то есть: его надо назначить на горячую клавишу, затем клацнуть по треку или айтему и запустить скрипт через назначенный шоткат.
     
    Последнее редактирование: 21 фев 2019 в 06:01
  44. Supa75

    Supa75 Active Member

    Регистрация:
    21 мар 2017
    Сообщения:
    534
    Симпатии:
    120
    Пол:
    Мужской
    Адрес:
    Днепр, Украина
    Есть отличный скрипт в реапаке, который переключает поведение плей-курсора между Play-Stop и Play-Pause, но он почему то не работает в Midi-Editor
    -- @description amagalma_Toggle behavior of Play-Stop buttons
    -- @author amagalma
    -- @version 1.0
    -- @about
    -- # Toggles behavior of Play-Stop actions between amagalma's custom or Reaper's default
    --
    -- - To be used in conjunction with my "Transport (with memory - no undo)" scripts
    -------------------------------------------------------------------------------------------
    local reaper = reaper
    local cmdID = reaper.NamedCommandLookup("_RS4b332fb0ea338b4991de7e2e9cd81032d79647da")
    local script_state = reaper.GetToggleCommandStateEx(0,cmdID)
    if script_state < 1 then
    script_state = 1
    else
    script_state = 0
    end
    reaper.SetToggleCommandState(0,cmdID, script_state)
    reaper.RefreshToolbar2(0,cmdID)
    -- No undo point
    function NoUndoPoint() end reaper.defer(NoUndoPoint)

    может кто-нибудь сделать такой же, чтобы он работал для Midi Editor, плиз
     
  45. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.208
    Симпатии:
    426
    @Supa75,
    Код:
    local cmdID = reaper.NamedCommandLookup("_RS4b332fb0ea338b4991de7e2e9cd81032d79647da")
    В скрипте,который для кнопки. Возможно ID не соответствтует тому экшну на пробеле, который добавлен в раздел MIDI Editor. Сменить то, что в кавычках (не убирая их), на новый ID
     
  46. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    Все там соответствует, там вообще все как то позапутано.:)

    @Supa75,
    Создай новый скрипт
    любое имя.lua
    Добавь в него вот эту строку
    Код:
    reaper.Main_OnCommand(reaper.NamedCommandLookup("ID"),0)
    
    Где написано ID вставить id скрипта который ты используешь для Play-Stop
    какой то из этих,
    upload_2019-2-21_23-3-28.png
    (можешь создать три новых скрипта и для каждого вставить id)
    далее добавь созданные скрипты в section midi editor
    upload_2019-2-21_23-8-30.png
    И назначь те же shortcuts что и в main
    upload_2019-2-21_23-11-18.png upload_2019-2-21_23-12-24.png

    P.S. Таким способом можешь запускать любой экшен из секции main в секции midi , который не работает в midieditor из секции main. Как то запутано получилось, но думаю ты понял.:)
     
    Последнее редактирование: 21 фев 2019 в 15:29
  47. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.208
    Симпатии:
    426
    @Archchie, я вроде бы подумал, что там проблема именно в нерабочей кнопке. То есть фишка то скрипта в том, что он при нажатой кнопке (скрипта button), останавливает с перемещением курсора. Берет play позицию (то есть это не штатный pause). В миди эдиторе кнопка не зажигается, хотя при вызове с миди редактора, кнопка в main загорается
     
  48. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    497
    Симпатии:
    281
    Пол:
    Мужской
    @Supa75, Если нужно что бы и сама кнопка(переключатель) в тулбаре в миди эдиторе работала, то вот отредактированный "amagalma_Toggle behavior of Play-Stop buttons.lua" скрипт
    Заменяешь содержимое скрипта "amagalma_Toggle behavior of Play-Stop buttons.lua" (именно содержимое старого скрипта, если создашь новый,то ничего работать не будет, т.к. там все завязано по ид) на вот этот отредактированный код
    Код:
    -- @description amagalma_Toggle behavior of Play-Stop buttons
    -- @author amagalma
    -- @version 1.0
    -- @about
    --   # Toggles behavior of Play-Stop actions between amagalma's custom or Reaper's default
    --
    --   - To be used in conjunction with my "Transport (with memory - no undo)" scripts
    
    -------------------------------------------------------------------------------------------
    local ArcID = "Сюда id из midi"
    local reaper = reaper
    
    local cmdID = reaper.NamedCommandLookup("_RS4b332fb0ea338b4991de7e2e9cd81032d79647da")
                                      
    local script_state = reaper.GetToggleCommandStateEx(0,cmdID)
    MIDIEditor = reaper.MIDIEditor_GetActive()
    if script_state < 1 then
      script_state = 1
      if MIDIEditor then
          reaper.MIDIEditor_OnCommand(MIDIEditor,reaper.NamedCommandLookup(ArcID))
      end
    else
      script_state = 0
      if MIDIEditor then
          reaper.MIDIEditor_OnCommand(MIDIEditor,reaper.NamedCommandLookup(ArcID))
      end
    end
    
    reaper.SetToggleCommandState(0,cmdID, script_state)
    reaper.RefreshToolbar2(0,cmdID)
    
    -- No undo point
    function NoUndoPoint() end reaper.defer(NoUndoPoint)
    
    Далее создаешь новый скрипт(можно с таким же названием)Например:"amagalmaMidi_Toggle behavior of Play-Stop buttons.lua"
    добавляешь его в секцию миди и вставляешь вот этот код
    Код:
    
    
    
    
        local ArcID = "Сюда id из main"
    
    
        local value,ScriptWay,sec,cmd,mod,res,val = reaper.get_action_context()
        local cmdID = reaper.NamedCommandLookup("_RS4b332fb0ea338b4991de7e2e9cd81032d79647da")
        local script_state = reaper.GetToggleCommandStateEx(32060,cmdID)
        if script_state == 1 then
            reaper.SetToggleCommandState( 32060, cmd, 0)
            reaper.Main_OnCommand(reaper.NamedCommandLookup(ArcID),0)
        else
            reaper.SetToggleCommandState( 32060, cmd, 1)
            reaper.Main_OnCommand(reaper.NamedCommandLookup(ArcID),0)
        end
        reaper.RefreshToolbar2(32060,cmd)
    
    Обрати внимания на строку "ArcID в обоих скриптах в начале скрипта
    Нужно вставить id скрипта из миди секции в main и наоборот, т.е.
    id "amagalma_Toggle behavior of Play-Stop buttons.lua" нужно вставить в "amagalmaMidi_Toggle behavior of Play-Stop buttons.lua" и id "amagalmaMidi_Toggle behavior of Play-Stop buttons.lua" нужно вставить в "amagalma_Toggle behavior of Play-Stop buttons.lua"
     
    Последнее редактирование: 21 фев 2019 в 17:35

Поделиться этой страницей