Но есть замечательная фраза «Ни для без строчки кода».
Вот и на этих выходных решил устроить мозгу разминку :-)
Люблю я серию 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:
- Massacres That Matter - Part 1 - 'Responsibility To Protect' In Egypt, Libya And Syria
- Massacres That Matter - Part 2 - The Media Response On Egypt, Libya And Syria
- National demonstration: No attack on Syria - Saturday 31 August, 12 noon, Temple Place, London, UK
Комментариев нет:
Отправить комментарий