ФЭНДОМ


Тампер или консоль

КОД! Править

  1. var A = window;
  2. var E = document;
  3. var posX, posY;
  4. var lastX, lastY;
  5. var serverPosX, serverPosY;
  6. var initialLoad = true;
  7. var clicksCount = 3;
  8. var auraEnabled = false;
  9. var auraTime = 0;
  10. var auraRadius = 10;
  11. var movementEnabled = true;
  12. var fontSize = 2;
  13. var kerning = 3;
  14. var alphabet = {
  15. 39:[[0,0.5,1,0.5]],
  16. 40:[[0,2,0.5,1],[0.5,1,1.5,1],[1.5,1,2,2]],
  17. 41:[[0,0,0.5,1],[0.5,1,1.5,1],[1.5,1,2,0]],
  18. 44:[[2.5,0,3.5,0]],
  19. 46:[[2,0,1.5,0]],
  20. 48:[[2,0,0,0],[0,0,0,2],[0,2,2,2],[2,2,2,0]],
  21. 49:[[0,1,2,1],[1,0,0,1],[2,0,2,2]],
  22. 50:[[0,0,0,2],[0,2,1,2],[1,2,1,0],[1,0,2,0],[2,0,2,2]],
  23. 51:[[0,0,0,2],[0,2,2,2],[2,2,2,0],[1,0,1,2]],
  24. 52:[[0,0,1,0],[1,0,1,2],[0,2,2,2]],
  25. 53:[[0,2,0,0],[0,0,1,0],[1,0,1,2],[1,2,2,2],[2,2,2,0]],
  26. 54:[[0,2,0,0],[0,0,2,0],[2,0,2,2],[2,2,1,2],[1,2,1,0]],
  27. 55:[[0,0,0,2],[0,2,2,0]],
  28. 56:[[0,0,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0],[1,0,1,2]],
  29. 57:[[0,0,1,0],[1,0,1,2],[0,2,2,2],[0,0,0,2],[2,0,2,2]],
  30. 58:[[0,0,0,1],[2,0,2,1]],
  31. 59:[[0,0,0,1],[2,0,2,1]],
  32. 63:[[1,0,0,0],[0,0,0,2],[0,2,1,2],[1,2,1,1],[1,1,2,1]],
  33. 97:[[2,0,0,0],[0,2,0,0],[0,2,2,2],[1,0,1,2]],
  34. 98:[[2,0,0,0],[0,0,0,2],[0,2,2,2],[2,2,2,0],[1,0,1,2]],
  35. 99:[[2,2,2,0],[2,0,0,0],[0,0,0,2]],
  36. 100:[[2,0,0,0],[0,0,0,1],[0,1,1,2],[1,2,2,1],[2,1,2,0]],
  37. 101:[[2,2,2,0],[2,0,0,0],[0,0,0,2],[1,0,1,2]],
  38. 102:[[2,0,0,0],[0,0,0,2],[1,0,1,2]],
  39. 103:[[1,1,1,2],[1,2,2,2],[2,2,2,0],[2,0,0,0],[0,0,0,2]],
  40. 104:[[0,0,2,0],[0,2,2,2],[1,0,1,2]],
  41. 105:[[0,0,0,2],[0,1,2,1],[2,0,2,2]],
  42. 106:[[0,0,0,2],[0,1,2,1],[2,0,2,1]],
  43. 107:[[0,0,2,0],[1,0,0,2],[1,0,2,2]],
  44. 108:[[0,0,2,0],[2,0,2,2]],
  45. 109:[[0,0,2,0],[0,0,2,1],[2,1,0,2],[0,2,2,2]],
  46. 110:[[0,0,2,0],[0,0,2,2],[0,2,2,2]],
  47. 111:[[2,0,0,0],[0,0,0,2],[0,2,2,2],[2,2,2,0]],
  48. 112:[[2,0,0,0],[0,0,0,2],[0,2,1,2],[1,2,1,0]],
  49. 113:[[2,0,0,0],[0,0,0,2],[0,2,2,2],[2,2,2,0],[1,1,2,2]],
  50. 114:[[2,0,0,0],[0,0,0,2],[0,2,1,2],[1,2,1,0],[1,1,2,2]],
  51. 115:[[0,0,0,2],[1,0,1,2],[2,0,2,2],[0,0,1,0],[1,2,2,2]],
  52. 116:[[0,0,0,2],[0,1,2,1]],
  53. 117:[[0,0,2,0],[0,2,2,2],[2,0,2,2]],
  54. 118:[[0,0,2,1],[0,2,2,1]],
  55. 119:[[0,0,2,0],[0,2,2,2],[2,0,1,1],[2,2,1,1]],
  56. 120:[[0,0,2,2],[2,0,0,2]],
  57. 121:[[0,0,1,1],[0,2,1,1],[2,1,1,1]],
  58. 122:[[0,0,0,2],[0,2,2,0],[2,0,2,2]],
  59. };
  60. var imageScale = 1.0;
  61. var imgData = [
  62. /*star 5*/
  63. [[0,5,30,15],[30,15,0,25],[0,25,20,0],[20,0,20,30],[20,30,0,5]],
  64. /*tictactoe*/
  65. [[90,30,0,30],[0,60,90,60],[30,0,30,90],[60,0,60,90],[0,0,0,90],[0,90,90,90],[90,90,90,0],[90,0,0,0]],
  66. /*pentashot*/
  67. [[50,16,66,17],[66,17,65,32],[51,26,72,36],[65,32,65,33],[72,36,64,52],[49,35,69,58],[69,58,54,71],[54,71,35,48],[49,65,33,70],[33,70,25,49],[16,46,16,63],[16,63,30,63],[50,16,51,19],[51,19,51,26],[51,26,49,35],[49,35,46,40],[46,40,43,43],[43,43,38,47],[38,47,32,49],[32,49,27,49],[27,49,24,49],[24,49,21,48],[21,48,16,46],[16,46,13,44],[13,44,10,41],[10,41,8,38],[8,38,5,32],[5,32,4,24],[4,24,5,18],[5,18,8,11],[8,11,12,7],[12,7,16,4],[16,4,21,2],[21,2,25,1],[25,1,31,1],[31,1,35,2],[35,2,40,4],[40,4,45,8],[45,8,48,13],[48,13,50,16]],
  68. /*triforce*/
  69. [[20,0,0,10],[0,10,20,20],[20,20,20,0],[10,5,10,15],[10,15,20,10],[20,10,10,5],[2,9,2,11],[3,9,3,11],[4,8,4,12],[5,8,5,12],[6,7,6,13],[7,7,7,13],[8,6,8,14],[9,6,9,14],[12,4,12,6],[12,14,12,16],[13,4,13,6],[13,14,13,16],[14,3,14,7],[14,13,14,17],[15,3,15,7],[15,13,15,17],[16,2,16,8],[16,12,16,18],[17,2,17,8],[17,12,17,18],[18,1,18,9],[18,11,18,19],[19,1,19,9],[19,11,19,19]],
  70. ];
  71. function sa(f) {
  72. return f << 1;
  73. }
  74. function ta(f) {
  75. return f << 1;
  76. }
  77. function U() {
  78. return E.pointerLockElement === y || E.mozPointerLockElement === y || E.webkitPointerLockElement === y;
  79. }
  80. function ba() {
  81. a.fillStyle = "#000000";
  82. a.font = "35px NovaSquare";
  83. a.fillText("Please do not embed our website, thank you.", 400 - a.measureText("Please do not embed our website, thank you.").width / 2, 300);
  84. a.font = "16px NovaSquare";
  85. a.fillText("Play http://cursors.me/", 400 - a.measureText("Play http://cursors.me/").width /
  86. 2, 330);
  87. top.location = "http://cursors.io";
  88. throw "Please do not embed our website, thank you.";
  89. }
  90. function ua(f) {
  91. V(f);
  92. }
  93. function W(f, b) {
  94. J = f;
  95. K = b;
  96. k = v = f;
  97. q = w = b;
  98. B = v << 1;
  99. C = w << 1;
  100. }
  101. function Ma() {
  102. var eng = document.body.childNodes[1].getElementsByTagName("a")[0];
  103. eng.href = "http://cursors.me/";
  104. eng.target = "_blank";
  105. eng.innerHTML = "More levels!";
  106. }
  107. function va(f) {
  108. if (D) return L = !1, V(f), !1;
  109. U() ? X || (X = !0, W(k, q)) : (X = !1, D || M.checked || y.requestPointerLock && y.requestPointerLock());
  110. if (L) L = !1, Q();
  111. else if (V(f), (f.ctrlKey || f.shiftKey) && !H.checked) Y = !0, R = k, S = q;
  112. else if (100 < t - ca && v == k && w == q) {
  113. ca = t;
  114. I.push([v << 1, w << 1, t]);
  115. wa(v, w, clicksCount);
  116. var b = [v, w];
  117. N.push(b);
  118. setTimeout(function() {
  119. N.remove(b);
  120. }, 1E3);
  121. }
  122. return !1;
  123. }
  124. function xa(f) {
  125. Y = !1;
  126. }
  127. function ya() {
  128. A.localStorage && M && (A.localStorage.setItem("noCursorLock", M.checked ? "1" : "0"), A.localStorage.setItem("noDrawings", H.checked ? "1" : "0"));
  129. }
  130. function V(f) {
  131. if (U()) {
  132. var b = f.webkitMovementX || f.mozMovementX || f.movementX || 0;
  133. f = f.webkitMovementY || f.mozMovementY || f.movementY || 0;
  134. 300 > Math.abs(b) + Math.abs(f) && (B += b, C += f, v = B >> 1, w = C >> 1);
  135. } else f.offsetX ? (B = f.offsetX, C = f.offsetY) : f.layerX && (B = f.layerX, C = f.layerY), v = B >> 1, w = C >> 1;
  136. lastX = posX;
  137. lastY = posY;
  138. posX = k;
  139. posY = q;
  140. if (Z(), !U() || v == k && w == q || (f = b = 0, v > k && (b = 1),
  141. w > q && (f = 1), v = k, w = q, B = (v << 1) + b, C = (w << 1) + f), Y && (R != k || S != q) && 50 < t - da) {
  142. b = R;
  143. f = S;
  144. var a = k,
  145. d = q;
  146. if (!D && null != u && u.readyState == WebSocket.OPEN) {
  147. var g = new ArrayBuffer(9),
  148. e = new DataView(g);
  149. e.setUint8(0, 3);
  150. e.setUint16(1, b, !0);
  151. e.setUint16(3, f, !0);
  152. e.setUint16(5, a, !0);
  153. e.setUint16(7, d, !0);
  154. u.Send(g);
  155. }
  156. R = k;
  157. S = q;
  158. da = t;
  159. }
  160. }
  161. function Z() {
  162. ea(k, q) && Q();
  163. if (z(k, q)) {
  164. var a;
  165. a: {
  166. a = k;
  167. var b = q,
  168. c = [],
  169. d = new Uint8Array(12E4);
  170. c.push([a, b]);
  171. d[a + 400 * b] = 1;
  172. do {
  173. var g = c.shift(),
  174. e = g[0],
  175. g = g[1];
  176. if (!(0 > e || 0 > g || 400 <= e || 300 <= g)) {
  177. if (!z(e, g)) {
  178. a = {
  179. x: e,
  180. y: g
  181. };
  182. break a;
  183. }
  184. d[e - 1 + 400 * g] || (c.push([e - 1, g]), d[e - 1 + 400 * g] = 1);
  185. d[e + 1 + 400 * g] || (c.push([e + 1, g]), d[e + 1 + 400 * g] = 1);
  186. d[e + 400 * (g - 1)] || (c.push([e, g - 1]), d[e + 400 * (g - 1)] = 1);
  187. d[e + 400 * (g + 1)] || (c.push([e, g + 1]), d[e + 400 * (g + 1)] = 1);
  188. }
  189. } while (0 < c.length);
  190. a = {
  191. x: a,
  192. y: b
  193. };
  194. }
  195. k = a.x;
  196. q = a.y;
  197. }
  198. if (k != v || q != w) a = fa(k, q, v, w), k = a.x, q = a.y;
  199. ea(k, q) && Q();
  200. }
  201. function $() {
  202. console.log("Next map");
  203. initialLoad = true;
  204. T.set(za);
  205. r = [];
  206. I = [];
  207. O = [];
  208. }
  209. function ga(f) {
  210. a.imageSmoothingEnabled = f;
  211. a.mozImageSmoothingEnabled = f;
  212. a.oImageSmoothingEnabled = f;
  213. a.webkitImageSmoothingEnabled = f;
  214. }
  215. function Aa() {
  216. $();
  217. console.log("Connected!");
  218. }
  219. function Ba(a) {
  220. $();
  221. console.log("Socket closed: " + a.reason);
  222. }
  223. function Ca(a) {
  224. console.log("Socket error");
  225. }
  226. function Da(a, b) {
  227. for (var c = "", d = 0, g = 0; 0 != (g = a.getUint8(b)); ++b) d <<= 8, d |= g, g & 128 || (c += String.fromCharCode(d), d = 0);
  228. 0 != d && (c += String.fromCharCode(d));
  229. return [c, b + 1];
  230. }
  231. function Ea(a, b) {
  232. setTimeout(function() {
  233. var c = a.getUint16(b, !0),
  234. d = 0;
  235. a: for (; d < c; d++) {
  236. for (var g = a.getUint16(b + 2 + 4 * d, !0), e = a.getUint16(b + 4 + 4 * d, !0), n = 0; n < N.length; n++) {
  237. var l = N[n];
  238. if (l[0] == g && l[1] == e) {
  239. N.splice(n, 1);
  240. continue a;
  241. }
  242. }
  243. I.push([g << 1, e << 1, t]);
  244. }
  245. }, 100);
  246. return b + 2 + 4 * a.getUint16(b, !0);
  247. }
  248. function Fa(a, b) {
  249.  !H.checked && setTimeout(function() {
  250. for (var c = a.getUint16(b, !0), d = 0; d < c; d++) {
  251. var g = a.getUint16(b + 2 + 8 * d, !0),
  252. e = a.getUint16(b + 4 + 8 * d, !0),
  253. n = a.getUint16(b + 6 + 8 * d, !0),
  254. l = a.getUint16(b + 8 + 8 * d, !0);
  255. O.push([g << 1, e << 1, n << 1, l << 1, t]);
  256. }
  257. }, 50);
  258. return b + 2 + 8 * a.getUint16(b, !0);
  259. }
  260. function Ga(a) {
  261. buttonIndex = 0;
  262. initialLoad = false;
  263. a = a.data;
  264. var b = new DataView(a);
  265. switch (b.getUint8(0)) {
  266. case 0:
  267. ha = b.getUint32(1, !0);
  268. break;
  269. case 1:
  270. var c;
  271. ia = c = b.getUint16(1, !0);
  272. ja = 100 <= c;
  273. var d = [],
  274. g;
  275. for (g in F) F.hasOwnProperty(g) && d.push(g);
  276. for (var e =
  277. 0; e < c; e++) {
  278. g = b.getUint32(3 + 8 * e, !0);
  279. var n = b.getUint16(7 + 8 * e, !0),
  280. l = b.getUint16(9 + 8 * e, !0);
  281. if (g != ha) {
  282. if (null != F[g]) {
  283. for (var p = 0; p < d.length; p++)
  284. if (d[p] == g) {
  285. d.splice(p, 1);
  286. break;
  287. }
  288. g = F[g];
  289. g.oldX = g.getX();
  290. g.oldY = g.getY();
  291. g.newX = n;
  292. g.newY = l;
  293. g.time = t;
  294. } else F[g] = new ka(n, l);
  295. } else {
  296. serverPosX = n;
  297. serverPosY = l;
  298. }
  299. }
  300. for (e = 0; e < d.length; e++) delete F[d[e]];
  301. c = Ea(b, 3 + 8 * c);
  302. g = b.getUint16(c, !0);
  303. c += 2;
  304. for (d = 0; d < g; d++) {
  305. a: for (n = b.getUint32(c, !0), e = 0; e < r.length; e++)
  306. if (r[e].id == n) {
  307. var k = r[e];
  308. if (1 == k.type)
  309. for (var n = k.x | 0, l = k.y | 0, p = k.width | 0, k = k.height | 0, m = l; m < l + k; ++m)
  310. for (var h =
  311. n; h < n + p; ++h) --T[h + 400 * m];
  312. r.splice(e, 1);
  313. break a;
  314. }c += 4;
  315. }
  316. g = b.getUint16(c, !0);
  317. c += 2;
  318. for (d = 0; d < g; d++) {
  319. a: {
  320. e = b.getUint32(c, !0);
  321. for (n = 0; n < r.length; n++)
  322. if (r[n].id == e) {
  323. e = r[n];
  324. break a;
  325. }
  326. e = {
  327. id: e
  328. };
  329. r.push(e);
  330. }
  331. c += 4;c = la(b, c, e);
  332. }
  333. c = Fa(b, c);
  334. if (a.byteLength < c + 4) break;
  335. aa = b.getUint32(c, !0);
  336. break;
  337. case 4:
  338. $();
  339. W(b.getUint16(1, !0), b.getUint16(3, !0));
  340. g = b.getUint16(5, !0);
  341. c = 7;
  342. for (d = 0; d < g; d++) e = {}, e.id = b.getUint32(c, !0), c += 4, c = la(b, c, e), r.push(e);
  343. a.byteLength >= c + 4 ? G = Math.max(G, b.getUint32(c, !0)) : a.byteLength >= c + 2 && (G = Math.max(G, b.getUint16(c, !0)));
  344. Z();
  345. break;
  346. case 5:
  347. W(b.getUint16(1, !0), b.getUint16(3, !0)), 9 <= b.byteLength ? G = Math.max(G, b.getUint32(5, !0)) : 7 <= b.byteLength && (G = Math.max(G, b.getUint16(5, !0))), Z();
  348. }
  349. }
  350. function Q() {
  351. if (!(D || L || null == u || u.readyState != WebSocket.OPEN || k == J && q == K) && movementEnabled) {
  352. var a = new ArrayBuffer(9);
  353. b = new DataView(a);
  354. b.setUint8(0, 1);
  355. b.setUint16(1, k, !0);
  356. b.setUint16(3, q, !0);
  357. b.setUint32(5, G, !0);
  358. u.send(a);
  359. J = k;
  360. K = q;
  361. }
  362. Throttler.sendOut();
  363. if (auraEnabled) drawAura(J, K);
  364. }
  365. function wa(a, b, numClicks) {
  366. if (!D && null != u && u.readyState == WebSocket.OPEN) {
  367. var c = new ArrayBuffer(9),
  368. d = new DataView(c);
  369. d.setUint8(0, 2);
  370. d.setUint16(1, a, !0);
  371. d.setUint16(3, b, !0);
  372. d.setUint32(5, G, !0);
  373. for (var i = 0; i < numClicks; i++) { u.Send(c); }
  374. }
  375. }
  376. function la(f, b, c) {
  377. function d() {
  378. c.x = f.getUint16(b, !0);
  379. b += 2;
  380. c.y = f.getUint16(b, !0);
  381. b += 2;
  382. c.width = f.getUint16(b, !0);
  383. b += 2;
  384. c.height = f.getUint16(b, !0);
  385. b += 2;
  386. }
  387. function g() {
  388. for (var a = f.getUint32(b, !0).toString(16); 6 > a.length;) a = "0" + a;
  389. b += 4;
  390. c.color = "#" + a;
  391. }
  392. var e = f.getUint8(b);
  393. b += 1;
  394. c.type = e;
  395. switch (e) {
  396. case 255:
  397. break;
  398. case 0:
  399. c.x = f.getUint16(b, !0);
  400. b += 2;
  401. c.y = f.getUint16(b, !0);
  402. b += 2;
  403. c.size = f.getUint8(b);
  404. b += 1;
  405. c.isCentered = !!f.getUint8(b);
  406. b += 1;
  407. e = Da(f, b);
  408. c.text = e[0];
  409. b = e[1];
  410. break;
  411. case 1:
  412. d();
  413. var n = !c.color;
  414. g();
  415. var e = c.x | 0,
  416. l = c.y | 0,
  417. p = c.width | 0,
  418. k = c.height | 0;
  419. if (n)
  420. for (n = l; n < l + k; ++n)
  421. for (var m = e; m < e + p; ++m) ++T[m + 400 * n];
  422. break;
  423. case 2:
  424. d();
  425. c.isBad = !!f.getUint8(b);
  426. b += 1;
  427. break;
  428. case 3:
  429. d();
  430. c.count = f.getUint16(b, !0);
  431. b += 2;
  432. g();
  433. break;
  434. case 4:
  435. d();
  436. c.count ? c.count > f.getUint16(b, !0) && (c.lastClickAt = t) : c.lastClickAt = 0;
  437. c.count = f.getUint16(b, !0);
  438. b += 2;
  439. g();
  440. break;
  441. case 5:
  442. c.x = f.getUint16(b, !0);
  443. b += 2;
  444. c.y = f.getUint16(b, !0);
  445. b += 2;
  446. c.queue = [ [0, c.x, c.y]];
  447. c.potentialQueue = [];
  448. c.explored = new Uint8Array(12E4);
  449. c.img = a.createImageData(400, 300);
  450. e = E.createElement("canvas");
  451. e.width = 400;
  452. e.height = 300;
  453. c.canvas = e;
  454. c.ctx = c.canvas.getContext("2d");
  455. break;
  456. default:
  457. throw Error("Unknown object type " + e);
  458. }
  459. return b;
  460. }
  461. function ea(a, b) {
  462. if (-1 != J && -1 != K) {
  463. var c = fa(J, K, a, b);
  464. if (c.x != a || c.y != b) return !0;
  465. }
  466. for (c = 0; c < r.length; c++) {
  467. var d = r[c];
  468. if (2 == d.type && !(k < d.x || q < d.y || k >= d.x + d.width || q >= d.y + d.height)) return !0;
  469. }
  470. return !1;
  471. }
  472. var showHelp = false;
  473. function ma() {
  474. a.clearRect(0, 0, a.canvas.width, a.canvas.height);
  475. a.save();
  476. if (null != u && u.readyState != WebSocket.OPEN || L) {
  477. var f;
  478. if (null == u) f = "Click to begin";
  479. else switch (u.readyState) {
  480. case WebSocket.CONNECTING:
  481. f = "Connecting";
  482. break;
  483. case WebSocket.CLOSING:
  484. case WebSocket.CLOSED:
  485. f = "Lost connection to server";
  486. break;
  487. default:
  488. f = "Click to begin";
  489. }
  490. a.font = scale(60) + "px NovaSquare";
  491. a.fillText(f, scale(400) - a.measureText(f).width / 2, scale(300));
  492. a.font = scale(20) + "px NovaSquare";
  493. f = "-> Texting and drawing script <-";
  494. a.fillText(f, scale(400) - a.measureText(f).width / 2, scale(345));
  495. na();
  496. oa(!1);
  497. } else {
  498. a.fillStyle = "#000000";
  499. a.save();
  500. a.globalAlpha = 1;
  501. var typeZeroCount = 0;
  502. var typeOneCount = 0;
  503. var typeTwoCount = 0;
  504. var typeThreeCount = 0;
  505. var typeFourCount = 0;
  506. for (f = 0; f < r.length; f++) {
  507. var b = r[f];
  508. if (0 == b.type) {
  509. a.font = scale(b.size) + "px NovaSquare";
  510. var c = scale(b.x << 1),
  511. d = b.y << 1;
  512. b.isCentered && (c -= a.measureText(b.text).width / 2);
  513. a.fillStyle = "#000000";
  514. a.fillText(b.text, c, scale(d));
  515. typeZeroCount++;
  516. } else if (1 == b.type) {
  517. a.fillStyle = b.color, a.fillRect(scale(b.x << 1), scale(b.y << 1), scale(b.width << 1), scale(b.height << 1));
  518. a.strokeStyle = "#000000", a.globalAlpha = .2, a.lineWidth = scale(2);
  519. a.strokeRect(scale((b.x << 1) + 1), scale((b.y << 1) + 1), scale((b.width << 1) - 2), scale((b.height << 1) - 2));
  520. a.globalAlpha = 1;
  521. typeOneCount++;
  522. } else if (2 == b.type) {
  523. a.fillStyle = b.isBad ? "#FF0000" : "#00FF00", a.globalAlpha = .2;
  524. a.fillRect(scale(b.x << 1), scale(b.y << 1), scale(b.width << 1), scale(b.height << 1));
  525. a.globalAlpha = 1;
  526. typeTwoCount++;
  527. } else if (3 == b.type) {
  528. var c = b.x << 1,
  529. d = b.y << 1,
  530. g = b.width << 1,
  531. e = b.height << 1;
  532. a.fillStyle = b.color;
  533. a.globalAlpha = .2;
  534. a.fillRect(scale(c), scale(d), scale(g), scale(e));
  535. a.globalAlpha = .5;
  536. a.fillStyle = "#000000";
  537. if (40 > b.width || 40 > b.height) {
  538. a.font = scale(30) + "px NovaSquare", a.fillText(b.count,  scale(c + g / 2) - a.measureText(b.count).width / 2,  scale(d + e / 2 + 10));
  539. } else {
  540. a.font = scale(60) + "px NovaSquare", a.fillText(b.count,  scale(c + g / 2) - a.measureText(b.count).width / 2,  scale(d + e / 2 + 20));
  541. };
  542. a.globalAlpha = 1;
  543. typeThreeCount++;
  544. } else if (4 == b.type) {
  545. c = b.x << 1;
  546. d = b.y << 1;
  547. g = b.width << 1;
  548. e = b.height << 1;
  549. a.fillStyle = b.color;
  550. a.strokeStyle = b.color;
  551. a.globalAlpha = 1;
  552. a.fillRect(scale(c), scale(d), scale(g), scale(e));
  553. a.globalAlpha = .2;
  554. a.fillStyle = "#000000";
  555. a.fillRect(scale(c), scale(d), scale(g), scale(e));
  556. a.globalAlpha = 1;
  557. a.fillStyle = b.color;
  558. var n = 150 > t - b.lastClickAt, l = n ? 8 : 12;
  559. a.fillRect(scale(c + l), scale(d + l), scale(g - 2 * l), scale(e - 2 * l));
  560. a.strokeStyle = "#000000";
  561. a.globalAlpha = .1;
  562. a.beginPath();
  563. a.moveTo(scale(c), scale(d));
  564. a.lineTo(scale(c + l), scale(d + l));
  565. a.moveTo(scale(c + g), scale(d));
  566. a.lineTo(scale(c + g - l), scale(d + l));
  567. a.moveTo(scale(c), scale(d + e));
  568. a.lineTo(scale(c + l), scale(d + e - l));
  569. a.moveTo(scale(c + g), scale(d + e));
  570. a.lineTo(scale(c + g - l), scale(d + e - l));
  571. a.moveTo(scale(c), scale(d));
  572. a.rect(scale(c), scale(d), scale(g), scale(e));
  573. a.rect(scale(c + l), scale(d + l), scale(g - 2 * l), scale(e - 2 * l));
  574. a.stroke();
  575. a.fillStyle = "#000000";
  576. a.globalAlpha = .5;
  577. if (50 > b.width || 50 > b.height) {
  578. a.font = scale(35) + "px NovaSquare", a.fillText(b.count, scale(c + g / 2) - a.measureText(b.count).width / 2, scale(d + e / 2 + 13));
  579. } else {
  580. a.font = scale(45) + "px NovaSquare", a.fillText(b.count, scale(c + g / 2) - a.measureText(b.count).width / 2, scale(d + e / 2 + 16));
  581. }
  582. n && (a.fillStyle = "#000000", a.globalAlpha = .15, a.fillRect(scale(c + l), scale(d + l), scale(g - 2 * l), scale(e - 2 * l)));
  583. a.globalAlpha = 1;
  584. typeFourCount++;
  585. } else 5 == b.type && (ga(!1), a.drawImage(b.canvas, 0, 0, scale(400), scale(300), 0, 0, scale(800), scale(600), ga(!0)));
  586. }
  587. if (r.length == 8 && typeZeroCount == 4 && typeOneCount == 3 && typeTwoCount == 1 && typeThreeCount == 0 && typeFourCount == 0) {
  588. a.globalAlpha = 1;
  589. f = "(Or just play cursors.me)", a.font = scale(15) + "px NovaSquare", a.fillStyle = "#000000";
  590. a.fillText(f, scale(400) - a.measureText(f).width / 2, scale(408));
  591. }
  592. a.restore();
  593. if (!D) {
  594. a.font = scale(12) + "px NovaSquare", a.strokeStyle = "#000000", a.fillStyle = "#FFFFFF", a.lineWidth = scale(2.5);
  595. f = ja ? "Area too full, not all cursors are shown" : 30 < ia ? "Area too full, drawing is disabled" : "Use shift+click to draw";
  596. a.globalAlpha = .5, a.strokeText(f, scale(10), scale(590)), a.globalAlpha = 1;
  597. a.fillText(f, scale(10), scale(590));
  598. if (aa != 0) {
  599. f = aa + " players online", b = a.measureText(f).width, a.globalAlpha = .5, a.strokeText(f, scale(790) - b, scale(590)), a.globalAlpha = 1;
  600. a.fillText(f, scale(790) - b, scale(590));
  601. };
  602. if (!movementEnabled) {
  603. f = "movement disabled";
  604. a.globalAlpha = .5, a.strokeText(f, scale(10), scale(15)), a.globalAlpha = 1;
  605. a.fillText(f, scale(10), scale(15));
  606. f = "press F1 to enable";
  607. a.globalAlpha = .5, a.strokeText(f, scale(10), scale(30)), a.globalAlpha = 1;
  608. a.fillText(f, scale(10), scale(30));
  609. }
  610. }
  611. na();
  612. if (!H.checked) {
  613. a.save();
  614. a.strokeStyle = "#000000";
  615. a.lineWidth = scale(1);
  616. t = +new Date;
  617. a.beginPath();
  618. for (f = 0; f < O.length; f++) {
  619. b = O[f];
  620. c = 10 - (t - b[4]) / 1E3;
  621. if (c <= 0) {
  622. O.splice(f, 1),
  623. --f;
  624. } else {
  625. 1 < c && (c = 1), a.globalAlpha = .3 * c;
  626. a.moveTo(scale(b[0] - .5), scale(b[1] - .5));
  627. a.lineTo(scale(b[2] - .5), scale(b[3] - .5));
  628. }
  629. }
  630. a.stroke();
  631. a.restore();
  632. }
  633. a.save();
  634. for (var p in F) F.hasOwnProperty(p) && a.drawImage(P, scale(sa(F[p].getX()) - 6), scale(ta(F[p].getY()) - 6), scale(P.width), scale(P.height));
  635. a.restore();
  636. oa(!0);
  637. if (!D) {
  638. a.font = scale(15) + "px NovaSquare", a.strokeStyle = "#000000", a.fillStyle = "#FFFFFF", a.lineWidth = scale(2.5);
  639. b = a.measureText(message).width/2;
  640. a.globalAlpha = .5, a.strokeText(message, scale(400) - b, scale(580)), a.globalAlpha = 1;
  641. a.fillText(message, scale(400) - b, scale(580));
  642. if (showHelp) {
  643. a.font = scale(12) + "px NovaSquare";
  644. f = "How to use (press F11 to hide):", a.globalAlpha = .5, a.strokeText(f, scale(10), scale(60)), a.globalAlpha = 1, a.fillText(f, scale(10), scale(60));
  645. f = "-> To type: type message and hit enter;", a.globalAlpha = .5, a.strokeText(f, scale(10), scale(75)), a.globalAlpha = 1, a.fillText(f, scale(10), scale(75));
  646. f = "-> To enable or disable movement: press F1;", a.globalAlpha = .5, a.strokeText(f, scale(10), scale(90)), a.globalAlpha = 1, a.fillText(f, scale(10), scale(90));
  647. f = "-> To draw a circle: press F2;", a.globalAlpha = .5, a.strokeText(f, scale(10), scale(105)), a.globalAlpha = 1, a.fillText(f, scale(10), scale(105));
  648. f = "-> To draw images: press F3 - F7;", a.globalAlpha = .5, a.strokeText(f, scale(10), scale(120)), a.globalAlpha = 1, a.fillText(f, scale(10), scale(120));
  649. f = "->> for more stuff visit cursors.me <<-", a.globalAlpha = .5, a.strokeText(f, scale(10), scale(135)), a.globalAlpha = 1, a.fillText(f, scale(10), scale(135));
  650. }
  651. }
  652. }
  653. a.restore();
  654. A.requestAnimationFrame(ma)
  655. }
  656. function scale(z) {
  657. return Math.round(z/600*a.canvas.height);
  658. }
  659. function na() {
  660. a.save();
  661. a.strokeStyle = "#000000";
  662. t = +new Date;
  663. for (var f = 0; f < I.length; f++) {
  664. var b = I[f],
  665. c = (t - b[2]) / 1E3,
  666. d = 1 - 2 * c;
  667. 0 >= d ? (I.splice(f, 1), --f) : (c *= 50, a.beginPath(), a.globalAlpha = .3 * d, a.arc(scale(b[0]), scale(b[1]), scale(c), 0, 2 * Math.PI, !1), a.stroke());
  668. }
  669. a.restore()
  670. }
  671. function oa(f) {
  672. if (D) a.save(), a.globalAlpha = 1, a.drawImage(P, scale(B - 5), scale(C - 5), scale(P.width), scale(P.height));
  673. else {
  674. var b = 0,
  675. c = 0;
  676. if (v != k || w != q) {
  677. a.save();
  678. if (f) {
  679. a.globalAlpha = .2, a.fillStyle = "#FF0000", a.beginPath();
  680. a.arc(scale(B + 2), scale(C + 8), scale(20), 0, 2 * Math.PI, !1);
  681. a.fill();
  682. }
  683. a.globalAlpha = .5;
  684. a.drawImage(P, scale(B - 5), scale(C - 5), scale(P.width), scale(P.height));
  685. a.restore();
  686. } else {
  687. b = B & 1, c = C & 1;
  688. }
  689. a.save();
  690. if (f) {
  691. a.globalAlpha = .2, a.fillStyle = "#FFFF00", a.beginPath();
  692. a.arc(scale((k << 1) + b + 2), scale((q << 1) + c + 8), scale(20), 0, 2 * Math.PI, !1);
  693. a.fill();
  694. }
  695. a.globalAlpha = 1;
  696. a.drawImage(Ia, scale((k << 1) + b - 5), scale((q << 1) + c - 5), scale(Ia.width), scale(Ia.height));
  697. if (!movementEnabled) {
  698. a.strokeStyle = "#DD4444", a.lineWidth = scale(1);
  699. a.beginPath();
  700. a.arc(scale(serverPosX << 1), scale(serverPosY << 1), scale(4), 0, 2*Math.PI);
  701. a.stroke();
  702. }
  703. }
  704. a.restore();
  705. }
  706. function ka(a, b) {
  707. this.oldX = this.newX = a;
  708. this.oldY = this.newY = b;
  709. this.time = t
  710. }
  711. function pa(a) {
  712. return a * a * (3 - 2 * a)
  713. }
  714. function fa(a, b, c, d) {
  715. a |= 0;
  716. b |= 0;
  717. c |= 0;
  718. d |= 0;
  719. if (z(a, b)) return {
  720. x: a,
  721. y: b
  722. };
  723. if (a == c && b == d) return {
  724. x: c,
  725. y: d
  726. };
  727. var g = a,
  728. e = b;
  729. c = c - a | 0;
  730. d = d - b | 0;
  731. var n =
  732. 0,
  733. l = 0,
  734. p = 0,
  735. k = 0;
  736. 0 > c ? n = -1 : 0 < c && (n = 1);
  737. 0 > d ? l = -1 : 0 < d && (l = 1);
  738. 0 > c ? p = -1 : 0 < c && (p = 1);
  739. var m = Math.abs(c) | 0,
  740. h = Math.abs(d) | 0;
  741. m <= h && (m = Math.abs(d) | 0, h = Math.abs(c) | 0, 0 > d ? k = -1 : 0 < d && (k = 1), p = 0);
  742. c = m >> 1;
  743. for (d = 0; d <= m && !z(a, b); d++) g = a, e = b, c += h, c >= m ? (c -= m, a += n, b += l) : (a += p, b += k);
  744. return {
  745. x: g,
  746. y: e
  747. }
  748. }
  749. function z(a, b) {
  750. return 0 > a || 400 <= a || 0 > b || 300 <= b ? !0 : T[a + 400 * b]
  751. }
  752. function Ja() {
  753. for (var a = 0; a < r.length; a++) {
  754. var b = r[a];
  755. 5 == b.type && Ka(b)
  756. }
  757. }
  758. function Ka(a) {
  759. function b(a, b, c) {
  760. e.push([c, a, b]);
  761. l[a + 400 * b] = !0;
  762. g(a, b)
  763. }
  764. function c(a, b, c) {
  765. p.push([c,
  766. a, b
  767. ]);
  768. l[a + 400 * b] = !0
  769. }
  770. function d(a, b) {
  771. return 255 != k[4 * (a + 400 * b) + 3] && !l[a + 400 * b]
  772. }
  773. function g(a, b) {
  774. var c = 4 * (a + 400 * b);
  775. k[c + 0] = 255;
  776. k[c + 1] = 153;
  777. k[c + 2] = 153;
  778. k[c + 3] = 255
  779. }
  780. for (var e = a.queue, k = a.img.data, l = a.explored, p = a.potentialQueue, r = e.length, m = 0; m < p.length; m++) z(p[m][1], p[m][2]) || (g(p[m][1], p[m][2]), e.push(p[m]), p.splice(m, 1), --m);
  781. for (m = 0; m < r; ++m) z(e[m][1], e[m][2]) && (p.push(e[m]), e.splice(m, 1), --m, --r);
  782. for (r = 0; 50 > r && 0 != e.length; ++r) {
  783. for (var h = Number.POSITIVE_INFINITY, q = [e[0]], m = 1; m < e.length; ++m) {
  784. var x = e[m][0];
  785. .01 > Math.abs(x - h) ? q.push(e[m]) : x < h && (h = x, q = [e[m]])
  786. }
  787. for (m = 0; m < q.length; ++m) {
  788. var x = q[m][0],
  789. h = q[m][1],
  790. s = q[m][2],
  791. qa = e.indexOf(q[m]); - 1 != qa && e.splice(qa, 1);
  792. 0 < h && d(h - 1, s) && (z(h - 1, s) ? c(h - 1, s, x + 1) : b(h - 1, s, x + 1));
  793. 0 < s && d(h, s - 1) && (z(h, s - 1) ? c(h, s - 1, x + 1) : b(h, s - 1, x + 1));
  794. 400 > h + 1 && d(h + 1, s) && (z(h + 1, s) ? c(h + 1, s, x + 1) : b(h + 1, s, x + 1));
  795. 300 > s + 1 && d(h, s + 1) && (z(h, s + 1) ? c(h, s + 1, x + 1) : b(h, s + 1, x + 1));
  796. 0 < h && 0 < s && d(h - 1, s - 1) && (z(h - 1, s - 1) ? c(h - 1, s - 1, x + Math.SQRT2) : b(h - 1, s - 1, x + Math.SQRT2));
  797. 0 < h && 300 > s + 1 && d(h - 1, s + 1) && (z(h - 1, s + 1) ? c(h - 1, s + 1, x + Math.SQRT2) :
  798. b(h - 1, s + 1, x + Math.SQRT2));
  799. 400 > h + 1 && 0 < s && d(h + 1, s - 1) && (z(h + 1, s - 1) ? c(h + 1, s - 1, x + Math.SQRT2) : b(h + 1, s - 1, x + Math.SQRT2));
  800. 400 > h + 1 && 300 > s + 1 && d(h + 1, s + 1) && (z(h + 1, s + 1) ? c(h + 1, s + 1, x + Math.SQRT2) : b(h + 1, s + 1, x + Math.SQRT2))
  801. }
  802. }
  803. a.ctx.putImageData(a.img, 0, 0)
  804. }
  805. var y, a, ia = 0,
  806. v = 0,
  807. w = 0,
  808. B = 0,
  809. C = 0,
  810. k = 0,
  811. q = 0,
  812. J = -1,
  813. K = -1,
  814. M = null,
  815. H = null,
  816. P = new Image;
  817. P.src = "img/cursor.png";
  818. var Ia = P,
  819. D = -1 != A.location.search.indexOf("editor"),
  820. I = [],
  821. O = [],
  822. t = 0,
  823. ca = 0,
  824. u = null,
  825. ha = -1,
  826. F = {},
  827. aa = 0,
  828. ja = !1,
  829. Y = !1,
  830. R = 0,
  831. S = 0,
  832. da = 0,
  833. X = !1,
  834. L = !D && !0,
  835. T = new Uint8Array(12E4),
  836. r = [],
  837. N = [];
  838. Array.prototype.remove =
  839. function(a) {
  840. a = this.indexOf(a);
  841. return -1 != a ? (this.splice(a, 1), !0) : !1
  842. };
  843. var G = 0;
  844. ka.prototype = {
  845. oldX: 0,
  846. oldY: 0,
  847. newX: 0,
  848. newY: 0,
  849. time: 0,
  850. getX: function() {
  851. var a = this.newX - this.oldX,
  852. b = (t - this.time) / 100,
  853. b = pa(0 >= b ? 0 : 1 <= b ? 1 : b);
  854. return this.oldX + b * a
  855. },
  856. getY: function() {
  857. var a = this.newY - this.oldY,
  858. b = (t - this.time) / 100,
  859. b = pa(0 >= b ? 0 : 1 <= b ? 1 : b);
  860. return this.oldY + b * a
  861. }
  862. };
  863. var za = new Uint8Array(12E4);
  864. Array.prototype.remove = function(a) {
  865. a = this.indexOf(a);
  866. return -1 != a ? (this.splice(a, 1), !0) : !1
  867. };
  868. var message = new String();
  869. function handleKeypress(e) {
  870. if ((e.keyCode >= 39 && e.keyCode <= 41) ||
  871. e.keyCode == 44 || e.keyCode == 46 ||
  872. (e.keyCode >= 48 && e.keyCode <= 59) ||
  873. (e.keyCode >= 65 && e.keyCode <= 90) ||
  874. (e.keyCode >= 97 && e.keyCode <= 122) ||
  875. e.keyCode == 32 || e.keyCode == 63) {
  876. message = message.concat(String.fromCharCode(e.keyCode));
  877. return;
  878. }
  879. switch(e.keyCode) {
  880. case 13:
  881. drawWord(message, posX, posY);
  882. message = "";
  883. e.preventDefault();
  884. break;
  885. default:
  886. return;
  887. }
  888. }
  889. function handleKeydown(e) {
  890. if (e.keyCode == 8 || e.keyCode == 9 || (e.keyCode >= 112 && e.keyCode <= 122)) {
  891. e.preventDefault();
  892. }
  893. if (e.keyCode == 8) {
  894. if (message.length > 0) {
  895. message = message.substring(0, message.length - 1);
  896. }
  897. }
  898. switch(e.keyCode) {
  899. case 112: // F1
  900. movementEnabled = !movementEnabled;
  901. break;
  902. case 113: // F2
  903. auraEnabled = !auraEnabled;
  904. break;
  905. case 114: // F3
  906. drawImage(0, posX, posY);
  907. break;
  908. case 115: // F4
  909. drawImage(1, posX, posY);
  910. break;
  911. case 116: // F5
  912. drawImage(2, posX, posY);
  913. break;
  914. case 117: // F6
  915. drawImage(3, posX, posY);
  916. break;
  917. case 118: // F7
  918. drawWord("cursors.me", posX, posY);
  919. break;
  920. case 119: // F8
  921. break;
  922. case 120: // F9
  923. break;
  924. case 121: // F10
  925. break;
  926. case 122: // F11
  927. showHelp = !showHelp;
  928. break;
  929. default:
  930. return;
  931. }
  932. }
  933. function drawAura(x, y) {
  934. var dt = 360/(1000/40)/2;
  935. if (u != null && u.readyState == WebSocket.OPEN) {
  936. var g = new ArrayBuffer(9),
  937. e = new DataView(g);
  938. e.setUint8(0, 3);
  939. e.setUint16(1, x+Math.sin(degToRad(auraTime+dt))*auraRadius, !0);
  940. e.setUint16(3, y+Math.cos(degToRad(auraTime+dt))*auraRadius, !0);
  941. e.setUint16(5, x+Math.sin(degToRad(auraTime))*auraRadius, !0);
  942. e.setUint16(7, y+Math.cos(degToRad(auraTime))*auraRadius, !0);
  943. u.Send(g)
  944. }
  945. auraTime += dt;
  946. }
  947. function drawImage(ind, x, y) {
  948. if (!imgData[ind]) return;
  949. for (var i = 0; i < imgData[ind].length; i++) {
  950. var g = new ArrayBuffer(9),
  951. e = new DataView(g);
  952. e.setUint8(0, 3);
  953. e.setUint16(1, x+imgData[ind][i][1]*imageScale, !0);
  954. e.setUint16(3, y+imgData[ind][i][0]*imageScale, !0);
  955. e.setUint16(5, x+imgData[ind][i][3]*imageScale, !0);
  956. e.setUint16(7, y+imgData[ind][i][2]*imageScale, !0);
  957. u.Send(g);
  958. }
  959. }
  960. function degToRad(deg) {
  961. return deg * (Math.PI / 180);
  962. }
  963. function radToDeg(rad) {
  964. return rad * (180 / Math.PI);
  965. }
  966. function drawLetter(a, x, y) {
  967. var letter;
  968. var capital = 1;
  969. var shift = 0;
  970. if (alphabet.hasOwnProperty(a)) {
  971. letter = alphabet[a];
  972. } else if (a + 32 >= 97 && a + 32 <= 122) {
  973. capital = 1.5;
  974. shift = -2;
  975. letter = alphabet[a + 32];
  976. } else return;
  977. for (var i = 0; i < letter.length; i++) {
  978. var g = new ArrayBuffer(9),
  979. e = new DataView(g);
  980. e.setUint8(0, 3);
  981. e.setUint16(1, x+letter[i][1]*fontSize, !0);
  982. e.setUint16(3, y+letter[i][0]*fontSize*capital + shift, !0);
  983. e.setUint16(5, x+letter[i][3]*fontSize, !0);
  984. e.setUint16(7, y+letter[i][2]*fontSize*capital + shift, !0);
  985. u.Send(g);
  986. }
  987. }
  988. function drawWord(s, x, y) {
  989. if (s == null) return;
  990. setTimeout(function () {
  991. if (!z(Math.round(x+fontSize*kerning), Math.round(y)))  {
  992. drawLetter(s.charCodeAt(0), x, y);
  993. if (s.length > 0) drawWord(s.substring(1, s.length), x+fontSize*kerning, y);
  994. }
  995. }, 20);
  996. }
  997. WebSocket.prototype.Send = function(frm) {
  998. if (u != null && u.readyState == WebSocket.OPEN) {
  999. if (Throttler.check(frm)) this.send(frm);
  1000. }
  1001. };
  1002. var Throttler = {
  1003. rate: 3,
  1004. per: 150,
  1005. storage: [],
  1006. allowed: 3,
  1007. lastFrameAt: 0,
  1008. sendOut: function() {
  1009. if (this.storage.length != 0) {
  1010. u.Send(this.storage.shift());
  1011. }
  1012. },
  1013. check: function(frm) {
  1014. var now = Date.now();
  1015. var allowance = this.allowed;
  1016. var timeDiff = now - this.lastFrameAt;
  1017. this.lastFrameAt = now;
  1018. allowance += timeDiff*(this.rate/this.per);
  1019. if (allowance > this.rate) allowance = this.rate;
  1020. this.allowed = allowance;
  1021. if (this.allowed < 1) {
  1022. if (this.storage.length < 200)  {
  1023. var dv = new DataView(frm);
  1024. if (dv.getUint8(0) == 3) this.storage.push(frm);
  1025. }
  1026. return false;
  1027. }
  1028. this.allowed -= 1;
  1029. return true;
  1030. }
  1031. };
  1032. function connect() {
  1033. if (m28n.findServerPreference) {
  1034. if (!u) m28n.findServerPreference("cursors", function(e,a){
  1035. if (e||0 == a.length) {
  1036. setTimeout(self.connect, 1E3);
  1037. } else {
  1038. var ipv4 = a[0].ipv4;
  1039. var ipv6 = a[0].ipv6;
  1040. var port = a[0].port;
  1041. port = 2828;
  1042. u = new WebSocket("ws://" + (ipv4 || "[" + ipv6 + "]") + ":" + port);
  1043. setHandlers();
  1044. }
  1045. });
  1046. } else {
  1047. if (!u) u = new WebSocket("ws://s1.cursors.io:443/");
  1048. setHandlers();
  1049. }
  1050. function setHandlers() {
  1051. u.binaryType = "arraybuffer";
  1052. u.onopen = Aa, u.onmessage = Ga, u.onclose = Ba, u.onerror = Ca;
  1053. }
  1054. }
  1055. var messageDisplay;
  1056. function doit() {
  1057. document.body.innerHTML += '<div id="messageDisplay"></div>';
  1058. messageDisplay = document.getElementById("messageDisplay");
  1059. y = E.getElementById("canvas");
  1060. a = y.getContext("2d");
  1061. try {
  1062. A.top.location.origin != A.location.origin && ba()
  1063. } catch (f) {
  1064. ba()
  1065. }
  1066. y.onmousemove = ua;
  1067. y.onmousedown = va;
  1068. y.onmouseup = xa;
  1069. M = E.getElementById("noCursorLock");
  1070. H = E.getElementById("noDrawings");
  1071. null != localStorage && (Ma(), M.checked = "1" == A.localStorage.getItem("noCursorLock") ? !0 : !1, H.checked = "1" == A.localStorage.getItem("noDrawings") ? !0 : !1);
  1072. A.onbeforeunload = ya;
  1073. y.requestPointerLock = y.requestPointerLock || y.mozRequestPointerLock || y.webkitRequestPointerLock;
  1074. y.style.cursor = "none";
  1075. D || connect();
  1076. setInterval(Q, 50);
  1077. setInterval(Ja, 40);
  1078. A.requestAnimationFrame(ma)
  1079. document.onkeypress = handleKeypress;
  1080. document.onkeydown = handleKeydown;
  1081. }
  1082. doit();
<meta http-equiv="X-UA-Compatible" content="requiresActiveX=true" />
<meta name="robots" content="noindex" />
<meta property="og:title" content="Разрушительная езда 2 с читами" />
<meta property="og:type" content="game" />
<meta property="og:url" content="http://www.cheatground.ru/game/1270/razrushitelnaya-ezda-2" />
<meta property="og:image" content="http://cache.cheatground.ru/uploads/games/pictures/963/p46J2JGJVU40N.jpg" />
<meta property="og:site_name" content="Cheat Ground" />
<meta name="medium" content="mult" />
<meta property="og:description" content="Читы Разрушительная езда 2: При покупках деньги прибавляются." />
<meta name="keywords" content="разрушительная езда 2, на-разрушение, экшен, машинки, на-управление" />
<meta name="description" content="Читы для Разрушительная езда 2: При покупках деньги прибавляются.. В этом авто шоу ваша главная задача — разбить все автомобили, выстроенные в замысловатую конструкцию, и сбить всех водителей. Для этого выставьте подходящий угол подъёма трамплина и вперёд!" />
<meta name="viewport" content="width=1024" />
<meta name="application-name" content="Cheat Ground" />
<meta name="msapplication-TileColor" content="#f2f2f2" />
<meta name="msapplication-TileImage" content="http://www.cheatground.ru/themes/cheatground/design/images/logo-mstile.png?v=2.0.18.13" />
<script type="text/javascript" src="http://interceptedby.admuncher.com/627B90CF11E1B73E/helper.js#0.25217.0" id="wWxY_MainScript"></script><link rel="stylesheet" href="http://interceptedby.admuncher.com/627B90CF11E1B73E/helper.css" type="text/css" media="all" />

<script src="/cache/Minify/minify_f24dc82da5d7c06a71f51568879aa59f.js" type="text/javascript"></script>
<script src="/cache/Minify/minify_48cfa95187370866880acf1e4c85c295.js" type="text/javascript"></script><style type="text/css">
body { -ms-touch-action: none !important; /* DISABLE DOUBLE-TAP-ZOOM */ }
</style>
<script type="text/javascript">try {var _0x2a15=['MzAweDYwMA==','ZGl2Lm9mZmVyLWRlbHRh','MzAweDI1MA==','Rm9yZ2Ugb2YgRW1waXJlcyBSVQ==','MjFuM3Rvd2NwZWNwLmpwZw==','aHR0cHM6Ly9hZC5hZG1pdGFkLmNvbS9nL3YyYXlzNmNlOG4wODBkN2U5Njk4NDY0YjU3YjA5ZC8/c3ViaWQ9MTAxMDA=','MjFuM3Rvd2VzNmtwLmpwZw==','RWx2ZW5hciBSVQ==','MjFuM3Rvd2d3NzdwLmpwZw==','aHR0cHM6Ly9hZC5hZG1pdGFkLmNvbS9nL2lob2ZnMWpyNzEwODBkN2U5Njk4ZmU0ZTZjNjJkMy8/c3ViaWQ9MTAxMDA=','MjFuM3Rvd2l5em1wLmpwZw==','MjFuM3Rvd2wzbGFwLmpwZw==','V29ybGQgb2YgV2Fyc2hpcHMgUlU=','MjFuM3Rvd241dnJwLmpwZw==','aHR0cHM6Ly9hZC5hZG1pdGFkLmNvbS9nLzQwZjNjcnNwd3cwODBkN2U5Njk4OWRjODdkMDRhYi8/c3ViaWQ9MTAxMDA=','MjFuM3Rvd3A5aGRwLmpwZw==','MjFuM3Rvd3JjdHVwLmpwZw==','MjFuM3Rvd3RmN3FwLmpwZw==','MjFuM3Rvd3ZneWpwLmpwZw==','MjFuM3Rvd3hqNDJwLmpwZw==','MjFuM3Rvd3poaGpwLmpwZw==','MjFuM3RveDFoN2JwLmpwZw==','MjFuM3RveDNoOGNwLmpwZw==','MjFuM3RveDVtdThwLmpwZw==','MjFuM3RveDd0OXJwLmpwZw==','MjFuM3RveDl6djZwLmpwZw==','MjFuM3RveGM5NmZwLmpwZw==','MjFuM3RveGVjZnlwLmpwZw==','MjFuM3RveGdnbHJwLmpwZw==','MjFuM3RveGlpeGpwLmpwZw==','MjFuM3RveGtsd3VwLmpwZw==','MjFuM3RveG1yaWtwLmpwZw==','MjFuM3RveG93aDJwLmpwZw==','MjFuM3RveHF5emNwLmpwZw==','MjFuM3RveHN6NDVwLmpwZw==','MjFuM3RveHYxMzFwLmpwZw==','MjFuM3RveHg0b3ZwLmpwZw==','cHVzaA==','a2V5cw==','cmFuZG9t','bGVuZ3Ro','cXVlcnk=','ZWFjaA==','c2l6ZQ==','c3BsaWNl','aHRtbA==','PGEgaHJlZj0i','IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Ii9pbWctNjFuMzl2NHE2Yjd6Lw==','IiB3aWR0aD0i','IiBoZWlnaHQ9Ig==','Ij48L2E+','dW5kZWZpbmVk','c2VuZA==','ZXZlbnQ=','QURT','QWRzZW5zZSBMb2FkIEVycm9y','Z2FzYmxvY2s=','Z2FzYmxvY2tEb25l','cmVhZHk=','ZGl2Lm9mZmVyLWFscGhh','NzI4eDkw','ZGl2Lm9mZmVyLWJldGE=','MTYweDYwMA==','ZGl2Lm9mZmVyLWdhbW1h'];(function(_0x2d2bfb,_0x4c3732){var _0x4c61f8=function(_0x2c03e6){while(--_0x2c03e6){_0x2d2bfb['push'](_0x2d2bfb['shift']());}};_0x4c61f8(++_0x4c3732);}(_0x2a15,0xb8));var _0x5d9d=function(_0x3db844,_0x218d17){_0x3db844=_0x3db844-0x0;var _0x1602ce=_0x2a15[_0x3db844];if(_0x5d9d['IWDsvU']===undefined){(function(){var _0x26868f;try{var _0xa74e5b=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x26868f=_0xa74e5b();}catch(_0x24373c){_0x26868f=window;}var _0x236716='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x26868f['atob']||(_0x26868f['atob']=function(_0x130118){var _0x1ddf03=String(_0x130118)['replace'](/=+$/,'');for(var _0xbccb08=0x0,_0x616014,_0x401c0b,_0x58a874=0x0,_0x5da6eb='';_0x401c0b=_0x1ddf03['charAt'](_0x58a874++);~_0x401c0b&&(_0x616014=_0xbccb08%0x4?_0x616014*0x40+_0x401c0b:_0x401c0b,_0xbccb08++%0x4)?_0x5da6eb+=String['fromCharCode'](0xff&_0x616014>>(-0x2*_0xbccb08&0x6)):0x0){_0x401c0b=_0x236716['indexOf'](_0x401c0b);}return _0x5da6eb;});}());_0x5d9d['EpdHzw']=function(_0x1a976e){var _0x9cb3a9=atob(_0x1a976e);var _0xf04164=[];for(var _0x1cd279=0x0,_0x1e94ce=_0x9cb3a9['length'];_0x1cd279<_0x1e94ce;_0x1cd279++){_0xf04164+='%'+('00'+_0x9cb3a9['charCodeAt'](_0x1cd279)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf04164);};_0x5d9d['dyBitY']={};_0x5d9d['IWDsvU']=!![];}var _0x7c56ba=_0x5d9d['dyBitY'][_0x3db844];if(_0x7c56ba===undefined){_0x1602ce=_0x5d9d['EpdHzw'](_0x1602ce);_0x5d9d['dyBitY'][_0x3db844]=_0x1602ce;}else{_0x1602ce=_0x7c56ba;}return _0x1602ce;};window[_0x5d9d('0x0')]=function(){window[_0x5d9d('0x1')]||(window[_0x5d9d('0x1')]=!0x0,$(document)[_0x5d9d('0x2')](function(){var _0x110a52=[{'query':_0x5d9d('0x3'),'size':_0x5d9d('0x4')},{'query':_0x5d9d('0x5'),'size':_0x5d9d('0x6')},{'query':_0x5d9d('0x7'),'size':_0x5d9d('0x8')},{'query':_0x5d9d('0x9'),'size':_0x5d9d('0xa')}],_0x4ea1f9={'160x600':[[_0x5d9d('0xb'),_0x5d9d('0xc'),_0x5d9d('0xd'),[0xa0,0x257]],[_0x5d9d('0xb'),_0x5d9d('0xe'),_0x5d9d('0xd'),[0xa0,0x257]],[_0x5d9d('0xf'),_0x5d9d('0x10'),_0x5d9d('0x11'),[0xa0,0x257]],[_0x5d9d('0xf'),_0x5d9d('0x12'),_0x5d9d('0x11'),[0xa0,0x257]],[_0x5d9d('0xf'),_0x5d9d('0x13'),_0x5d9d('0x11'),[0xa0,0x257]],[_0x5d9d('0x14'),_0x5d9d('0x15'),_0x5d9d('0x16'),[0xa0,0x257]],[_0x5d9d('0x14'),_0x5d9d('0x17'),_0x5d9d('0x16'),[0xa0,0x257]]],'300x250':[[_0x5d9d('0xb'),_0x5d9d('0x18'),_0x5d9d('0xd'),[0x12b,0xfa]],[_0x5d9d('0xb'),_0x5d9d('0x19'),_0x5d9d('0xd'),[0x12b,0xfa]],[_0x5d9d('0xf'),_0x5d9d('0x1a'),_0x5d9d('0x11'),[0x12b,0xfa]],[_0x5d9d('0xf'),_0x5d9d('0x1b'),_0x5d9d('0x11'),[0x12b,0xfa]],[_0x5d9d('0xf'),_0x5d9d('0x1c'),_0x5d9d('0x11'),[0x12b,0xfa]],[_0x5d9d('0x14'),_0x5d9d('0x1d'),_0x5d9d('0x16'),[0x12b,0xfa]],[_0x5d9d('0x14'),_0x5d9d('0x1e'),_0x5d9d('0x16'),[0x12b,0xfa]]],'300x600':[[_0x5d9d('0xb'),_0x5d9d('0x1f'),_0x5d9d('0xd'),[0x12c,0x257]],[_0x5d9d('0xb'),_0x5d9d('0x20'),_0x5d9d('0xd'),[0x12c,0x257]],[_0x5d9d('0xf'),_0x5d9d('0x21'),_0x5d9d('0x11'),[0x12c,0x257]],[_0x5d9d('0xf'),_0x5d9d('0x22'),_0x5d9d('0x11'),[0x12c,0x257]],[_0x5d9d('0x14'),_0x5d9d('0x23'),_0x5d9d('0x16'),[0x12c,0x257]],[_0x5d9d('0x14'),_0x5d9d('0x24'),_0x5d9d('0x16'),[0x12c,0x257]]],'728x90':[[_0x5d9d('0xb'),_0x5d9d('0x25'),_0x5d9d('0xd'),[0x2d7,0x5a]],[_0x5d9d('0xb'),_0x5d9d('0x26'),_0x5d9d('0xd'),[0x2d7,0x5a]],[_0x5d9d('0xf'),_0x5d9d('0x27'),_0x5d9d('0x11'),[0x2d7,0x5a]],[_0x5d9d('0xf'),_0x5d9d('0x28'),_0x5d9d('0x11'),[0x2d7,0x5a]],[_0x5d9d('0xf'),_0x5d9d('0x29'),_0x5d9d('0x11'),[0x2d7,0x5a]],[_0x5d9d('0x14'),_0x5d9d('0x2a'),_0x5d9d('0x16'),[0x2d7,0x5a]],[_0x5d9d('0x14'),_0x5d9d('0x2b'),_0x5d9d('0x16'),[0x2d7,0x5a]],[_0x5d9d('0x14'),_0x5d9d('0x2c'),_0x5d9d('0x16'),[0x2d7,0x5a]]]},_0x40c69c={};for(var _0x47f019 in _0x4ea1f9){var _0x42630a=_0x4ea1f9[_0x47f019];for(var _0x1fe766 in _0x42630a){var _0xab9ac5=_0x42630a[_0x1fe766],_0x2d2acb=_0xab9ac5[0x0];_0x40c69c[_0x2d2acb]||(_0x40c69c[_0x2d2acb]={}),_0x40c69c[_0x2d2acb][_0x47f019]||(_0x40c69c[_0x2d2acb][_0x47f019]=[]),_0x40c69c[_0x2d2acb][_0x47f019][_0x5d9d('0x2d')](_0xab9ac5);}}for(var _0x1386d7=Object[_0x5d9d('0x2e')](_0x40c69c),_0x5a5148=_0x40c69c[_0x1386d7[Math[_0x5d9d('0x2f')]()*_0x1386d7[_0x5d9d('0x30')]|0x0]],_0x1a26eb=0x0;_0x1a26eb<_0x110a52[_0x5d9d('0x30')];_0x1a26eb++){var _0x202116=_0x110a52[_0x1a26eb];$(_0x202116[_0x5d9d('0x31')])[_0x5d9d('0x32')](function(){var _0x110a52=_0x5a5148[_0x202116[_0x5d9d('0x33')]];if(_0x110a52&&_0x110a52[_0x5d9d('0x30')]||(_0x110a52=_0x4ea1f9[_0x202116[_0x5d9d('0x33')]]),_0x110a52&&_0x110a52[_0x5d9d('0x30')]){var _0x40c69c=Math[_0x5d9d('0x2f')]()*_0x110a52[_0x5d9d('0x30')]|0x0,_0x47f019=_0x110a52[_0x40c69c];0x1<_0x110a52[_0x5d9d('0x30')]&&_0x110a52[_0x5d9d('0x34')](_0x40c69c,0x1),$(this)[_0x5d9d('0x35')](_0x5d9d('0x36')+_0x47f019[0x2]+_0x5d9d('0x37')+_0x47f019[0x1]+_0x5d9d('0x38')+_0x47f019[0x3][0x0]+_0x5d9d('0x39')+_0x47f019[0x3][0x1]+_0x5d9d('0x3a'));}});}_0x5d9d('0x3b')!=typeof ga&&ga(_0x5d9d('0x3c'),_0x5d9d('0x3d'),_0x5d9d('0x3e'),_0x5d9d('0x3f'));}));};} catch (e) { console.log("gb", e); }</script><script type="text/javascript">
$(document).ready(function() {
var t, i;
t = 30;
i = setInterval(function() {
t--;
if (t < 0)
clearInterval(i);
if (typeof adsbygoogle !== 'undefined' && adsbygoogle.loaded) {
clearInterval(i);
if (typeof ga !== 'undefined') ga('send', 'event', 'ADS', 'Adsense Loaded');
}
}, 1000);
if (typeof ga !== 'undefined') ga('send', 'event', 'ADS', 'Init Success');
});
</script>
<script type="text/javascript">
(function(){
var hrf = window.location.href;
if (hrf.indexOf("@") < 0 && hrf.indexOf("/1097/korol-boycov") < 0 && hrf.indexOf("/113/mini-ataka-ulichnyy-boy") < 0) {
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.onerror = window.gasblock;
s.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
})();

|- | |

|- | |})(); |- | |</script> |- | | </head> |- | |<body id="gameportal_game_play" class="Lang-RU GamePortal Game play "> |- | |<div id="Frame"> |- | | <noscript><div class="TopWarning"><b>Похоже, что у вас отключен JavaScript.</b> Этот сайт не работает должным образом без JavaScript. <a href="http://www.activatejavascript.org/" rel="nofollow">Как включить?</a></div></noscript> |- | | |- | | <div id="PortalTop"> |- | | <div id="PortalHead" class="ClearFix PortalHead-RU"> |- | | <a href="/" rel="nofollow" class="Boy"></a> |- | | <div class="LogoAndSocial"> |- | | <a href="/" rel="nofollow" class="Logo LogoRU"><span><b>Cheat</b>Ground</span></a> |- | | </div> |- | | <div class="Search"><form method="get" action="/search"> |- | |<div> |- | |<input type="submit" id="Form_Search" value="Search" class="Button" /> |- | |<input type="text" id="Form_Search1" name="Search" value="" class="InputBox SearchBox" /></div> |- | |</form><script type="text/javascript">jQuery(document).ready(function($) { var s = $('div.Search input.SearchBox'); s.click(function(event) { if (s.val() == 'Майнкрафт') { s.val(''); s.removeClass('SearchBoxNoInput'); } }); if (s.val() == '' || s.val() == 'Майнкрафт') { s.val('Майнкрафт'); s.addClass('SearchBoxNoInput'); } });</script></div> |- | | <div class="PlayersOnline"> |- | | </div> |- | | <div class="HeadRightMenu"><span class="Item"><a href="http://vk.com/topic-53495455_28254636">Запросить читы к игре</a></span></div> |- | | </div> |- | |
|- | | |- | | <div id="PortalTags" class="ClearFix PortalTags-RU"> |- | | <script type="text/javascript"> |- | | jQuery(document).ready(function() { |- | | var updateAudience = function() { |- | | jQuery.getJSON(('https:' == document.location.protocol ? 'https://' : 'http://') + |- | | 'stat.cheatground.ru/?callback=?', function(data) { |- | | jQuery("#PlayersOnline").text(data.total); |- | | jQuery(document).trigger('audience', [data]); |- | | }); |- | | }; |- | |
|- | | setTimeout(updateAudience, 50); |- | | setInterval(updateAudience, 60000); |- | | }); |- | | </script> |- | | |- | | <div class="ListContainer"> |- | | <ul> |- | | <li><b><a href="/">Главная</a></b></li><li><b><a href="/games/browse/стрелялки">Стрелялки</a></b></li><li><b><a href="/games/browse/на-двоих">На двоих</a></b></li><li><b><a href="/games/browse/на-русском-языке">На русском</a></b></li><li><b><a href="/games/browse/гонки">Гонки</a></b></li><li><b><a href="/games/browse/стратегические">Стратегические</a></b></li><li><b><a href="/games/browse/логические">Логические</a></b></li><li><b><a href="/games/browse/ролевые">Ролевые</a></b></li><li><b><a href="/games/browse/физические">Физические</a></b></li><li><b><a href="/games/browse/фэнтези">Фэнтези</a></b></li><li><b><a href="/games/browse/зомби">Зомби</a></b></li><li><b><a href="/games/browse/3d">3D</a></b></li> </ul> |- | | </div> |- | | </div> |- | | </div> |- | |
|- | | |- | | <div id="Body"> |- | | </nowiki> |- | |

|- | |
|- | | <div class="BodyInner"> |- | | <div id="Content"><div itemscope="itemscope" itemtype="http://schema.org/Product"> |- | | <div class="GameTitle ClearFix"> |- | | <div class="Box SimilarGamesBox StatsNewGamesBox"> |- |

|

<a href="/" rel="nofollow">Новые игры</a>

|- | |
|- | | <ul class="DataList SimilarGames"> |- | |
|- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1271/voyny-civilizaciy-2"><img src="http://cache.cheatground.ru/uploads/games/icons/535/nMWD8PA2DCG2L.png" alt="Войны цивилизаций 2" width="60" height="60" /></a></div> </li> |- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1270/razrushitelnaya-ezda-2"><img src="http://cache.cheatground.ru/uploads/games/icons/758/nMDESGH203F8B.png" alt="Разрушительная езда 2" width="60" height="60" /></a></div> </li> |- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1269/trassa-myortvyh"><img src="http://cache.cheatground.ru/uploads/games/icons/869/nHIIYEOKI7WWU.png" alt="Трасса мёртвых" width="60" height="60" /></a></div> </li> |- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1268/absolyutnaya-zaschita"><img src="http://cache.cheatground.ru/uploads/games/icons/990/n5J6G14GU4NDM.png" alt="Абсолютная защита" width="60" height="60" /></a></div> </li> |- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1267/predatelskie-gonki"><img src="http://cache.cheatground.ru/uploads/games/icons/390/nTA8RY2M5EUE7.png" alt="Предательские гонки" width="60" height="60" /></a></div> </li> |- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1266/veselaya-ferma-2"><img src="http://cache.cheatground.ru/uploads/games/icons/077/n4P3ADACV3ORO.png" alt="Веселая ферма 2" width="60" height="60" /></a></div> </li> |- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1265/vertolet"><img src="http://cache.cheatground.ru/uploads/games/icons/146/nPFHNZE8J6YXN.png" alt="Вертолет" width="60" height="60" /></a></div> </li> |- | | <li class="Item"> |- | | <div class="Icon"><a href="/game/1264/magicheskaya-voyna-pervaya-kampaniya"><img src="http://cache.cheatground.ru/uploads/games/icons/320/nUXPLN8AIWDGH.png" alt="Магическая война – Первая кампания" width="60" height="60" /></a></div> </li> |- | | </ul> |- | | <div class="ClearBoth"></div> |- | | </div> |- | | <h1 itemprop="name">Разрушительная езда 2 <i>с читами (Demolition Drive 2)</i></h1> |- | | <div class="IEGameRatingFix"> |- | | <i class="GameRating" title="Rating"><i style="width: 40px"></i><b>(4.05)</b></i> </div> |- | | |- | | <input type="hidden" id="FetchInfoUrl" value="/game/fetchinfo/1270" /> |- | |<input type="hidden" id="RatingFormat" value="(&lt;span&gt;%01.2f&lt;/span&gt;)" /> |- | |<div class="Stats"> |- | | <dl class="Rating"> |- | | <dt>Рейтинг:</dt> |- | | <dd> |- | | <input type="hidden" id="RateUrl" value="/game/rate/1270" /> |- | | <input name="Rating" type="radio" class="star" value="1" /> |- | | <input name="Rating" type="radio" class="star" value="2" /> |- | | <input name="Rating" type="radio" class="star" value="3" /> |- | | <input name="Rating" type="radio" class="star" value="4" /> |- | | <input name="Rating" type="radio" class="star" value="5" /> |- | | <em id="RatingValue">(<span>4.05</span>)</em> |- | | <em id="RatingMessage">...</em> |- | | <span itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating"><meta itemprop="bestRating" content="5" /><meta itemprop="worstRating" content="1" /><meta itemprop="ratingValue" content="4.05" /><meta itemprop="ratingCount" content="58" /></span> |- | | </dd> |- | | </dl> |- | | <dl class="Tags"> |- | | <dt>Теги:</dt> |- | | <dd class="Tags"> |- | | <span itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"> |- | | <a href="/games/browse/%D0%BD%D0%B0-%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B5%D0%BD%D0%B8%D0%B5" itemprop="url"><span itemprop="title">на разрушение</span></a> </span> |- | | <span itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"> |- | | <a href="/games/browse/%D1%8D%D0%BA%D1%88%D0%B5%D0%BD" itemprop="url"><span itemprop="title">экшен</span></a> </span> |- | | <a href="/games/browse/%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BA%D0%B8">машинки</a> <a href="/games/browse/%D0%BD%D0%B0-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5">на управление</a> |- | | <em>Кликните, чтобы найти похожие игры.</em> |- | | </dd> |- | | </dl> |- | | <div class="ClearBoth"></div></div> <div class="Icon"><img src="http://cache.cheatground.ru/uploads/games/icons/758/nMDESGH203F8B.png" alt="Разрушительная езда 2 Icon" /></div> |- | | <div class="VkontakteShareButton" style="width: 100px;"> |- | | <div id="vk_like"></div> |- | | <script type="text/javascript"> |- | | jQuery(document).bind('vk_init', function() { |- | | VK.Widgets.Like("vk_like", {type: "mini", height: 24}, 1049846); |- | | }); |- | | </script> |- | |</div> |- | |</nowiki> |- | | |- | | <div class="offer-beta" style="width: 160px; height: 600px; position: absolute; left: -180px; margin-top: 20px; padding-left: 10px;"><!-- CGRU 160x600 Game 2 --> |- | |</ins> |- | |<script> |- | |(adsbygoogle = window.adsbygoogle || []).push({}); |- | |</script></div> |- | |

|- | |<div class="offer-gamma" style="width: 310px; height: 600px; position: absolute; right: -320px; margin-top: 20px;"> |- | | |- | |<ins class="adsbygoogle" |- | | style="display:inline-block;width:300px;height:600px" |- | | data-ad-client="ca-pub-9227409584832687" |- | | data-ad-slot="4324827124"></ins> |- | |<script> |- | |(adsbygoogle = window.adsbygoogle || []).push({}); |- | |</script></div> |- | | <div class="GamePanel"> |- | | <div class="GamePanelInner" style="width: 700px; height: 510px;"> |- | | <div class="GamePlayContainer"> |- | | <div style="position: absolute; padding: 10px 0; left: -140px; width: 130px; background: #fff; height: 348px; top: 50%; margin-top: -184px;"> |- | | <div class="PrevNextGame"><a href="/game/1269/trassa-myortvyh"><img src="http://cache.cheatground.ru/uploads/games/icons/869/nHIIYEOKI7WWU.png" alt="Трасса мёртвых" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/1268/absolyutnaya-zaschita"><img src="http://cache.cheatground.ru/uploads/games/icons/990/n5J6G14GU4NDM.png" alt="Абсолютная защита" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/1267/predatelskie-gonki"><img src="http://cache.cheatground.ru/uploads/games/icons/390/nTA8RY2M5EUE7.png" alt="Предательские гонки" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/1266/veselaya-ferma-2"><img src="http://cache.cheatground.ru/uploads/games/icons/077/n4P3ADACV3ORO.png" alt="Веселая ферма 2" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/1265/vertolet"><img src="http://cache.cheatground.ru/uploads/games/icons/146/nPFHNZE8J6YXN.png" alt="Вертолет" width="60" height="60" /></a></div> </div> |- | | <div style="position: absolute; padding: 10px 0; right: -140px; width: 130px; background: #fff; height: 348px; top: 50%; margin-top: -184px;"> |- | | <div class="PrevNextGame"><a href="/game/1271/voyny-civilizaciy-2"><img src="http://cache.cheatground.ru/uploads/games/icons/535/nMWD8PA2DCG2L.png" alt="Войны цивилизаций 2" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/1264/magicheskaya-voyna-pervaya-kampaniya"><img src="http://cache.cheatground.ru/uploads/games/icons/320/nUXPLN8AIWDGH.png" alt="Магическая война – Первая кампания" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/1263/ultimeyt-mega-mehi"><img src="http://cache.cheatground.ru/uploads/games/icons/998/nR25TKY2TAXHI.png" alt="Ультимейт Мега Мехи" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/284/vnov-nastuplenie"><img src="http://cache.cheatground.ru/uploads/games/icons/663/n2Q55ACI2W0TS.png" alt="Вновь наступление" width="60" height="60" /></a></div> <div class="PrevNextGame"><a href="/game/263/bombardirovschik-na-voyne-2"><img src="http://cache.cheatground.ru/uploads/games/icons/357/nB0KCR4TNDM6N.png" alt="Бомбардировщик на войне 2" width="60" height="60" /></a></div> </div> |- | | <div id="GameContainer"><div id="GoogleAdPreloader"><div class="GoogleAdPreloaderMessage" style="width: 700px; height: 30px;">Загрузка игры начнется после просмотра рекламы.</div> |- | | <script type="text/javascript"> |- | | if (window.location.href.indexOf("@") >= 0) { |- | | document.write("<style>#GoogleAdPreloaderIMA { display: none; };</style>"); |- | | } |- | | </script> |- | |
|- | | <script type="text/javascript" src="//imasdk.googleapis.com/js/sdkloader/ima3.js"></script> |- | | |- | | <div id="GoogleAdPreloaderIMA"></div> |- | | </div><div id="GameSwfObject"></div></div> |- | | <div id="PlayOverlay" style="width: 700px; height: 510px;"> |- | | </div> |- | | </div> |- | | </div> |- | | <script type="text/javascript"> |- | | jQuery(function($) { |- | | var detectWebGL = function () { |- | | var support = (function () { |- | | try { |- | | var canvas = document.createElement('canvas'); |- | | return !!window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')); |- | | } catch (e) { |- | | return false; |- | | } |- | | })(); |- | |
|- | | if (!support) { |- | | try { |- | | _gaq.push(['_trackEvent', 'Missing Software', 'WebGL']); |- | | } catch (e) { } |- | |
|- | | var obj = $('#GameContainer'); |- | | obj.html('<'+'div style="width: 400px; margin: auto; position: relative; top: 50%;">' + |- | | '<'+'div style="display: block; height: 140px; position: relative; top: -70px; background: #000; color: #fff; font-size: 18px;">' + |- | | '<'+'div style="text-align: center;">' + |- | | 'Ваш браузер не поддерживает WebGL.' + |- | | '<'+'br><'+'br>' + |- | | 'Обновите браузер или загрузите другой: <a href=\"https://www.google.com/chrome/browser/desktop/\" style=\"color: #eee; cursor: pointer;\" target=\"_blank\"><b>Chrome</b></a>, <a href=\"https://www.mozilla.org/en-US/firefox/new/\" style=\"color: #eee; cursor: pointer;\" target=\"_blank\"><b>Firefox</b></a> или <a href=\"http://browser.yandex.com/\" style=\"color: #eee; cursor: pointer;\" target=\"_blank\"><b>Яндекс.Браузер</b></a>.' + |- | | '<'+'/div>' + |- | | '<'+'/div>' + |- | | '<'+'/div>'); |- | |
|- | | return false; |- | | } |- | |
|- | | return true; |- | | } |- | |
|- | |
|- | | jQuery(document).ready(function($) { |- | |
|- | | $('#PlayOverlay').hide(); |- | | var gc = $('#GameContainer'); |- | |
|- | | var gameName = 'Разрушительная езда 2'; |- | | try { |- | | _gaq.push(['_trackEvent', 'Game', 'Play', gameName]); |- | | } catch (e) { } |- | |
|- | | gc.width(700); |- | | gc.height(510); |- | |
|- | |
|- | | if (navigator.userAgent.match(/Android.+Mobile/) || navigator.userAgent.match(/RIM Tablet OS/) || navigator.userAgent.match(/BB10.+Mobile/)) { |- | | //swfOptions["menu"] = false; |- | | //swfOptions["allowFullScreen"] = true; |- | | //swfOptions["fullScreenOnSelection"] = true; |- | | } |- | |
|- | | function launch() { |- | | |- | | $("#GameSwfObject").replaceWith("<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"\n codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=10,0,0,0\"\n width=\"700\" height=\"510\" id=\"GameSwfObject\">\n <param name=\"movie\" value=\"http:\/\/cache.cheatground.ru\/uploads\/games\/files\/788\/FBPNK1WJGCAJ.swf?version=4\" \/>\n <param name=\"quality\" value=\"high\" \/>\n \n <param name=\"allowFullScreen\" value=\"false\" \/>\n <param name=\"allowFullScreenInteractive\" value=\"false\" \/>\n <param name=\"allowScriptAccess\" value=\"never\" \/>\n <param name=\"allowNetworking\" value=\"internal\" \/>\n <embed src=\"http:\/\/cache.cheatground.ru\/uploads\/games\/files\/788\/FBPNK1WJGCAJ.swf?version=4\"\n quality=\"high\"\n width=\"700\"\n height=\"510\"\n id=\"GameSwfEmbed\"\n name=\"GameSwf\"\n \n allowFullScreen=\"false\"\n allowFullScreenInteractive=\"false\"\n allowScriptAccess=\"never\"\n allowNetworking=\"internal\"\n type=\"application\/x-shockwave-flash\"\n pluginspage=\"http:\/\/www.adobe.com\/go\/getflashplayer\"><\/embed>\n <\/object>"); |- | | }; |- | |
|- | |
|- | | |- | |(function(){ |- | | var adsManager; |- | | var adsLoader; |- | | var adDisplayContainer; |- | | var intervalTimer; |- | |
|- | | var gameStarted = false; |- | | var adRequested = false; |- | |
|- | | var hiddenField, visibilityChangeEvent; |- | |
|- | | function VanillaIMA_startGame() { |- | | if (gameStarted) return; |- | | gameStarted = true; |- | |
|- | | document.getElementById("GoogleAdPreloader").style.display = "none"; |- | |
|- | | if (typeof console !== "undefined") console.log("VanillaIMA_startGame"); |- | |
|- | | launch(); |- | | } |- | |
|- | | function VanillaIMA_init() { |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Init"); |- | |
|- | | try { |- | | VanillaIMA_setUpIMA(); |- | | } catch (e) { |- | | if (typeof console !== "undefined") console.log("VanillaIMA_init", e); |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Error (Init)"); |- | | |- | | VanillaIMA_startGame(); |- | |
|- | | if (typeof Raven !== "undefined") Raven.captureException(e); |- | | } |- | | } |- | |
|- | | function VanillaIMA_onVisibilityChange() { |- | | if (!document[hiddenField]) { |- | | // if (typeof console !== "undefined") console.log("VanillaIMA_onVisibilityChange", document[hiddenField]); |- | | |- | | VanillaIMA_requestAds(); |- | | } |- | | } |- | |
|- | | function VanillaIMA_requestAds() { |- | | if (adRequested) return; |- | | adRequested = true; |- | |
|- | | // Request video ads. |- | | var adsRequest = new google.ima.AdsRequest(); |- | | adsRequest.adTagUrl = "https:\/\/ima3vpaid.appspot.com\/?adTagUrl=https%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fads%3Fclient%3Dca-games-pub-1232265399417302%26slotname%3D2396267125%26ad_type%3Dvideo%26description_url%3Dhttp%253A%252F%252Fwww.cheatground.ru%26max_ad_duration%3D30000%26videoad_start_delay%3D0&type=js&vpmute=0&vpa=1"; |- | |
|- | | // Force image/text ads to render with Full-Slot UI |- | | adsRequest.forceNonLinearFullSlot = true; |- | |
|- | | // Specify the linear and nonlinear slot sizes. This helps the SDK to |- | | // select the correct creative if multiple are returned. |- | | adsRequest.linearAdSlotWidth = 700; |- | | adsRequest.linearAdSlotHeight = 480; |- | |
|- | | adsRequest.nonLinearAdSlotWidth = 700; |- | | adsRequest.nonLinearAdSlotHeight = 480; |- | |
|- | | adsLoader.requestAds(adsRequest); |- | | } |- | |
|- | | function VanillaIMA_setUpIMA() { |- | | // Page Visibility API |- | | if (typeof document.hidden !== "undefined") { |- | | hiddenField = "hidden"; |- | | visibilityChangeEvent = "visibilitychange"; |- | | } else if (typeof document.msHidden !== "undefined") { |- | | hiddenField = "msHidden"; |- | | visibilityChangeEvent = "msvisibilitychange"; |- | | } else if (typeof document.webkitHidden !== "undefined") { |- | | hiddenField = "webkitHidden"; |- | | visibilityChangeEvent = "webkitvisibilitychange"; |- | | } |- | |
|- | | // We assume the adContainer is the DOM id of the element that will house the ads. |- | | adDisplayContainer = new google.ima.AdDisplayContainer(document.getElementById("GoogleAdPreloaderIMA")); |- | | // Initialize the container. Must be done via a user action on mobile devices. |- | | adDisplayContainer.initialize(); |- | |
|- | | // Create ads loader. |- | | adsLoader = new google.ima.AdsLoader(adDisplayContainer); |- | | // Listen and respond to ads loaded and error events. |- | | adsLoader.addEventListener( |- | | google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, |- | | VanillaIMA_onAdsManagerLoaded, |- | | false |- | | ); |- | | adsLoader.addEventListener( |- | | google.ima.AdErrorEvent.Type.AD_ERROR, |- | | VanillaIMA_onAdError, |- | | false |- | | ); |- | |
|- | | if (hiddenField) { |- | | document.addEventListener(visibilityChangeEvent, VanillaIMA_onVisibilityChange, false); |- | | VanillaIMA_onVisibilityChange(); |- | | } else { |- | | // no vis support |- | | VanillaIMA_requestAds(); |- | | } |- | |
|- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Setup"); |- | | } |- | |
|- | | function VanillaIMA_onAdsManagerLoaded(adsManagerLoadedEvent) { |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Manager Loaded"); |- | |
|- | | var dummyContent = { |- | | time:function() { |- | | return 0; |- | | } |- | | }; |- | |
|- | | // videoContent should be set to the content video element. |- | | adsManager = adsManagerLoadedEvent.getAdsManager(dummyContent); |- | |
|- | | // Add listeners to the required events. |- | | adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, VanillaIMA_onAdError); |- | | adsManager.addEventListener(google.ima.AdEvent.Type.ALL_ADS_COMPLETED, VanillaIMA_onAdEvent); |- | |
|- | | // Listen to any additional events, if necessary. |- | | adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, VanillaIMA_onAdEvent); |- | | adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, VanillaIMA_onAdEvent); |- | | adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, VanillaIMA_onAdEvent); |- | | adsManager.addEventListener(google.ima.AdEvent.Type.USER_CLOSE, VanillaIMA_onAdEvent); |- | |
|- | | try { |- | | // Initialize the ads manager. Ad rules playlist will start at this time. |- | | adsManager.init(700, 480, google.ima.ViewMode.NORMAL); |- | | // Call play to start showing the ad. Single video and overlay ads will |- | | // start at this time; the call will be ignored for ad rules. |- | | adsManager.start(); |- | | } catch (e) { |- | | // An error may be thrown if there was a problem with the VAST response. |- | | if (typeof console !== "undefined") console.log("VanillaIMA_playAds", e); |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Error (Manager)"); |- | | |- | | VanillaIMA_startGame(); |- | |
|- | | if (typeof Raven !== "undefined") Raven.captureException(e); |- | | } |- | | } |- | |
|- | | function VanillaIMA_onAdEvent(adEvent) { |- | | if (typeof console !== "undefined") console.log("VanillaIMA_onAdEvent", adEvent.type); |- | |
|- | | // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED) |- | | // don't have ad object associated. |- | | var ad = adEvent.getAd(); |- | | switch (adEvent.type) { |- | | case google.ima.AdEvent.Type.LOADED: |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Event LOADED"); |- | | break; |- | | case google.ima.AdEvent.Type.STARTED: |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Event STARTED"); |- | | break; |- | | case google.ima.AdEvent.Type.USER_CLOSE: |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Event USER_CLOSE"); |- | | VanillaIMA_startGame(); |- | | break; |- | | case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Event ALL_ADS_COMPLETED"); |- | | VanillaIMA_startGame(); |- | | break; |- | | case google.ima.AdEvent.Type.COMPLETE: |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Event COMPLETE"); |- | | VanillaIMA_startGame(); |- | | break; |- | | } |- | | } |- | |
|- | | function VanillaIMA_onAdError(adErrorEvent) { |- | | if (typeof console !== "undefined") console.log("VanillaIMA_onAdError", adErrorEvent.getError()); |- | | if (typeof ga !== "undefined") ga("send", "event", "IMA", "IMA Error (Event)"); |- | |
|- | | if (adsManager) adsManager.destroy(); |- | |
|- | | VanillaIMA_startGame(); |- | |
|- | | if (typeof Raven !== "undefined") Raven.captureException(adErrorEvent.getError()); |- | | } |- | |
|- | | VanillaIMA_init(); |- | |})(); |- | | |- | | (function() { |- | | $.ajax({ |- | | url: '/game/markview/1270', |- | | dataType: 'json', |- | | success: function(json) { |- | | if (json.CountPlays) { |- | | $('#CountPlays').numberFormat(parseInt(json.CountPlays)); |- | | } |- | | } |- | | }); |- | | })(); |- | | }); |- | | }); |- | | </script> |- | | <div class="GamePanelCheatDescription"> |- | | <b class="Cheat">Читы:</b> При покупках деньги прибавляются. </div> |- | | </div> <div class="offer-alpha" style="width: 728px; height: 90px; margin: 10px auto 10px; background-color: #fff;"><iframe src="//cache.cheatground.ru/cpmstar_728x90_before_game.html" width="728" height="90" scrolling="no"></iframe></div> |- | | <div class="GameInfo"> |- | | <div class="InfoContent"> |- | | <a name="Pictures"></a> |- | | <div class="GamePictures ClearFix"> |- | | <ul> |- | | <li><a rel="popable[gallery]" href="http://cache.cheatground.ru/uploads/games/pictures/963/p46J2JGJVU40N.jpg" target="_blank" title="Разрушительная езда 2 Screenshot"><img src="http://cache.cheatground.ru/uploads/games/pictures/963/n46J2JGJVU40N.jpg" alt="Разрушительная езда 2 Screenshot" width="150" height="150" /></a></li><li><a rel="popable[gallery]" href="http://cache.cheatground.ru/uploads/games/pictures/892/pBNWX2HLKPCR6.jpg" target="_blank" title="Разрушительная езда 2 Screenshot"><img src="http://cache.cheatground.ru/uploads/games/pictures/892/nBNWX2HLKPCR6.jpg" alt="Разрушительная езда 2 Screenshot" width="150" height="150" /></a></li><li><a rel="popable[gallery]" href="http://cache.cheatground.ru/uploads/games/pictures/614/p65PT8V8FS173.jpg" target="_blank" title="Разрушительная езда 2 Screenshot"><img src="http://cache.cheatground.ru/uploads/games/pictures/614/n65PT8V8FS173.jpg" alt="Разрушительная езда 2 Screenshot" width="150" height="150" /></a></li><li><a rel="popable[gallery]" href="http://cache.cheatground.ru/uploads/games/pictures/336/pI8118M0J1NES.jpg" target="_blank" title="Разрушительная езда 2 Screenshot"><img src="http://cache.cheatground.ru/uploads/games/pictures/336/nI8118M0J1NES.jpg" alt="Разрушительная езда 2 Screenshot" width="150" height="150" /></a></li> </ul> |- | | </div> |- | | <a name="CheatDescription"></a> |- | |

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>bonk.io - Official Site: Play Bonk Here!</title>
<meta name="description" content="Play bonk.io! A multiplayer physics game." />
<link href="css/templatemo_style_curse.css" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
function clearText(field)
{
if (field.defaultValue == field.value) field.value = '';
else if (field.value == '') field.value = field.defaultValue;

|- | |

|- | |function fromFlashRefreshAds() |- | |{ |- | | factorem.refreshAds([2,3], true); |- | |} |- | |/* |- | |function placeGunGameBanner() |- | |{ |- | |

|- | | //dynamically add an image and set its attribute |- | | var a = document.createElement("a"); |- | | var a = document.createElement("a"); |- | | a.setAttribute("href","http://www.multiplayer.gg/gungame"); |- | | a.setAttribute("target","_blank"); |- | | var img=document.createElement("img"); |- | | img.src="tt/banner.jpg"; |- | | img.id="picture"; |- | | a.appendChild(img); |- | | var foo = document.getElementById("adboxhorizontal"); |- | | foo.appendChild(a); |- | |} |- | |*/ |- | |

|- | |</script> |- | |

|- | |<script type="text/javascript"> |- | |function changeText(textline){ |- | | //document.getElementById('nametag').innerHTML = textline; |- | |} |- | |</script> |- | |

|- | |<link rel="stylesheet" type="text/css" href="css/ddsmoothmenu.css" /> |- | |

|- | |<script language="javascript">AC_FL_RunContent = 0;</script> |- | | |- | |

|- | |<SCRIPT TYPE="text/javascript"> |- | | |- | |</SCRIPT> |- | |

|- | |<link rel="icon" |- | | type="image/png" |- | | href="tt/favicon-16x16.png" |- | | sizes="16x16"> |- | |<link rel="icon" |- | | type="image/png" |- | | href="tt/favicon-32x32.png" |- | | sizes="32x32"> |- | |

|- | |

|- | | |- | | <script> |- | |var script = document.createElement('script'); |- | |var tstamp = new Date(); |- | |script.id = 'factorem'; |- | |script.src = '//cdm.cursecdn.com/js/bonk/cdmfactorem_min.js?sec=home&misc=' + tstamp.getTime(); |- | |script.async = false; |- | |script.type='text/javascript'; |- | |document.head.appendChild(script); |- | |</script> |- | |

|- | |

|- | |

|- | |

|- | |

|- | |

|- | |

|- | |

|- | |

|- | |

|- | |

|- | |

|- | | |- | |

|- | |<script language="javascript" type="text/javascript"> |- | |

|- | |var isResizing = false; |- | |

|- | |$(function () { |- | | var flash = $('#flashbox'); |- | | var dragcontainer = $('#dragbox'); |- | | var dragbox = $('#dragright'); |- | | var templatemo = $('#templatemo_middle'); |- | |

|- | | dragbox.on('mousedown', function (e) { |- | | isResizing = true; |- | | }); |- | |

|- | | $(document).on('mousemove', function (e) { |- | | // we don't want to do anything if we aren't resizing. |- | | if (!isResizing) |- | | return; |- | |

|- | | // var offsetRight = flash.width() / 2 - (e.clientX - container.offset().left); |- | |

|- | | // flash.css('width', e.clientX) |}