您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
LOCALE: pt-br , en-us . Script para o game: Bloble Online. Versão beta
// ==UserScript== // @name Cherry Blossom // @namespace http://bloble.io/* // @version 0.1 // @description LOCALE: pt-br , en-us . Script para o game: Bloble Online. Versão beta // @author PlayerCB // @license MIT // @match http://bloble.io/* // @icon https://github.com/PlayerCB-000/img/blob/main/images.jpg?raw=true // @connect localhost // ==/UserScript== window.onbeforeunload=function(a){} window.onload = function(){ twttr = undefined; adsbygoogle = undefined; } //VERIFICA STATUS DA CONEXÃO const xhr = new XMLHttpRequest(); const href = window.location.href; const linkGame = `http://bloble.io/`; xhr.open('GET', href); xhr.onprogress = function () { if(xhr.status == 404) window.location.assign(linkGame,linkGame); if(xhr.status !== 200) window.location.assign(href,href); }; xhr.onload = function () { console.log(`STATUS: ${xhr.status}`); if(xhr.status == 404) window.location.assign(linkGame,linkGame); if(xhr.status !== 200) window.location.assign(href,href); }; xhr.send(); //VARIAVEIS window.selBaseSpawn = {load:false,padrao:true,outra:false} let placar = []; let onOffFKA = "off" let onOffDef = "off"; let onOffLag = "off"; let onOffFPB = "off"; let onOffBot = "on" let TecPonto = false; let onOffjointroop = "on"; let onOffantkick = "on"; let onOffPower = "off"; const host = "http://localhost:8080"; const heightPag = window.screen.height; const widthPag = window.screen.width; const tempoTransicao = 1.5; window.sockets = []; window.idBot = 0; window.teclas = JSON.parse(localStorage.getItem("teclas")) //PEGA TECLAS PADRÕES let ArrTeclas = { zoomMin: { keyCode:73, id:0}, zoomMax: { keyCode:79, id:1}, resetaVerybase:{ keyCode:84, id:2}, lag: { keyCode:86, id:3}, def: { keyCode:67, id:4}, tiraInterno: { keyCode:88, id:5}, fullatk: { keyCode:90, id:6}, joinTroop: { keyCode:66, id:7}, JuntaTropa: { keyCode:80, id:8}, selCommander: { keyCode:69, id:9}, selSoldier: { keyCode:81, id:10}, selAll: { keyCode:70, id:11}, upgrade: { keyCode:16, id:12}, speedCam: { keyCode:190,id:13} } //VERIFICA SE TEM UM PADRAO DE TECLAS PERSONALIZADAS SALVAS if(window.teclas == undefined || Object.keys(window.teclas).length<14){ window.teclas = ArrTeclas; localStorage.setItem("teclas",JSON.stringify(ArrTeclas)); console.log("setado no localStorage") } //ANTES DA PAGINA SER TOTALMENTE CARREGADA async function preLoad(){ mainCanvas.focus() let nome = document.getElementsByTagName("title") nome[0].innerText = "Kishi no Meiyo" //ABRIR VARIAS GUIAS DO JOGO NO NAVEGADOR cid = UTILS.getUniqueID(); localStorage.setItem("cid",cid); document.body.style = ` pointer-events: none; cursor: default; ` let suportLoading = document.createElement("div") suportLoading.id = "suportLoading" suportLoading.innerHTML = `CARREGANDO... aguarde<style> div#suportLoading{ width: 100%; font-size: 30px; font-family: fantasy; align-items: center; position: absolute; z-index: 10000; text-align: center; color: #b90000; height: 100%; } </style>` let img = document.createElement("img") img.id = "loading"; img.src = "https://github.com/PlayerX-000/img/blob/main/loading-29.gif?raw=true"; img.innerHTML = `<style> img#loading { width: 15%; height: auto; left: 42%; top: 42%; z-index: 9999; position: fixed; } </style>` suportLoading.appendChild(img) document.body.appendChild(suportLoading) return addCSS() } //FUNÇÕES NATIVAS DO GAME //MENU DA BASE function unlockSkins(){skinInfo.style.display="inline-block";skinSelector.style.display="inline-block";unlockedSkins=!0;hasStorage&&localStorage.setItem("isFollBlob",1)} unlockSkins() //VERIFICA SE UM BOTAO DE UPGRADE DO JOGADOR OU OUTROS USERS FOI PRESSIONADO (EX: BOTAO DE SALVAR E CARREGAR) function handleActiveBaseUpgrade(sid,IDUpgrade) { if (IDUpgrade == 1){ //compra commander } else if (IDUpgrade == 2){ let nome = prompt("Insira um nome para salvar a base") saveBase(sid,nome) } else if (IDUpgrade == 3){ let nome = prompt("Insira o nome de uma base, para poder carregar") loadBase(nome) } } //SALVA A BASE function saveBase(sid,nome='base1'){ const user = users[getUserBySID(sid)]; window.bases=[] units.forEach((unit)=>{ if(unit.owner===user.sid && unit.type!=1){ let dir = UTILS.getDirection(unit.x,unit.y,user.x,user.y); let dst = UTILS.getDistance(user.x,user.y,unit.x,unit.y); let uPath = unit.uPath; window.bases.push({dir:dir,dst:dst,uPath:uPath,nome:nome}) } }) localStorage.setItem(nome,JSON.stringify(window.bases)) } //ZOOM COM SCROLL(GRADATIVO) let scroll = 0; mainCanvas.addEventListener ? (window.addEventListener("mousewheel", zoom, !1), mainCanvas.addEventListener("DOMMouseScroll", zoom, !1)) : window.attachEvent("onmousewheel", zoom); function zoom(a) { a = window.event || a; a.stopPropagation(); scroll = Math.max(-1, Math.min(1, a.wheelDelta || -a.detail)) if (scroll == -1) { //zoom out if(maxScreenHeight<60000){ maxScreenWidth += 300 maxScreenHeight += 300 resize(true) scroll = 0 } } if (scroll == 1) { //zoom in if(maxScreenHeight>=170){ maxScreenHeight -= 1 resize(true) scroll = 0 } if(maxScreenWidth >= 1010){ maxScreenWidth -= 1 resize(true) scroll = 0 } } } //TECLA PARA ZOOM window.addEventListener('keyup', function(a) { a = a.keyCode ? a.keyCode : a.which; if (document.activeElement == mainCanvas) { if (a == window.teclas.zoomMax.keyCode) { // tecla 'o' to out (maxScreenHeight = 30000, maxScreenWidth = 53333, resize(true)); cameraSpd = (TecPonto==true ? 4.8 : .85) * (Math.log(maxScreenHeight / 1080) + 1) } if (a == window.teclas.zoomMin.keyCode) { // tecla 'i' to zoom in (maxScreenHeight = 170, maxScreenWidth = 1010, resize(true)) cameraSpd = TecPonto==true ? 4.8 : .85; } } }) //CARREGA BASE SALVA function loadBase(nome='base1'){ selBaseSpawn.padrao = false; selBaseSpawn.load = true; let base = JSON.parse(localStorage.getItem(nome)) window.bases = base popUpGenerico(`Base carregada !!! Nome: ${bases[0].nome} `,true,2000) } function fazBaseCarregada(){ for(let a=0;a<bases.length;a++){ socket.emit("1",bases[a].dir,bases[a].dst,bases[a].uPath[0]) } } //UPGRADE DE UNIDADES upgradeUnit=function(a){socket&&gameState&&(1==selUnits.length?socket.emit("4",selUnits[0].id,a):(activeBase)?(a==0&&activeBase.sid==player.sid?(socket.emit("4",0,a,1)):(handleActiveBaseUpgrade(activeBase.sid,activeBase.upgrades[a].id))):(upgradeSelUnits(selUnits[0],a))) for (var i = 0; i < window.sockets.length; i++) { sockets[i] && gameState && (1 == selUnits.length ? sockets[i].sock.emit("4", selUnits[0].id, a) : activeBase && activeBase.sid == player.sid && sockets[i].sock.emit("4", 0, a, 1)); } } //MOSTRA INFO DAS UNITS toggleUnitInfo=function(a,d){var c="";a&&a.uPath&&(c=void 0!=a.group?a.group:a.uPath[0],c=unitList[c].limit?(unitList[c].count||0)+"/"+unitList[c].limit:"");if(a&&(forceUnitInfoUpdate||"block"!=unitInfoContainer.style.display||unitInfoName.innerHTML!=(a.iName||a.name)||lastCount!=c)){forceUnitInfoUpdate=!1;unitInfoContainer.style.display="block";unitInfoName.innerHTML=a.iName||a.name;a.cost?(unitInfoCost.innerHTML="Cost "+a.cost,unitInfoCost.style.display="block"):unitInfoCost.style.display="none"; unitInfoDesc.innerHTML=a.desc;unitInfoType.innerHTML=a.typeName;var b=a.space;lastCount=c;c='<span style="color:#fff">'+c+"</span>";unitInfoLimit.innerHTML=b?'<span><i class="material-icons" style="vertical-align: top; font-size: 20px;"></i>'+b+"</span> "+c:c;unitInfoUpgrades.innerHTML="";if(d&&a.upgrades){for(var g,e,h,f,k,c=0;c<a.upgrades.length;++c)(function(b){g=a.upgrades[b];var c=!0;g.lockMaxBuy&&void 0!=g.unitSpawn&&(unitList[g.unitSpawn].count||0)>=(unitList[g.unitSpawn].limit||0)? c=!1:g.dontShow&&(c=!1);c&&(e=document.createElement("div"),e.className="upgradeInfo",h=document.createElement("div"),h.className="unitInfoName",h.innerHTML=g.name,e.appendChild(h),f=document.createElement("div"),f.className="unitInfoCost",g.cost?(f.innerHTML="Cost "+g.cost,e.appendChild(f)):(null),k=document.createElement("div"),k.id="upgrDesc"+b,k.className="unitInfoDesc",k.innerHTML=g.desc,k.style.display="none",e.appendChild(k),e.onmouseover=function(){document.getElementById("upgrDesc"+b).style.display="block"}, e.onmouseout=function(){document.getElementById("upgrDesc"+b).style.display="none"},e.onclick=function(){upgradeUnit(b);mainCanvas.focus()},unitInfoUpgrades.appendChild(e))})(c);g=e=h=f=k=null}}else a||(unitInfoContainer.style.display="none")} //FUNÇÕES CONSTRUTORAS //VENDE UNITS SELECIONADAS sellSelUnits=function(){ //Vende todas os objetos selecionados para bots if (selUnits.length) { for (var a = [], d = 0; d < selUnits.length; ++d) a.push(selUnits[d].id); socket.emit("3", a); for (var i = 0; i < window.sockets.length; i++) { window.sockets[i].sock.emit("3", a); } } }; //UPA TODAS AS UNITS SELECIONADAS function upgradeSelUnits(firstUnit,upgrade){ //UPA todas os objetos selecionados para bots var firstUnitName = getUnitFromPath(firstUnit.uPath).name for(var i=0;i<selUnits.length;i++){ var unit = selUnits[i] if(getUnitFromPath(unit.uPath).name==firstUnitName){ socket.emit("4",unit.id,upgrade) if(window.sockets.length>0){ window.sockets.forEach((sk)=>{ let socket = sk.sock socket.emit("4",unit.id,upgrade) }) } } } } //SELECT COMMANDER BOTS toggleSelUnit = function(){ if (player && !activeUnit && units) { var a = (player.x || 0) - maxScreenWidth / 2 + camX, d = (player.y || 0) - maxScreenHeight / 2 + camY, c = player.x - a + targetDst * MathCOS(targetDir) + camX, b = player.y - d + targetDst * MathSIN(targetDir) + camY; disableSelUnit(); var g = 4 >= MathABS(c - mouseStartX + (b - mouseStartY)), e = !1; activeBase = null; if (g) for (var h = 0; h < users.length; ++h) if (0 <= users[h].size - UTILS.getDistance(c, b, users[h].x - a, users[h].y - d)) { activeBase = users[h]; forceUnitInfoUpdate = !0; break } if (!activeBase) { activeBase = null; for (h = 0; h < units.length; ++h) if (users[getUserBySID(units[h].owner)] !== undefined && users[getUserBySID(units[h].owner)].name.startsWith(player.name) === true || units[h].owner == player.sid) if (g) { if (0 <= units[h].size - UTILS.getDistance(c, b, units[h].x - a, units[h].y - d)) { selUnits.push(units[h]); var f = getUnitFromPath(selUnits[0].uPath); f && (selUnits[0].info = f, "Unit" == f.typeName && (e = !0)); break } } else UTILS.pointInRect(units[h].x - a, units[h].y - d, mouseStartX, mouseStartY, c - mouseStartX, b - mouseStartY) && (selUnits.push(units[h]), f = getUnitFromPath(selUnits[selUnits.length - 1].uPath)) && (selUnits[selUnits.length - 1].info = f, "Unit" == f.typeName && (e = !0)); if (selUnits.length) { for (h = selUnits.length - 1; 0 <= h; --h) e && "Tower" == selUnits[h].info.typeName ? selUnits.splice(h, 1) : e || "Unit" != selUnits[h].info.typeName || selUnits.splice(h, 1); selUnitType = e ? "Unit" : "Tower"; 150 < selUnits.length && (selUnits.length = 150) } } updateSelUnitViews() } } //BOTAO VENDE updateSelUnitViews=function() { sellButton.style.display = "block"; for (var a = 0, d = 0; d < selUnits.length; ++d) a += Math.round(selUnits[d].info.cost / 2); a ? sellButton.innerHTML = "Sell <span class='spanLink'>" + a + "</span>" : sellButton.style.display = "none" } //ESPELHADO sendUnit = function(a) { socket && gameState && activeUnit && !activeUnit.dontPlace && socket.emit("1", UTILS.roundToTwo(activeUnitDir), UTILS.roundToTwo(activeUnitDst), a); for (var i = 0; i < window.sockets.length; i++) { sockets[i].sock.emit("1", UTILS.roundToTwo(activeUnitDir), UTILS.roundToTwo(activeUnitDst), a); } } /*UPGRADE ESPELHADO upgradeUnit = function(a) { socket && gameState && (1 == selUnits.length ? socket.emit("4", selUnits[0].id, a) : (activeBase) ? (a == 0 && activeBase.sid == player.sid ? (socket.emit("4", 0, a, 1)) : (handleActiveBaseUpgrade(activeBase.sid, activeBase.upgrades[a].name))) : (upgradeSelUnits(selUnits[0], a))) for (var i = 0; i < window.sockets.length; i++) { sockets[i] && gameState && (1 == selUnits.length ? sockets[i].emit("4", selUnits[0].id, a) : activeBase && activeBase.sid == player.sid && sockets[i].emit("4", 0, a, 1)); } } */ //----------------------ARBUSTO INVISIVEL------------------------------------------------// renderUnit = function(a, d, c, b, g, e, k) { //POR MIM (PlayerX) g="rgb(43 69 193 / 33%)" var f = b.size * (k ? iconSizeMult : 1), h = f + ":" + b.cloak + ":" + b.renderIndex + ":" + b.iSize + ":" + b.turretIndex + ":" + b.shape + ":" + g; if (!unitSprites[h]) { var m = document.createElement("canvas"), l = m.getContext("2d"); m.width = 2 * f + 30; m.height = m.width; m.style.width = m.width + "px"; m.style.height = m.height + "px"; l.translate(m.width / 2, m.height / 2); l.lineWidth = 2 l.strokeStyle = "black"; l.fillStyle = g; 4 == b.renderIndex ? l.fillStyle = "rgb(0 6 72 / 84%)" : 5 == b.renderIndex && (l.fillStyle = "rgb(255 255 255 / 0%)", renderRect(0, .76 * f, 1.3 * f, f / 2.4, l), l.fillStyle = g); b.cloak && (l.fillStyle = "rgb(255 255 255 / 0%)"); "circle" == b.shape ? (renderCircle(0, 0, f, l), b.iSize && (l.fillStyle = "rgb(255 255 255 / 0%)", renderCircle(0, 0, f * b.iSize, l))) : "triangle" == b.shape ? (renderTriangle(0, 0, f, l), b.iSize && (l.fillStyle = "rgb(255 255 255 / 0%)", renderTriangle(0, 2, f * b.iSize, l))) : "hexagon" == b.shape ? (renderAgon(0, 0, f, l, 6), b.iSize && (l.fillStyle = "rgb(255 255 255 / 0%)", renderAgon(0, 0, f * b.iSize, l, 6))) : "octagon" == b.shape ? (l.rotate(MathPI / 8), renderAgon(0, 0, .96 * f, l, 8), b.iSize && (l.fillStyle = "rgb(255 255 255 / 0%)", renderAgon(0, 0, .96 * f * b.iSize, l, 8))) : "pentagon" == b.shape ? (l.rotate(-MathPI / 2), renderAgon(0, 0, 1.065 * f, l, 5), b.iSize && (l.fillStyle = "rgb(255 255 255 / 0%)", renderAgon(0, 0, 1.065 * f * b.iSize, l, 5))) : "square" == b.shape ? (renderSquare(0, 0, f, l), b.iSize && (l.fillStyle = "rgb(255 255 255 / 0%)", renderSquare(0, 0, f * b.iSize, l))) : "spike" == b.shape ? renderStar(0, 0, f, .7 * f, l, 8) : "star" == b.shape && (f *= 1.2, renderStar(0, 0, f, .7 * f, l, 6)); if (1 == b.renderIndex) l.fillStyle = "rgb(255 255 255 / 0%)", renderRect(f / 2.8, 0, f / 4, f / 1, l), renderRect(-f / 2.8, 0, f / 4, f / 1, l); else if (2 == b.renderIndex) l.fillStyle = "rgb(255 255 255 / 0%)", renderRect(f / 2.5, f / 2.5, f / 2.5, f / 2.5, l), renderRect(-f / 2.5, f / 2.5, f / 2.5, f / 2.5, l), renderRect(f / 2.5, -f / 2.5, f / 2.5, f / 2.5, l), renderRect(-f / 2.5, -f / 2.5, f / 2.5, f / 2.5, l); else if (3 == b.renderIndex) l.fillStyle = "rgb(255 255 255 / 0%)", l.rotate(MathPI / 2), renderRectCircle(0, 0, .75 * f, f / 2.85, 3, l), renderCircle(0, 0, .5 * f, l), l.fillStyle = "rgb(255 255 255 / 0%)"; else if (6 == b.renderIndex) l.fillStyle = "rgb(255 255 255 / 0%)", l.rotate(MathPI / 2), renderRectCircle(0, 0, .7 * f, f / 4, 5, l), l.rotate(-MathPI / 2), renderAgon(0, 0, .4 * f, l, 6); else if (7 == b.renderIndex) for (g = 0; 3 > g; ++g) l.fillStyle ="rgb(255 255 255 / 0%)" ? 1 == g ? "transparent" : "transparent" : "transparent", renderStar(0, 0, f, .7 * f, l, 7), f *= .55; else 8 == b.renderIndex && (l.fillStyle = "rgb(255 255 255 / 0%)", renderRectCircle(0, 0, .75 * f, f / 2.85, 3, l), renderSquare(0, 0, .5 * f, l)); 1 != b.type && b.turretIndex && renderTurret(0, 0, b.turretIndex, k ? iconSizeMult : 1, -(MathPI / 2), l); unitSprites[h] = m } f = unitSprites[h]; e.save(); e.translate(a, d); e.rotate(c + MathPI / 2); e.drawImage(f, -(f.width / 2), -(f.height / 2), f.width, f.height); 1 == b.type && b.turretIndex && renderTurret(0, 0, b.turretIndex, k ? iconSizeMult : 1, b.turRot - MathPI / 2 - c, e); e.restore() } //------------------------------DESENHA AS LINHAS DA BASE----------------------------------------// renderDottedCircle=function(a, d, c, b) { b.setLineDash([0, 0]); b.beginPath(); b.arc(a, d, c + b.lineWidth / 2, 0, 2 * Math.PI); b.stroke(); b.setLineDash([]) } renderDottedLine=function(a, d, c, b, g) { g.setLineDash([0, 0]); g.beginPath(); g.moveTo(a, d); g.lineTo(c, b); g.stroke(); g.setLineDash([]) } //---------------------------------------LIGA OS PLAYER(LINHA DO JOGO)---------------------------// function playersLinked(a, d) { if (a.sid == player.sid && d.name.startsWith(player.name)) { return true; } } //----------------------------------RENDERIZA BASE------------------------------------------------// window.renderPlayer = function(a, d, c, b, g) { b.save(); if (a.skin && 0 < a.skin && a.skin <= playerSkins && !skinSprites[a.skin]) { var e = new Image; e.onload = function() { this.readyToDraw = !0; this.onload = null; g == currentSkin && changeSkin(0); }; e.src = ".././img/skins/skin_" + (a.skin - 1) + ".png"; skinSprites[a.skin] = e; } a.skin && skinSprites[a.skin] && skinSprites[a.skin].readyToDraw ? (e = a.size - b.lineWidth / 4, b.lineWidth /= 2, renderCircle(d, c, a.size, b, !1, !0)) : g || (b.fillStyle = "rgb(255 255 255 / 0%)", renderCircle(d, c, a.size, b)); b.restore(); } //-----------------------------LOOP DO GAME-----------------------------------------// updateGameLoop=function(a){if(player&&gameData){updateTarget();if(gameState&&mapBounds){if(camXS||camYS)camX+=camXS*cameraSpd*a,camY+=camYS*cameraSpd*a;player.x+camX<mapBounds[0]?camX=mapBounds[0]-player.x:player.x+camX>mapBounds[0]+mapBounds[2]&&(camX=mapBounds[0]+mapBounds[2]-player.x);player.y+camY<mapBounds[1]?camY=mapBounds[1]-player.y:player.y+camY>mapBounds[1]+mapBounds[3]&&(camY=mapBounds[1]+mapBounds[3]-player.y); currentTime-lastCamSend>=sendFrequency&&(lastCamX!=camX||lastCamY!=camY)&&(lastCamX=camX,lastCamY=camY,lastCamSend=currentTime,socket.emit("2",Math.round(camX),Math.round(camY)))}renderBackground(outerColor);var d=(player.x||0)-maxScreenWidth/2+camX,c=(player.y||0)-maxScreenHeight/2+camY;mapBounds&&(mainContext.fillStyle=backgroundColor,mainContext.fillRect(mapBounds[0]-d,mapBounds[1]-c,mapBounds[2],mapBounds[3]));for(var b,g,e=0;e<units.length;++e)b=units[e],b.interpDst&&(g=b.interpDst*a*.015,b.interX+= g*MathCOS(b.interpDir),b.interY+=g*MathSIN(b.interpDir),b.interpDst-=g,.1>=b.interpDst&&(b.interpDst=0,b.interX=b.interpDstS*MathCOS(b.interpDir),b.interY=b.interpDstS*MathSIN(b.interpDir))),b.speed&&(updateUnitPosition(b),b.x+=b.interX||0,b.y+=b.interY||0);var h,f;if(gameState)if(activeUnit){h=player.x-d+targetDst*MathCOS(targetDir)+camX;f=player.y-c+targetDst*MathSIN(targetDir)+camY;var k=UTILS.getDirection(h,f,player.x-d,player.y-c);0==activeUnit.type?(b=UTILS.getDistance(h,f,player.x-d,player.y- c),b-activeUnit.size<player.startSize?(h=player.x-d+(activeUnit.size+player.startSize)*MathCOS(k),f=player.y-c+(activeUnit.size+player.startSize)*MathSIN(k)):b+activeUnit.size>player.buildRange-.15&&(h=player.x-d+(player.buildRange-activeUnit.size-.15)*MathCOS(k),f=player.y-c+(player.buildRange-activeUnit.size-.15)*MathSIN(k))):1==activeUnit.type||2==activeUnit.type?(h=player.x-d+(activeUnit.size+player.buildRange)*MathCOS(k),f=player.y-c+(activeUnit.size+player.buildRange)*MathSIN(k)):3==activeUnit.type&& (b=UTILS.getDistance(h,f,player.x-d,player.y-c),b-activeUnit.size<player.startSize?(h=player.x-d+(activeUnit.size+player.startSize)*MathCOS(k),f=player.y-c+(activeUnit.size+player.startSize)*MathSIN(k)):b+activeUnit.size>player.buildRange+2*activeUnit.size&&(h=player.x-d+(player.buildRange+activeUnit.size)*MathCOS(k),f=player.y-c+(player.buildRange+activeUnit.size)*MathSIN(k)));activeUnitDir=k;activeUnitDst=UTILS.getDistance(h,f,player.x-d,player.y-c);activeUnit.dontPlace=!1;mainContext.fillStyle= outerColor;if(0==activeUnit.type||2==activeUnit.type||3==activeUnit.type)for(e=0;e<units.length;++e)if(1!=units[e].type&&units[e].owner==player.sid&&0<=activeUnit.size+units[e].size-UTILS.getDistance(h,f,units[e].x-d,units[e].y-c)){mainContext.fillStyle=redColor;activeUnit.dontPlace=!0;break}renderCircle(h,f,activeUnit.range?activeUnit.range:activeUnit.size+30,mainContext,!0)}else if(selUnits.length)for(e=0;e<selUnits.length;++e)mainContext.fillStyle=outerColor,1<selUnits.length?renderCircle(selUnits[e].x- d,selUnits[e].y-c,selUnits[e].size+25,mainContext,!0):renderCircle(selUnits[e].x-d,selUnits[e].y-c,selUnits[e].range?selUnits[e].range:selUnits[e].size+25,mainContext,!0);else activeBase&&(mainContext.fillStyle=outerColor,renderCircle(activeBase.x-d,activeBase.y-c,activeBase.size+50,mainContext,!0));if(selUnits.length)for(mainContext.strokeStyle=targetColor,e=0;e<selUnits.length;++e)selUnits[e].gatherPoint&&renderDottedCircle(selUnits[e].gatherPoint[0]-d,selUnits[e].gatherPoint[1]-c,30,mainContext); for(e=0;e<users.length;++e)if(b=users[e],!b.dead){mainContext.lineWidth=1.2*outlineWidth;mainContext.strokeStyle=indicatorColor;isOnScreen(b.x-d,b.y-c,b.buildRange)&&(mainContext.save(),mainContext.translate(b.x-d,b.y-c),renderDottedCircle(0,0,b.buildRange,mainContext),renderDottedCircle(0,0,b.startSize,mainContext),mainContext.restore());b.spawnProt&&(mainContext.strokeStyle=redColor,mainContext.save(),mainContext.translate(b.x-d,b.y-c), renderDottedCircle(0,0,b.buildRange+140,mainContext),mainContext.restore());for(var m=0;m<users.length;++m)e<m&&!users[m].dead&&(mainContext.strokeStyle=b.spawnProt||users[m].spawnProt?redColor:indicatorColor,playersLinked(b,users[m])&&(isOnScreen(b.x-d,b.y-c,0)||isOnScreen(users[m].x-d,users[m].y-c,0)||isOnScreen((b.x+users[m].x)/2-d,(b.y+users[m].y)/2-c,0))&&(g=UTILS.getDirection(b.x,b.y,users[m].x,users[m].y),renderDottedLine(b.x-(b.buildRange+lanePad+(b.spawnProt?140:0))*MathCOS(g)-d,b.y-(b.buildRange+ lanePad+(b.spawnProt?140:0))*MathSIN(g)-c,users[m].x+(users[m].buildRange+lanePad+(users[m].spawnProt?140:0))*MathCOS(g)-d,users[m].y+(users[m].buildRange+lanePad+(users[m].spawnProt?140:0))*MathSIN(g)-c,mainContext)))}mainContext.strokeStyle=darkColor;mainContext.lineWidth=1.2*outlineWidth;for(e=0;e<units.length;++e)b=units[e],b.layer||(b.onScreen=!1,isOnScreen(b.x-d,b.y-c,b.size)&&(b.onScreen=!0,renderUnit(b.x-d,b.y-c,b.dir,b,playerColors[b.color],mainContext)));for(e=0;e<units.length;++e)b=units[e], 1==b.layer&&(b.onScreen=!1,isOnScreen(b.x-d,b.y-c,b.size)&&(b.onScreen=!0,renderUnit(b.x-d,b.y-c,b.dir,b,playerColors[b.color],mainContext)));mainContext.fillStyle=bulletColor;for(e=bullets.length-1;0<=e;--e){b=bullets[e];if(b.speed&&(b.x+=b.speed*a*MathCOS(b.dir),b.y+=b.speed*a*MathSIN(b.dir),UTILS.getDistance(b.sX,b.sY,b.x,b.y)>=b.range)){bullets.splice(e,1);continue}isOnScreen(b.x-d,b.y-c,b.size)&&renderCircle(b.x-d,b.y-c,b.size,mainContext)}mainContext.strokeStyle=darkColor;mainContext.lineWidth= 1.2*outlineWidth;for(e=0;e<users.length;++e)b=users[e],!b.dead&&isOnScreen(b.x-d,b.y-c,b.size)&&(renderPlayer(b,b.x-d,b.y-c,mainContext),"unknown"!=b.name&&(tmpIndx=b.name+"-"+b.size,20<=b.size&&b.nameSpriteIndx!=tmpIndx&&(b.nameSpriteIndx=tmpIndx,b.nameSprite=renderText(b.name,b.size/4)),b.nameSprite&&mainContext.drawImage(b.nameSprite,b.x-d-b.nameSprite.width/2,b.y-c-b.nameSprite.height/2,b.nameSprite.width,b.nameSprite.height)));if(selUnits.length)for(e=selUnits.length-1;0<=e;--e)selUnits[e]&& 0>units.indexOf(selUnits[e])&&disableSelUnit(e);activeUnit&&renderUnit(h,f,k,activeUnit,playerColors[player.color],mainContext);showSelector&&(mainContext.fillStyle="rgba(255, 255, 255, 0.1)",h=player.x-d+targetDst*MathCOS(targetDir)+camX,f=player.y-c+targetDst*MathSIN(targetDir)+camY,mainContext.fillRect(mouseStartX,mouseStartY,h-mouseStartX,f-mouseStartY));playerBorderRot+=a/5600;hoverUnit?toggleUnitInfo(hoverUnit):activeBase?toggleUnitInfo(activeBase,true):activeUnit?toggleUnitInfo(activeUnit): 0<selUnits.length?toggleUnitInfo(selUnits[0].info,!0):toggleUnitInfo()}}; renderText=function(a, d) { var c = document.createElement("canvas") , b = c.getContext("2d"); b.font = d + "px regularF"; var g = b.measureText(a); c.width = g.width + 20; c.height = 2 * d; b.translate(c.width / 2, c.height / 2); b.font = d + "px regularF"; b.fillStyle = "#00e1ff"; b.textBaseline = "middle"; b.textAlign = "center"; b.strokeStyle = '#001044'; b.lineWidth = outlineWidth; b.strokeText(a, 0, 0); b.fillText(a, 0, 0); return c } //ENVIA MENSAGEM LOCAL window.addChat = function(msg, from, color) { color = color || "#fff"; var b = document.createElement("li"); b.className = "chatother"; b.innerHTML = '<span style="color:' + color + '">(' + from + ')</span> <span class="chatText" style="color:black">' + msg + "</span>"; 100 < chatList.childNodes.length && chatList.removeChild(chatList.childNodes[0]); chatList.appendChild(b) } //RECEBE E FAZ CHAT window.addChatLine = function(a, mensagem, c) { if (player) { var b = getUserBySID(a); if (c || 0 <= b) { var g = c ? "SERVER" : users[b].name; c = c ? "#fff" : playerColors[users[b].color] ? playerColors[users[b].color] : playerColors[0]; player.sid == a && (c = "#fff"); b = document.createElement("li"); b.className = player.sid == a ? "chatme" : "chatother"; b.innerHTML = '<span style="color:' + c + '">_' + g + '_[ID:'+a+']</span> <span class="chatText">' + mensagem + "</span>"; 10 < chatList.childNodes.length && chatList.removeChild(chatList.childNodes[0]); chatList.appendChild(b) } } if (a == player.sid && mensagem.startsWith('*')) { window.sockets.forEach(socket => { socket.sock.emit("ch", mensagem.split('*')[1]) }) } } //-----------------------------RECEBE OS EVENTOS DO SERVIDOR-----------------------------------------// setupSocket=function(){ socket.on("pong",(a)=>{addChat('',`Ping: ${a}`,'#ffffff82')}) socket.on("connect_error",function(){document.location.reload();enterGame()}); socket.on("disconnect",function(a){document.location.reload();enterGame()}); socket.on("error",function(a){kickPlayer("Disconnected. The server may have updated.")}); socket.on("kick",function(a){kickPlayer(a);enterGame()}); socket.on("lk",function(a){partyKey=a;}); socket.on("spawn",function(){ gameState=1; unitList=share.getUnitList(); resetCamera();toggleMenuUI(!1);toggleGameUI(!0);updateUnitList(); player.upgrades = [{ id:1, name: "Commander", desc: "Powerful commander unit", lockMaxBuy: true, cost: 1500, unitSpawn: 9 }, { id:2, name: "Salvar Base", desc: "Salvar Base, Para Poder Usar Em Qualquer Hora", }, { id:3, name: "Carregar Base", desc: "Carregue Uma Base Salva Anteriormente", }] ;;mainCanvas.focus()}); socket.on("gd",function(a){gameData=a}); socket.on("mpd",function(a){mapBounds=a}); socket.on("ch",function(a,d,c){addChatLine(a,d,c)}); socket.on("setUser",function(a,d){ if(a&&a[0]){var c=getUserBySID(a[0]),b={sid:a[0],name:a[1],iName:"Headquarters",dead:!1,color:a[2],size:a[3],startSize:a[4],x:a[5],y:a[6],buildRange:a[7],gridIndex:a[8],spawnProt:a[9],skin:a[10],desc:`ID: ${a[0]} <br> Base do ${a[1]}<br> `,kills:666,typeName:"by PlayerX",upgrades:[{id:2,name:"Copiar",desc:"Copiar base para poder usar depois"}]};null!=c?(users[c]=b,d&&(player=users[c])):(users.push(b),d&&(player=users[users.length-1]))} }); socket.on("klUser",function(a){var d=getUserBySID(a);null!=d&&(users[d].dead=!0);player&&player.sid==a&&(hideMainMenuText(),leaveGame(),enterGame())}); socket.on("delUser",function(a){a=getUserBySID(a);null!=a&&users.splice(a,1)}); socket.on("au",function(a){a&&(units.push({id:a[0],owner:a[1],uPath:a[2]||0,type:a[3]||0,color:a[4]||0,paths:a[5],x:a[6]||0,sX:a[6]||0,y:a[7]||0,sY:a[7]||0,dir:a[8]|| 0,turRot:a[8]||0,speed:a[9]||0,renderIndex:a[10]||0,turretIndex:a[11]||0,range:a[12]||0,cloak:a[13]||0}),units[units.length-1].speed&&(units[units.length-1].startTime=window.performance.now()),a=getUnitFromPath(units[units.length-1].uPath))&&(units[units.length-1].size=a.size,units[units.length-1].shape=a.shape,units[units.length-1].layer=a.layer,units[units.length-1].renderIndex||(units[units.length-1].renderIndex=a.renderIndex),units[units.length-1].range||(units[units.length-1].range=a.range), units[units.length-1].turretIndex||(units[units.length-1].turretIndex=a.turretIndex),units[units.length-1].iSize=a.iSize)}); socket.on("spa",function(a,d,c,b){a=getUnitById(a);if(null!=a){var g=UTILS.getDistance(d,c,units[a].x||d,units[a].y||c);300>g&&g?(units[a].interpDst=g,units[a].interpDstS=g,units[a].interpDir=UTILS.getDirection(d,c,units[a].x||d,units[a].y||c)):(units[a].interpDst=0,units[a].interpDstS=0,units[a].interpDir=0,units[a].x=d,units[a].y=c);units[a].interX=0;units[a].interY=0;units[a].sX= units[a].x||d;units[a].sY=units[a].y||c;b[0]&&(units[a].dir=b[0],units[a].turRot=b[0]);units[a].paths=b;units[a].startTime=window.performance.now()}}); socket.on("uc",function(a,d){unitList&&(unitList[a].count=d);forceUnitInfoUpdate=!0}); socket.on("uul",function(a,d){unitList&&(unitList[a].limit+=d)}); socket.on("rpu",function(a,d){var c=getUnitFromPath(a);c&&(c.dontShow=d,forceUnitInfoUpdate=!0)}); socket.on("sp",function(a,d){var c=getUserBySID(a);null!=c&&(users[c].spawnProt=d)}); socket.on("ab",function(a){a&& bullets.push({x:a[0],sX:a[0],y:a[1],sY:a[1],dir:a[2],speed:a[3],size:a[4],range:a[5]})}); socket.on("uu",function(a,d){if(void 0!=a&&d){var c=getUnitById(a);if(null!=c)for(var b=0;b<d.length;)units[c][d[b]]=d[b+1],"dir"==d[b]&&(units[c].turRot=d[b+1]),b+=2}}); socket.on("du",function(a){a=getUnitById(a);null!=a&&units.splice(a,1)}); socket.on("sz",function(a,d){var c=getUserBySID(a);null!=c&&(users[c].size=d)}); socket.on("pt",function(a){ window.PowerPlayer = a; let containerPonto = document.getElementById("statContainer") let medicao = Math.round(a/60) containerPonto.innerHTML=`<div>Jogadores: <span> ${users.length}</span></div> <div>Lag: <span> ${onOffLag}</span></div> <div>Join Troop: <span> ${onOffjointroop}</span></div> <div style='width: 100%; height: auto; display: flex; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: center; align-items: center'><div style='width:auto;height:auto'>💲</div> <div style='width:100%;height:15px'><div style='text-align: left; align-items: left;width:${medicao}%;height:100%;background-color:#29cb008f'> ${a}$</div></div></div> <div style='width: 100%; height: auto; display: flex; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: center; align-items: center'><div style='width:auto;height:auto'>❤️</div> <div style='width:100%;height:15px'><div style='text-align: left; align-items: left;width:${player.size}%;height:100%;background-color:#ff000080'> ${player.size}%</div></div></div> ` }); socket.on("l",function(a){ placar = [] for(var d="",c=1,b=0;b<a.length;){ placar.push({posicao:c,nome:a[b+1],pontos:a[b+2],sid:a[b]}) c++,b+=3 if(a==b)break} layoutGame() }) } //----------------------------FUNCAO PARA ENTRAR NO GAME------------------------------------------// enterGame=function(){ let aviso = document.getElementById("suportLoading") aviso.style.display = "none" if(socket&&unitList){ showMainMenuText(randomLoadingTexts[UTILS.randInt(0, randomLoadingTexts.length - 2)]) if(hasStorage){ localStorage.setItem("lstnmdbl",userNameInput.value); mainCanvas.focus() grecaptcha.execute("6Ldh8e0UAAAAAFOKBv25wQ87F3EKvBzyasSbqxCE").then((a)=>{ socket.emit("spawn",{name:"PX "+userNameInput.value,skin:currentSkin},a) }).catch((a)=>{console.log('erro ao executar grecaptcha\n');throw a;}) }}} //----------------------------------------------------------------------// //ADICIONA CSS NA PAGINA function addCSS(){ console.log("pré-load: OK") document.body.style = ` background-color: #ffffff; margin: 0; width: 100%; height: 100%; ` let titulo = document.getElementById("gameTitle"), tagLinks = document.getElementById("linksContainer"), loading = document.getElementById("loading"), linkYT = document.getElementById("linksContainer"), todosC = document.getElementById("smallAdContainer"), links = document.getElementById("infoLinks"), leader = document.getElementById("leaderboardHeader"), Clink = document.getElementById("creatorLink"), adCont = document.getElementById("adContainer"), Darkner = document.getElementById("darkener"), enterGbotao = document.getElementById("enterGameButton"), inputName = document.getElementById("userNameInput") const cor_deFundo = "#5e5e5e87" const cor_daFont = "#000000a3" const cor_deFundoHome1 = "#5e5e5e87" const cor_deFundoHome2 = "#000000a3" const corFundoMenu = "#00093473" //CRIA E ADICIONA O CSS MODIFICADO A PAGINA const css = document.createElement("style") css.innerText = ` th, td { padding: 8px; text-align: left; border: 1px solid #000; } tr:hover {background-color: #2942b973;} div::-webkit-scrollbar { width: 12px; } div::-webkit-scrollbar-track { background-color: #001d6e9c; border-radius: 10px; } div::-webkit-scrollbar-thumb { background-color: #000934; border-radius: 20px; border: 3px solid #0049892b; } input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; } input[type=number] { -moz-appearance: textfield; appearance: textfield; } #sellButton{ display: none; position: absolute; bottom: 18%; left: 10px; background-color: rgba(40, 40, 40, 0.5); border-radius: 4px; font-family: 'regularF'; font-size: 20px; color: #fff; cursor: pointer; padding: 10px; pointer-events: all; } #statContainer { border-top-color: #c30e4059 !important; border-color: #862cb957; position: absolute; border-bottom-color: #c30e4059 !important; bottom: 10px; width: 20%; border-block: initial; background-color: #341ead42; height: auto; border-radius: 10px; border-style: solid; left: 10px; display: flex; flex-direction: column; flex-wrap: nowrap; align-content: center; justify-content: center; align-items: flex-start; } div#leaderboardContainer > div > div { width: 70%; } .left { width: 50%; display: flex; justify-content: flex-end; flex-direction: row; flex-wrap: nowrap; align-content: center; align-items: center; } .right { width: 50%; display: flex; justify-content: flex-start; flex-direction: row; flex-wrap: nowrap; align-content: center; align-items: center; } div#leaderboardContainer > div > div > button { background-color: transparent; border: 0; } div#leaderboardContainer > div > div > button:hover { background-color: transparent; border: 0; font-size: larger; } div#leaderboardContainer > div { width: 100%; font-size: small; display: flex; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: space-between; align-items: center; } #leaderboardContainer { display: flex; overflow-y: auto; width: 20%; position: absolute; top: 10px; right: 10px; height: auto; padding: 10px; background-color: rgba(40, 40, 40, 0.5); font-family: 'regularF'; font-size: 30px; border-radius: 4px; color: #fff; flex-direction: column; align-items: flex-start; justify-content: center; align-content: center; flex-wrap: nowrap; } div.contMenus > div { margin-left: 2% !important; padding: 0; margin: 0; width: auto; } div.contMenus > p { padding: 0; margin: 0; } div.contMenus { display: flex; flex-direction: row; pointer-events: all; flex-wrap: nowrap; height: auto; width: 100%; padding-top: 5%; padding-bottom: 1%; align-content: center; justify-content: space-between; align-items: center; } div#contDef { pointer-events: all; } /* Estilo iOS */ .switch__container { margin: 30px auto; width: 120px; } .switch { visibility: hidden; position: absolute; margin-left: 0; } .switch + label { display: block; position: relative; cursor: pointer; outline: none; user-select: none; } .switch--shadow + label { padding: 2px; width: 40px; height: 19px !important; background-color: #dddddd; border-radius: 25px; } .switch--shadow + label:before, .switch--shadow + label:after { display: block; position: absolute; top: 1px; left: 1px; bottom: 1px; content: ""; } .switch--shadow + label:before { right: 1px; background-color: #f1f1f1; border-radius: 60px; transition: background 0.4s; } .switch--shadow + label:after { width: 20px; height: 20px; background-color: #fff; border-radius: 100%; box-shadow: 0 2px 5px rgb(0 0 0 / 30%); transition: all 0.4s; } .switch--shadow:checked + label:before { background-color: #8ce196; } .switch--shadow:checked + label:after { transform: translateX(22px); } /* Estilo Flat */ .switch--flat + label { padding: 2px; width: 120px; height: 60px; background-color: #dddddd; border-radius: 60px; transition: background 0.4s; } .switch--flat + label:before, .switch--flat + label:after { display: block; position: absolute; content: ""; } .switch--flat + label:before { top: 2px; left: 2px; bottom: 2px; right: 2px; background-color: #fff; border-radius: 60px; transition: background 0.4s; } .switch--flat + label:after { top: 4px; left: 4px; bottom: 4px; width: 56px; background-color: #dddddd; border-radius: 52px; transition: margin 0.4s, background 0.4s; } .switch--flat:checked + label { background-color: #8ce196; } .switch--flat:checked + label:after { margin-left: 60px; background-color: #8ce196; } p#sair { margin-left: 95%; margin-bottom: 5%; margin-top: 0; background-color: #dd0000c7; text-align: center; pointer-events: all; border-bottom-left-radius: 5px; width: 5%; height: auto; } p#sair:hover { margin-left: 94%; margin-bottom: 5%; margin-top: 0; background-color: #dd0000c7; text-align: center; border-bottom-left-radius: 5px; pointer-events: all; width: 6%; height: auto; } .menuOpc { border-width: thin; background-color: ${corFundoMenu}; position: absolute; left: 25%; top: 25%; border-radius: 20px; border-top-right-radius: 0% !important; border-style: double; } button.botaoMenu1 { background-color: #4a4a4a33; border-color: #0c0c0c29; width: auto; pointer-events: all; -webkit-text-stroke: thin; height: 20px; transition: 1s; border-radius: 10px; } button.botaoMenu1:hover { background-color: #4a4a4a33; -webkit-text-stroke: thin; border-color: #00000091; width: auto; pointer-events: all; transition: 1s; height: 20px; border-radius: 10px; } div#menu1 { background-color: ${corFundoMenu}; width: 8%; font-size: small; display: flex; transition: ${tempoTransicao}s; transition-delay: 2s !important; border-bottom-right-radius: 25px; pointer-events: all; height: 5.5%; position: absolute; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: space-evenly; align-items: center; } div#menu1:hover { background-color: ${corFundoMenu}; width: 74%; display: flex; transition: ${corFundoMenu}; transition-delay: 0s !important; border-bottom-right-radius: 25px; pointer-events: all; height: 7.5%; position: absolute; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: space-evenly; align-items: center; } #unitInfoContainer { padding-top: 5%; display: none; } div#portatorConfig { display: flex; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: space-around; align-items: center; } div#configControle { display: flex; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: flex-start; align-items: center; } .toggle { margin-bottom: 40px; } .toggle > input { display: none; } .toggle > label { position: relative; display: block; height: 20px; width: 44px; background: #898989; border-radius: 100px; cursor: pointer; transition: all 0.3s ease; } .toggle > label:after { position: absolute; left: -2px; top: -3px; display: block; width: 26px; height: 26px; border-radius: 100px; background: #fff; box-shadow: 0px 3px 3px rgba(0,0,0,0.05); content: ''; transition: all 0.3s ease; } .toggle > label:active:after { transform: scale(1.15, 0.85); } .toggle > input:checked ~ label { background: #6fbeb5; } .toggle > input:checked ~ label:after { left: 20px; background: #179588; } .toggle > input:disabled ~ label { background: #d5d5d5; pointer-events: none; } .toggle > input:disabled ~ label:after { background: #bcbdbc; } div#redesSociais { width: 100%; background-color: #50505091; height: auto; } .spanLink { width: 100%; text-align: center; font-family: fantasy; -webkit-text-stroke-width: 2px; -webkit-text-stroke-color: #5c5c5c8c; color: #000000a3; } #lobbyKey { font-size: 20px; } .spanLink:hover { width: 100%; text-align: center; font-family: fantasy; -webkit-text-stroke-width: 3px; -webkit-text-stroke-color: #5c5c5c8c; color: #000000a3; } .deadLink { width: 100%; text-align: center; font-family: fantasy; -webkit-text-stroke-width: 2px; -webkit-text-stroke-color: #313a67d1; color: #000b2969; } .deadLink:hover { -webkit-text-stroke-width: 2px; -webkit-text-stroke-color: #5a6392d1; color: #0f39ab69; } #userNameInput { font-family: '-webkit-pictograph'; font-size: 25px; padding: 0; margin: 0; border: 0; width: calc(100% - 30%); color: ${cor_daFont}; background-color: ${cor_deFundo}; text-align: center; border-radius: 40px; border-block: initial; border-color: #262626; border-style: double; } #userNameInput:hover { font-family: '-webkit-pictograph'; font-size: 25px; padding: 0; margin: 0; border: 0; width: calc(100% - 20%); color: ${cor_daFont}; background-color: ${cor_deFundo}; text-align: center; border-radius: 40px; border-block: initial; border-color: #262626; border-style: double; } #userNameInput input:focus, .input-wrapper input:active{ border-color:red; } #gameTitle { width: auto; color: black; margin: 0; font-size: 3cm; font-family: fantasy; } #darkener { display: block; position: absolute; width: 100%; height: 100%; } .centerContent{ border-block: unset; border-color: #00000040; border-style: double; text-align: center; height: 100%; display: flex !important; border-radius: 20px; flex-direction: column !important; flex-wrap: nowrap !important; align-content: center !important; justify-content: center !important; align-items: center !important; } #loadingContainer { color: #000000; font-size: calc(100% + 10px); } ::placeholder{ color: #0000009e; font-size: calc(100% - 40%); } #enterGameButton { font-family: '-webkit-pictograph'; font-size: 25px; padding: 0; margin: 0; border: 0; width: calc(100% - 30%); color: ${cor_daFont}; background-color: ${cor_deFundo}; text-align: center; border-radius: 40px; border-block: initial; border-color: #262626; border-style: double; } #enterGameButton:hover { font-family: '-webkit-pictograph'; font-size: 25px; padding: 0; margin: 0; border: 0; width: calc(100% - 20%); color: ${cor_daFont}; background-color: ${cor_deFundo}; text-align: center; border-radius: 40px; border-block: initial; border-color: #262626; border-style: double; } #skinInfo { display: grid; margin: 0; flex-direction: column; flex-wrap: nowrap; background-color: #00000026; align-content: center; padding: 0; background-color: ${cor_deFundo}; position: relative; border-block: initial; border-color: #262626; border-style: double; justify-content: center; align-items: center; } #skinIcon { width: 100%; height: 100%; opacity: 0.4; } #containerForm { background-color: ${cor_deFundoHome2}; width: auto; height: auto; display: flex; position: relative; border-radius: 20px; top: 0px; z-index: 100; align-items: center; text-align: center; cursor: crosshair; flex-direction: column; flex-wrap: nowrap; align-content: center; justify-content: center; } html, body{ width: 100%; height: 100%; } .container{ position: absolute; background: linear-gradient(0, #120c56, #000000); height: 100%; width: 100%; } #instructionsText { display: none } #mainCanvas { position: absolute; width: 100%; height: 100%; cursor: crosshair; } div#skinSelecao { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; justify-content: center; align-content: center; } div#frenteSkin { font-size: calc(100% + 200%); } div#atrasSkin { font-size: calc(100% + 200%); } div#frenteSkin:hover { font-size: calc(100% + 300%); } div#atrasSkin:hover { font-size: calc(100% + 300%); } img#logoHome { top: 0; width: 24.8%; z-index:1; position: absolute; } img#wallpaper { top: 0; z-index: 0; width: -webkit-fill-available; height: -webkit-fill-available; } #menuContainer { width: 100%; height: 100%; display: flex; top: 0; z-index: 2; align-items: center; text-align: center; flex-direction: column; flex-wrap: nowrap; align-content: center; justify-content: center; } p#atualizaFPS{ padding: 0; -webkit-text-stroke: medium; margin: 0; text-transform: uppercase; } #gameUiContainer { position: absolute; width: 100%; height: 100%; display: none; pointer-events: none; background-color: rgb(2 0 108 / 33%); } `,document.head.appendChild(css); //TELA INICIAL let body = tagLinks.parentNode body.removeChild(tagLinks) linkYT.innerHTML = ""; adCont.innerHTML = ""; Clink.innerHTML = ""; leader.innerHTML = ""; links.innerHTML = ""; todosC.innerHTML = ""; inputName.onfocus = false; enterGbotao.innerHTML = "<div>⚔COMEÇAR⚔</div>"; //FIM TELA INICIAL return addJS() } function modificaElementos(){ console.log("addJS: OK"); const status = document.getElementById("suportLoading") document.body.removeChild(status) let suportLoading = document.createElement("div") suportLoading.id = "suportLoading" suportLoading.innerHTML = ` CARREGADO... <style> div#suportLoading{ width: 100%; font-size: 30px; align-items: center; font-family: fantasy; position: absolute; z-index: 10000; top: 0; text-align: center; color: green; height: auto; cursor: crosshair; } </style> `; document.body.appendChild(suportLoading) let configpainelpai = document.createElement("div") let configpainelpot = document.createElement("div") let configpainelfilho = document.createElement("div") let configpainelInput = document.createElement("input") let configpainelLabel = document.createElement("label") let configpainelfilho2 = document.createElement("div") let configpainelInput2 = document.createElement("input") let configpainelLabel2 = document.createElement("label") //----------------------------------------------------------------------// configpainelpai.id = "configpai" configpainelfilho.class = "toggle" configpainelInput.type = "checkbox" configpainelInput.id = "mouse" configpainelInput.value = "mouse" configpainelInput.checked = true configpainelLabel.for = "mouse" configpainelLabel.innerText = "Mouse" configpainelfilho.appendChild(configpainelLabel) configpainelfilho.appendChild(configpainelInput) //----------------------------------------------------------------------// configpainelfilho2.class = "toggle" configpainelInput2.type = "checkbox" configpainelInput2.id = "touchpad" configpainelInput2.value = "touchpad" configpainelLabel2.for = "touchpad" configpainelLabel2.innerText = "Touchpad" configpainelfilho2.appendChild(configpainelLabel2) configpainelfilho2.appendChild(configpainelInput2) //----------------------------------------------------------------------// configpainelpot.id = "portatorConfig" configpainelpot.appendChild(configpainelfilho) configpainelpot.appendChild(configpainelfilho2) configpainelpai.appendChild(configpainelpot) //----------------------------------------------------------------------// let linksSociais = document.createElement("div") linksSociais.id = "redesSociais" linksSociais.appendChild(configpainelpai) let formEnterGameClass = document.getElementsByClassName("centerContent") formEnterGameClass[0].id = "painel" let formEnterGame = document.getElementById("painel") let menucontainer = document.getElementById("menuContainer") let containerForm = document.createElement("div") containerForm.id = "containerForm" //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| menucontainer.removeChild(formEnterGame) containerForm.appendChild(formEnterGame) containerForm.appendChild(linksSociais) menucontainer.appendChild(containerForm) //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //SELEÇÃO DE SKIN PERSONALIZADA let avo = document.getElementById("userInfoContainer"); let pai = document.createElement("div"); let btnskin = document.getElementById("skinSelector"); pai.id = "skinSelecao"; let anterior = document.createElement("div"); anterior.id = "atrasSkin"; anterior.innerHTML = "▶"; anterior.addEventListener('keyup', ()=>changeSkin(-1)) let skinInf = document.getElementById("skinInfo"); let prox = document.createElement("div"); prox.id = "frenteSkin"; prox.innerHTML = "◀"; avo.removeChild(btnskin); avo.removeChild(skinInf); pai.appendChild(skinInf); pai.appendChild(anterior); let skinInfP = skinInf.parentNode; skinInfP.insertBefore(prox,skinInf); avo.appendChild(pai) let nextSkin = document.getElementById("frenteSkin") nextSkin.addEventListener('click', ()=>{ changeSkin(1); }) let vltSkin = document.getElementById("atrasSkin") vltSkin.addEventListener('click', ()=>{ changeSkin(-1); }) //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //Adiciona uma logo na home let container = document.getElementById("darkener") let img = document.createElement("img") img.id = "logoHome"; img.src = "https://github.com/PlayerX-000/img/blob/main/PlayerX.png?raw=true"; container.appendChild(img) //adiciona um fundo na tela principal let wallpaper = document.createElement("img") wallpaper.id = "wallpaper"; wallpaper.src = "https://github.com/PlayerX-000/img/blob/main/1414647.jpg?raw=true" container.appendChild(wallpaper) // //conecta a um servior /* EM DESENVOLVIMENTO let cod = document.createElement("script") cod.type = "text/javascript" cod.src = `${host}/socket.io/socket.io.js` document.body.appendChild(cod) */ //FIM TELA INICIAL return console.log("modificaElementos: OK") } function addJS(){ console.log("addCSS: OK") adsbygoogle = undefined $("#mouse").click(()=>{ let touchpad = document.getElementById("touchpad").checked if(touchpad===true)document.getElementById("touchpad").checked = false; }) $("#touchpad").click(()=>{ let mouse = document.getElementById("mouse").checked if(mouse===true)document.getElementById("mouse").checked = false; }) document.getElementById("enterGameButton").onclick = function(){enterGame()} return modificaElementos() } //FUNCÇÔES DO SCRIPT ////////////////FUNÇÕES USADAS PELO PLAYER function layoutGame(){ let placarParty = document.getElementById("leaderboardContainer") placarParty.innerHTML = "" for(let a=0;a<placar.length;a++){ let divbtn = document.createElement("div") let divLupa = document.createElement("div") let btnSrc = document.createElement("button") divbtn.innerHTML = `<div class='left' style='font-size: small; display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; justify-content: flex-start; align-content: center;'><div>${placar[a].posicao}º- </div><div style='overflow-x:hidden;pointer-evente:all'>${placar[a].nome}</div></div>` btnSrc.className = "srcBase" btnSrc.style = "pointer-events: all;" btnSrc.id = placar[a].sid btnSrc.innerText = "🔎" divLupa.style = "font-size: small; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: flex-end; align-items: center; align-content: center;" divLupa.innerHTML = `<div class='left' style='font-size: small;'> (${placar[a].pontos})</div>` btnSrc.onclick = function(){ const idUser = Number(this.id) users.filter((user)=>{ if(user.sid === idUser){ camX = user.x - player.x camY = user.y - player.y } }) } divLupa.appendChild(btnSrc) divbtn.appendChild(divLupa) placarParty.appendChild(divbtn) } } function criaMenus(){ //tela do game let contAppend=document.getElementById("gameUiContainer") //div com os botoes let divMenuPai = document.createElement("div") let botao1 = document.createElement("button") let botao2 = document.createElement("button") let botao3 = document.createElement("button") let ico = document.createElement("p") ico.id = "atualizaFPS" botao1.innerText = "Base" botao2.innerText = "Ajuda" botao3.innerText = "Funções" botao1.className = "botaoMenu1" botao2.className = "botaoMenu1" botao3.className = "botaoMenu1" botao1.onclick = function(){ if(document.getElementById("menuOpc")===null){ base() } } botao2.onclick = function(){ if(document.getElementById("menuOpc")===null){ configuracoes() } } botao3.onclick = function(){ if(document.getElementById("menuOpc")===null){ opcoes() } } divMenuPai.id = "menu1" botao1.classList.add("hide"); botao2.classList.add("hide"); botao3.classList.add("hide"); divMenuPai.appendChild(ico) contAppend.insertBefore(divMenuPai,contAppend.firstChild) divMenuPai.onmouseleave = () => { /* botao1.classList.add("hide"); botao2.classList.add("hide"); botao3.classList.add("hide"); */ divMenuPai.removeChild(botao1) divMenuPai.removeChild(botao2) divMenuPai.removeChild(botao3) } divMenuPai.onmouseover = () => { divMenuPai.appendChild(botao1) divMenuPai.appendChild(botao2) divMenuPai.appendChild(botao3) /* botao1.classList.remove("hide"); botao2.classList.remove("hide"); botao3.classList.remove("hide"); */ } //pega o fps a cada 1 segundo let before,now,fps,fpsps; before=Date.now(); fps=0; requestAnimationFrame( function loop(){ now=Date.now(); fps=Math.round(1000/(now-before)); before=now; requestAnimationFrame(loop); } ); setInterval(function(){ if(gameState!==1) return fpsps=fps document.getElementById("atualizaFPS").innerText = "fps("+fpsps+")" },1000) } function alteraMapa(){ units.forEach((a)=>{ if(a.owner<0)a.renderIndex = 0 }) } function lerEventos(){ socket._emit = socket.emit; socket.emit = (...args) => { socket._emit(...args) } } const waitUntilReadyInterval = setInterval(() => { if (socket) { clearInterval(waitUntilReadyInterval); lerEventos(); } }, 100); //ABRE popup Da BASE function base(){ //tela do game let contAppend=document.getElementById("gameUiContainer") //div com os botoes let divBase = document.createElement("div") let sellallbot = document.createElement("button") let dpkbot = document.createElement("button") let divBaseCont = document.createElement("div") let back = document.createElement("p") let containerPowerBOT = document.createElement("div") containerPowerBOT.className = "contMenus" containerPowerBOT.innerHTML = `<p>FullPower BOT </p><div class="switch__container"> <input id="switch-shadowfpb" value="off" class="switch switch--shadow" type="checkbox"> <label for="switch-shadowfpb"></label> </div> ` back.innerText = "X" back.id = "sair" sellallbot.innerText = "Vender tudo" sellallbot.className = "botaoMenu1" sellallbot.id = "vendetdBot" dpkbot.innerText = "DPK bot" dpkbot.className = "botaoMenu1" dpkbot.id = "dpkBot" sellallbot.onclick = () => {vendeBot()} dpkbot.onclick = () => {dpkbots()} divBase.id = "menuOpc" divBase.className = "menuOpc" divBase.style.width = "50%" divBase.style.height = "50%" divBaseCont.style=` width: 65%; height: 75%; margin-left: 2%; pointer-events: auto; overflow: hidden auto; border: #001b66b5; border-style: outset; border-radius: 2%; border-inline: none; ` divBase.appendChild(back) divBaseCont.appendChild(sellallbot) divBaseCont.appendChild(dpkbot) divBaseCont.appendChild(containerPowerBOT) divBase.appendChild(divBaseCont) contAppend.insertBefore(divBase,contAppend.firstChild) back.onclick = () => fechaBase(contAppend) var onOffFullpBOT = document.getElementById("switch-shadowfpb") if(onOffFPB=="off" && onOffFullpBOT.value == "on") onOffFullpBOT.click() if(onOffFPB=="on" && onOffFullpBOT.value == "off") onOffFullpBOT.click() onOffFullpBOT.value = onOffFPB onOffFullpBOT.onclick = () =>{ if(onOffFullpBOT.value == "on"){ onOffFullpBOT.value="off" onOffFPB = "off" clearInterval(fazBaseBot) }else if(onOffFullpBOT.value=="off"){ onOffFullpBOT.value="on" onOffFPB = "on" window.fazBaseBot = setInterval(BaseBot,2000) } } } const fechaBase = (contAppend) =>{ let popup = document.getElementById("menuOpc") contAppend.removeChild(popup) } //ABRE popup Das configurações function configuracoes(){ //tela do game let contAppend=document.getElementById("gameUiContainer") let divPai = document.createElement("div") let divBaseConfig = document.createElement("div") let table = document.createElement("div"); let back = document.createElement("p") back.innerText = "X" back.id = "sair" divBaseConfig.id = "menuOpc" divBaseConfig.className = "menuOpc" divBaseConfig.style.width = "50%" divBaseConfig.style.height = "50%" divBaseConfig.appendChild(back) divPai.style = ` width: 100%; height: 80%; pointer-events: auto; overflow: hidden auto; border: outset rgba(0, 27, 102, 0.71); border-radius: 2%; border-inline: none; `; table.style = ` width:100%; height:auto; pointer-events: all; display: flex; flex-direction: column; flex-wrap: nowrap; align-items: stretch; align-content: center; justify-content: flex-start; `; table.innerHTML = ` <table width="10%" border="1" cellspacing="0" cellpadding="4" style='width: 100%; height: max-content;'> <caption>Teclas do SCRIPT</caption> <colgroup> <col style="background-color: #00d0ff29;"> <col style="background-color: #0000ff1c;"> <col style="background-color: #ff003b0d;"> </colgroup> <tbody> <tr align="center"> <td>Tecla</td> <td>função</td> <td>explicação</td> </tr> <tr align="center"> <td>V</td> <td>Lag</td> <td>Ativa e desativa lag</td> </tr> <tr align="center"> <td>B</td> <td>JoinTroop</td> <td>Ativa e desativa a função de juntar tropas</td> </tr> <tr align="center"> <td>O</td> <td>Min Zoom</td> <td>Aumenta o alcançe da camera</td> </tr> <tr align="center"> <td>I</td> <td>Max Zoom</td> <td>Diminue o alcançe da camera</td> </tr> <tr align="center"> <td>P</td> <td>Junta Tropa</td> <td>Junta todas as tropas selecionadas</td> </tr> <tr align="center"> <td>C</td> <td>Def manual</td> <td>Defende manualmente</td> </tr> <tr align="center"> <td>X</td> <td>Retira construçoes</td> <td>Tira construções desnecessarias para poder fazer full atk</td> </tr> <tr align="center"> <td>Z</td> <td>Faz Base</td> <td>Faz ultima base que estava sendo utilizada ou padrão</td> </tr> <tr align="center"> <td>Shift</td> <td>Faz Upgrade na Base</td> <td>Ataliza wall, barrack, armoury</td> </tr> <tr align="center"> <td>E</td> <td>Compra Commander</td> <td>Compra e seleciona unidade: COMMANDER</td> </tr> <tr align="center"> <td>Q</td> <td>Seleciona Soldier</td> <td>Seleciona todos os soldados do jogador</td> </tr> <tr align="center"> <td>F</td> <td>Seleciona Tudo</td> <td>Seleciona todas as unidades exceto construções e siege</td> </tr> <tr align="center"> <td>.</td> <td>Velocidade camera</td> <td>Aumenta a velocidade de movimentação da camera</td> </tr> <tr align="center"> <td>* + Mensagem</td> <td>Fala dos Bots</td> <td>Enviar mensagem no chat com * na frente az com q todos os bots falem a msg</td> </tr> <tbody> </table> `; divPai.appendChild(table) divBaseConfig.appendChild(divPai) contAppend.insertBefore(divBaseConfig,contAppend.firstChild) back.onclick = () => fechaConfiguracoes(contAppend) } const fechaConfiguracoes = (contAppend) =>{ let popup = document.getElementById("menuOpc") contAppend.removeChild(popup) } //ABRE popup Das Opções function opcoes(){ //tela do game let contAppend=document.getElementById("gameUiContainer") //div com os botoes let divBaseConfig = document.createElement("div") let divBaseConfigCont = document.createElement("div") let divBaseConfigInf = document.createElement("div") let divBaseConfigContP = document.createElement("div") let containerLink = document.createElement("div") let containerDef = document.createElement("div") let derrubar = document.createElement("div") let fullpower = document.createElement("div") let antKick = document.createElement("div") let fullatk = document.createElement("div") let textoLinksala = document.createElement("input") let linksala = document.createElement("button") let centralizaContainer = document.createElement("div") let centraliza = document.createElement("button") let spabot = document.createElement("button") let ultControl = document.createElement("div") let rembot = document.createElement("button") let qntbot = document.createElement("input") let back = document.createElement("p") divBaseConfigInf.style = ` width: 50%; height: 100%; display: flex; flex-direction: column; flex-wrap: nowrap; align-content: center; justify-content: center; align-items: center; ` divBaseConfigInf.id = 'InfsMenu' divBaseConfigInf.innerHTML = `Bots: ${window.sockets.length}` divBaseConfigContP.style=` display: flex; flex-flow: row nowrap; place-content: center space-between; align-items: center; width: 100%; height: 76%; margin-inline-start: auto; margin-inline-end: auto; ` centralizaContainer.className = "contMenus" antKick.className = "contMenus" fullatk.className = "contMenus" containerDef.className = "contMenus" derrubar.className = "contMenus" fullpower.className = "contMenus" containerLink.id = "contLink" back.innerText = "X" back.id = "sair" divBaseConfigCont.style = ` width: 100%; margin-left: 2%; height: 100%; pointer-events: auto; overflow: hidden auto; border: #001b66b5; border-style: outset; border-radius: 2%; border-inline: none; ` divBaseConfig.id = "menuOpc" divBaseConfig.className = "menuOpc" divBaseConfig.style.width = "50%" divBaseConfig.style.height = "50%" divBaseConfig.appendChild(back) linksala.innerText = "Copiar" linksala.className = "botaoMenu1" linksala.id = "copylink" centraliza.innerText = "Centralizar" centraliza.className = "botaoMenu1" centraliza.id = "copylink" spabot.innerText = "Add" spabot.className = "botaoMenu1" spabot.id = "SpawnBot" rembot.id = "RemoveBot" rembot.innerText = "Remove" rembot.className = "botaoMenu1" qntbot.id = "NumberBot" qntbot.style = "width: 25%;border-radius: 15px;" qntbot.type = "number" ultControl.style = "display: flex; flex-direction: row; flex-wrap: nowrap; align-content: center; justify-content: center; align-items: center;" ultControl.appendChild(rembot) ultControl.appendChild(qntbot) ultControl.appendChild(spabot) textoLinksala.id = "linksala" textoLinksala.value = "http://bloble.io/?l=" + partyKey textoLinksala.type = "text" textoLinksala.style = ` background-color: #898989; border-radius: 10px; ` centraliza.onclick = () => { CE() } linksala.onclick = () => { const texto = document.getElementById("linksala") texto.select(); texto.setSelectionRange(0, 99999) document.execCommand("copy"); alert("Copiado") } spabot.onclick = async() =>{ var qntBot = document.getElementById("NumberBot").value if(onOffBot=="off") return if(gameState==0) return fechaOpcoes(contAppend) let valor = Number(qntBot); if(valor<=0)valor = 1; await Bots(valor) } rembot.onclick = async() =>{ var qntBot = document.getElementById("NumberBot").value if(onOffBot=="off") return if(gameState==0) return fechaOpcoes(contAppend) let valor = Number(qntBot); if(valor<=0)valor = 1; classBot.RemoveBots(valor) } containerLink.appendChild(textoLinksala) containerLink.appendChild(linksala) derrubar.innerHTML = `<p>BOT's </p> `,derrubar.appendChild(ultControl) containerDef.innerHTML = `<p>DEFEND </p><div class="switch__container"> <input id="switch-shadowDef" value="off" class="switch switch--shadow" type="checkbox"> <label for="switch-shadowDef"></label> </div> ` fullpower.innerHTML = ` <p>FULL POWER </p><div class="switch__container"> <input id="switch-shadowPower" value="off" class="switch switch--shadow" type="checkbox"> <label for="switch-shadowPower"></label> </div> ` centralizaContainer.innerHTML = ` <p>CENTRALIZAR</p> `,centralizaContainer.appendChild(centraliza) antKick.innerHTML = ` <p>ANT KICK </p><div class="switch__container"> <input id="switch-shadowAntKick" value="off" class="switch switch--shadow" type="checkbox"> <label for="switch-shadowAntKick"></label> </div> ` fullatk.innerHTML = ` <p>FULL ATK AUTO </p><div class="switch__container"> <input id="switch-shadowFullatk" value="off" class="switch switch--shadow" type="checkbox"> <label for="switch-shadowFullatk"></label> </div> ` divBaseConfig.appendChild(containerLink) divBaseConfigCont.appendChild(antKick) divBaseConfigCont.appendChild(fullatk) divBaseConfigCont.appendChild(derrubar) divBaseConfigCont.appendChild(containerDef) divBaseConfigCont.appendChild(fullpower) divBaseConfigCont.appendChild(centralizaContainer) divBaseConfigContP.appendChild(divBaseConfigCont) divBaseConfigContP.appendChild(divBaseConfigInf) divBaseConfig.appendChild(divBaseConfigContP) contAppend.insertBefore(divBaseConfig,contAppend.firstChild) back.onclick = () => fechaOpcoes(contAppend) //DEF var onOffDefelement = document.getElementById("switch-shadowDef") if(onOffDef=="off" && onOffDefelement.value == "on") onOffDefelement.click() if(onOffDef=="on" && onOffDefelement.value == "off") onOffDefelement.click() onOffDefelement.value = onOffDef onOffDefelement.onclick = () =>{ if(onOffDefelement.value == "on"){ onOffDefelement.value="off" onOffDef = "off" clearInterval(defendLoop) }else if(onOffDefelement.value=="off"){ onOffDefelement.value="on" onOffDef = "on" window.defendLoop = setInterval(()=>{ defend.filtraInimigos(units,player); defend.verificaDistancia(); defend.acionaDef(window.placeWalls); },200) } } //Bots /* var BotsS = document.getElementById("switch-shadowDeRR") if(onOffBot=="off" && BotsS.value == "on") BotsS.click() if(onOffBot=="on" && BotsS.value == "off") BotsS.click() BotsS.value = onOffBot */ //POWER var onOffPowerelement = document.getElementById("switch-shadowPower") if(onOffPower=="off" && onOffPowerelement.value == "on") onOffPowerelement.click() if(onOffPower=="on" && onOffPowerelement.value == "off") onOffPowerelement.click() onOffPowerelement.value = onOffPower onOffPowerelement.onclick = () =>{ if(onOffPowerelement.value == "on"){ onOffPowerelement.value="off" onOffPower = "off" clearInterval(power) }else if(onOffPowerelement.value=="off"){ onOffPowerelement.value="on" onOffPower = "on" window.power = setInterval(()=>{ gerador(socket) powerPlants(socket) },1000) } } //AUTO FULL ATK var onOffFKAelements = document.getElementById("switch-shadowFullatk") if(onOffFKA=="off" && onOffFKAelements.value == "on") onOffFKAelements.click() if(onOffFKA=="on" && onOffFKAelements.value == "off") onOffFKAelements.click() onOffFKAelements.value = onOffFKA onOffFKAelements.onclick = () =>{ if(onOffFKAelements.value == "on"){ onOffFKAelements.value="off" onOffFKA = "off" clearInterval(fullatkautoVar) }else if(onOffFKAelements.value=="off"){ onOffFKAelements.value="on" onOffFKA = "on" window.fullatkautoVar = setInterval(()=>{ fullatkauto(socket) },1000) } } //ANT KICK var onOffAntKick = document.getElementById("switch-shadowAntKick") if(onOffantkick=="off" && onOffAntKick.value == "on") onOffAntKick.click(); if(onOffantkick=="on" && onOffAntKick.value == "off") onOffAntKick.click(); onOffAntKick.value = onOffantkick onOffAntKick.onclick = () =>{ if(onOffAntKick.value == "on"){ onOffAntKick.value="off" onOffantkick = "off" }else if(onOffAntKick.value=="off"){ onOffAntKick.value="on" onOffantkick = "on" } } } const fechaOpcoes = (contAppend) =>{ let popup = document.getElementById("menuOpc") contAppend.removeChild(popup) } //auto base(fullatk) function fullatkauto(socket){ let siegeExistbarrack, commanderExist, siegeExist if(onOffFKA==="off") return if(window.PowerPlayer<4000){ gerador(socket) powerPlants(socket) }else if(window.PowerPlayer>4000){ commanderExist = units.some((unit)=>{ if(unit.type == 1 && unit.shape=="star" && unit.owner==player.sid) return unit }) if(commanderExist==false){ spawnaComanderESeleciona() }else{ socket.emit("1",-2.08,309.99919886993257,8) for (var i = 0; i < units.length; ++i){ if(2 == units[i].type && "square" == units[i].shape){ socket.emit("4", units[i].id, 2) } } siegeExistbarrack = units.some((unit)=>{ if(unit.type == 2 && unit.shape=="square" && unit.owner==player.sid) return unit }) siegeExist = units.some((unit)=>{ if(unit.type == 1 && unit.shape=="triangle" && unit.uPath[0]==11 && unit.owner==player.sid) return unit }) if(siegeExistbarrack==true){ if(siegeExist==true){ for(let a=0;a<units.length;a++){ if(units[a].uPath[0]==8 && units[a].uPath[1]==2 && units[a].owner==player.sid){ let z = [] z.push(units[a].id) socket.emit("3",z) } } for(let a=0;a<units.length;a++){ if(units[a].uPath[0]==11 && units[a].owner==player.sid){ selUnits.push(units[a]) CE() } } tirafull() fullAtk(socket) setTimeout(()=>{soldadoarmory(socket)},800) setTimeout(()=>{UpgradeGreaterBarracks1(socket)},900) setTimeout(()=>{microGenerators(socket)},1000) setTimeout(()=>{ onOffFKA = "off" clearInterval(fullatkautoVar) },1100) }else{ let aer = [] units.forEach((a)=>{ if(a.owner==player.sid&&a.dir>0.1)aer.push(a.id) }) socket.emit('3',aer) House(socket) } } } } } //centraliza function CE() { var trops = []; if (player.x == null) { player.x == 0. } if (player.y == null) { player.y == 0. } for (var b = 0; b < selUnits.length; ++b){ trops.push(selUnits[b].id); } socket.emit("5", Math.floor((player.x))*(1.0000009999), Math.floor((player.y))*(1.0000000999), trops, 0, -1); } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //PopUp Generico(pode ser definido um tempo em que ele sera visivel e uma mensagem) const popUpGenerico=(Mensagem="...",Contador=false,Tempo=5000)=>{ //tela do game let contAppend=document.getElementById("gameUiContainer") //div com os botoes let divBaseConfig = document.createElement("div") let back = document.createElement("p") let msg = document.createElement("div") msg.style.width = "100%" msg.style.height = "100%" msg.style = "display: flex; flex-direction: column; flex-wrap: nowrap; align-content: center; justify-content: center; align-items: center" msg.innerHTML = "<div style='text-align:center'>"+Mensagem+"</div>" back.innerText = "X" back.id = "sair" divBaseConfig.id = "popUpGenerico" divBaseConfig.className = "menuOpc" divBaseConfig.style.width = "50%" divBaseConfig.style.height = "20%" divBaseConfig.appendChild(back) divBaseConfig.appendChild(msg) let veryG = document.getElementById("popUpGenerico") if(veryG==null){ contAppend.insertBefore(divBaseConfig,contAppend.firstChild) }else{ fechaPopUpGenerico(veryG) contAppend.insertBefore(divBaseConfig,contAppend.firstChild) } if(Contador===true){ setTimeout(()=>{fechaPopUpGenerico(divBaseConfig)},Tempo) } back.onclick = () => fechaPopUpGenerico(divBaseConfig) } const fechaPopUpGenerico = (divBaseConfig) => { let pai = divBaseConfig.parentNode pai.removeChild(divBaseConfig) } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //RETIRA OS BOTS function RBots(objetivo=1){ let Qnt = objetivo; let retirados = 0; for(;retirados<Qnt;){ retirados+=1; window.sockets[0].sock.close(); window.sockets.splice(0, 1); console.log(retirados) console.log(Qnt) if(retirados==Qnt || window.sockets.length<=0){ popUpGenerico(`${retirados} de ${Qnt} removidos`,true,3000); return }; }; } window.ioConn //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //ADD OS BOTS class CriacaoBots { constructor(maxAdd,minAdd,limite){ this.max = maxAdd; this.min = minAdd; this.aviso = ``; this.cont = 0; this.valor = 0; this.limite = limite; }; RemoveBots(a){ let valor = a; const ob = window.sockets.length - valor; let atual = window.sockets.length; if(ob<=0)valor = atual; for(let a=0;a<valor;a++){ let arrBots = window.sockets.filter(bot => (bot!=undefined)) window.sockets = arrBots; window.sockets[0].sock.close(); window.sockets.splice(0, 1); } } addValor(valor){ this.valor = valor; }; verificaValor(){ if(this.valor<this.min)this.valor = this.min,this.aviso = `! Quantidade de bots nao alcança o minimo esperado de ${this.min} Bot<br> -Numero de spawns alterado para ${this.min}`; if(this.valor>this.max)this.valor = this.max,this.aviso = `! Quantidade de bots ultrapassa o limite de ${this.max} Bots<br> -Numero de spawns alterado para ${this.max}`; }; verificaLimiteDeBots(){ if(window.sockets.length>=this.limite){ onOffBot = "off" }; }; alertaLimiteAlcancado(){ return popUpGenerico(`Numero de bots alcançado... Para acesso completo fale com o PlayerX/DEV`,true,3000); } popUpGeraSocket(){ popUpGenerico(` ${this.aviso}<br> ${this.cont }/${this.valor} `); }; popUpSpawnaSocket(){ popUpGenerico("Spawnando Bots...",true,2000); }; zeraAdd(){ this.aviso = ``; this.cont = 0; this.valor = 0; }; spawnBots(){ window.sockets.forEach((socket,pos)=>{ if((pos)>=this.limite)return; socket.sock.emit("spawn",{name:userNameInput.value,skin:13,},socket.captcha); }); }; }; let spwVxMin = 1; let spwVxMax = 5; let limBots = 10; const classBot = new CriacaoBots(spwVxMax,spwVxMin,limBots); function criarArrBot(cap){ return new Promise(function (resolve, reject) { try{ const socketz = io.connect(socket.io.uri,{query:"cid="+UTILS.getUniqueID()+'666PlayerX999'+"&rmid=undefined"}); window.sockets[window.idBot]={sock:socketz,captcha:cap}; resolve(); }catch(err){ reject(err); }; }); }; async function Bots(a=1){ classBot.addValor(a) classBot.verificaValor() if(classBot.cont<classBot.valor){ classBot.verificaLimiteDeBots() classBot.popUpGeraSocket() await grecaptcha.execute("6Ldh8e0UAAAAAFOKBv25wQ87F3EKvBzyasSbqxCE").then((cap)=>{ criarArrBot(cap).then(res=>{ window.idBot+=1; classBot.cont += 1; }).catch(err=>{ throw err; }); }); classBot.verificaValor() if(onOffBot == "on"){ Bots(a); }else{ classBot.alertaLimiteAlcancado(); classBot.spawnBots(); } }else{ classBot.zeraAdd(); classBot.popUpSpawnaSocket(); classBot.spawnBots(); }; }; //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //SPAWNA BOTS function SPAWN(){ popUpGenerico("Spawnando Bots...",true,2000) window.sockets.forEach((socket,pos)=>{ socket.sock.emit("spawn",{name:userNameInput.value,skin:13,},socket.captcha) }) } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //VERIFICA POWER DOS BOTS E CONSTROI FULLPOWER function BaseBot(){ if(onOffFPB=="off")return sockets.forEach((socket,pos)=>{ socket.sock.on("pt",function(a){ window.ptsBot = a }) if(window.ptsBot<6000){ gerador(socket.sock) microGenerators(socket.sock) powerPlants(socket.sock) } }) } //VERIFICA QUAL BASE PLAYER ESTA USANDO PARA REFAZER BASE ATUAL function VeryBase(){ if(selBaseSpawn.load==true){ fazBaseCarregada() }else if(selBaseSpawn.padrao==true){ fullAtk(socket) }else if(selBaseSpawn.outra==true){ } } function resetVeryBase(){ selBaseSpawn.load = false; selBaseSpawn.padrao = true; selBaseSpawn.outra = false; } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //teclas eventos //ao soltar tecla window.addEventListener("keyup",(a)=>{ let tecla = event.keyCode || event.which if (document.activeElement == mainCanvas){ if(tecla == window.teclas.speedCam.keyCode){ //caractere (ponto final) TecPonto = false; cameraSpd = (TecPonto==true ? 1.8 : .85) * (Math.log(maxScreenHeight / 1080) + 1) } } }) //ao precionar tecla window.addEventListener("keydown",async function(event){ let tecla = event.keyCode || event.which if (document.activeElement == mainCanvas) { if(tecla == window.teclas.speedCam.keyCode){ //caractere (ponto final) TecPonto = true; cameraSpd = (TecPonto==true ? 1.8 : .85) * (Math.log(maxScreenHeight / 1080) + 1) } if(tecla==window.teclas.def.keyCode){ //tecla c placeWalls(socket); } if(tecla==window.teclas.resetaVerybase.keyCode){ //tecla t resetVeryBase(); } if(tecla==window.teclas.lag.keyCode){ //tecla v lagOnOff() } if(tecla==window.teclas.tiraInterno.keyCode){ //tecla x tirafull() } if(tecla==window.teclas.fullatk.keyCode){ //tecla z VeryBase() } if(tecla==window.teclas.joinTroop.keyCode){ //tecla b joiOnOff() } if(tecla==window.teclas.JuntaTropa.keyCode){ //tecla p function movebot(){ var e = []; var a = player.x + targetDst * MathCOS(targetDir) + camX, d = player.y + targetDst * MathSIN(targetDir) + camY; for (var b = 0; b < selUnits.length; ++b) {e.push(selUnits[b].id);} sockets.forEach((sock)=>{ sock.sock.emit("5", a, d, e, 0, -1) }) } movebot() if(onOffjointroop=="on"){ if(onOffLag=="on"){ juntarComLag() }else if(onOffLag=="off"){ await juntarSemLag() }}else if(onOffjointroop=="off"){ moveSemLag() } } if(tecla==window.teclas.selCommander.keyCode){ //tecla e spawnaComanderESeleciona() } if(tecla==window.teclas.selSoldier.keyCode){ //tecla q selecionaMenosCommander() } if(tecla==window.teclas.selAll.keyCode){ //tecla f selecionaMenosSiege() } if(tecla==window.teclas.upgrade.keyCode){ //tecla Shift soldadoarmory(socket) UpgradeGreaterBarracks1(socket) microGenerators(socket) powerPlants(socket) } } }) //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //aciona eventos enquanto mouse estiver pressionado(tropas seguem sem precisar ficar clicando com o mouse) let intervalo mainCanvas.addEventListener("mousedown",function(a){ a.preventDefault();a.stopPropagation() if(document.activeElement!=mainCanvas) mainCanvas.focus(); mouseStartX=maxScreenWidth/2+targetDst*MathCOS(targetDir); mouseStartY=maxScreenHeight/2+targetDst*MathSIN(targetDir); showSelector=!0; activeUnit?(showSelector=!1,3===a.which?toggleActiveUnit():unitList&&(a=unitList.indexOf(activeUnit),sendUnit(a))):3!==a.which&&2!==a.button||!selUnits.length||(showSelector=!1,"Unit"==selUnitType? intervalo = setInterval(()=>{moveSelUnits()},100):setSelUnitGather()) }); mainCanvas.addEventListener("mouseup", function(){ clearInterval(intervalo); }); //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //entrar no game ao dar enter no input name(tela inicial) document.getElementById("userNameInput").addEventListener("keypress",(tecla)=>{ let cod = tecla.keyCode ? tecla.keyCode : tecla.which; if(cod && cod === 13) enterGame() }) //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //liga desliga o Lag function lagOnOff(){ if(onOffLag=="on"){ onOffLag="off" }else if(onOffLag=="off"){ onOffLag="on" } } //liga desliga o JoinTroop function joiOnOff(){ if(onOffjointroop=="on"){ onOffjointroop="off" }else if(onOffjointroop=="off"){ onOffjointroop="on" } } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //spawna full wall function placeWalls() { let objwall=[{ coamdnos: socket.emit("1",-2.08,309.99919886993257,1), coamdnos: socket.emit("1",-2.5,309.9985538675946,1), coamdnos: socket.emit("1",-1.06,309.9996570965847,1), coamdnos: socket.emit("1",-0.64,309.99990225804925,1), coamdnos: socket.emit("1", -1.06, 310, 1), coamdnos: socket.emit("1", -2.08, 310, 1), coamdnos: socket.emit("1", -0.64, 310, 1), coamdnos: socket.emit("1", -2.5, 310, 1), coamdnos: socket.emit("1", -1.87, 306, 1), coamdnos: socket.emit("1", -1.27, 306, 1), coamdnos: socket.emit("1", -1.67, 306, 1), coamdnos: socket.emit("1", -1.47, 306, 1), coamdnos: socket.emit("1", -2.29, 306, 1), coamdnos: socket.emit("1", -0.85, 306, 1), coamdnos: socket.emit("1", -0.43, 306, 1), coamdnos: socket.emit("1", -2.71, 306, 1), coamdnos: socket.emit("1", -2.91, 306, 1), coamdnos: socket.emit("1", -0.23, 306, 1), coamdnos: socket.emit("1", -0.03, 306, 1), coamdnos: socket.emit("1", -3.11, 306, 1), coamdnos: socket.emit("1", 2.97, 306, 1), coamdnos: socket.emit("1", 0.17, 306, 1), coamdnos: socket.emit("1", 2.77, 306, 1), coamdnos: socket.emit("1", 0.37, 306, 1), coamdnos: socket.emit("1", 0.57, 306, 1), coamdnos: socket.emit("1", 2.57, 306, 1), coamdnos: socket.emit("1", 2.37, 306, 1), coamdnos: socket.emit("1", 0.77, 306, 1), coamdnos: socket.emit("1", 0.97, 306, 1), coamdnos: socket.emit("1", 2.17, 306, 1), coamdnos: socket.emit("1", 1.97, 306, 1), coamdnos: socket.emit("1", 1.17, 306, 1), coamdnos: socket.emit("1", 1.37, 306, 1), coamdnos: socket.emit("1", 1.77, 306, 1), coamdnos: socket.emit("1",Math.PI*-1.5,306,1), coamdnos: socket.emit("1", -1.7, 245.85, 1), coamdnos: socket.emit("1", -1.45, 245.85, 1), coamdnos: socket.emit("1", -1.96, 245.85, 1), coamdnos: socket.emit("1", -1.19, 245.85, 1), coamdnos: socket.emit("1", -0.94, 245.85, 1), coamdnos: socket.emit("1", -2.21, 245.85, 1), coamdnos: socket.emit("1", -2.46, 245.85, 1), coamdnos: socket.emit("1", -0.69, 245.85, 1), coamdnos: socket.emit("1", -2.71, 245.85, 1), coamdnos: socket.emit("1", -0.44, 245.85, 1), coamdnos: socket.emit("1", -2.96, 245.85, 1), coamdnos: socket.emit("1", -0.19, 245.85, 1), coamdnos: socket.emit("1", 3.07, 245.85, 1), coamdnos: socket.emit("1", 0.06, 245.85, 1), coamdnos: socket.emit("1", 2.82, 245.85, 1), coamdnos: socket.emit("1", 0.31, 245.85, 1), coamdnos: socket.emit("1", 2.57, 245.85, 1), coamdnos: socket.emit("1", 0.57, 245.85, 1), coamdnos: socket.emit("1", 2.32, 245.85, 1), coamdnos: socket.emit("1", 0.82, 245.85, 1), coamdnos: socket.emit("1", 1.07, 245.85, 1), coamdnos: socket.emit("1", 2.07, 245.85, 1), coamdnos: socket.emit("1", 1.32, 245.85, 1), coamdnos: socket.emit("1", 1.82, 245.85, 1), coamdnos: socket.emit("1",Math.PI*-1.5,245.85,1), coamdnos: socket.emit("1", -1.91, 184.69, 1), coamdnos: socket.emit("1", -1.23, 184.4, 1), coamdnos: socket.emit("1", -2.25, 185.57, 1), coamdnos: socket.emit("1", -0.89, 184.93, 1), coamdnos: socket.emit("1", -2.58, 190.21, 1), coamdnos: socket.emit("1", -0.56, 190.16, 1), coamdnos: socket.emit("1", -2.9, 186.72, 1), coamdnos: socket.emit("1", -0.24, 185.76, 1), coamdnos: socket.emit("1", 3.05, 183.1, 1), coamdnos: socket.emit("1", 0.09, 183.95, 1), coamdnos: socket.emit("1", 0.42, 189.81, 1), coamdnos: socket.emit("1", 2.72, 189.79, 1), coamdnos: socket.emit("1", 0.74, 187.09, 1), coamdnos: socket.emit("1", 2.4, 188, 1), coamdnos: socket.emit("1", 2.07, 181, 1), coamdnos: socket.emit("1", 1.08, 181.02, 1), coamdnos: socket.emit("1", 1.735, 188.31, 1), coamdnos: socket.emit("1", 1.41, 188.81, 1), coamdnos: socket.emit("1",Math.PI*1.5,140,1), coamdnos: socket.emit("1", -2.095, 130, 1), coamdnos: socket.emit("1", -1.048, 130, 1), coamdnos: socket.emit("1", -2.565, 130, 1), coamdnos: socket.emit("1", -0.58, 130, 1), coamdnos: socket.emit("1", -3.035, 130, 1), coamdnos: socket.emit("1", -0.09, 130, 1), coamdnos: socket.emit("1", 0.38, 130, 1), coamdnos: socket.emit("1", 2.78, 130, 1), coamdnos: socket.emit("1", 2.3, 130, 1), coamdnos: socket.emit("1", 0.86, 130, 1), coamdnos: socket.emit("1", 1.83, 130, 1), coamdnos: socket.emit("1", 1.33, 130, 1) }] objwall[0] } window.placeWalls = placeWalls //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //cria full power function gerador(socketB){ socketB.emit("1",-1.7700175093099544, 243.8531699609419, 3) socketB.emit("1", 1.5700171594315573, 243.85007402090326, 3); socketB.emit("1", 2.4400100710526793, 196.79985467474305, 3); socketB.emit("1", 2.2400039007898447, 243.85656849877958, 3); socketB.emit("1", -2.7800023458624703, 194.6788252481507, 3); socketB.emit("1", 1.9699911201667188, 243.85313366860794, 3); socketB.emit("1", 2.0999878201715214, 185.58517209087591, 3); socketB.emit("1", 1.8700025978863808, 132.00487756139935, 3); socketB.emit("1", 1.2599938029024704, 132.00454272486235, 3); socketB.emit("1", 1.3800278697318928, 194.13178049974198, 3); socketB.emit("1", 1.7600061169825598, 194.06341746965091, 3); socketB.emit("1", -2.4400027616849433, 185.75130282181078, 3); socketB.emit("1", -2.1999936469647867, 131.99750300668575, 3); socketB.emit("1", -2.5899833434664847, 243.84680949317334, 3); socketB.emit("1", 3.0599865137335724, 131.9992848465475, 3); socketB.emit("1", 2.3700155322992322, 132.00115908582003, 3); socketB.emit("1", 2.7699990995853443, 180.63860107961412, 3); socketB.emit("1", 2.910001829109119, 243.8501927413633, 3); socketB.emit("1", 2.6399909192202835, 243.84888476267423, 3); socketB.emit("1", 3.1100150743706907, 196.05774072961268, 3); socketB.emit("1", -2.9699920613329622, 243.85151732150447, 3); socketB.emit("1", -2.690040409174835, 132.00027613607475, 3); socketB.emit("1", -2.3099851374683826, 243.85151732150447, 3); socketB.emit("1", -2.0399825212769436, 243.85142525726602, 3); socketB.emit("1", 0.7600044161827382, 132.00282572733062, 3); socketB.emit("1", 0.35996640663856383, 180.10304605974878, 3); socketB.emit("1", 0.029980358323314006, 197.1585985951411, 3); socketB.emit("1", -0.439963547142766, 132.00080795207285, 3); socketB.emit("1", 0.0800082011395776, 132.0022685411125, 3); socketB.emit("1", 0.22998938484625386, 243.85088271318605, 3); socketB.emit("1", 0.5000045603394669, 243.85230796529285, 3); socketB.emit("1", 0.7000201471114224, 196.1091423162112, 3); socketB.emit("1", 0.8999878082444033, 243.84691201653544, 3); socketB.emit("1", 1.0399986494012126, 186.08457861950842, 3); socketB.emit("1", 1.170002238251199, 243.8551629553904, 3); socketB.emit("1", -0.170023102819992, 243.84605081895415, 3); socketB.emit("1", -0.36001357695289626, 194.92632916053194, 3); socketB.emit("1", -0.7000068138510656, 183.7252296229344, 3); socketB.emit("1", -1.3600094643934062, 243.84717119540267, 3); socketB.emit("1", -1.0899817628353876, 243.84783862072678, 3); socketB.emit("1", -0.5500054440958607, 243.85303709406625, 3); socketB.emit("1", -0.8199991749608286, 243.85031002645857, 3); socketB.emit("1", -1.9300228177358634, 182.30682104627905, 3); socketB.emit("1", -1.199997990229862, 183.82290662482725, 3); socketB.emit("1", -0.9500096278543927, 131.99805036438974, 3); socketB.emit("1", -1.5699815385655684, 196.37006518306183, 3); socketB.emit("1", -1.5699629936544652, 132.00004583332537, 3); } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //base full atk const fullAtk=(socketB)=>{ socketB.emit("1",-1.5700106126708684, 140.00004321427903, 7); socketB.emit("1",-2.08,309.99919886993257,8) socketB.emit("1",-2.5,309.9985538675946,8) socketB.emit("1",-1.06,309.9996570965847,8) socketB.emit("1",-0.64,309.99990225804925,8) socketB.emit("1", -1.87, 306, 1),socketB.emit("1", -1.27, 306, 1),socketB.emit("1", -1.67, 306, 1),socketB.emit("1", -1.47, 306, 1),socketB.emit("1", -2.29, 306, 1),socketB.emit("1", -0.85, 306, 1),socketB.emit("1", -0.43, 306, 1),socketB.emit("1", -2.71, 306, 1),socketB.emit("1", -2.91, 306, 1),socketB.emit("1", -0.23, 306, 1),socketB.emit("1", -0.03, 306, 1),socketB.emit("1", -3.11, 306, 1),socketB.emit("1", 2.97, 306, 1),socketB.emit("1", 0.17, 306, 1),socketB.emit("1", 2.77, 306, 1),socketB.emit("1", 0.37, 306, 1),socketB.emit("1", 0.57, 306, 1),socketB.emit("1", 2.57, 306, 1),socketB.emit("1", 2.37, 306, 1),socketB.emit("1", 0.77, 306, 1),socketB.emit("1", 0.97, 306, 1),socketB.emit("1", 2.17, 306, 1),socketB.emit("1", 1.97, 306, 1),socketB.emit("1", 1.17, 306, 1),socketB.emit("1", 1.37, 306, 1),socketB.emit("1", 1.77, 306, 1),socketB.emit("1",Math.PI*-1.5,306,1),socketB.emit("1", -1.7, 245.85, 4),socketB.emit("1", -1.45, 245.85, 4),socketB.emit("1", -1.96, 245.85, 4),socketB.emit("1", -1.19, 245.85, 4),socketB.emit("1", -0.94, 245.85, 4),socketB.emit("1", -2.21, 245.85, 4),socketB.emit("1", -2.46, 245.85, 4),socketB.emit("1", -0.69, 245.85, 4),socketB.emit("1", -2.71, 245.85, 4),socketB.emit("1", -0.44, 245.85, 4),socketB.emit("1", -2.96, 245.85, 4),socketB.emit("1", -0.19, 245.85, 4),socketB.emit("1", 3.07, 245.85, 4),socketB.emit("1", 0.06, 245.85, 4),socketB.emit("1", 2.82, 245.85, 4),socketB.emit("1", 0.31, 245.85, 4),socketB.emit("1", 2.57, 245.85, 4),socketB.emit("1", 0.57, 245.85, 4),socketB.emit("1", 2.32, 245.85, 4),socketB.emit("1", 0.82, 245.85, 4),socketB.emit("1", 1.07, 245.85, 4),socketB.emit("1", 2.07, 245.85, 4),socketB.emit("1", 1.32, 245.85, 4),socketB.emit("1", 1.82, 245.85, 4),socketB.emit("1",Math.PI*-1.5,245,4),socketB.emit("1", -1.91, 184.69, 4),socketB.emit("1", -1.23, 184.4, 4),socketB.emit("1", -2.25, 185.57, 4),socketB.emit("1", -0.89, 184.93, 4),socketB.emit("1", -2.58, 190.21, 4),socketB.emit("1", -0.56, 190.16, 4),socketB.emit("1", -2.9, 186.72, 4),socketB.emit("1", -0.24, 185.76, 4),socketB.emit("1", 3.05, 183.1, 4),socketB.emit("1", 0.09, 183.95, 4),socketB.emit("1", 0.42, 189.81, 4),socketB.emit("1", 2.72, 189.79, 4),socketB.emit("1", 0.74, 187.09, 4),socketB.emit("1", 2.4, 188, 4),socketB.emit("1", 2.07, 181, 4),socketB.emit("1", 1.08, 181.02, 4),socketB.emit("1", 1.735, 188.31, 4),socketB.emit("1", 1.41, 188.81, 4),socketB.emit("1", -2.095, 130, 4),socketB.emit("1", -1.048, 130, 4),socketB.emit("1", -2.565, 130, 4),socketB.emit("1", -0.58, 130, 4),socketB.emit("1", -3.035, 130, 4),socketB.emit("1", -0.09, 130, 4),socketB.emit("1", 0.38, 130, 4),socketB.emit("1", 2.78, 130, 4),socketB.emit("1", 2.3, 130, 4),socketB.emit("1", 0.86, 130, 4),socketB.emit("1", 1.83, 130, 4),socketB.emit("1", 1.33, 130, 4); } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //faz houses const House=(socketB)=>{ socketB.emit("1", -1.7, 245.85, 4),socketB.emit("1", -1.45, 245.85, 4),socketB.emit("1", -1.96, 245.85, 4),socketB.emit("1", -1.19, 245.85, 4),socketB.emit("1", -0.94, 245.85, 4),socketB.emit("1", -2.21, 245.85, 4),socketB.emit("1", -2.46, 245.85, 4),socketB.emit("1", -0.69, 245.85, 4),socketB.emit("1", -2.71, 245.85, 4),socketB.emit("1", -0.44, 245.85, 4),socketB.emit("1", -2.96, 245.85, 4),socketB.emit("1", -0.19, 245.85, 4),socketB.emit("1", 3.07, 245.85, 4),socketB.emit("1", 0.06, 245.85, 4),socketB.emit("1", 2.82, 245.85, 4),socketB.emit("1", 0.31, 245.85, 4),socketB.emit("1", 2.57, 245.85, 4),socketB.emit("1", 0.57, 245.85, 4),socketB.emit("1", 2.32, 245.85, 4),socketB.emit("1", 0.82, 245.85, 4),socketB.emit("1", 1.07, 245.85, 4),socketB.emit("1", 2.07, 245.85, 4),socketB.emit("1", 1.32, 245.85, 4),socketB.emit("1", 1.82, 245.85, 4),socketB.emit("1",Math.PI*-1.5,245,4),socketB.emit("1", -1.91, 184.69, 4),socketB.emit("1", -1.23, 184.4, 4),socketB.emit("1", -2.25, 185.57, 4),socketB.emit("1", -0.89, 184.93, 4),socketB.emit("1", -2.58, 190.21, 4),socketB.emit("1", -0.56, 190.16, 4),socketB.emit("1", -2.9, 186.72, 4),socketB.emit("1", -0.24, 185.76, 4),socketB.emit("1", 3.05, 183.1, 4),socketB.emit("1", 0.09, 183.95, 4),socketB.emit("1", 0.42, 189.81, 4),socketB.emit("1", 2.72, 189.79, 4),socketB.emit("1", 0.74, 187.09, 4),socketB.emit("1", 2.4, 188, 4),socketB.emit("1", 2.07, 181, 4),socketB.emit("1", 1.08, 181.02, 4),socketB.emit("1", 1.735, 188.31, 4),socketB.emit("1", 1.41, 188.81, 4),socketB.emit("1", -2.095, 130, 4),socketB.emit("1", -1.048, 130, 4),socketB.emit("1", -2.565, 130, 4),socketB.emit("1", -0.58, 130, 4),socketB.emit("1", -3.035, 130, 4),socketB.emit("1", -0.09, 130, 4),socketB.emit("1", 0.38, 130, 4),socketB.emit("1", 2.78, 130, 4),socketB.emit("1", 2.3, 130, 4),socketB.emit("1", 0.86, 130, 4),socketB.emit("1", 1.83, 130, 4),socketB.emit("1", 1.33, 130, 4); } //tira construções desnecessarias para o full atk function tirafull(){ for (var a = [], d = 0; d < units.length; ++d) { if (units[d].owner == player.sid && units[d].type !=1) { let upath = units[d].uPath[0] if(units[d].dir == -1.06) { if(upath!==4 && upath!==7 && upath!==5 && upath!==2 && upath!==8){ a.push(units[d].id) socket.emit("3", a) }}}} for (var a = [], d = 0; d < units.length; ++d) { if (units[d].owner == player.sid && units[d].type !=1) { let upath = units[d].uPath[0] if(units[d].dir == -2.08) { if(upath!==4 && upath!==7 && upath!==5 && upath!==2 && upath!==8){ a.push(units[d].id) socket.emit("3", a) }}}} for (var a = [], d = 0; d < units.length; ++d) { if (units[d].owner == player.sid && units[d].type !=1) { let upath = units[d].uPath[0] if(units[d].dir == -0.64) { if(upath!==4 && upath!==7 && upath!==5 && upath!==2 && upath!==8){ a.push(units[d].id) socket.emit("3", a) }}}} for (var a = [], d = 0; d < units.length; ++d) { if (units[d].owner == player.sid && units[d].type !=1) { let upath = units[d].uPath[0] if(units[d].dir == -2.5) { if(upath!==4 && upath!==7 && upath!==5 && upath!==2 && upath!==8){ a.push(units[d].id) socket.emit("3", a) }}}} var sellwall; for(var i=0,s=[],s2=[];i<units.length;++i){ if (units[i].owner == player.sid && units[i].type !=1) { let upath = units[i].uPath[0] sellwall = UTILS.getDistance(player.x,player.y,units[i].x,units[i].y); if(upath!==4 && upath!==7 && upath!==5 && upath!==2 && upath!==8){ if(UTILS.roundToTwo(sellwall)<300){ s.push(units[i].id); socket.emit("3",s); }}}}} //VENDE TUDO PARA OS BOTS function vendeBot(){ window.sockets.forEach(socket => { let userMesmoNome = [] users.forEach((user)=>{ if(user.name == player.name) userMesmoNome.push(user) }) for (var a = [], d = 0; d < units.length; ++d) { userMesmoNome.forEach((bots)=>{ if(units[d].type!=1 && units[d].owner == bots.sid ){a.push(units[d].id) socket.sock.emit("3", a); } }) } }) }; //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //upgrades //upgrade para boulder function UpgradeBoulder(socket){ units.forEach(unit=>{ if(3 == unit.type && "circle" == unit.shape){ socket.emit("4", unit.id, 0) } }) } //upgrade para spike function UpgradeSpikes(socket){ units.forEach(unit=>{ if(3 == unit.type && "hexagon" == unit.shape){ socket.emit("4", unit.id, 0) } }) } //upgrade anti tank function UpgradeAntiTankGun(socket){ units.forEach(unit=>{ if(0 == unit.type && 4 == unit.turretIndex && "circle" == unit.shape){ socket.emit("4", unit.id, 1) } }) } //upgrade torreta longa function UpgradeRangedTurret(socket){ units.forEach(unit=>{ if(0 == unit.type && 1 == unit.turretIndex && "circle" == unit.shape){ socket.emit("4", unit.id, 1) } }) } //upgrade para spotter function UpgradeSpotterTurret(socket){ units.forEach(unit=>{ if(0 == unit.type && 3 == unit.turretIndex && "circle" == unit.shape){ socket.emit("4", unit.id, 0) } }) } //upgrade para micro geradores function microGenerators(socketB){ units.forEach(unit=>{ if (unit.type === 3 && "circle" == unit.shape) { socketB.emit("4", unit.id, 1) } }) } //upgrade para power plants function powerPlants(socketB){ units.forEach(unit=>{ if (unit.type === 0 && "hexagon" == unit.shape) { socketB.emit("4", unit.id, 0) } }) } //upgrade barracas function UpgradeGreaterBarracks1(socketB){ units.forEach(unit=>{ if(2 == unit.type && "square" == unit.shape){ socketB.emit("4", unit.id, 0) } }) } //upa soldados (upgrade armoury) function soldadoarmory(socketB){ for (var i = 0; i < units.length; ++i){ if(0 == units[i].type && getUnitFromPath(units[i].uPath).name ==="Armory"){ socketB.emit("4", units[i].id, 0); } } } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //move unidades moveSelUnits = async function() { if (selUnits.length) { var a = player.x + targetDst * MathCOS(targetDir) + camX, d = player.y + targetDst * MathSIN(targetDir) + camY, c = 1; if (c && 1 < selUnits.length) for (var b = 0; b < users.length; ++b) if (UTILS.pointInCircle(a, d, users[b].x, users[b].y, users[b].size)) { c = 0; break } var g = -1; if (c) for (b = 0; b < units.length; ++b) if (units[b].onScreen && units[b].owner != player.sid && UTILS.pointInCircle(a, d, units[b].x, units[b].y, units[b].size)) { c = 0; g = units[b].id; break } 1 == selUnits.length && (c = 0); function movebot(){ var e = []; var a = player.x + targetDst * MathCOS(targetDir) + camX, d = player.y + targetDst * MathSIN(targetDir) + camY; for (var b = 0; b < selUnits.length; ++b) {e.push(selUnits[b].id);} sockets.forEach((sock)=>{ sock.sock.emit("5", a, d, e, 0, -1) }) } movebot() if(onOffjointroop=="on"){ if(onOffLag=="on"){ juntarComLag() }else if(onOffLag=="off"){ await juntarSemLag() }}else if(onOffjointroop=="off"){ moveSemLag() } } } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //junta sem lag async function juntarSemLag(){ var e = []; var a = player.x + targetDst * MathCOS(targetDir) + camX, d = player.y + targetDst * MathSIN(targetDir) + camY; for (var b = 0; b < selUnits.length; ++b) {e.push(selUnits[b].id);} await socket.emit("5", a, d, e, 0, -1) } //move sem juntar e sem lag async function moveSemLag(){ var e = []; var a = player.x + targetDst * MathCOS(targetDir) + camX, d = player.y + targetDst * MathSIN(targetDir) + camY; for (var b = 0; b < selUnits.length; ++b) {e.push(selUnits[b].id);} await socket.emit("5", a, d, e, 1, -1) } //junta com lag2 function juntarComLag2(){ let a = player.x + targetDst * MathCOS(targetDir) + camX, d = player.y + targetDst * MathSIN(targetDir) + camY; let arrayTropa = []; selUnits.forEach((tropa)=>{arrayTropa.push(tropa.id)}); envTropa1(a,d,arrayTropa) envTropa2(a,d,arrayTropa) envTropa3(a,d,arrayTropa) setTimeout(()=>{ let loop1 = setInterval(()=>{ juntarComLag2() },100) setTimeout(()=>{ clearInterval(loop1) },500) },100) setTimeout(()=>{ let loop1 = setInterval(()=>{ juntarComLag2() },100) setTimeout(()=>{ clearInterval(loop1) },500) },200) setTimeout(()=>{ let loop1 = setInterval(()=>{ juntarComLag2() },100) setTimeout(()=>{ clearInterval(loop1) },500) },300) } function envTropa1(a,d,arrayTropa){ socket.emit("5", UTILS.roundToOne(a), UTILS.roundToOne(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToOne(a), UTILS.roundToOne(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToOne(a), UTILS.roundToOne(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToOne(a), UTILS.roundToOne(d), arrayTropa, 0, -1); }; function envTropa2(a,d,arrayTropa){ socket.emit("5", a,d, arrayTropa, 0, -1); socket.emit("5", a,d, arrayTropa, 0, -1); socket.emit("5", a,d, arrayTropa, 0, -1); socket.emit("5", a,d, arrayTropa, 0, -1); }; function envTropa3(a,d,arrayTropa){ socket.emit("5", UTILS.roundToTwo(a), UTILS.roundToTwo(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToTwo(a), UTILS.roundToTwo(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToTwo(a), UTILS.roundToTwo(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToTwo(a), UTILS.roundToTwo(d), arrayTropa, 0, -1); }; function envTropa4(a,d,arrayTropa){ socket.emit("5", UTILS.roundToOne(a), UTILS.roundToTwo(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToTwo(a), UTILS.roundToOne(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToOne(a), UTILS.roundToTwo(d), arrayTropa, 0, -1); socket.emit("5", UTILS.roundToTwo(a), UTILS.roundToOne(d), arrayTropa, 0, -1); }; /////////////////////////////////////////////////////////////////////////////////////////// function juntarComLag(){ let a = player.x + targetDst * MathCOS(targetDir) + camX, d = player.y + targetDst * MathSIN(targetDir) + camY; selUnits.forEach((tropa)=>{ if(tropa.owner==player.sid && tropa.type==1){ socket.emit("5", a,d, [tropa.id], 0, -1); socket.emit("5", UTILS.roundToOne(a), UTILS.roundToOne(d), [tropa.id], 0, -1); socket.emit("5", UTILS.roundToTwo(a), UTILS.roundToTwo(d), [tropa.id], 0, -1); socket.emit("5", a,d, [tropa.id], 0, -1); } }) } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //adiciona os menus na tela do game let setaVars = setInterval(()=>{ if(socket && gameState==1){ clearInterval(setaVars) criaMenus() } },500) //modifica menus do game //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //seleciona tropas function selecionaMenosCommander(){ selUnits = []; units.forEach((unit) => { if (unit.owner === player.sid && unit.type === 1) { if (!unit.info) unit.info = getUnitFromPath(unit.uPath); unit.info.name !== 'Commander' && unit.info.name !== 'Siege Ram' &&selUnits.push(unit) }}); selUnitType = "Unit"; } function selecionaMenosSiege(){ selUnits = []; units.forEach((unit) => { if (unit.owner === player.sid && unit.type === 1) { if (!unit.info) unit.info = getUnitFromPath(unit.uPath); unit.info.name !== 'Siege Ram' &&selUnits.push(unit) }}); selUnitType = "Unit"; } function spawnaComanderESeleciona(){ socket.emit("4",0,0,1); window.sockets.forEach((socket)=>{ socket.sock.emit("4",0,0,1); }) selUnits = []; units.forEach((unit) => { if (unit.owner === player.sid && unit.type === 1) { if (!unit.info) unit.info = getUnitFromPath(unit.uPath); if (unit.info.name === 'Commander') { selUnits.push(unit) }}}); selUnitType = "Unit"; } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //base dpk V2 function dpkbots(){ window.sockets.forEach((bot) => { const socket = bot.sock socket.emit("1",-3.1400017458410745,132.00016704534883,3); socket.emit("1",-2.616686461722192,132.00119469156337,3); socket.emit("1",-2.093428548209908,132.00104734432995,3); socket.emit("1",-1.5701145087187327,132.00003068181462,3); socket.emit("1",-1.0467734858480617,132.0030552676717,3); socket.emit("1",-0.5235155658601258,131.9990246176084,3); socket.emit("1",-0.00022727272335942278,132.00000340909085,3); socket.emit("1",0.523073890253546,132.00002310605853,3); socket.emit("1",1.0463973901061703,131.9971048924937,3); socket.emit("1",1.5697357211319762,132.00007424240337,3); socket.emit("1",-3.139991347768931,306.00039232000995,1); socket.emit("1",-2.923994196541792,305.99577121261,1); socket.emit("1",-2.7079979891398973,305.9964967119722,1); socket.emit("1",-2.492000077058938,306.00367726548654,1); socket.emit("1",-2.276016223968046,306.00062516276,1); socket.emit("1",-2.060007793381665,306.0030262922248,1); socket.emit("1",-1.8439875536674648,305.9980001568637,1); socket.emit("1",-1.6279843105192338,306.0002452613396,1); socket.emit("1",-1.4119926259902449,306.00035065339387,1); socket.emit("1",-1.1960064618373838,306.0012058799769,1); socket.emit("1",-0.9799930163427818,305.9987898668882,1); socket.emit("1",-0.7640215518210055,305.99966094752466,1); socket.emit("1",-0.5480025429968127,305.99828839390597,1); socket.emit("1",-0.3320125932586849,306.0012609451144,1); socket.emit("1",-0.11601286924045082,305.99689540908753,1); socket.emit("1",0.10000358459797759,305.99882908272707,1); socket.emit("1",0.31598401089984723,305.9997232024892,1); socket.emit("1",0.5319958032307893,306.00034722202525,1); socket.emit("1",0.7480000132173787,305.99521728288505,1); socket.emit("1",0.964003270834421,305.99613886452875,1); socket.emit("1",1.1800097508428806,305.999376633352,1); socket.emit("1",1.3959878271385584,306.003535927283,1); socket.emit("1",1.6119845064123546,305.99952222184925,1); socket.emit("1",1.8280052688256236,305.99612824347963,1); socket.emit("1",2.0440168675640136,305.99756289879167,1); socket.emit("1",2.2599863338360344,306.00132957227487,1); socket.emit("1",2.4759978600339494,305.994679692311,1); socket.emit("1",2.6919903375268674,306.0003075161853,1); socket.emit("1",2.908003886220855,306.000367646838,1); socket.emit("1",0.8699987279653572,243.8481535710288,5); socket.emit("1",1.210014562203788,243.84870083722004,5); socket.emit("1",1.5600109838562193,243.85418286344807,5); socket.emit("1",2.609999577077718,243.85133196273503,5); socket.emit("1",2.9599932123218666,243.84984560175542,5); socket.emit("1",-2.9699920613329622,243.85151732150447,5); socket.emit("1",-2.6199947908961105,243.84557900441834,5); socket.emit("1",-2.269992483231978,243.84610003032654,5); socket.emit("1",-1.919991274434831,243.84651279032065,5); socket.emit("1",-1.5700171594315573,243.85007402090326,5); socket.emit("1",-1.2500054152201767,243.8496672132238,5); socket.emit("1",-0.5199803036175189,243.84989235183193,5); socket.emit("1",-0.8699987279653568,243.84815357102872,5); socket.emit("1",-0.17002310281999192,243.84605081895427,5); socket.emit("1",0.18001488891124995,243.85037153959803,5); socket.emit("1",0.5299754465231121,243.851702680133,5); socket.emit("1",2.100015962749604,131.99701966332432,3); socket.emit("1",2.616310321066522,131.99528817347996,3); socket.emit("1",-3.139994716805523,194.00024768025426,2); socket.emit("1",-2.791214196322064,193.99668089944223,2); socket.emit("1",-2.442392890871587,194.0008505135995,2); socket.emit("1",-2.093605849859661,194.0052705469621,2); socket.emit("1",-1.744817577540963,194.0000850515278,2); socket.emit("1",-1.047200313208691,194.00092809056352,2); socket.emit("1",-0.6983945911642702,194.00021649472453,2); socket.emit("1",-0.0008247420810452244,194.00006597937022,2); socket.emit("1",0.34801353139633523,193.99990335049142,2); socket.emit("1",0.6967842348778635,193.99932577202424,2); socket.emit("1",1.0455826284612566,193.99761699567333,2); socket.emit("1",1.394419117420156,193.99974664931912,2); socket.emit("1",1.7431991142527825,193.99590923522064,2); socket.emit("1",2.092013943372238,194.0006639163897,2); socket.emit("1",2.4407825661619134,194.00249586023364,2); socket.emit("1",2.7895848737881193,194.00599011370753,2); socket.emit("1",1.910002502175056,243.85508237475804,5); socket.emit("1",2.2699924832319778,243.84610003032665,5); socket.emit("1",-1.3900285221526352,189.7823239925152,2); socket.emit("1",-0.3600050614110291,188.68568838149864,2); UpgradeBoulder(socket) UpgradeSpikes(socket) UpgradeAntiTankGun(socket) UpgradeRangedTurret(socket) UpgradeSpotterTurret(socket) }) } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //loops window.antkick = setInterval(()=>{ if(onOffantkick=="off") return if(gameState==0) return antKickGame() },80000) //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //ANT KICK function antKickGame(){ socket.emit("2", 0, 0); socket.emit("2", Math.round(camX), Math.round(camY)); socket.emit("2",camX,camY); if(window.sockets.length>0){ window.sockets.forEach((socket)=>{ socket.sock.emit("2", 0, 0); socket.sock.emit("2", Math.round(camX), Math.round(camY)); socket.sock.emit("2",camX,camY); }) } } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //chama funçoes para iniciar hack try{ preLoad(); }catch(erro){ alert(erro) throw erro } //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------|| //cria uma area - se detectar um inimigo ele ativa o def (by PlayerX) /* def tipo 1 function reconhecimento(){ if(onOffDef=="off") return units.forEach(async(unit) => { if(unit.owner!==player.sid && (unit.x>(player.x-390))&&(unit.x<(player.x+390))&&(unit.y>(player.y-390))&&(unit.y<(player.y+390))){ await coloc() } }) } window.defend = setInterval(()=>{ reconhecimento() },100) */ /* def tipo 2 window.setInterval(() => { let Acct = false units.forEach(unit => { if (unit.owner === player.sid) return; const distance = Math.sqrt((unit.x - player.x) ** 2 + (unit.y - player.y) ** 2); if (distance < 400) Acct=true; }); if (onOffDef=="on" && Acct==true) { window.placeWalls(socket); } }, 200); */ class Defend { filtraInimigos(units,player){ this.unidades = units; this.jogador = player; this.inimigos = this.unidades.map((unit)=>{ if(unit.owner!==this.jogador.sid && unit.speed>0)return unit }) this.inimigos = this.inimigos.filter(unit => (unit!=undefined)) } verificaDistancia(){ this.interruptor = this.inimigos.some((unidadeInimiga)=>{ const distance = Math.sqrt((unidadeInimiga.x - player.x) ** 2 + (unidadeInimiga.y - player.y) ** 2); if(distance<=399) return unidadeInimiga }) } acionaDef(defend){ if(this.interruptor && onOffDef==="on"){ defend() } } } const defend = new Defend() //------------------------------------------------------------------------------------------||------------------------------------------------------------------------------------------||