...

воскресенье, 3 ноября 2013 г.

Авто переподключение к серверу Battlefield 4

На выходных надо отдыхать. Это факт.

Но есть замечательная фраза «Ни для без строчки кода».

Вот и на этих выходных решил устроить мозгу разминку :-)

Люблю я серию Battlefield. Ну вот нравится она мне!


В Battlelog для Battlefield 3 были замечательные очереди на сервер. Нажал и ждешь.

Какого же было мое разочарование, когда я обнаружил, что в четвертой части надо сидеть и жать на кнопку, чтобы поиграть с друзьями.


Первое, что пришло в голову, это простой таймер:




setInterval(function(){var button=document.getElementById('ugm-reconnect'); if(button != null) button.click();},1000);



Жмет на кнопку Reconnect раз в секунду.

Но! Во-первых — это не правильно, потому что грузит браузер и процессор «холостыми» нажатиями, когда мы уже подключились к серверу.

Во-вторых, а что если Dice будут отслеживать таких вот кликеров?


Покопавшись в Dice'овском коде, а у них достаточно продвинутый front-end фреймворк, я нашел там «родные» обработчики.

А конкретно: там есть объект launcher с методом registerForEvent().

Посмотрел, как они сами его используют, и написал вот такой незатейливый код:




// Подписка на ошибки класса generic
launcher.registerForEvent("error.generic", function(event, game, personaId, errorType, errorCode, errorString) {
// Если это ошибка типа "Сервер полон"
if(errorType == "ERR_SERVERCONNECT_SERVERFULL") {
var button = jQuery("#ugm-reconnect");
if(button.length > 0){
// Нажать на кнопку реконнекта со случайной задержкой
setTimeout(function(){
button.click();
},Math.floor((Math.random()*1000)+1000));
}
}
});


Ну а чтобы каждый раз в консоли не писать, я сделал расширения для Chrome и Firefox.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий