Реклама: Live-Gaming.Net - Качественный хостинг игровых серверов
Здравствуйте, гость ( Вход | Регистрация )
Новости
|
![]()
|
![]() ![]() |
Key&Say Guardian, Защита сервера от рекламы и читеров |
| AndrewZ |
16.10.2011, 21:13
Сообщение
#1
|
![]() Стаж: 4 года Постоялец ![]() Сообщений: 1962 Из: коминг Репутация: 600 |
Key&Say Guardian v1.25 Благодарность: neygomon за тестирование и предложения по улучшению плагина. Функции плагина: Обнаружение рекламы в сообщениях; Обнаружение рекламы в нике игрока; Обнаружение нажатия чит-кнопок; Детектор CD-Hack'a. Детектор Speed Hack'a. Модуль блокировки рекламы сделан на основе Cheat Messages Ban от draft'а, за что ему отдельное спасибо. Настройки: ksg_config.cfg ; Файл конфигураций Key&Say Guardian v1.25 ; Обнаружение рекламных сообщений: ; "0" - выкл; ; "1" - просто блокировать рекламу; ; "2" - меню с выбором. ksg_spam_mode "2" ; Флаг иммунитета. ; "" - выкл; ; "a"; "abc". ksg_spam_immunity_flag "a" ; Обнаружение рекламы в нике игрока: ; "0" - выкл; ; "1" - кик игрока; ; "2" - меню с выбором; ; "3" - принудительная смена ника. ksg_name_mode "2" ; Новый ник игрока, который будет приписан если игрок выберет пункт "Сменить ник": ; "[KSG] Player". ksg_name "[KSG] Player" ; Детект чит-кнопок: ; "0" - выкл; ; "1" - оповещение админа; ; "2" - оповещение админа + наказание. ksg_cheatkey "1" ; Сколько раз можно нажать чит-кнопку, после чего последует наказание: ; "0" - без предупреждений. ksg_cheatkey_warn "3" ; Время бана за использование чит-кнопок: ksg_cheatkey_bantime "240" ; Наказание за использование чит-кнопок: ; %userid% - ID игрока; ; %username% - Ник игрока; ; %reason% - Причина; ; %bantime% - Время бана; ; %steamid% - Steam ID. ; %userip% - IP игрока. ksg_cheatkey_punish "kick %userid% %reason%" ; Детект CD-Hack'a: ; "0" - выкл; ; "1" - вкл. ksg_cdhack "1" ; Время бана за CD-Hack: ksg_cdhack_bantime "10080" ; Наказание за CD-Hack: ; %userid% - ID игрока; ; %username% - Ник игрока; ; %reason% - Причина; ; %bantime% - Время бана; ; %steamid% - Steam ID. ; %userip% - IP игрока. ksg_cdhack_punish "kick %userid% %reason%" ; ВНИМАНИЕ! Корректно работает ТОЛЬКО на серверах, с картами БЕЗ телепортов и автомобилей! ; ВНИМАНИЕ! Телепорт игрока так же, с очень большой вероятностью, вызовет срабатывание детектора. ; ВНИМАНИЕ! В будущем планируется устранение большинства недоработок. ; ВНИМАНИЕ! Функция выдачи предупреждений записывает логи в файл "addons\amxmodx\logs\ksg_warns.log", ; ВНИМАНИЕ! при ложных детектах просим выкладывать эти логи! ; Детект Speed Hack'a: ; "0" - выкл; ; "1" - вкл. ksg_speedhack "1" ; Сколько предупреждений делать перед наказанием: ; "0" - без предупреждений. ksg_speedhack_warn "3" ; Время бана за Speed Hack: ksg_speedhack_bantime "10080" ; Наказание за Speed Hack: ; %userid% - ID игрока; ; %username% - Ник игрока; ; %reason% - Причина; ; %bantime% - Время бана; ; %steamid% - Steam ID. ; %userip% - IP игрока. ksg_speedhack_punish "kick %userid% %reason%" Информация: Запрещенные фразы вписывать в ksg_messages.ini Запрещенные фразы в нике вписывать в ksg_names.ini Читерские кнопки, которые следует обнаруживать в ksg_keys.ini Переменные изменять в ksg_config.cfg Этот плагин был рассчитан на использование без любого другого античита, но с установленным блоком wh (к примеру sbguardian) и с постоянным присутствием на сервере адекватных админов. Плагин может работать очень некорректно если ваш IQ < 50 Всем тем, кто сообщает о багах: К своему сообщению прикрепить: 1. Логи 2. Конфиг плагина 3. Список плагинов 4. Название карты Образец менюшки (устарел) ![]() Третий пункт в меню работает только 1 раз за карту. Скачать: v1.25 [attachment=16487:ksg_v1.25.zip] Changelog v1.0: Первый релиз. v1.1 Добавлен детект CDHack'a; Добавлен квар ksg_cdhack; Добавлена команда ksg_add. v1.1 release 2 Оптимизирован и улучшен ksg_messages.ini, спасибо cs-portal. v1.2 Добавлены/Изменены/Удалены квары, подр. в ksg_config.cfg; Некоторые оптимизации кода, спасибо Flash; Добавлено обнаружение рекламы в нике (ksg_names.ini). Тип наказания за CDHack И чего-то еще точно v1.21 Чуть оптимизаций; Некоторые исправления в сообщениях; В переменную 'ksg_name_mode' добавлено значение '3', при котором ник будет меняться принудительно; Немного изменен конфиг, файл сообщений, файл ников. v1.22 Немножко оптимизирован плагин; Полностью изменена функция детекта читерских кнопок; Изменена переменная ksg_spam_mode, подр. в конфиге. v1.23 Снова оптимизации; Небольшие поправки в биндах; Немного улучшен детект ника: если игрок не сменит ник до следующей проверки - его выкинет с сервера. v1.24 Изменена функция наказания за CD-Hack и Cheat Key; Добавлены/Изменены квары, подробнее в ksg_config.cfg; Плагин может работать с любой системой банов. v1.25b Местами поправлен код; Добавлен детектор Speed Hack'a - БЕТА ВЕРСИЯ, ПОДРОБНО В КОНФИГЕ!; Убраны квары "причина бана". v1.25b2 Исправлена ошибка в коде детектора Speed Hack'a, возможно поправлен ложный детект; Вероятно, что поправлен детект на серверах, как к примеру Zombie Plague, где имеется измененная скорость игроков; Добавлена проверка на бота или hltv при проверке CD-Hack'a. v1.25b3 Добавлено тестовое логирование детектов Speed Hack'a в файл. v1.25 Добавлен иммунитет к бинду клавиш. Сообщение отредактировал AndrewZ - 14.5.2012, 21:01
Прикрепленные файлы
-------------------- |
|
Cмотреть
благодарности » |
Всего поблагодарили: 24 чел.
|
|
|
|
| AxuJIJI |
16.10.2011, 21:23
Сообщение
#2
|
|
Стаж: 4 года 4 месяца Постоялец ![]() Сообщений: 1314 Из: ни откуда Репутация: 352 |
ещё можно это
код Код public cmdF( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_FKEY", name ) } return PLUGIN_HANDLED } public cmdIns( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_INSKEY", name ) } return PLUGIN_HANDLED } public cmdHome( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_HOMEKEY", name ) } return PLUGIN_HANDLED } public cmdPgUp( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_PGUPKEY", name ) } return PLUGIN_HANDLED } public cmdPgDn( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_PGDNKEY", name ) } return PLUGIN_HANDLED } public cmdDel( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_DELKEY", name ) } return PLUGIN_HANDLED } public cmdEnd( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_ENDKEY", name ) } return PLUGIN_HANDLED } заменить на код Код public cmdF( id ) { cheatKeyPressed ( id ) } public cmdIns( id ) { cheatKeyPressed ( id ) } public cmdHome( id ) { cheatKeyPressed ( id ) } public cmdPgUp( id ) { cheatKeyPressed ( id ) } public cmdPgDn( id ) { cheatKeyPressed ( id ) } public cmdDel( id ) { cheatKeyPressed ( id ) } public cmdEnd( id ) { cheatKeyPressed ( id ) } public cheatKeyPressed( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_FKEY", name ) } return PLUGIN_HANDLED } или не? а то одинаковый код и 5 раз -------------------- Люди бывают разные... Например ебанутые... ©
|
|
|
|
| AndrewZ |
16.10.2011, 21:25
Сообщение
#3
|
![]() Стаж: 4 года Постоялец ![]() Сообщений: 1962 Из: коминг Репутация: 600 |
AxuJIJI,
а хз, сделали как получилось, работает ведь. Там сообщения разные. Сообщение отредактировал ZZZombiE - 16.10.2011, 21:26 -------------------- |
|
|
|
| FixX |
16.10.2011, 21:41
Сообщение
#4
|
![]() Стаж: 1 год 3 месяца Постоялец Сообщений: 2089 Из: иев же Репутация: 562 |
ещё можно это код Код public cmdF( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_FKEY", name ) } return PLUGIN_HANDLED } public cmdIns( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_INSKEY", name ) } return PLUGIN_HANDLED } public cmdHome( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_HOMEKEY", name ) } return PLUGIN_HANDLED } public cmdPgUp( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_PGUPKEY", name ) } return PLUGIN_HANDLED } public cmdPgDn( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_PGDNKEY", name ) } return PLUGIN_HANDLED } public cmdDel( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_DELKEY", name ) } return PLUGIN_HANDLED } public cmdEnd( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_ENDKEY", name ) } return PLUGIN_HANDLED } заменить на код Код public cmdF( id ) { cheatKeyPressed ( id ) } public cmdIns( id ) { cheatKeyPressed ( id ) } public cmdHome( id ) { cheatKeyPressed ( id ) } public cmdPgUp( id ) { cheatKeyPressed ( id ) } public cmdPgDn( id ) { cheatKeyPressed ( id ) } public cmdDel( id ) { cheatKeyPressed ( id ) } public cmdEnd( id ) { cheatKeyPressed ( id ) } public cheatKeyPressed( id ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( "ksg_cheatkey" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, "[K&SG] %L", admin, "KSG_FKEY", name ) } return PLUGIN_HANDLED } или не? а то одинаковый код и 5 раз удобнее когда знаешь какую именно кнопку нажал юзер -------------------- #define guf umer
"Key&Say Guardian™" - Защита от рекламы + детект чит-кнопок + CDhack detect |
|
|
|
| Krevedko |
16.10.2011, 22:31
Сообщение
#5
|
![]() Стаж: 3 года Постоялец Сообщений: 309 Из: Спб Репутация: 86 |
Цитата удобнее когда знаешь какую именно кнопку нажал юзер Можно передавать кнопку в виде переменной в функцию. |
|
|
|
| AxuJIJI |
16.10.2011, 23:22
Сообщение
#6
|
|
Стаж: 4 года 4 месяца Постоялец ![]() Сообщений: 1314 Из: ни откуда Репутация: 352 |
Цитата Можно передавать кнопку в виде переменной в функцию. ну и я об этом же, просто до конца не дописал одна единая функция например: код Код public cmdIns( id ) { cheatKeyPressed ( id, \"Insert\" ) } public cheatKeyPressed( id, key ) { if( get_user_flags( id ) & ADMIN_KICK || !get_cvar_num( \"ksg_cheatkey\" ) ) { return PLUGIN_HANDLED } new name[ 32 ] get_user_name( id, name, 31 ) for( new admin; admin <= get_maxplayers(); admin++ ) { if( is_user_connected( admin ) && is_user_admin( admin ) ) client_print( admin, print_chat, \"[K&SG] %L\", admin, \"KSG_PRESSED_KEY\", name, key ) } return PLUGIN_HANDLED } Код KSG_PRESSED_KEY = %s use %s!
-------------------- Люди бывают разные... Например ебанутые... ©
|
|
Cмотреть
благодарности » |
Всего поблагодарили: 3 чел.
|
|
|
|
| FixX |
16.10.2011, 23:43
Сообщение
#7
|
![]() Стаж: 1 год 3 месяца Постоялец Сообщений: 2089 Из: иев же Репутация: 562 |
спасибо, в новой версии добавим
-------------------- #define guf umer
"Key&Say Guardian™" - Защита от рекламы + детект чит-кнопок + CDhack detect |
|
|
|
| pahens |
17.10.2011, 20:18
Сообщение
#8
|
![]() Стаж: 2 года 7 месяцев Новичок Сообщений: 49 Из: Там где не растут цветы... Репутация: 13 |
CepBepa 1slot - 15rub, nJlaruHbl Ha 3aKa3 - ICQ526994
Можно было бы оставить только это)Ко мне на сервер каждый второй заходит,с биндом на такое сообщение.А по делу плагин хороший ждем обновлений. -------------------- Лишь утратив все до конца мы обретаем свободу...
|
|
Cмотреть
благодарности » |
Всего поблагодарили: 2 чел.
|
|
|
|
| FixX |
17.10.2011, 20:21
Сообщение
#9
|
![]() Стаж: 1 год 3 месяца Постоялец Сообщений: 2089 Из: иев же Репутация: 562 |
CepBepa 1slot - 15rub, nJlaruHbl Ha 3aKa3 - ICQ526994 та же фигня.. эта аська везде.. владелец аськи на троллинг не поддается -------------------- #define guf umer
"Key&Say Guardian™" - Защита от рекламы + детект чит-кнопок + CDhack detect |
|
|
|
| Asmodai2 |
17.10.2011, 23:18
Сообщение
#10
|
|
Стаж: 8 месяцев Новичок Сообщений: 4 Репутация: 2 |
containi( message, "номер аськи" ) и все. А еще лучше #include <regex>
|
|
|
|
| FixX |
18.10.2011, 14:20
Сообщение
#11
|
![]() Стаж: 1 год 3 месяца Постоялец Сообщений: 2089 Из: иев же Репутация: 562 |
containi( message, "номер аськи" ) и все. А еще лучше #include <regex> это для блокировки а не для очистки -------------------- #define guf umer
"Key&Say Guardian™" - Защита от рекламы + детект чит-кнопок + CDhack detect |
|
|
|
| AndrewZ |
18.10.2011, 20:40
Сообщение
#12
|
![]() Стаж: 4 года Постоялец ![]() Сообщений: 1962 Из: коминг Репутация: 600 |
Обновлен до версии 1.1
-------------------- |
|
Cмотреть
благодарности » |
Всего поблагодарили: 2 чел.
|
|
|
|
| dron34 |
18.10.2011, 20:46
Сообщение
#13
|
|
Стаж: 1 год 2 месяца Постоялец Сообщений: 67 Репутация: 4 |
Сделай подсветку CD-HACK или что бы он подвисал в воздухе и не мог двигаться и стрелять.
|
|
|
|
| FixX |
18.10.2011, 20:48
Сообщение
#14
|
![]() Стаж: 1 год 3 месяца Постоялец Сообщений: 2089 Из: иев же Репутация: 562 |
Сделай подсветку CD-HACK или что бы он подвисал в воздухе и не мог двигаться и стрелять. в планах было заслепить его:D мы подумаем над этим -------------------- #define guf umer
"Key&Say Guardian™" - Защита от рекламы + детект чит-кнопок + CDhack detect |
|
|
|
| AndrewZ |
18.10.2011, 20:48
Сообщение
#15
|
![]() Стаж: 4 года Постоялец ![]() Сообщений: 1962 Из: коминг Репутация: 600 |
dron34,
лишние функции -------------------- |
|
|
|
| Paster |
20.10.2011, 12:35
Сообщение
#16
|
![]() Стаж: 5 лет 2 месяца Постоялец Сообщений: 427 Из: Kiev Репутация: 44 |
+ время бана ksg_cdtime "10080" Для изменения кода: Код public cd_punish( id )
{ server_cmd( "kick #%d ^"[K&SG] CDHack Detected^"", get_user_userid( id ) ) } -------------------- |
|
Cмотреть
благодарности » |
Всего поблагодарили: 1 чел.
|
|
|
|
| AndrewZ |
20.10.2011, 17:04
Сообщение
#17
|
![]() Стаж: 4 года Постоялец ![]() Сообщений: 1962 Из: коминг Репутация: 600 |
Код есть необходимость вывести команду наказания за CDHack, к примеру ksg_cdpunish "amx_ban %time% %name% %reason%" + время бана ksg_cdtime "10080" будет в следующей версии, скорее всего ;) -------------------- |
|
Cмотреть
благодарности » |
Всего поблагодарили: 1 чел.
|
|
|
|
| eXp71 |
21.10.2011, 20:36
Сообщение
#18
|
![]() Стаж: 2 года 2 месяца Постоялец Сообщений: 170 Репутация: 101 |
F9 F10 F11 Тоже чит клавиши, добавьте их тоже, или же можно так дописать?
client_cmd( id, "bind ^"f12^" ^"KSchkF^"" ) client_cmd( id, "bind ^"f11^" ^"KSchkF^"" ) client_cmd( id, "bind ^"f10^" ^"KSchkF^"" ) client_cmd( id, "bind ^"f9^" ^"KSchkF^"" ) а чуть выше еще добавить 3 раза register_clcmd( "KSchkF", "cmdF" ) ? -------------------- Запрещено
|
|
|
|
| levenus |
21.10.2011, 21:26
Сообщение
#19
|
|
Стаж: 1 год Новичок Сообщений: 31 Из: Санкт Петербург Репутация: 18 |
Зачем переписывать одни и те же плагины по 100 раз?
|
|
|
|
| nоskill |
21.10.2011, 21:28
Сообщение
#20
|
|
Стаж: 6 месяцев Постоялец Сообщений: 257 Репутация: 69 |
F9 F10 F11 Тоже чит клавиши, добавьте их тоже, или же можно так дописать? client_cmd( id, "bind ^"f12^" ^"KSchkF^"" ) client_cmd( id, "bind ^"f11^" ^"KSchkF^"" ) client_cmd( id, "bind ^"f10^" ^"KSchkF^"" ) client_cmd( id, "bind ^"f9^" ^"KSchkF^"" ) а чуть выше еще добавить 3 раза register_clcmd( "KSchkF", "cmdF" ) ? можно и так, так будет проще тогда в ланге поправь "KSG_FKEY = %s использовал F12!" на "KSG_FKEY = %s использовал F9-F12" Зачем переписывать одни и те же плагины по 100 раз? Зачем задавать одни и те же вопросы по 100 раз? |
|
Cмотреть
благодарности » |
Всего поблагодарили: 1 чел.
|
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 18.5.2012, 21:43 |