Кустарный метод автоподключения к серверам ZoZo

El Daro

Писатель
Staff member
PreScriptum: Если у вас вип, то данную тему можно не читать — она предназначена для тех, кто сталкивается с проблемой переполненных серверов на zo-zo.

Итак, делать было нечего, а поиграть хотелось. Но, как всегда, сервер был забит доверху (понаехали!), а вдобавок к этому на него постоянно пытался подключиться "пятый бэ" из Перу, тем самым лишая возможности вовремя зайти на сервер, даже если пытаться. Как известно, 21 слот на серверах BF/Multitanks создан специально для вип-игроков, но, так как он есть и практически всегда свободен, игра считает, что место на сервере имеется, поэтому обычный способ автоподключения работать не будет. И вот, недолго думая, я написал простенький конфиг для автоподключения, состоящий из одних лишь алиасов и рекурсий (serverbrowser'ом я уже давно не пользуюсь из-за его глючности и неудобства).

Разберём всё по порядку. Во-первых, создаём файл zozo.cfg в папке "d:\...\Left4Dead 2\left4dead2\cfg\" и копируем в него следующий текст:
Код:
// ————————————————————————————————————————————————————————————————————————
// Zo-Zo servers
 
alias "bf1"  "connect 78.139.77.165:27020"      // ZO-ZO.ORG | BLOOD FACTORY #1
alias "bf2"  "connect 78.139.77.165:27022"      // ZO-ZO.ORG | BLOOD FACTORY #2
alias "bf3"  "connect 185.58.206.166:27015"    // ZO-ZO.ORG | BLOOD FACTORY #3
alias "bf4"  "connect 185.58.206.166:27016"    // ZO-ZO.ORG | BLOOD FACTORY #4
alias "bf5"  "connect 148.251.130.211:27015"  // ZO-ZO.ORG | BLOOD FACTORY #5
alias "ml"  "connect 78.139.77.165:27015"      // ZO-ZO.ORG | MULTITANKS VERSUS
 
// AUTOCONNECT
 
// Autoconnect to BLOOD FACTORY #1
alias inf_bf1_on "bf1; wait 600; inf_conn"              // Auto-connect
alias autobf1 "alias inf_conn inf_bf1_on; inf_conn"  // Turns on auto-connect
 
// Autoconnect to BLOOD FACTORY #2
alias inf_bf2_on "bf2; wait 600; inf_conn"              // Auto-connect
alias autobf2 "alias inf_conn inf_bf2_on; inf_conn"  // Turns on auto-connect
 
// Autoconnect to BLOOD FACTORY #3
alias inf_bf3_on "bf3; wait 600; inf_conn"              // Auto-connect
alias autobf3 "alias inf_conn inf_bf3_on; inf_conn"  // Turns on auto-connect
 
// Autoconnect to BLOOD FACTORY #4
alias inf_bf4_on "bf4; wait 600; inf_conn"              // Auto-connect
alias autobf4 "alias inf_conn inf_bf4_on; inf_conn"  // Turns on auto-connect
 
// Autoconnect to BLOOD FACTORY #5
alias inf_bf5_on "bf5; wait 600; inf_conn"              // Auto-connect
alias autobf5 "alias inf_conn inf_bf5_on; inf_conn"  // Turns on auto-connect
 
// Autoconnect to MULTITANKS VERSUS
alias inf_ml_on "ml; wait 600; inf_conn"                // Auto-connect
alias automl "alias inf_conn inf_ml_on; inf_conn"    // Turns on auto-connect
 
bind "pgdn" "alias inf_conn wait"                            // Turns off auto-connect
 
echo ------------------------------------
echo |  Zozo config executed  |
echo ------------------------------------
Теперь в той же папке находим файл autoexec.cfg и вписываем в него следующую строчку:
Код:
exec zozo.cfg

Всё, с этого момента можно заходить в игру и использовать наши новые прелести. Для этого надо в консоли прописать "autobf#", где # — это номер сервера, на который вы хотите подключиться (для MULTITANKS VERSUS это будет выглядеть как "automl"). Например, если вы хотите подключиться на BLOOD FACTORY #2, то в консоли прописываем "autobf2" без кавычек. Казалось бы, теперь можно спокойно пойти пить чай и ждать, когда оно само подключится, но... тут есть одно НО. Так как инструментарий мягко говоря не велик, сделать автоматическим вообще всё у меня не получилось (возможно, это реализуемо с помощью плагинов, но в них я не разбираюсь. Может, кто-то другой знает?).
Суть в том, что каждые 600 тиков (у меня это примерно 4 секунды +-0.1 с — в зависимости от настроек у всех это время может немного различаться) на сервер отправляется запрос коннекта, и если не успеть остановить этот процесс за то время, которое длится пауза, то после отправки следующего запроса уже ПОСЛЕ успешного подключения с предыдущего запроса игра зависнет на загрузке. Остановка этого процесса настроена на клавишу PgDn, но вы можете изменить её как вам удобно на своё усмотрение. PgDn выбрана потому, что до неё проще дотянуться за отведённое время. Можно это время, конечно, и увеличить, но тогда понижаются шансы на успешное подключение (чем дольше ждёшь, тем больше шансов, что успеет подключиться кто-то другой). С другой стороны, можно и уменьшить, чтобы увеличить свои шансы проскочить первым, но тогда повышается опасность получить вечную загрузку, если не успеть вовремя нажать на кнопку. Тут нужна золотая середина, и для каждого она может быть своя. Чтобы изменить время между подключениями, меняем значение wait в каждой строчке, где написано "wait 600". По тому алгоритму, что есть сейчас, подключение произойдёт в течение четырёх секунд после того, как на сервере освободится место.

Но не обошлось и без проблем (которые я пока не решил):
1. Если после успешного подключения данным способом выйти с сервера и запустить автоподключение ещё раз (на любой сервер), оно не сработает (более того, вы получите вечную загрузку и будете плакать в свою подушку). Возможно, решение есть, но я его пока не нашёл. Поэтому придётся перезапускать игру, если вы захотите зайти таким способом повторно. Как я понял, в фоне висит процесс, запущенный прошлым автоподключением, который блокирует новые попытки.
2. Необходимость вручную останавливать эту шарманку в течение нескольких секунд после успешной попытки.
Впрочем, это всё, что можно выделить среди минусов. За две недели тестирования никаких других ошибок или жёстких крашей обнаружено не было.

Далее на видео показан пример использования данного способа. Но так как при съёмке с экрана fps падает примерно в два раза, время между запросами значительно увеличилось (8 с). В обычных же условиях всё будет так, как описано выше.



P.S. Вопрос админам — меня вообще за такое не забанят? За частое отправление connect-запросов то бишь.

P.P.S Ещё одно "но". данный способ не делает вас сверхчеловеком випом и не даёт безграничные возможности. Он всего лишь даёт преимущество перед теми, кто постоянно жмёт кнопку подключения в надежде проскочить первым и избавляет вас от того же самого. Поэтому время, необходимое на то, чтобы всё сработало, различно в зависимости от времени суток и контингента на сервере и может варьироваться от нескольких секунд до нескольких минут. Если на сервере собрались хорошие игроки, вознамерившиеся доиграть кампанию до конца тем составом, который есть, то ждать придётся дольше, чем если вы пытаетесь подключиться ночью на полный нубов сервер.
 

Полотенчик

Пользователь
Например, вас наберется пара десятков или сотен человек и будете бесконечно запросы слать. Разве это не является DDoS-атакой?
 

El Daro

Писатель
Staff member
2016-11-28_20-20-40.png
Эм, я что-то пропустил? Само сообщение уже удалено.
Нет, это не будет DDoS-атакой. Пара десятков или сотен человек — это ничто по сравнению с тем, что и так есть на сервере (даже при условии, что весь этот народ соберётся). К тому же, запросы отправлять надо раз так в сто чаще, чтобы это было похоже на DDoS-атаку. В общем, перуашки с этой задачей справляются гораздо лучше (но тем не менее мой вопрос админам всё ещё открыт).
 

spumer

Администратор
Staff member
P.S. Вопрос админам — меня вообще за такое не забанят? За частое отправление connect-запросов то бишь.
Не забаним. Это не создает ощутимой нагрузки. К нам постоянно идут подключения от десятков игроков. Процесс "отпинывания" у нас оптимизирован. Плюс данный скрипт не так уж прост в использовании, так что на массовое его применение мы не рассчитываем.

+1 за помощь страждущим ;)
 

El Daro

Писатель
Staff member
post_snapback.gif spumer, ну, в принципе, я так и думал — просто хотел убедиться. А есть какие-нибудь соображения по поводу описанных проблем?
Плюс данный скрипт не так уж прост в использовании, так что на массовое его применение мы не рассчитываем.

В использовании он гораздо проще, чем в написании — всего одна команда и одна клавиша. Другое дело, что многим будет лень...

Хех, спасибо на добром слове с:
 

spumer

Администратор
Staff member
А есть какие-нибудь соображения по поводу описанных проблем?
Идей к сожалению нет. Игра явно не рассчитана на повторный вызов connect, так что тут вряд ли получится исправить.
 
Сверху