;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL

Topo

Hackers em R6 estão fazendo Zigueira desistir do jogo: "Estou jogando CS"

Aposentado, Zigueira tem jogado pouco Rainbow Six Siege - Divulgação/Rainbow Six Esports Brasil
Aposentado, Zigueira tem jogado pouco Rainbow Six Siege Imagem: Divulgação/Rainbow Six Esports Brasil

Bruno Izidro

Do START, em São Paulo

20/08/2019 17h00

Leo "Zigueira" Duarte não consegue mais se divertir jogando "Rainbow Six Siege", mas não é por causa da aposentadoria do cenário competitivo anunciada em maio deste ano. Zigueira, um dos principais nomes de "R6" no Brasil, está bastante frustrado por causa dos hackers no game de tiro.

"Agora que eu queria me divertir jogando 'Rainbow Six' do jeito que eu quero, eu não consigo por causa desses hackers", revela o campeão mundial de R6 em entrevista ao START. "Por causa disso o jogo está morrendo".

Entre as trapaças, a que deixa Zigueira mais inconformado é quando um jogador usa o "hack" de ficar invisível e mata todo mundo ainda na fase de preparação. "Tá impossível jogar (partidas) ranqueadas, precisa melhorar muito isso", comenta. Em alguns vídeos compartilhados por jogadores, também é possível ver casos de "cheaters" dando saltos gigantescos pelo mapa para ganhar uma vantagem de visão sobre os oponentes.

Casos assim têm acontecido tanto nos últimos meses que Zigueira está deixando de lado o game que o consagrou e preferindo outros jogos de tiro.

Hoje eu estou jogando mais Counter-Strike
Zigueira, ex-jogador profissional de Rainbow Six Siege

"Eu estou jogando CS junto com o (youtuber e streamer) Alê (TheDarkness) direto, mas eu sinto saudades do "Rainbow Six", só que quando pego pra jogar, a gente acaba se deparando com hackers".

Depois da aposentadoria, Zigueira começou a se dedicar mais à sua carreira de streamer, ainda pela Team Liquid, organização em que ele foi campeão mundial na Pro League Season 7, em 2018. Uma rápida ada em seu canal mostra que "Counter-Strike" está cada vez mais presente.

Zigueira - Divulgação/Rainbow Six Esports Brasil - Divulgação/Rainbow Six Esports Brasil
Zigueira fez uma carreira de sucesso jogando R6 profissionalmente
Imagem: Divulgação/Rainbow Six Esports Brasil

Jogadores que usam hacks para ganhar vantagens em jogos competitivos online não são novidade, e "Rainbow Six" não é a primeira vítima. Mas a situação fica mais grave quando envolve partidas ranqueadas, onde a pontuação é coisa séria. E, no caso de "R6", Zigueira não está reclamando sozinho.

"(R6) é um jogo muito bom, tem um potencial enorme, mas não tô mais conseguindo me divertir", diz Zigueira. "A Ubisoft precisa consertar isso o mais rápido possível".

Ubisoft responde

Procurada pelo START, a Ubisoft afirmou que "está ciente do problema" e do quanto essas trapaças prejudicam a competitividade. Por fim, ela diz que está tomando medidas para melhorar a experiência dos jogadores de "R6".

Leia a nota completa abaixo:

"A Ubisoft está ciente do problema e conta com um time de desenvolvimento que está trabalhando em soluções que combatam esses tipos de mecanismos para obter vantagens e trapacear dentro do jogo, que prejudicam a competitividade. As medidas necessárias estão sendo tomadas para que os jogadores tenham sempre a melhor experiência dentro do jogo".

SIGA O START NAS REDES SOCIAIS

Twitter: https://twitter.com/start_uol
Instagram: https://www.instagram.com/start_uol/
Facebook: https://www.facebook.com/startuol/
TikTok: http://vm.tiktok.com/Rqwe2g/
Twitch: https://www.twitch.tv/start_uol