map.ck.ua
Наконец-то доделал самую нужную часть карты(??) – пользовательские карты.
У нее есть два предназначения:
1. Вы кому-то хотите показать часть карты с нанесенными обозначениями. К примеру, место проведения какого-либо мероприятия, обозначенное областями и маркерами.
2. Вы хотите создать собственную карту, например карту страйкбольных полей и разместить ее у себя на сайте.
Либо вам просто нечем заняться и вы хотите что-то нарисовать, используя небогатый арсенал map.ck.ua :). Один из таких примеров:
Ссылка: http://map.ck.ua/#umid=gkub545
Поделки
То, что велик жене нужен, мы поняли давно. Но сейчас денег на покупку нового и более-менее хорошего нету. Поэтому решили возродить старенький «Турист», который мирно гнил в подвале бывшего дома.
Фото показывать не буду, потому как нету. Скажу лишь, что смотреть на это подвальное чудо было больно. Но хитрая лесть жены, которая сказала что-то про мои золотые руки и просто интерес к процессу подвигли меня заняться очеловечиванием этого велосипеда.
Что было куплено:
- Покрышки
- Камеры
- Седло
- Крылья
- Механизм переключения передач (задний)
- Тросики и оболочки для тросиков
- Цепь
- Вынос руля
- Светоотражатели
- 3 баллона с краской (грунтовка, желтый, черный)
- Наждачная бумага
- Подшипники на каретку и рулевую колонку
Итого 500+ грн.
Почистил раму, погрунтовал. Покрасил в желтый.
Вечер мы посвятили обклеиванию рамы малярным скотчем. На следующий день покрасили черным цветом. Получился билайновский бренд :)
Ну и потом все это я собрал.
Теперь это полосатое ездит по дорогам Черкасс :) Если увидите, улыбнитесь.
Тест
Добавил на map.ck.ua возможность забрать к себе на сайт часть карты с информацией.
В принципе, основные новости касательно map.ck.ua описываются тут: word.map.ck.ua.
Но сегодняшнее обновление – это шаг, если учитывать то, что прокладка маршрутов в Яндекс-картах доступна только для московской области.
Собственно да, доступно прокладывание маршрутов проезда автомобилем. Используется Визиком.
Кусок весны и кусок лета
Прошел с момента последней записи.
Но я не с пустыми руками. За это время, вернее, в это время я работал над обновлением проекта MAP.CK.UA
Пожалуй, слово «работал» слишком громкое. Да и код, который я рождаю, по-настоящему работой назвать нельзя :) Но! Какое-то количество строк (говно)кода написано (привет Ден!), а значит нужно рассказать, что получилось.
Итак. Возможно в нарушение общепринятых правил, но сайт получил приставку Бета 2. Почему бета – понятно, почему аж 2 – потому что изменился основной движок карт.
Просто перечислю, что работает на сегодняшний день:
Движок карт: Яндекс.Карты, со всеми ихними недостатками, но все же более подробные и красивые, чем Гугльмапс. Да, GoogleMaps более функционален, более шустр. Но его унылость схематических карт и очень упрощенное изображение домов и адресов не впечатляют.
Поиск адреса: Визиком. Это одна из основных фич сайта. Карты от Яндекса красивее Визикомовских и Гуглевских, но поиск от Яндекса не годится. Можно было бы использовать АПИ и карты от Визикома, но карты Визикома почти такие же унылые как и у Гугля, плюс, и это решающий фактор, скудное АПИ и не менее скудная документация. Но! Визиком – это практически гарантия правильности адреса, поэтому взял поиск от него.
Тематические карты. Пожалуй, именно тут мапцкуа наиболее тесно подходит к концепции ВикиМапии. Но я успокоил себя тем, что: а) другой движок. б) более локализовано. На данный момент доступны для просмотра и наполнения такие карты: Провайдеры города, Хотспоты WiFi, Кинотеатры, Маршруты транспорта (Привет Серж!) Я наконец-то придумал алгоритм рисования маршрутов и остановок.
Примеры:
Маршрут на карте маршрутов: http://map.ck.ua/?maptype=bus&routename=%25E2%2584%25969
Одна из точек доступа wifi: http://map.ck.ua/?maptype=wifi&id=12
Свободное добавление объектов. Отказался от идеи регистрации, как было на старой версии. Добавлять может любой. Кто угодно и что угодно. Естественно, перед появлением на общедоступной карте, добавленные объекты будут проходить модерацию. Исключение будет для пользовательских карт (которые пока что в разработке). Возможно, в дальнейшем появится свободная регистрация, для присваивания авторства и т.п. Впрочем, ничто не мешает зарегистрироваться сейчас: word.map.ck.ua. Если я и буду использовать авторизацию, то от этого блога.
Полноэкранный, однооконный интерфейс. Минимум перегрузок сайта, идею web 2.0 поддерживаю целиком. Возможно из-за этого немного нелепо выглядят ссылки на конкретные разделы, но это поправимо. Возможно ссылки обретут другое пристанище, вместо адресбара будут отображаться на поле карты.
Ну, вроде все из того, что помню.
Критика не принимается, код-говно, я знаю. Реализация идей еще хуже. Возможно результат получился хуже, чем ничего, но есть люди, которые меня поддерживают. Спасибо им.
Если есть (совершенно случайно), замечания и предложения, прошу.
браузеры
Я не профессиональный веб-программист. Но, тем не менее, иногда занимаюсь кое-какими проектами (они перечислены на соответствующей страничке).
Вот и хочу, в очередной раз, пожаловаться на «разношерстность» браузеров. Каждый из них по-своему трактует строгость DTD и, часто, по-разному отрабатывают javascript.
Firefox. Самый лояльный к ошибкам и вольностям. Прощает очень много ошибок в разметке. Часто это выходит боком.
IE. Чуть строже. Но, наконец-то, в 8-й версии они показывают один и тот же сайт с firefox почти одинаково. На ошибки в разметке и скрипте реагирует, но пытается нарисовать задуманное.
Chrome. Среднее между Firefox и IE. Но чутко реагирует на разметку, в результате ошибки сайт корежит в соответствии с генератором случайных чисел.
Opera. Самый космический браузер. Всю жизнь считал его созданным для людей с Марса. Лично меня воротит только от ее интерфейса, хотя это дело вкуса. Но любую ошибочку, в том числе и ту, которую другие браузеры ошибкой не считают, она проявляет сразу и катастрофически.
Интересные факты: разные подверсии 10 версии, по-разному отрабатывают ошибки. В частности, при работе с лайтбоксом одна из версий рисовала черный квадрат поверх сайта (http://pdahelp.net). Последняя версия (10.53) выводит вполне красивый сайт.
Очень возмутил тот факт, что безобидная конструкция
input.parentNode.style.visibility = 'hidden';
вызвала ексепшн.
К чему я это все? Это я прикручивал аплоад и т.п. к сайту http://www.andboson.net/ В результате хотел выразить, в очередной раз, недовольство Оперой, но решил еще и другие прихватить, для компании.
Возможно это как раз и следствие недостатка знаний\опыта и у профи все работает как часики во всех браузерах. Но! Профессионалами ж не рождаются…
Еще хотел рассказать про локальную катастрофу с сервером.
Вдруг перестал отдаваться контент одного сайта. По логам выяснилось, что скрипт отпадал по ошибке php-fpm. После продолжительных мучений, выяснил, что были изменены параметры ответа таймаута в конфиге php-fpm. Почему я выставил их в такое значение и почему эта конструкция перестала работать, не ясно.
В общем вернул на место
<value name="request_terminate_timeout">0s</value> The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file '0s' means 'off' <value name="request_slowlog_timeout">0s</value>
И все зажило как и прежде.
Еще хочу выразить радость от наступления весны. Кроме того, что все вокруг цветет и пахнет, появилась возможность ездить на велике. После зимы ноги быстро устают, но все равно клево! Осталось взять отпуск, прикупить свежих карт для навигатора и двинуть в недалекий поход. Эх. мечты-мечты. Хотя, наверное, этот вариант как раз для нынешнего лета. Так что mapsshop.ru для меня ориентир на ближайшие путешествия.
Red Orchestra Ostfront, ч2.
Ну что, продолжим тему игрового сервера RedOrchestra. Дальше речь пойдет способе увеличить посещаемость сервера, причем способом, который не все сочтут достойным. Говоря проще, делаем сервер пиратским. Поэтому саму часть, касающуюся конкретных методов, я переношу в область, доступную только зарегистрированным пользователям.
Небольшое лирическое отступление: Почему я считаю возможным создание пиратского сервера.
Я сторонник существования пиратских серверов. Не потому, что люблю «халяву», у меня есть лицензионная копия Red Orchestra, за такую прекрасную игру 10$ – это пустяк.
Я за создание пиратских серверов потому, что они способствуют популяризации игры как ничто другое. Особенно это касается новых и не «раскрученных» игр. Согласитесь, странно ждать, что человек, особенно в нашей стране, станет выкладывать деньги только чтобы попробовать игру. «Free weekend»-ы решают этот вопрос, но их катастрофически мало. Для RO такая возможность за прошлый год была всего лишь один раз.
Пиратский же сервер дает возможность распробовать игру, полюбить ее, привыкнуть ней. И если игра понравится, ее обязательно купят, потому что STEAM определенно дает преимущества. Как минимум, систему достижений («achievements «).
В качестве подтверждения моих слов, приведу примером сервер Day of Defeat Source, который не так давно стоял на месте сервера RO. Его история такова, что набрался определенный контингент людей, играющих на нем постоянно. В те времена сервер был пиратским, что, конечно же, сопровождалось рядом проблем (наличие читеров, которых сложно надолго забанить, постоянное отставание от системы обновлений и т.д.). Со временем, по общему решению основных игроков, сервер был переведен на лицензию, то есть потерял статус пиратского. И практически все игроки купили лицензию! Конечно же, у них появилась возможность играть и на других серверах, сражаться с тысячами соперников во всем мире. Стим! Но спасибо «пиратке» :)
Итак, собственно задача.

……..серое дополнение…………
В каждом городе есть своя доска объявлений. И если вам нужно что-то купить в саратове, то лучше места для поиска, чем sarbb.ru просто не найти.
Существуют отличные сервисы для тех, кто спешит. Вот берут вас на работу, а нужна сен.книжка прямо сейчас. Обращайтесь к хорошим людям, они помогут оформить санитарную книжку за один день и много чего еще.
Просто дать объявление мало. Нужно еще и выбрать место, где его разместить. Если хотите эффективной отдачи, обращайтесь на сайт dorus.ru
Youtube на Egreat`ах
Долго не решался опубликовать этот плагин здесь, но наконец-то решился. Почему бы и нет, если на самом networkedmediaank.com он давно уже лежит. Может и на родных просторах кому-нибудь пригодится.
Начало:
Изначально в прошивках всех сетевых плееров Egreat или, точнее, на портале mcp был интерфейс поиска и просмотра видео с Youtube. Все работало и всех устраивало. До некоторых пор. Гугль, вознамерившийся все-таки окупить покупку Ютуба, решил вплотную заняться получением денег с этого сервиса. И, очевидно, это мои догадки, предложил производителям медиатанков платить отчисления за просмотр Ютуба на танках. Народно-китайского производителя Egreat этот вариант не устроил, так как их позиция – неплохие устройства по доступной цене. Соответственно Ютуб был выпилен с mcp-портала. Мы, обладатели медиатанков, лишись возможности смотреть ролики с Ютуба.
Продолжение:
Свято место пусто не бывает, вскоре нашелся добрый человек (Mental на форуме networkedmediatank.com), который сделал страничку-сервис (Youtube Lite), откуда можно было искать и глядеть Ютуб.
Одно время и я нею пользовался, пока не приспичило мне найти записи на русском языке. Клавиатура на танке только английская, других вариантов нет. Тогда я решил сделать свой вариант Ютуба для танков: Youtube lite Reloaded. После откатки на страничке, банами на Ютубе и интересных обсуждений, решено было сделать плагин для танка, благо большинство javascript и php-функций танк умеет.
Сам плагин.
Собственно, все просто:
- русская и английская экранная клавиатура. Работает так же клавиша delete на дистанционке.
- поиск видео вывод все доступные форматы для просмотра, если они есть.
- есть функция воспроизведения всего видео на странице.
- превьюшки видео, рейтинг, число просмотров.
Как это выглядит:
Скачать плагин можно здесь: YTLR
Установить можно с помощью NMT Community Software Installer, выбрав Меню-Файл-Установить из файла.
После установки у вас в Web-сервисах должен появиться пункт YTLR. Заходите туда и пользуйтесь Youtube.
Сервис на страничке полностью идентичен плагину, но лучше использовать плагин, так как сервис периодически попадает в бан.
……..отвлечемся на серое….
Я не профи, так, любитель помучать PHP. Но если вам нужны профессиональное веб-программирование, обращайтесь к специалистам.
Любите свое домашнее животное? Всегда знайте, где есть ближайшая ветеринарная клиника, чтобы вовремя помочь любимцу.
Обустройство дома – одна из главных моих задач на сегодняшний день. Одна из его составляющих – ремонт крыши. Сейчас изучаю различные варианты построения крыш, в том числе устройство мягкой кровли. Подсчитываю стоимость и преимущества.
Red Orchestra Ostfront, ч1.
Начинаю цикл статей, посвященный созданию и администрированию выделенных игровых серверов.
Наша система:
FreeBSD 7.1-STABLE , linux_base-f8-8_11
fstab:
linsys /compat/linux/sys linsysfs rw 0 0 linproc /compat/linux/proc linprocfs rw 0 0
linux_enable="YES"
Установлен Screen.
Итак, установка сервера RO Ostfront.
Скачиваем hldsupdatetool.bin в отдельный каталог, к примеру в ./steam. Сделаем файл исполняемым chmod 777 hldsupdatetool.bin и запустим. В результате получим распакованный steam-клиент.
Дальше можно просмотреть список доступных для установки серверов:
./steam -command list
#!/bin/sh ./steam -command update -game "redorchestra" -dir /store/RO -verify_all
Здесь /store/RO – это пусть установки сервера. Проследите, чтоб он был создан и был доступен для записи.
Делаем его исполняемым и запускаем.
Если соединение нестабильное или сервера Steam заняты, возможны обрывы. Просто запускайте файл установки заново.
По окончанию установки получим готовый сервер. Остается его только настроить и сделать стартовый файл.
Начнем с последнего. Создаем файл запуска сервера, разместив его, к примеру в директории сервера:
cd /store/RO touch start_RO.sh chmod 777 start_RO.sh
Редактируем файл:
cd /store/RO/system /usr/local/bin/screen -A -m -d -S RED-Orchestra ./ucc-bin server ro-tcherkassy.rom?game=ROGame.ROTeamGame -log=RO_Server.log -ini=config.ini -multihome=XXX.XXXX.XXX.XXX -nohomedir sleep 2 echo "server RO started"
Здесь:
- XXX.XXXX.XXX.XXX – ip адрес сервера.
- ro-tcherkassy.rom – карта, с которой будет стартовать сервер.
- config.ini - файл конфигурации сервера.
На последнем и остановимся.
Этот файл создаем, переименовывая файл RO/system/RedOrshestra.ini в config.ini. Его дальше и будем использовать для настройки.
Вот, для образца, мой конфиг сервера:
[URL] Protocol=RedOrchestra ProtocolDescription=RedOrchestra Protocol Name=ROSoldier Map=Index.rom LocalMap=ROintro.rom NetBrowseMap=Entry.rom Host= Portal= MapExt=rom EXEName=RedOrchestra.exe SaveExt=usa Port=7757 Class=Engine.Pawn Character=Gorge [FirstRun] FirstRun=0 [Engine.Engine] RenderDevice=D3D9Drv.D3D9RenderDevice ;RenderDevice=D3DDrv.D3DRenderDevice ;RenderDevice=Engine.NullRenderDevice ;RenderDevice=OpenGLDrv.OpenGLRenderDevice ;RenderDevice=PixoDrv.PixoRenderDevice AudioDevice=ALAudio.ALAudioSubsystem NetworkDevice=IpDrv.TcpNetDriver DemoRecordingDevice=Engine.DemoRecDriver Console=ROInterface.ROConsole GUIController=ROInterface.ROGUIController StreamPlayer=Engine.StreamInteraction Language=int Product=RedOrchestra GameEngine=Engine.GameEngine EditorEngine=Editor.EditorEngine DefaultGame=ROGame.ROTeamGame DefaultServerGame=ROGame.ROTeamGame ViewportManager=WinDrv.WindowsClient ;ViewportManager=SDLDrv.SDLClient Render=Render.Render Input=Engine.Input Canvas=Engine.Canvas DetectedVideoMemory=0 ServerReadsStdin=False [Core.System] PurgeCacheDays=30 SavePath=..\Save CachePath=../Cache CacheExt=.uxx CacheRecordPath=../System/*.ucl MusicPath=../Music SpeechPath=../Speech Paths=../System/*.u Paths=../Maps/*.rom Paths=../Textures/*.utx Paths=../Sounds/*.uax Paths=../Music/*.umx Paths=../StaticMeshes/*.usx Paths=../Animations/*.ukx Paths=../Saves/*.uvx Suppress=DevLoad Suppress=DevSave Suppress=DevNetTraffic Suppress=DevGarbage Suppress=DevKill Suppress=DevReplace Suppress=DevCompile Suppress=DevBind Suppress=DevBsp Suppress=DevNet Suppress=DevLIPSinc Suppress=DevKarma Suppress=RecordCache Suppress=MapVoteDebug Suppress=Init suppress=MapVote Suppress=VoiceChat Suppress=ChatManager Suppress=Timer Paths=../Textures/Old2k4/*.utx Paths=../Sounds/Old2k4/*.uax Paths=../Music/Old2k4/*.umx Paths=../StaticMeshes/Old2k4/*.usx Paths=../Animations/Old2k4/*.ukx Paths=../KarmaData/Old2k4/*.ka [Engine.GameEngine] CacheSizeMegs=32 UseSound=True VoIPAllowVAD=False ServerActors=IpDrv.MasterServerUplink ServerActors=UWeb.WebServer ;ServerActors=ServerColor.ServerColorActor ServerPackages=Core ServerPackages=Engine ServerPackages=Fire ServerPackages=Editor ServerPackages=IpDrv ServerPackages=UWeb ServerPackages=GamePlay ServerPackages=UnrealGame ServerPackages=XGame ServerPackages=XInterface ServerPackages=GUI2K4 ServerPackages=xVoting ;ServerPackages=OnslaughtBP UseStaticMeshBatching=True ColorHighDetailMeshes=False ColorSlowCollisionMeshes=False ColorNoCollisionMeshes=False ColorWorldTextures=False ColorPlayerAndWeaponTextures=False ColorInterfaceTextures=False MainMenuClass=ROInterface.ROMainMenu ConnectingMenuClass=ROInterface.ROServerLoading DisconnectMenuClass=ROInterface.RONetworkStatusMessage LoadingClass=ROInterface.ROServerLoading ServerPackages=ROEffects ServerPackages=ROEngine ServerPackages=ROGame ServerPackages=ROAmmo ServerPackages=ROInventory ServerPackages=ROInterface ServerPackages=RORoles ServerPackages=AHZ_ROVehicles ServerPackages=ROCustom [WinDrv.WindowsClient] WindowedViewportX=640 WindowedViewportY=480 FullscreenViewportX=800 FullscreenViewportY=600 MenuViewportX=640 MenuViewportY=480 Brightness=0.800000 Contrast=0.700000 Gamma=0.800000 UseJoystick=False CaptureMouse=True StartupFullscreen=True ScreenFlashes=True NoLighting=False MinDesiredFrameRate=35.000000 AnimMeshDynamicLOD=0.0 Decals=True Coronas=True DecoLayers=True Projectors=True NoDynamicLights=False ReportDynamicUploads=False TextureDetailInterface=Normal TextureDetailTerrain=Normal TextureDetailWeaponSkin=Normal TextureDetailPlayerSkin=Normal TextureDetailWorld=Normal TextureDetailRenderMap=Normal TextureDetailLightmap=UltraHigh NoFractalAnim=False ScaleHUDX=0.0 MouseXMultiplier=1.000 MouseYMultiplier=1.000 UseSpeechRecognition=True WeatherEffects=True DrawDistanceLOD=1.0 [SDLDrv.SDLClient] WindowedViewportX=640 WindowedViewportY=480 FullscreenViewportX=800 FullscreenViewportY=600 MenuViewportX=640 MenuViewportY=480 Brightness=0.800000 Contrast=0.700000 Gamma=0.800000 UseJoystick=False JoystickNumber=0 IgnoreHat=False JoystickHatNumber=0 CaptureMouse=True StartupFullscreen=True ScreenFlashes=True NoLighting=False MinDesiredFrameRate=35.000000 AnimMeshDynamicLOD=0.0 Decals=True Coronas=True DecoLayers=True Projectors=True NoDynamicLights=False ReportDynamicUploads=False TextureDetailInterface=Normal TextureDetailTerrain=Normal TextureDetailWeaponSkin=Normal TextureDetailPlayerSkin=Normal TextureDetailWorld=Normal TextureDetailRenderMap=Normal TextureDetailLightmap=UltraHigh TextureMaxLOD=0 TextureMinLOD=0 NoFractalAnim=False WeatherEffects=True DrawDistanceLOD=1.0 IgnoreUngrabbedMouse=False AllowUnicodeKeys=False AllowCommandQKeys=True MacFakeMouseButtons=True MacKeepAllScreensOn=False TextToSpeechFile= MacNativeTextToSpeech=True [ALAudio.ALAudioSubsystem] UseEAX=False Use3DSound=False UseDefaultDriver=True CompatibilityMode=False MaxEAXVersion=255 UsePrecache=True ReverseStereo=False Channels=32 MusicVolume=0.10000 AmbientVolume=0.500000 SoundVolume=0.30000 VoiceVolume=4.000000 VolumeScaleRec=0.100000 DopplerFactor=1.0 Rolloff=0.5 TimeBetweenHWUpdates=15 DisablePitch=False LowQualitySound=False UseVoIP=True UseVAD=False UseSpatializedVoice=False SpatializedVoiceRadius=100000 EnhancedDenoiser=False LocalZOffset=0.0 DampenWithVoIP=False [IpDrv.TcpNetDriver] AllowDownloads=True ConnectionTimeout=30.0 InitialConnectTimeout=200.0 AckTimeout=1.0 KeepAliveTime=0.2 MaxClientRate=15000 MaxInternetClientRate=10000 SimLatency=0 RelevantTimeout=5.0 SpawnPrioritySeconds=1.0 ServerTravelPause=4.0 NetServerMaxTickRate=20 LanServerMaxTickRate=35 DownloadManagers=IpDrv.HTTPDownload DownloadManagers=Engine.ChannelDownload AllowPlayerPortUnreach=False LogPortUnreach=False MaxConnPerIPPerMinute=5 LogMaxConnPerIPPerMin=False [IpServer.UdpServerQuery] GameName=rom [IpDrv.MasterServerUplink] DoUplink=True UplinkToGamespy=True SendStats=True ServerBehindNAT=False DoLANBroadcast=False [IpDrv.MasterServerLink] LANPort=11757 LANServerPort=10757 [IpDrv.HTTPDownload] RedirectToURL=download_folder_path ProxyServerHost= ProxyServerPort=3128 UseCompression=True [Engine.DemoRecDriver] AllowDownloads=True DemoSpectatorClass=UnrealGame.DemoRecSpectator MaxClientRate=25000 ConnectionTimeout=15.0 InitialConnectTimeout=200.0 AckTimeout=1.0 KeepAliveTime=1.0 SimLatency=0 RelevantTimeout=5.0 SpawnPrioritySeconds=1.0 ServerTravelPause=4.0 NetServerMaxTickRate=30 LanServerMaxTickRate=30 [Engine.GameReplicationInfo] ServerName=Your Server RO:Ostfront ShortName=Your Server ServerRegion=0 AdminName=andrew AdminEmail=adminemail MessageOfTheDay= [D3DDrv.D3DRenderDevice] DetailTextures=True HighDetailActors=True SuperHighDetailActors=True UsePrecaching=True UseTrilinear=True AdapterNumber=-1 ReduceMouseLag=True UseTripleBuffering=False UseHardwareTL=True UseHardwareVS=True UseCubemaps=True DesiredRefreshRate=60 UseCompressedLightmaps=True UseStencil=False Use16bit=False Use16bitTextures=False MaxPixelShaderVersion=255 UseVSync=True LevelOfAnisotropy=1 DetailTexMipBias=0.0 DefaultTexMipBias=-0.5 UseNPatches=False TesselationFactor=1.0 CheckForOverflow=False AvoidHitches=False OverrideDesktopRefreshRate=False ReportUnusedTextures=False [D3D9Drv.D3D9RenderDevice] DetailTextures=True HighDetailActors=True SuperHighDetailActors=True UsePrecaching=True UseTrilinear=True AdapterNumber=-1 ReduceMouseLag=True UseTripleBuffering=False UseHardwareTL=True UseHardwareVS=True UseCubemaps=True DesiredRefreshRate=60 UseCompressedLightmaps=True UseStencil=False Use16bit=False Use16bitTextures=False MaxPixelShaderVersion=255 UseVSync=False LevelOfAnisotropy=1 DetailTexMipBias=0.0 DefaultTexMipBias=-0.5 UseNPatches=False TesselationFactor=1.0 CheckForOverflow=False OverrideDesktopRefreshRate=False [OpenGLDrv.OpenGLRenderDevice] DetailTextures=True HighDetailActors=True SuperHighDetailActors=True UsePrecaching=True UseCompressedLightmaps=True UseTrilinear=True UseStencil=False MaxTextureUnits=8 VARSize=32 ReduceMouseLag=True UseVSync=False LevelOfAnisotropy=1.0 DetailTexMipBias=0.0 DefaultTexMipBias=-0.5 UseVBO=False UseVSync=False AppleVA=1 MultisampleBuffers=0 MultisampleSamples=0 MultisampleHint=2 [PixoDrv.PixoRenderDevice] FogEnabled=True Zoom2X=True SimpleMaterials=True LimitTextureSize=True LowQualityTerrain=True TerrainLOD=10 SkyboxHack=True FilterQuality3D=1 FilterQualityHUD=1 HighDetailActors=False SuperHighDetailActors=False ReduceMouseLag=False DesiredRefreshRate=0 DetailTexMipBias=0.000000 Use16bitTextures=False Use16bit=True UseStencil=False UseCompressedLightmaps=False DetailTextures=False UsePrecaching=True [Engine.NullRenderDevice] DetailTextures=True HighDetailActors=True SuperHighDetailActors=True UsePrecaching=True UseCompressedLightmaps=True UseStencil=False [Editor.EditorEngine] UseSound=True CacheSizeMegs=32 GridEnabled=True SnapVertices=False SnapDistance=1.000000 GridSize=(X=4.000000,Y=4.000000,Z=4.000000) RotGridEnabled=True RotGridSize=(Pitch=1024,Yaw=1024,Roll=1024) GameCommandLine=-log FovAngleDegrees=90.000000 GodMode=True AutoSave=True AutoSaveTimeMinutes=5 AutoSaveIndex=6 UseAxisIndicator=True MatineeCurveDetail=0.1 ShowIntWarnings=False UseSizingBox=True RenderDevice=D3DDrv.D3DRenderDevice AudioDevice=ALAudio.ALAudioSubsystem NetworkDevice=IpDrv.TcpNetDriver DemoRecordingDevice=Engine.DemoRecDriver Console=Engine.Console Language=ute AlwaysShowTerrain=False UseActorRotationGizmo=False LoadEntirePackageWhenSaving=0 EditPackages=Core EditPackages=Engine EditPackages=Fire EditPackages=Editor EditPackages=UnrealEd EditPackages=IpDrv EditPackages=UWeb EditPackages=GamePlay EditPackages=UnrealGame EditPackages=XGame EditPackages=XInterface EditPackages=XAdmin EditPackages=XWebAdmin EditPackages=GUI2K4 EditPackages=xVoting EditPackages=UTV2004c EditPackages=UTV2004s EditPackages=ROEffects EditPackages=ROEngine EditPackages=ROGame EditPackages=ROAmmo EditPackages=ROInventory EditPackages=ROInterface EditPackages=RORoles EditPackages=ROVehicles CutdownPackages=Core CutdownPackages=Editor CutdownPackages=Engine CutdownPackages=Fire CutdownPackages=GamePlay CutdownPackages=GUI2K4 CutdownPackages=IpDrv CutdownPackages=Onslaught CutdownPackages=UnrealEd CutdownPackages=UnrealGame CutdownPackages=UWeb CutdownPackages=XAdmin CutdownPackages=XEffects CutdownPackages=XInterface CutdownPackages=XPickups CutdownPackages=XWebAdmin CutdownPackages=XVoting [UWeb.WebServer] Applications[0]=xWebAdmin.UTServerAdmin ApplicationPaths[0]=/ServerAdmin Applications[1]=xWebAdmin.UTImageServer ApplicationPaths[1]=/images bEnabled=True ListenPort=8075 [Engine.Console] ConsoleHotKey=9 TimePerTitle=30.0 TimePerDemo=60.0 TimePerSoak=3600.0 TimeTooIdle=60.0 DemoLevels[0]=DM-Curse3 DemoLevels[1]=DM-Antalus DemoLevels[2]=CTF-Chrome DemoLevels[3]=DOM-SunTemple DemoLevels[4]=BR-Endagra [Engine.AccessControl] AdminPassword=****** GamePassword= bBanByID=True LoginDelaySeconds=200.000000 IPPolicies=ACCEPT;* [Engine.GameInfo] GoreLevel=2 MaxSpectators=2 MaxPlayers=42 AutoAim=1.000000 GameSpeed=1.000000 bChangeLevels=True bStartUpLocked=False bNoBots=False bAttractAlwaysFirstPerson=False NumMusicFiles=13 bEnableStatLogging=False HUDType=Engine.Hud MaxLives=0 TimeLimit=0 GoalScore=0 GameStatsClass=IpDrv.MasterServerGameStats SecurityClass=UnrealGame.UnrealSecurity ;AccessControlClass=Engine.AccessControl AccessControlClass=XAdmin.AccessControlIni VotingHandlerType=xVoting.xVotingHandler MaxIdleTime=0.000000 bVACSecured=False bAllowBehindView=False bAdminCanPause=False bWeaponShouldViewShake=True bLowGore=False bLargeGameVOIP=False GameDifficulty=5.000000 MaplistHandlerType= ServerSkillLevel= bIgnore32PlayerLimit=True [Engine.AmbientSound] AmbientVolume=0.25 [Engine.LevelInfo] PhysicsDetailLevel=PDL_Medium MeshLODDetailLevel=MDL_Ultra bLowSoundDetail=False DecalStayScale=1.0 bNeverPrecache=false TimeMarginSlack=1.35 MaxClientFrameRate=+90.0 [XInterface.ExtendedConsole] ConsoleHotKey=192 NeedPasswordMenuClass=GUI2K4.UT2K4GetPassword bSpeechMenuUseMouseWheel=True bSpeechMenuUseLetters=False SMOriginX=0.01 SMOriginY=0.3 LetterKeys[0]=IK_Q LetterKeys[1]=IK_W LetterKeys[2]=IK_E LetterKeys[3]=IK_R LetterKeys[4]=IK_A LetterKeys[5]=IK_S LetterKeys[6]=IK_D LetterKeys[7]=IK_F LetterKeys[8]=IK_Z LetterKeys[9]=IK_X MusicManagerClassName=GUI2K4.StreamPlayer [XGame.xDeathMatch] HUDType=XInterface.HudBDeathMatch MaxLives=0 TimeLimit=20 GoalScore=25 bTeamScoreRound=False bPlayersMustBeReady=False bAllowTaunts=True bForceRespawn=False bWeaponStay=true [XGame.xTeamGame] HUDType=XInterface.HudBTeamDeathMatch MaxLives=0 TimeLimit=20 GoalScore=60 bTeamScoreRound=False bPlayersMustBeReady=False bAllowTaunts=True FriendlyFireScale=0 MaxTeamSize=16 bForceRespawn=False bWeaponStay=true [XGame.xCTFGame] HUDType=XInterface.HudBCaptureTheFlag MaxLives=0 TimeLimit=20 GoalScore=3 bTeamScoreRound=False bPlayersMustBeReady=False bAllowTaunts=True FriendlyFireScale=0 MaxTeamSize=16 bForceRespawn=False bWeaponStay=true [XGame.xDoubleDom] HUDType=XInterface.HudBDoubleDomination MaxLives=0 TimeLimit=20 GoalScore=3 bTeamScoreRound=False bPlayersMustBeReady=False bAllowTaunts=True TimeToScore=10 TimeDisabled=10 FriendlyFireScale=0 MaxTeamSize=16 bForceRespawn=False bWeaponStay=true [XGame.xBombingRun] HUDType=XInterface.HudBBombingRun MaxLives=0 TimeLimit=20 GoalScore=15 bTeamScoreRound=False bPlayersMustBeReady=False bAllowTaunts=True FriendlyFireScale=0 MaxTeamSize=16 bForceRespawn=False bWeaponStay=true [Engine.MaplistManager] Games=(GameType="BonusPack.xLastManStandingGame",ActiveMaplist="Default LMS") Games=(GameType="BonusPack.xMutantGame",ActiveMaplist="Default MUT") Games=(GameType="Onslaught.ONSOnslaughtGame",ActiveMaplist="Default ONS") Games=(GameType="SkaarjPack.Invasion",ActiveMaplist="Default INV") Games=(GameType="UT2k4Assault.ASGameInfo",ActiveMaplist="Default AS") Games=(GameType="XGame.xBombingRun",ActiveMaplist="Default BR") Games=(GameType="XGame.xCTFGame",ActiveMaplist="Default CTF") Games=(GameType="XGame.xDeathMatch",ActiveMaplist="Default DM") Games=(GameType="XGame.xDoubleDom",ActiveMaplist="Default DOM2") Games=(GameType="XGame.xTeamGame",ActiveMaplist="Default TDM") Games=(GameType="XGame.xVehicleCTFGame",ActiveMaplist=) Games=(GameType="ROEngine.ROTeamGame",ActiveMaplist="Default RO") [XInterface.MapListDeathMatch] MapNum=0 Maps=DM-RRAJIGAR Maps=DM-RANKIN Maps=DM-CORRUGATION Maps=DM-DE-GRENDELKEEP Maps=DM-DE-IRONIC Maps=DM-DE-OSIRIS2 Maps=DM-GESTALT Maps=DM-IRONDEITY Maps=DM-METALLURGY Maps=DM-Deck17 Maps=DM-Antalus Maps=DM-Asbestos Maps=DM-Curse4 [XInterface.MapListTeamDeathMatch] MapNum=0 Maps=DM-RRAJIGAR Maps=DM-RANKIN Maps=DM-CORRUGATION Maps=DM-DE-GRENDELKEEP Maps=DM-DE-IRONIC Maps=DM-DE-OSIRIS2 Maps=DM-GESTALT Maps=DM-IRONDEITY Maps=DM-METALLURGY Maps=DM-Deck17 Maps=DM-Antalus Maps=DM-Asbestos Maps=DM-Curse4 [XInterface.MapListCaptureTheFlag] MapNum=0 Maps=CTF-ABSOLUTEZERO Maps=CTF-MOONDRAGON Maps=CTF-GRASSYKNOLL Maps=CTF-COLOSSUS Maps=CTF-SMOTE Maps=CTF-DOUBLEDAMMAGE Maps=CTF-AVARIS Maps=CTF-BRIDGEOFFATE Maps=CTF-FaceClassic Maps=CTF-CHROME Maps=CTF-Citadel Maps=CTF-Orbital2 [DefaultRO MaplistRecord] DefaultTitle=Default RO DefaultGameType=ROEngine.ROTeamGame DefaultActive=3 ;DefaultMaps=ro-blackdayjuly DefaultMaps=ro-fallenheroes DefaultMaps=RO-KrivoiRog DefaultMaps=ro-danzig DefaultMaps=ro-arad DefaultMaps=ro-barashka DefaultMaps=ro-basovka DefaultMaps=ro-bondarevo DefaultMaps=ro-hedgehog DefaultMaps=ro-kaukasus DefaultMaps=RO-KrasnyiOktyabr DefaultMaps=ro-ogledow DefaultMaps=ro-odessa DefaultMaps=ro-stalingradkessel DefaultMaps=RO-Konigsplatz DefaultMaps=ro-rakowice DefaultMaps=ro-baksanvalley DefaultMaps=ro-berezina DefaultMaps=ro-kryukovo DefaultMaps=ro-kurlandkessel DefaultMaps=ro-leningrad DefaultMaps=ro-mannikkala DefaultMaps=ro-smolenskstalemate DefaultMaps=ro-tcherkassy DefaultMaps=RO-TulaOutskirts DefaultMaps=RO-Zhitomir1941 DefaultMaps=ro-lyeskrovy DefaultMaps=RO-TractorWorks DefaultMaps=RO-Klin_Outerring DefaultMaps=RO-Basovka1941 DefaultMaps=RO-Dzerzhinsky1942 DefaultMaps=RO-Elnya DefaultMaps=RO-Elnya1941 DefaultMaps=RO-Klin1941 DefaultMaps=RO-Lazur1942 DefaultMaps=RO-Warsaw1945 DefaultMaps=RO-Zhitomir_1943 DefaultMaps=RO-Dom_Pavlova DefaultMaps=RO-KrasnyBor1943 DefaultMaps=RO-Bahnhof-Bad-Muskau-Final-even3 DefaultMaps=RO-BeachAssaultII_RC DefaultMaps=RO-Berezina_1941 DefaultMaps=RO-Berlin DefaultMaps=RO-Bialystok DefaultMaps=RO-Bocklin DefaultMaps=RO-Budapest DefaultMaps=RO-Code_Enigma1944_End DefaultMaps=RO-Dubrava DefaultMaps=RO-EnemyAtTheGates2 DefaultMaps=RO-Entweichen DefaultMaps=RO-Factory_II_B2 DefaultMaps=RO-Gorlitz_beta3 DefaultMaps=RO-GrainSilo_Tankassault_b2 DefaultMaps=RO-Halbe DefaultMaps=RO-Hill_Flak88 DefaultMaps=RO-Hochburg1943 DefaultMaps=RO-JD10 DefaultMaps=RO-KoitosK1 DefaultMaps=RO-Makhnovo DefaultMaps=RO-Mga_b3 DefaultMaps=RO-Ponyri_beta3 DefaultMaps=RO-Riga_Docks(Beta2) DefaultMaps=RO-RoadToHill_combined_F DefaultMaps=RO-Roadblock_S&D DefaultMaps=RO-Soviasky_MCP1 DefaultMaps=RO-ValleyOfDeath_50_B2 DefaultMaps=RO-Vidzeme DefaultMaps=RO-Zavod DefaultMaps=RO-Zhitomirrevenge [ROInterface.ROMapList] MapNum=3 ;Maps=ro-blackdayjuly Maps=ro-fallenheroes Maps=RO-KrivoiRog Maps=ro-danzig Maps=ro-arad Maps=ro-barashka Maps=ro-basovka Maps=ro-bondarevo Maps=ro-hedgehog Maps=ro-kaukasus Maps=RO-KrasnyiOktyabr Maps=ro-ogledow Maps=ro-odessa Maps=ro-stalingradkessel Maps=RO-Konigsplatz Maps=ro-rakowice Maps=ro-baksanvalley Maps=ro-berezina Maps=ro-kryukovo Maps=ro-kurlandkessel Maps=ro-leningrad Maps=ro-mannikkala Maps=ro-smolenskstalemate Maps=ro-tcherkassy Maps=RO-TulaOutskirts Maps=RO-Zhitomir1941 Maps=ro-lyeskrovy Maps=RO-TractorWorks Maps=RO-Klin_Outerring Maps=RO-Basovka1941 Maps=RO-Dzerzhinsky1942 Maps=RO-Elnya Maps=RO-Elnya1941 Maps=RO-Klin1941 Maps=RO-Lazur1942 Maps=RO-Warsaw1945 Maps=RO-Zhitomir_1943 Maps=RO-Dom_Pavlova Maps=RO-KrasnyBor1943 Maps=RO-Bahnhof-Bad-Muskau-Final-even3 Maps=RO-BeachAssaultII_RC Maps=RO-Berezina_1941 Maps=RO-Berlin Maps=RO-Bialystok Maps=RO-Bocklin Maps=RO-Budapest Maps=RO-Code_Enigma1944_End Maps=RO-Dubrava Maps=RO-EnemyAtTheGates2 Maps=RO-Entweichen Maps=RO-Factory_II_B2 Maps=RO-Gorlitz_beta3 Maps=RO-GrainSilo_Tankassault_b2 Maps=RO-Halbe Maps=RO-Hill_Flak88 Maps=RO-Hochburg1943 Maps=RO-JD10 Maps=RO-KoitosK1 Maps=RO-Makhnovo Maps=RO-Mga_b3 Maps=RO-Ponyri_beta3 Maps=RO-Riga_Docks(Beta2) Maps=RO-RoadToHill_combined_F Maps=RO-Roadblock_S&D Maps=RO-Soviasky_MCP1 Maps=RO-ValleyOfDeath_50_B2 Maps=RO-Vidzeme Maps=RO-Zavod Maps=RO-Zhitomirrevenge [ROEngine.ROTeamGame] WinLimit=2 RoundLimit=3 TimeLimit=0 PreStartTime=0 DeathMessageMode=DM_All FFPunishment=FFP_Kick FriendlyFireScale=1.000000 FFKillLimit=4 FFDamageLimit=800 FFArtyScale=0.200000 FFExplosivesScale=0.500000 bSpectateFirstPersonOnly=False bSpectateLockedBehindView=False bSpectateAllowViewPoints=True bSpectateAllowRoaming=True bSpectateAllowDeadRoaming=False bSpectateBlackoutWhenDead=True bSpectateBlackoutWhenNotViewingPlayers=False bAllowNonTeamChat=False MaxTeamDifference=5 MaxPlayersOverride=42 bForgiveFFKillsEnabled=True bShowServerIPOnScoreboard=True bShowTimeOnScoreboard=True bAutoBalanceTeamsOnDeath=False NetWait=2 bForceRespawn=False bAdjustSkill=True bAllowTaunts=False bAllowTrans=False SpawnProtectionTime=0.000000 LateEntryLives=1 LoginMenuClass=ROInterface.ROUT2K4PlayerSetupPage bAllowPrivateChat=True bWeaponStay=True bAllowWeaponThrowing=True ResetTimeDelay=0 GoalScore=0 MaxLives=0 [ROEngine.ROWeaponAttachment] WeaponAmbientScale=5.0 [xVoting.xVotingHandler] VoteTimeLimit=70 ScoreBoardDelay=5 bAutoOpen=True MidGameVotePercent=50 bScoreMode=True bAccumulationMode=False bEliminationMode=False MinMapCount=1 MapVoteHistoryType=xVoting.MapVoteHistory_INI RepeatLimit=1 DefaultGameConfig=0 bDefaultToCurrentGameType=True bMapVote=True bKickVote=True bMatchSetup=False KickPercent=25 bAnonymousKicking=True MapListLoaderType=xVoting.DefaultMapListLoader ServerNumber=1 CurrentGameConfig=0 GameConfig=(GameClass="ROEngine.ROTeamGame",Prefix="RO",Acronym="RO",GameName="Red Orchestra",Mutators="UTV2004S.utvMutator",Options=) GameConfig=(GameClass="ROEngine.ROTeamGame",Prefix=,Acronym=,GameName="new",Mutators=,Options=) [xVoting.DefaultMapListLoader] bUseMapList=true MapNamePrefixes=RO [UnrealGame.TeamGame] bBalanceTeams=False bPlayersBalanceTeams=True [ROFirstRun] ROFirstRun=1086 [IpDrv.UdpGamespyQuery] MinNetVer=0 OldQueryPortNumber=7767 bRestartServerOnPortSwap=True bDebugPortSwaps=True [UnrealGame.DeathMatch] MinNetPlayers=1 RestartWait=0 bTournament=False bAutoNumBots=True bColoredDMSkins=False bPlayersMustBeReady=True bWaitForNetPlayers=True bAllowPlayerLights=False bForceDefaultCharacter=False NamePrefixes[0]=Mr_ NamePrefixes[1]=b NamePrefixes[2]=The_Real_ NamePrefixes[3]=Evil_ NamePrefixes[4]=b NamePrefixes[5]=Owns_ NamePrefixes[6]=b NamePrefixes[7]=Evil_ NamePrefixes[8]=b NamePrefixes[9]=b NameSuffixes[0]=b NameSuffixes[1]=_is_lame NameSuffixes[2]=b NameSuffixes[3]=b NameSuffixes[4]=_sucks NameSuffixes[5]=b NameSuffixes[6]=_OwnsYou NameSuffixes[7]=b NameSuffixes[8]=_jr NameSuffixes[9]='s_clone [UnrealGame.UnrealMPGameInfo] BotMode=2 MinPlayers=20 EndTimeDelay=0.000000 BotRatio=1.000000 [Engine.VoiceChatReplicationInfo] bEnableVoiceChat=True bAllowLocalBroadcast=True MaxChatters=0 LocalBroadcastRange=1000.000000 DefaultBroadcastRadius=20.000000 VoIPInternetCodecs=CODEC_48NB VoIPLANCodecs=CODEC_48NB VoIPLANCodecs=CODEC_96WB [Engine.BroadcastHandler] bMuteSpectators=False bPartitionSpectators=True [XAdmin.AccessControlIni] PrivClasses=Class'XAdmin.xKickPrivs' PrivClasses=Class'XAdmin.xGamePrivs' PrivClasses=Class'XAdmin.xUserGroupPrivs' PrivClasses=Class'XAdmin.xExtraPrivs'
Что в нем нужно изменить:
Для начала меняем название в секции [Engine.GameReplicationInfo]
ServerName=Имя сервера полное
ShortName=Имя сервера
ServerRegion=0
AdminName=ник админа
AdminEmail=почта админа
MessageOfTheDay=информация о сервере (видно при нажатии F2 в игре)
Включаем web-интерфейс администрирования в секции [UWeb.WebServer]
bEnabled=True
ListenPort=8075
Устанавливаем пароль админа в секции [Engine.AccessControl]
AdminPassword=Пароль
Добавляем ботов в игру, если нужно в [UnrealGame.UnrealMPGameInfo]
BotMode=2 MinPlayers=20
После этого можно запустить, посмотреть, как работает сервер. Зайти в веб-админку с именем и паролем, указанным в конфиге.
Дополнительные админы:
Если нужно большее количество админов, чем один. то в секции [Engine.GameInfo] делаем так
;AccessControlClass=Engine.AccessControl
AccessControlClass=XAdmin.AccessControlIni
Дальше можно зайти в админку с именем и паролем, указанным в файле xadmin.ini (создается автоматически)
Там настроить свои права и права дополнительных админов.
Быстрое скачивание карт с сервера:
В секции [IpDrv.HTTPDownload] указываем
RedirectToURL=полный урл к папке с картами
не забываем про завершающий слеш! К примеру http://someserver.com/files/ro/
Далее:
идем в папку RO/system
и сжимаем нужные файлы:
ucc-bin compress /полный путь к папке с файлами/* -nohomedir
Получившиеся в результате этого файлы uz2 переносим в папку http://someserver.com/files/ro/
Эта процедура имеет смысл для карт, текстур, звуков. Скорость скачивания вырастает в разы.
Команды администрирования в игре:
- ADMIN MAP [map name]
- ADMIN SWITCHLEVEL [mapname?game= gametype?mutator= mutator] – (Changes the current level to the specified level, game type, and mutators)
- ADMIN [command] – (to use other commands not in this section)
- ADMINLOGIN [name] [password] – (Logs the administrator onto the server using the specified password) ADMINLOGOUT
- ADMIN KICK [playername]
- ADMIN KICKBAN [playername]
- ADMIN RESETGAME (resets the map to beginning values)
- ADMIN RESTARTMAP (completely reloads the map up again) LISTPLAYERS (gives a list of all players with hash id and player number to kick someone with a weird name you can use admin kick 2, if the number of the annoying person is 2)
На этом пока все, если будут вопросы, задавайте.
….ну и немного серого….
Экстравагантная поисковая раскрутка сайта на сайте seogive.me. Быстро, эффектно и эффективно!
Болельщики всего мира могут сделатьставки на чемпионат и получить выигрыш. Тотализатор – совмести удовольствие с пользой!
Не оставь свое любимое домашнее животное без присмотра. Своевременный вызов ветеринара на дом – гарантия удовольствия от общения с любимцем.
ААААЫЫЫЫУУУУ!!!
Казалось бы, зачем столько эмоций? А потому, что мне прислали приглашение на бета-тест STARCRAFT2 !!!
Без сомнения, самая лучшая стратегия нескольких десятилетий, наконец-то приблизилась к финалу. Первую часть из трилогии Starcraft2 (Wings of Liberty)обещают на середину лета.
Я попал во вторую волну раздачи ключей бета-тестерам. Первая волна была в конце прошлого года и с тех было внесено десятки исправления в баланс игры. Искренне верю, что столь долгая подготовка к финалу – это повод к очередному шедевру с 1998 года, когда был выпущен Starcraft:broodwar.
Игра – шахматы, игра – разминка мозга, игра – страсть. Эпитетов и ярлыков можно клеить много, но, вне всяких сомнений, шедевр в своем роде – это однозначно.
Что же, теперь есть возможность насладиться новой игрой официально.
Еще раз поздравляю себя!
…….немного серого……
Пусть не в тему, но нужный ресурс для блогов: плагины для WordPress. Мощь и гибкость WordPress`а по-настоящему выражается в его плагинах. Улучшайте свой блог!









