На выходных надо отдыхать. Это факт.
Но есть замечательная фраза «Ни для без строчки кода».
Вот и на этих выходных решил устроить
Люблю я серию 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.
Автор: M1nstrel