Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name TagPro defense bot sniper
- // @description f to attack g to snipe. make wise use dont get caught.
- // @version
- //@grant tagpro.ready
- // @include http://*.newcompte.fr:*
- // @match *://*.koalabeast.com/game
- // @license ****
- // @author *******
- // @namespace ***********************************
- // ==/UserScript==
- /*
- Tested against Chromium build with Object.observe and acts EXACTLY the same,
- though Chromium build is MUCH faster
- Trying to stay as close to the spec as possible,
- this is a work in progress, feel free to comment/update
- Specification:
- http://wiki.ecmascript.org/doku.php?id=harmony:observe
- Built using parts of:
- https://github.com/tvcutsem/harmony-reflect/blob/master/examples/observer.js
- Limits so far;
- Built using polling... Will update again with polling/getter&setters to make things better at some point
- TODO:
- Add support for Object.prototype.watch -> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch
- */
- if(!Object.observe){
- (function(extend, global){
- "use strict";
- var isCallable = (function(toString){
- var s = toString.call(toString),
- u = typeof u;
- return typeof global.alert === "object" ?
- function isCallable(f){
- return s === toString.call(f) || (!!f && typeof f.toString == u && typeof f.valueOf == u && /^\s*\bfunction\b/.test("" + f));
- }:
- function isCallable(f){
- return s === toString.call(f);
- }
- ;
- })(extend.prototype.toString);
- // isNode & isElement from http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
- //Returns true if it is a DOM node
- var isNode = function isNode(o){
- return (
- typeof Node === "object" ? o instanceof Node :
- o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName==="string"
- );
- }
- //Returns true if it is a DOM element
- var isElement = function isElement(o){
- return (
- typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2
- o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName==="string"
- );
- }
- var _isImmediateSupported = (function(){
- return !!global.setImmediate;
- })();
- var _doCheckCallback = (function(){
- if(_isImmediateSupported){
- return function _doCheckCallback(f){
- return setImmediate(f);
- };
- }else{
- return function _doCheckCallback(f){
- return setTimeout(f, 10);
- };
- }
- })();
- var _clearCheckCallback = (function(){
- if(_isImmediateSupported){
- return function _clearCheckCallback(id){
- clearImmediate(id);
- };
- }else{
- return function _clearCheckCallback(id){
- clearTimeout(id);
- };
- }
- })();
- var isNumeric=function isNumeric(n){
- return !isNaN(parseFloat(n)) && isFinite(n);
- };
- var sameValue = function sameValue(x, y){
- if(x===y){
- return x !== 0 || 1 / x === 1 / y;
- }
- return x !== x && y !== y;
- };
- var isAccessorDescriptor = function isAccessorDescriptor(desc){
- if (typeof(desc) === 'undefined'){
- return false;
- }
- return ('get' in desc || 'set' in desc);
- };
- var isDataDescriptor = function isDataDescriptor(desc){
- if (typeof(desc) === 'undefined'){
- return false;
- }
- return ('value' in desc || 'writable' in desc);
- };
- var validateArguments = function validateArguments(O, callback, accept){
- if(typeof(O)!=='object'){
- // Throw Error
- throw new TypeError("Object.observeObject called on non-object");
- }
- if(isCallable(callback)===false){
- // Throw Error
- throw new TypeError("Object.observeObject: Expecting function");
- }
- if(Object.isFrozen(callback)===true){
- // Throw Error
- throw new TypeError("Object.observeObject: Expecting unfrozen function");
- }
- if (accept !== undefined) {
- if (!Array.isArray(accept)) {
- throw new TypeError("Object.observeObject: Expecting acceptList in the form of an array");
- }
- }
- };
- var Observer = (function Observer(){
- var wraped = [];
- var Observer = function Observer(O, callback, accept){
- validateArguments(O, callback, accept);
- if (!accept) {
- accept = ["add", "update", "delete", "reconfigure", "setPrototype", "preventExtensions"];
- }
- Object.getNotifier(O).addListener(callback, accept);
- if(wraped.indexOf(O)===-1){
- wraped.push(O);
- }else{
- Object.getNotifier(O)._checkPropertyListing();
- }
- };
- Observer.prototype.deliverChangeRecords = function Observer_deliverChangeRecords(O){
- Object.getNotifier(O).deliverChangeRecords();
- };
- wraped.lastScanned = 0;
- var f = (function f(wrapped){
- return function _f(){
- var i = 0, l = wrapped.length, startTime = new Date(), takingTooLong=false;
- for(i=wrapped.lastScanned; (i<l)&&(!takingTooLong); i++){
- if(_indexes.indexOf(wrapped[i]) > -1){
- Object.getNotifier(wrapped[i])._checkPropertyListing();
- takingTooLong=((new Date())-startTime)>100; // make sure we don't take more than 100 milliseconds to scan all objects
- }else{
- wrapped.splice(i, 1);
- i--;
- l--;
- }
- }
- wrapped.lastScanned=i<l?i:0; // reset wrapped so we can make sure that we pick things back up
- _doCheckCallback(_f);
- };
- })(wraped);
- _doCheckCallback(f);
- return Observer;
- })();
- var Notifier = function Notifier(watching){
- var _listeners = [], _acceptLists = [], _updates = [], _updater = false, properties = [], values = [];
- var self = this;
- Object.defineProperty(self, '_watching', {
- enumerable: true,
- get: (function(watched){
- return function(){
- return watched;
- };
- })(watching)
- });
- var wrapProperty = function wrapProperty(object, prop){
- var propType = typeof(object[prop]), descriptor = Object.getOwnPropertyDescriptor(object, prop);
- if((prop==='getNotifier')||isAccessorDescriptor(descriptor)||(!descriptor.enumerable)){
- return false;
- }
- if((object instanceof Array)&&isNumeric(prop)){
- var idx = properties.length;
- properties[idx] = prop;
- values[idx] = object[prop];
- return true;
- }
- (function(idx, prop){
- properties[idx] = prop;
- values[idx] = object[prop];
- function getter(){
- return values[getter.info.idx];
- }
- function setter(value){
- if(!sameValue(values[setter.info.idx], value)){
- Object.getNotifier(object).queueUpdate(object, prop, 'update', values[setter.info.idx]);
- values[setter.info.idx] = value;
- }
- }
- getter.info = setter.info = {
- idx: idx
- };
- Object.defineProperty(object, prop, {
- get: getter,
- set: setter
- });
- })(properties.length, prop);
- return true;
- };
- self._checkPropertyListing = function _checkPropertyListing(dontQueueUpdates){
- var object = self._watching, keys = Object.keys(object), i=0, l=keys.length;
- var newKeys = [], oldKeys = properties.slice(0), updates = [];
- var prop, queueUpdates = !dontQueueUpdates, propType, value, idx, aLength;
- if(object instanceof Array){
- aLength = self._oldLength;//object.length;
- //aLength = object.length;
- }
- for(i=0; i<l; i++){
- prop = keys[i];
- value = object[prop];
- propType = typeof(value);
- if((idx = properties.indexOf(prop))===-1){
- if(wrapProperty(object, prop)&&queueUpdates){
- self.queueUpdate(object, prop, 'add', null, object[prop]);
- }
- }else{
- if(!(object instanceof Array)||(isNumeric(prop))){
- if(values[idx] !== value){
- if(queueUpdates){
- self.queueUpdate(object, prop, 'update', values[idx], value);
- }
- values[idx] = value;
- }
- }
- oldKeys.splice(oldKeys.indexOf(prop), 1);
- }
- }
- if(object instanceof Array && object.length !== aLength){
- if(queueUpdates){
- self.queueUpdate(object, 'length', 'update', aLength, object);
- }
- self._oldLength = object.length;
- }
- if(queueUpdates){
- l = oldKeys.length;
- for(i=0; i<l; i++){
- idx = properties.indexOf(oldKeys[i]);
- self.queueUpdate(object, oldKeys[i], 'delete', values[idx]);
- properties.splice(idx,1);
- values.splice(idx,1);
- for(var i=idx;i<properties.length;i++){
- if(!(properties[i] in object))
- continue;
- var getter = Object.getOwnPropertyDescriptor(object,properties[i]).get;
- if(!getter)
- continue;
- var info = getter.info;
- info.idx = i;
- }
- };
- }
- };
- self.addListener = function Notifier_addListener(callback, accept){
- var idx = _listeners.indexOf(callback);
- if(idx===-1){
- _listeners.push(callback);
- _acceptLists.push(accept);
- }
- else {
- _acceptLists[idx] = accept;
- }
- };
- self.removeListener = function Notifier_removeListener(callback){
- var idx = _listeners.indexOf(callback);
- if(idx>-1){
- _listeners.splice(idx, 1);
- _acceptLists.splice(idx, 1);
- }
- };
- self.listeners = function Notifier_listeners(){
- return _listeners;
- };
- self.queueUpdate = function Notifier_queueUpdate(what, prop, type, was){
- this.queueUpdates([{
- type: type,
- object: what,
- name: prop,
- oldValue: was
- }]);
- };
- self.queueUpdates = function Notifier_queueUpdates(updates){
- var self = this, i = 0, l = updates.length||0, update;
- for(i=0; i<l; i++){
- update = updates[i];
- _updates.push(update);
- }
- if(_updater){
- _clearCheckCallback(_updater);
- }
- _updater = _doCheckCallback(function(){
- _updater = false;
- self.deliverChangeRecords();
- });
- };
- self.deliverChangeRecords = function Notifier_deliverChangeRecords(){
- var i = 0, l = _listeners.length,
- //keepRunning = true, removed as it seems the actual implementation doesn't do this
- // In response to BUG #5
- retval;
- for(i=0; i<l; i++){
- if(_listeners[i]){
- var currentUpdates;
- if (_acceptLists[i]) {
- currentUpdates = [];
- for (var j = 0, updatesLength = _updates.length; j < updatesLength; j++) {
- if (_acceptLists[i].indexOf(_updates[j].type) !== -1) {
- currentUpdates.push(_updates[j]);
- }
- }
- }
- else {
- currentUpdates = _updates;
- }
- if (currentUpdates.length) {
- if(_listeners[i]===console.log){
- console.log(currentUpdates);
- }else{
- _listeners[i](currentUpdates);
- }
- }
- }
- }
- _updates=[];
- };
- self.notify = function Notifier_notify(changeRecord) {
- if (typeof changeRecord !== "object" || typeof changeRecord.type !== "string") {
- throw new TypeError("Invalid changeRecord with non-string 'type' property");
- }
- changeRecord.object = watching;
- self.queueUpdates([changeRecord]);
- };
- self._checkPropertyListing(true);
- };
- var _notifiers=[], _indexes=[];
- extend.getNotifier = function Object_getNotifier(O){
- var idx = _indexes.indexOf(O), notifier = idx>-1?_notifiers[idx]:false;
- if(!notifier){
- idx = _indexes.length;
- _indexes[idx] = O;
- notifier = _notifiers[idx] = new Notifier(O);
- }
- return notifier;
- };
- extend.observe = function Object_observe(O, callback, accept){
- // For Bug 4, can't observe DOM elements tested against canry implementation and matches
- if(!isElement(O)){
- return new Observer(O, callback, accept);
- }
- };
- extend.unobserve = function Object_unobserve(O, callback){
- validateArguments(O, callback);
- var idx = _indexes.indexOf(O),
- notifier = idx>-1?_notifiers[idx]:false;
- if (!notifier){
- return;
- }
- notifier.removeListener(callback);
- if (notifier.listeners().length === 0){
- _indexes.splice(idx, 1);
- _notifiers.splice(idx, 1);
- }
- };
- })(Object, this);
- }
- tagpro.ready(function tagBot() {
- if (!tagpro.playerId) return setTimeout(tagBot, 250);
- var snipe = false,
- attack = false,
- sentDir = {r: false, l: false, d: false, u: false},
- keyDir = {r: false, l: false, d: false, u: false},
- keyCount = 1,
- tse = tagpro.socket.emit;
- tagpro.socket.emit = function (t, n) {
- if (t === 'keydown') {
- if (n.k === 'right') sentDir.r = true;
- if (n.k === 'left') sentDir.l = true;
- if (n.k === 'down') sentDir.d = true;
- if (n.k === 'up') sentDir.u = true;
- }
- if (t === 'keyup') {
- if (n.k === 'right') sentDir.r = false;
- if (n.k === 'left') sentDir.l = false;
- if (n.k === 'down') sentDir.d = false;
- if (n.k === 'up') sentDir.u = false;
- }
- if (n.t) n.t = keyCount++;
- tse(t, n);
- };
- document.onkeydown = function (d) {
- d = d || window.event;
- switch(d.keyCode) {
- case 18:
- if (!attack) {
- attack = true;
- }
- break;
- case 88:
- if (!snipe) {
- snipe = true;
- }
- break;
- case tagpro.keys.right[0]: case tagpro.keys.right[1]: case tagpro.keys.right[2]:
- if (!keyDir.r) {
- if (!tagpro.disableControls && !sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});
- keyDir.r = true;
- }
- break;
- case tagpro.keys.left[0]: case tagpro.keys.left[1]: case tagpro.keys.left[2]:
- if (!keyDir.l) {
- if (!tagpro.disableControls && !sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});
- keyDir.l = true;
- }
- break;
- case tagpro.keys.down[0]: case tagpro.keys.down[1]: case tagpro.keys.down[2]:
- if (!keyDir.d) {
- if (!tagpro.disableControls && !sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});
- keyDir.d = true;
- }
- break;
- case tagpro.keys.up[0]: case tagpro.keys.up[1]: case tagpro.keys.up[2]:
- if (!keyDir.u) {
- if (!tagpro.disableControls && !sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});
- keyDir.u = true;
- }
- break;
- }
- };
- document.onkeyup = function (u) {
- u = u || window.event;
- switch(u.keyCode) {
- case 18:
- attack = false;
- if (!keyDir.r && sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});
- if (!keyDir.l && sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});
- if (!keyDir.d && sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});
- if (!keyDir.u && sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});
- if (keyDir.r && !sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});
- if (keyDir.l && !sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});
- if (keyDir.d && !sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});
- if (keyDir.u && !sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});
- break;
- case 88:
- snipe = false;
- attack = false;
- if (!keyDir.r && sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});
- if (!keyDir.l && sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});
- if (!keyDir.d && sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});
- if (!keyDir.u && sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});
- if (keyDir.r && !sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});
- if (keyDir.l && !sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});
- if (keyDir.d && !sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});
- if (keyDir.u && !sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});
- break;
- case tagpro.keys.right[0]: case tagpro.keys.right[1]: case tagpro.keys.right[2]:
- if (!tagpro.disableControls && sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});
- keyDir.r = false;
- break;
- case tagpro.keys.left[0]: case tagpro.keys.left[1]: case tagpro.keys.left[2]:
- if (!tagpro.disableControls && sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});
- keyDir.l = false;
- break;
- case tagpro.keys.down[0]: case tagpro.keys.down[1]: case tagpro.keys.down[2]:
- if (!tagpro.disableControls && sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});
- keyDir.d = false;
- break;
- case tagpro.keys.up[0]: case tagpro.keys.up[1]: case tagpro.keys.up[2]:
- if (!tagpro.disableControls && sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});
- keyDir.u = false;
- break;
- }
- };
- Object.observe(tagpro.players, function(changes) {
- changes.forEach(function(change) {
- if (change.type === 'add') watchPlayers();
- });
- });
- function watchPlayers() {
- for (var id in tagpro.players) {
- if (!tagpro.players.hasOwnProperty(id)) break;
- var player = tagpro.players[id];
- if (player.watched === undefined) {
- player.sx = 0; player.sy = 0;
- player.pr = 0; player.pl = 0;
- player.pd = 0; player.pu = 0;
- Object.observe(player, function(changes) {
- changes.forEach(function(change) {
- if (change.name === 'x') getSpeed(changes[0].object, change.oldValue);
- if (change.name === 'y') getSpeed(changes[0].object, undefined, change.oldValue);
- if (changes[0].object.id !== tagpro.playerId) {
- switch (change.name) {
- case 'right': case 'left': case 'down': case 'up':
- getKeys(changes[0].object);
- break;
- }
- }
- });
- });
- player.watched = true;
- }
- }
- }
- watchPlayers();
- function getSpeed(player, x, y) {
- if (x) {
- player.sx = player.lx > 0 ? Math.abs(player.x-x)*34 : -Math.abs(player.x-x)*34;
- if (!player.lx) player.sx = 0;
- }
- if (y) {
- player.sy = player.ly > 0 ? Math.abs(player.y-y)*34 : -Math.abs(player.y-y)*34;
- if (!player.ly) player.sy = 0;
- }
- }
- function getKeys(player) {
- if (player.right && !player.left) player.pr = 1; else player.pr = 0;
- if (player.left && !player.right) player.pl = -1; else player.pl = 0;
- if (player.down && !player.up) player.pd = 1; else player.pd = 0;
- if (player.up && !player.down) player.pu = -1; else player.pu = 0;
- }
- function attackEnemy() {
- var distance,
- target,
- closest = 9999,
- seek = {x: 0, y: 0},
- self = tagpro.players[tagpro.playerId];
- for (var id in tagpro.players) {
- if (tagpro.players.hasOwnProperty(id)) {
- var player = tagpro.players[id];
- if (player.team !== self.team && player.draw && !player.dead) {
- distance = Math.sqrt(Math.pow(player.x+player.lx*30-self.x+self.lx*30, 2)+Math.pow(player.y+player.ly*30-self.y+self.ly*30, 2));
- if (attack) {
- if (player.flag && distance < 400) {
- target = player; break;
- } else {
- if (distance < closest) {closest = distance; target = player;}
- }
- }
- if (snipe) {
- if (player.flag) {
- target = player; break;
- } else {
- if (distance < closest) {closest = distance; target = player;}
- }
- }
- }
- }
- }
- if (target) {
- var difX = Math.abs((self.x+self.sx)-(target.x+target.sx)),
- difY = Math.abs((self.y+self.sy)-(target.y+target.sy)),
- speedDifX = self.sx-target.sx,
- speedDifY = self.sy-target.sy,
- pressR = target.pr ? Math.min((target.pr*20-speedDifX*0.07)*difY/40, 160) : 0,
- pressL = target.pl ? Math.max((target.pl*20-speedDifX*0.07)*difY/40, -160) : 0,
- pressD = target.pd ? Math.min((target.pd*20-speedDifY*0.07)*difX/40, 160) : 0,
- pressU = target.pu ? Math.max((target.pu*20-speedDifY*0.07)*difX/40, -160) : 0,
- pR = target.pr ? target.pr*(1+difY/25) : 0,
- pL = target.pl ? target.pl*(1+difY/25) : 0,
- pD = target.pd ? target.pd*(1+difX/25) : 0,
- pU = target.pu ? target.pu*(1+difX/25) : 0;
- if (attack) {
- seek.x = (target.x+target.sx*((difX/40+5)/6)+pressR+pressL-speedDifX*difY/400)-(self.x+self.sx*((difX/40+5)/6));
- seek.y = (target.y+target.sy*((difY/40+5)/6)+pressD+pressU-speedDifY*difX/400)-(self.y+self.sy*((difY/40+5)/6));
- if (seek.x > 6 && !sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});
- else {if (seek.x < 3 && sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});}
- if (seek.x < -6 && !sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});
- else {if (seek.x > -3 && sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});}
- if (seek.y > 6 && !sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});
- else {if (seek.y < 3 && sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});}
- if (seek.y < -6 && !sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});
- else {if (seek.y > -3 && sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});}
- }
- if (snipe && !attack) {
- if (Math.abs(self.sx) < 142 || Math.abs(self.sy) < 142) {
- seek.x = (target.x+target.sx*(0.5+difY/380)+pR+pL)-(self.x+self.sx*(1+difY/40));
- seek.y = (target.y+target.sy*(0.5+difX/380)+pD+pU)-(self.y+self.sy*(1+difX/40));
- var timerLength = 140,
- timer = Date.now() % timerLength,
- timeX = Math.abs(seek.x/seek.y)*timerLength,
- timeY = Math.abs(seek.y/seek.x)*timerLength;
- if (seek.x > Math.abs(seek.y)) {
- if (sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});
- if (!sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});
- if (timer < timeY && seek.y > 0) {if (!sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});}
- else {if (sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});}
- if (timer < timeY && seek.y < 0) {if (!sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});}
- else {if (sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});}
- }
- if (seek.x < -Math.abs(seek.y)) {
- if (sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});
- if (!sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});
- if (timer < timeY && seek.y > 0) {if (!sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});}
- else {if (sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});}
- if (timer < timeY && seek.y < 0) {if (!sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});}
- else {if (sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});}
- }
- if (seek.y > Math.abs(seek.x)) {
- if (sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});
- if (!sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});
- if (timer < timeX && seek.x > 0) {if (!sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});}
- else {if (sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});}
- if (timer < timeX && seek.x < 0) {if (!sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});}
- else {if (sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});}
- }
- if (seek.y < -Math.abs(seek.x)) {
- if (sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});
- if (!sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});
- if (timer < timeX && seek.x > 0) {if (!sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});}
- else {if (sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});}
- if (timer < timeX && seek.x < 0) {if (!sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});}
- else {if (sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});}
- }
- } else {
- if (!keyDir.r && sentDir.r) tagpro.socket.emit('keyup', {k: 'right', t: keyCount});
- if (!keyDir.l && sentDir.l) tagpro.socket.emit('keyup', {k: 'left', t: keyCount});
- if (!keyDir.d && sentDir.d) tagpro.socket.emit('keyup', {k: 'down', t: keyCount});
- if (!keyDir.u && sentDir.u) tagpro.socket.emit('keyup', {k: 'up', t: keyCount});
- if (keyDir.r && !sentDir.r) tagpro.socket.emit('keydown', {k: 'right', t: keyCount});
- if (keyDir.l && !sentDir.l) tagpro.socket.emit('keydown', {k: 'left', t: keyCount});
- if (keyDir.d && !sentDir.d) tagpro.socket.emit('keydown', {k: 'down', t: keyCount});
- if (keyDir.u && !sentDir.u) tagpro.socket.emit('keydown', {k: 'up', t: keyCount});
- attack = true;
- }
- }
- }
- setTimeout(attackEnemy, 11);
- }
- attackEnemy();
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement