Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Модерирует : gyra, Maz

Maz (15-01-2020 17:38): FAR Manager (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Предыдущие топики:  1 2 3 4
 
Где взять последнюю версию?
На странице загрузки скачайте MSI-инсталлятор стабильной сборки нужной вам разрядности (32 или 64 бита) или дистрибутив в виде 7z-архива и установите/распакуйте в любую папку (FAR портабелен и может работать без установки).
Там же на свой страх и риск можно взять наиболее свежую "ночную" сборку (в ночных сборках устраняются выявленные недоработки, добавляются новые функции, но могут содержаться и серьёзные ошибки).
Архив всех предыдущих ночных сборок FAR
Last release на github - собирается практически сразу (в течение получаса) после каждого коммита.
 
Общие сведения о совместимости FAR и плагинов
 
Можно воспользоваться одной из пользовательских сборок FAR Manager
Вопросы, касающиеся сборок, следует задавать непосредственно их авторам, а не на официальном форуме.
 
Где взять дополнительные плагины, скрипты и макросы?
Плагринг. В настоящее время большинство авторов (возможно, уже и все) выкладывают плагины здесь. Кроме плагинов здесь появляется всё относящиеся к FAR: дополнения, консольные шрифты, скрипты и пр.
Анонсы плагинов на официальном форуме. Даже если автор не выкладывает по каким-либо причинам плагин на плагринге, он может дать анонс в этой теме.
Полезные скрипты и макросы.
 
Инструкции по сборке ФАРа из исходников
Набор для самостоятельной сборки ФАРа
Как собрать FAR самостоятельно (старая инструкция)  
 
Ссылки на устаревшие версии
Выдержка из Far Manager Site and Forum ‹ FAQ :
Отличия FAR 3 от FAR 2
Отличия FAR 2 от FAR 1.7
 
Примечания
 
* 13 декабря 2008 г. произошло переименование веток: ANSI-ветка 1.71 превратилась в 1.75, а Unicode-ветка получила номер версии 2.0 (вместо 1.80). Т.е. версии 1.хх это ANSI ("старый" FAR), а версии 2.хх – Unicode ("новый" FAR). Эти ветки сильно различаются по способу взаимодействия с плагинами и системой!
* При обновлении ANSI-ветки 1.хх более старые версии плагинов могут работать в более новом FAR, но более новые плагины в большинстве случаев требуют обновления FAR (см. документацию).
* Unicode-плагины в ANSI-версии FAR не работают – у них иной способ взаимодействия (API) с Far.exe, поэтому даже не пытайтесь их использовать в FAR версии ниже 1.80.
* При обновлении Unicode-версии FAR 1.80/2.0/3.0 обращайте внимание на номер сборки: следует обязательно обновить все плагины для сборок 677/680/684, иначе они не будут работать. ANSI-плагины (кроме тех, которые работают в редакторе) можно применять в Unicode-версии FAR, в меню плагинов (вызываемом по F11) они будут помечены значком [A] справа от их имени. Unicode-плагины в FAR 1.80/2.x/3.х никаким значком после имени не помечаются.
* Unicode-версия FAR 1.80/2.x/3.х требует как минимум Windows 2000, т.е. она работает только в Windows 2000/XP/2003/Vista/2008/7/8/10.
* Плагины от FAR 2 несовместимы с FAR 3 и не запустятся.
* В FAR 3 выборочно могут работать плагины от FAR 1, однако не стоит брать от FAR 1 плагины для редактора или работающие с дисками: первые портят текст в Юникоде, вторые – файловую систему.
* В любом случае разрядность плагинов должна совпадать с разрядностью FAR, иначе плагин не будет загружен.
* Блондинку на скриншоте зовут Tommie Jo.

 
Принципиальные различия между hard link, symlink и junction
Как устранить взаимное влияние запущенных копий FAR в памяти
Как запустить Lua/MoonScript из FAR
Как правильно добавить в программу нужную DLL (или иную зависимость), чтобы при обновлении ОС или иных программ она не перестала работать
Патч для ansi-плагинов для хранения настроек плагинов в папке профиля, а не в реестре
Как распаковать UUE/XXE файлы патчей и использовать их?
 
ВНИМАНИЕ!
 
Правильное (корректное) завершение Far: всегда завершайте сеанс работы с Far по F10! Подробнее на форуме - Различие выхода из Far по F10 и крестиком
 
Общие правила обращения за помощью
  1. Решаете задачу самостоятельно, при необходимости ищете ответы в теме и других источниках. Предварительное изучение документации обязательно!
  2. Если ваших знаний не хватает, то задаёте вопрос в форуме и строго следуете инструкциям тех людей, которые вам помогают.
  3. Если решить задачу, следуя пунктам 1 и 2, не удалось, то задаёте вопрос разработчикам.

Невыполнение этих правил ведёт к тому, что никто не станет помогать решать вашу задачу.

Всего записей: 38741 | Зарегистр. 26-02-2002 | Отправлено: 18:55 23-11-2017 | Исправлено: Victor_VG, 10:00 09-09-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
 
Если без подстройки цветов - забавный светофор:
 

 
- запускал "на посмотреть", а кто будет им пользоваться настроит цвета.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33119 | Зарегистр. 31-07-2002 | Отправлено: 11:43 16-08-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подсветка смешанной латиницы и кириллицы в редакторе
 
   
 
Editor.LatCyrHighlighting.moon
 
   
 
Что творится...  
 
Добавлено:
Если человек перестроил себе цвета, то это его проблема.
 
Для белого фона:
  ForegroundColor:0x9 -> 0x7
  BackgroundColor:0x1 -> 0xf

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 11:49 16-08-2019 | Исправлено: Alexyz21, 17:55 16-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
обновил, финальный релиз

Посмотрел макрос в работе. По тестовому набору он показывает позиции r и e так, как надо. И в т.ч. по вариантам, подсказанным Victor_VG (за маленьким исключением подмены 0 большой русской О, что не критично, по-моему). Т.е. в целом очень хорошо! Собственно это и было первоначальной задумкой. По сути, экстренный детект обеспечен.  Большое спасибо!  
 
Кроме того. В тех случаях, когда имена детектируются как EN или RU можно быть уверенным, что в них подстановок иноязычных букв нет. И это ещё один плюс.  
 
При необходимости, для более определённого детекта можно использовать рекомендованный Вами макрос Editor.CyrSpaceHighlighting.moon — и это тоже бонус.
 

Цитата:
дальнейший тюнинг своими силами

По мелочи полагаю, что позиции R=Е и R+E целесообразно совместить. Это то как раз я и своими хилыми силами, пожалуй, смогу сделать.
 
Но, во-вторых, в процессе практических проб всплыла ещё одна мысль — помимо опечаток, вкравшихся в нормальные имена, попытаться также детектить и в принципе ошибочные имена типа PRN.*; COM[1-9].*; AUX.*; LPT[1-9].*; CON.*; NUL.*; *[. ].*;  name..* и м.б. др. И вот тут мне без сторонней помощи уже точно не обойтись.

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 12:15 16-08-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кроме нуля, может быть и 3 вместо З, и даже 4 вместо Ч - во-первых, все ошибки не перебрать, которые вносят операторы, во-вторых, откуда детектору знать, что вместо нуля должна быть О? - И какая О - русская, или латинская? Словари хотите подключить? С падежами, склонениями и тд. - как положено, да? ) Предлагаю обсуждение этого макроса закончить, любые дополнения считаю нецелесообразными по техническим причинам.

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 12:46 16-08-2019
citPiks



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
Хорошо. Принято. Спасибо за отлично проделанную работу: c0FName.lua

Всего записей: 373 | Зарегистр. 26-06-2016 | Отправлено: 12:55 16-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21
Ну вот добрался до ф-ций panel.SetSelection/ClearSelection. Изменение минимальное - убраны внутренние вызова FCTL_BEGINSELECTION / FCTL_ENDSELECTION. Спасибо за выявление проблемы.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 17:41 16-08-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz, не знаю, не знаю... - учитывая, что код выделения используя панельное API практически такой же по количеству строк:

Код:
    local pc=ffi.cast("struct PluginStartupInfo*",far.CPluginStartupInfo()).PanelControl
    pc(PANEL_ACTIVE,"FCTL_BEGINSELECTION",0,NULL)
    for Item=1,ItemsNumber do
      local GPItem=panel.GetPanelItem(nil,1,Item)
      pc(PANEL_ACTIVE,"FCTL_SETSELECTION",Item-1,(GPItem.FileAttributes:find("d") or process(GPItem.FileName,ChkBOX)==0) and pBL0 or pBL1)
    end
    pc(PANEL_ACTIVE,"FCTL_ENDSELECTION",0,NULL)
    pc(PANEL_ACTIVE,"FCTL_REDRAWPANEL",0,NULL)

пользователь по факту ничего не выигрывает (тут я немножко лукавлю, нужно определить сначала константы):
Код:
local ffi = require'ffi'
local NULL = ffi.cast("void*",0)
local PANEL_ACTIVE = ffi.cast("HANDLE",-1)
local pBL0,pBL1 = ffi.cast("BOOL*",0),ffi.cast("BOOL*",1)

 
Совсем другое дело, если бы одной lua-функцией можно было бы заменить 4-е панельных - begin/select false/select true/end - был бы явный выигрыш, причём не только в строках, но и во времени выполнения выделения на панели, плюс никакой ломки существующих скриптов у пользователей - сплошной PROFIT! И всего-то было добавить 1 аргумент integer/array with not selection с copy-paste уже имеющегося цикла. Ну нет такой универсальной функции в FAR API, да и не обязано быть - API всё-таки в первую очередь мелкие, базовые "кирпичики". LUAFAR API в этом отношении мог быть бы и более продвинут - время вызова из плагина FAR API и из LUA скрипта различаются быстрее всего не в пользу последнего.
 
Добавлено:

Цитата:
Спасибо за выявление проблемы.

Уже предчувствую анафему от пользователей в свой адрес за это

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 18:08 16-08-2019 | Исправлено: Alexyz21, 18:54 16-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
пользователь по факту ничего не выигрывает

Данное изменение в LuaFAR является исправлением, а не предоставлением пользователю удобств.
 
Ваши примеры из последнего сообщения используют FFI, а данное изменение с FFI никак не связано.
 

Цитата:
Совсем другое дело, если бы одной lua-функцией можно было бы заменить 4-е панельных - begin/select false/select true/end - был бы явный выигрыш

Напишите функцию на Lua, именно такую, можете даже поместить её в таблицу panel, и наслаждаться жизнью. Вы напишете эту ф-цию один раз и будете ею пользоваться годами.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 20:05 16-08-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
разве исполняемая внутри LuaMacro.dll panel.SetSelect() не будет исполняться быстрее? Не понимаю вашей логики - сделать мост к FAR API 1:1 - почему не сделать лучше и ничего не ломая? В общем случае считаю ваш подход верным, но конкретно в эту функцию можно и даже нужно расширить.

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 20:18 16-08-2019 | Исправлено: Alexyz21, 20:20 16-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
разве исполняемая внутри LuaMacro.dll panel.SetSelect() не будет исполняться быстрее?

Поверьте, разница в скорости будет от силы единицы процентов (и то не факт, что будет).

Цитата:
Не понимаю вашей логики - сделать мост к FAR API 1:1 - почему не сделать лучше и ничего не ломая?

В мои задачи изначально не входило построение сильно отличного от FAR API интерфейса, а теперь такой задачи совсем нет. Вы можете на чистом Lua написать любой идеальный интерфейс, сделать его модулем, опубликовать.
 
Добавлено:
Кстати, то, что до сих пор никто не предпринял попытки написания такого интерфейса, говорит о том, что интерфейс LuaFAR не так уж плох.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 20:26 16-08-2019
skipik



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Это не по вашей части?
Я удалил все свои db-файлы и оставил только Default.farconfig.
 
Запускаю, падает LuaMacro, далее сам фар:
 

 

 

 

 
Есть ещё такой дамп: https://www.upload.ee/files/10363328/Far.rar.html

Всего записей: 4802 | Зарегистр. 07-07-2006 | Отправлено: 21:02 16-08-2019 | Исправлено: skipik, 21:14 16-08-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
говорит о том, что интерфейс LuaFAR не так уж плох.

Никто, никогда обратного не утверждал, не нужно обобщений. Речь идёт об одной единственной функции. Нет ни единого use case для которого имело бы смысл вытаскивать "наружу" в скрипты begin/end - гораздо эффективнее собрать сначала масивы, а затем передать их SetSelection() за 1 вызов, чем дёргать её поэлементно. Я бы ещё и panel.ClearSelection() удалил бы как дублирующую в усечённом варианте функционал SetSelection().
 
Нужно переносить выделение 1-го файла - SetSelection(handle, whatpanel, item1, false, item2)
Всей панели SetSelection(handle, whatpanel, array1, false, array2)
сбросить выделение SetSelection(handle, whatpanel, array1)
установить SetSelection(handle, whatpanel, array1, true)
 
Можно написать function() в которой делать begin/selection/selection/end - и так сделает каждый, кто с умом использует luafar. Деструктивизм какой-то.

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 21:20 16-08-2019 | Исправлено: Alexyz21, 21:39 16-08-2019
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я решил задачу получения версии любого имеющегося в Far плагина:  
 
Функция PlugVer() имеет два возможных формата - PlugVerG() использует GUID, PlugVerN() использует полный путь к DLL плагина:
 
PlugVerG():

Код:
local function PlugVerG(PId)
local Info,PVer,A
       Info=far.GetPluginInformation(far.FindPlugin("PFM_GUID",win.Uuid(PId)));
           A=Info.GInfo.Version;
           PVer=A[1].."."..A[2].."."..A[3].."."..A[4]
  return PVer
end

вызов:

Код:
local IVid="9D4A59D9-AD2D-478C-8F66-7D233CBB788D"
far.Message(PlugVerG(IVid),"Version:")

PlugVerN():

Код:
local function PlugVerN(PId)
local Info,PVer,A
       Info=far.GetPluginInformation(far.FindPlugin("PFM_MODULENAME",PId));
           A=Info.GInfo.Version;
           PVer=A[1].."."..A[2].."."..A[3].."."..A[4]
  return PVer
end

вызов:

Код:
local IVid=win.GetEnv("FARHOME").."\\plugins\\imageview\\ImageView.dll"
far.Message(PlugVerN(IVid),"Version:")

а код предложенный Alexyz21 и ранее мной возвращал указатель на структуру Version - т.е. мы упустили из виду её разбор, а надо было просто внимательно вчитаться в Писание и сразу вылезала двойная косвенная адресация.


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33119 | Зарегистр. 31-07-2002 | Отправлено: 21:25 16-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skipik
Не знаю, что вам и сказать. У вас, судя по дампу, много чего загружено, кто его знает...
Я сейчас взял последний билд x64 с гитхаба, у меня всё нормально: и с моим профилем, и с новым чистым профилем, и со всеми установленными у меня плагинами и макросами.
 
Добавлено:
Alexyz21
1. Вот напишите вашу "идеальную" ф-цию на Lua (используя существующее LuaFAR-API), покажите мне, и, если мне это покажется стОящим, сделаю такую ф-цию из коробки.
 
2. У вас некоторое недопонимание по поводу ф-ции panel.ClearSelection. Если бы в FAR API не было FCTL_CLEARSELECTION, я бы этой ф-ции не делал. А теперь почитайте в энциклопедии насчёт FCTL_CLEARSELECTION, и найдите некоторый нюанс по сравнению c FCTL_SETSELECTION.
(Можно долго и нудно критиковать, но LuaFAR просто передаёт имеющийся FAR API в Lua).

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 21:26 16-08-2019
skipik



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Вот ночная сборка Фара с сайта + мой специально-тестовый фарконфиг:
 
https://www.upload.ee/files/10363442/TEST.7z.html
 
Попробуйте запустить фар.

Всего записей: 4802 | Зарегистр. 07-07-2006 | Отправлено: 21:35 16-08-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вот напишите вашу "идеальную" ф-цию на Lua (используя существующее LuaFAR-API)

Вы мне покажите код вашего предыдущего варианта с begin/end, накопипащу 2-ой вызов SetSelection аналогичный 1-ому, но уже для доп агрумента и инвертированного selection, обёрнутый в проверку наличия аргумента.

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 21:49 16-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skipik

Цитата:
Вот ночная сборка Фара с сайта + мой специально-тестовый фарконфиг:  

Эта сборка отличается от последней ночной - и Far.exe, и luafar3.dll не проходят сравнения, да и по времени сборки отличаются.

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 21:55 16-08-2019
skipik



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
https://github.com/FarGroup/FarManager/releases/tag/v3.0.5450.1113
Отсюда взял.
Мне бы понять: падает луамакро или сам фар, если второе - я бы DrKnS уведомил через офиц. форум.
 
Добавлено:
https://www.upload.ee/files/10363564/TEST2.7z.html
Вот офиц ночная, если хотите.
Дело-то не в этом.
Дней 10 назад я делал подобное, тогда не падало ничего.

Всего записей: 4802 | Зарегистр. 07-07-2006 | Отправлено: 21:58 16-08-2019
shmuz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexyz21

Цитата:
Вы мне покажите код вашего предыдущего варианта с begin/end,

Зачем вам код на Си ?!! Вы же мастер по Lua - требуется просто написать функцию-обёртку на Lua, без FFI, которая будет иметь правильные, с вашей точки зрения аргументы и делать то, что вы считаете правильным делать.
 
Но если нужен код на Си, для этого есть Гитхаб - смотрите в файле plugins/luamacro/luafar/service.c

Всего записей: 1856 | Зарегистр. 09-03-2012 | Отправлено: 22:04 16-08-2019
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shmuz
Ну так идея была в том, чтобы добавить 2-ой SetSelection с инвертированным selection прямо в dll, а не через прокладки. Что толку смотреть сейчас, сейчас она уже "покоцана".
 

Код:
2416       // CtrlSetSelection   (handle, whatpanel, items, selection)
2417    // CtrlClearSelection (handle, whatpanel, items)

- аргументы Clear вижу такие же, как и предлагал
Вижу

Код:
intptr_t i, len = lua_objlen(L,3);
2455    
2456            for(i=1; i<=len; i++)

Отлично, после тоже самое, только уже  lua_objlen(L,5); только в обёрнутое в if - нужно медитировать на свежую голову, а не по ночи.

Всего записей: 3469 | Зарегистр. 16-06-2007 | Отправлено: 22:08 16-08-2019 | Исправлено: Alexyz21, 22:19 16-08-2019
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)
Maz (15-01-2020 17:38): FAR Manager (часть 6)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru