Advertisement
NatKunG-TH

Untitled

May 3rd, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.72 KB | None | 0 0
  1. window.addEventListener('keydown', keydown);
  2. window.addEventListener('keyup', keyup);
  3.  
  4. var EjectDown = false;
  5.  
  6. var speed = 25; //in ms
  7.  
  8. function keydown(event) {
  9. if (event.keyCode == 87 && EjectDown === false) { // key W
  10. EjectDown = true;
  11. setTimeout(eject, speed);
  12. }
  13. if (event.keyCode == 83) {
  14. split();
  15. setTimeout(split, 25);
  16. }
  17. if (event.keyCode == 70) {
  18. split();
  19. setTimeout(split, 25);
  20. setTimeout(split, 50);
  21. setTimeout(split, 75);
  22. }
  23. }
  24.  
  25. function keyup(event) {
  26. if (event.keyCode == 87) { // key W
  27. EjectDown = false;
  28. }
  29. }
  30.  
  31. function eject() {
  32. if (EjectDown) {
  33. window.onkeydown({keyCode: 87}); // key W
  34. window.onkeyup({keyCode: 87});
  35. setTimeout(eject, speed);
  36. }
  37. }
  38.  
  39. function split() {
  40. $("body").trigger($.Event("keydown", { keyCode: 32})); //key space
  41. $("body").trigger($.Event("keyup", { keyCode: 32})); //jquery is required for split to work
  42. }
  43. setTimeout(function() {
  44. $("h2").replaceWith('<h2>N-CELLS.TK');
  45. var real_minx = -7071;
  46. var real_miny = -7071;
  47. var real_maxx = 7071;
  48. var real_maxy = 7071;
  49. var lastsent = {
  50. minx: 0,
  51. miny: 0,
  52. maxx: 0,
  53. maxy: 0
  54. };
  55.  
  56. function valcompare(Y, Z) {
  57. return 0.01 > Y - Z && -0.01 < Y - Z
  58. }
  59. window.agar.hooks.dimensionsUpdated = function(server_minx, server_miny, server_maxx, server_maxy) {
  60. if (valcompare(server_maxx - server_minx, server_maxy - server_miny)) {
  61. real_minx = server_minx;
  62. real_miny = server_miny;
  63. real_maxx = server_maxx;
  64. real_maxy = server_maxy
  65. } else {
  66. if (valcompare(server_minx, lastsent.minx)) {
  67. if (0.01 < server_maxx - lastsent.maxx || -0.01 > server_maxx - lastsent.maxx) {
  68. real_minx = server_minx;
  69. real_maxx = server_minx + 14142.135623730952
  70. }
  71. }
  72. if (0.01 < server_minx - lastsent.minx || -0.01 > server_minx - lastsent.minx) {
  73. if (valcompare(server_maxx, lastsent.maxx)) {
  74. real_maxx = server_maxx;
  75. real_minx = server_maxx - 14142.135623730952
  76. }
  77. }
  78. if (0.01 < server_miny - lastsent.miny || -0.01 > server_miny - lastsent.miny) {
  79. if (valcompare(server_maxy, lastsent.maxy)) {
  80. real_maxy = server_maxy;
  81. real_miny = server_maxy - 14142.135623730952
  82. }
  83. }
  84. if (valcompare(server_miny, lastsent.miny)) {
  85. if (0.01 < server_maxy - lastsent.maxy || -0.01 > server_maxy - lastsent.maxy) {
  86. real_miny = server_miny;
  87. real_maxy = server_miny + 14142.135623730952
  88. }
  89. }
  90. if (server_minx < real_minx) {
  91. real_minx = server_minx;
  92. real_maxx = server_minx + 14142.135623730952
  93. }
  94. if (server_maxx > real_maxx) {
  95. real_maxx = server_maxx;
  96. real_minx = server_maxx - 14142.135623730952
  97. }
  98. if (server_miny < real_miny) {
  99. real_miny = server_miny;
  100. real_maxy = server_miny + 14142.135623730952
  101. }
  102. if (server_maxy > real_maxy) {
  103. real_maxy = server_maxy;
  104. real_miny = server_maxy - 14142.135623730952
  105. }
  106. lastsent.minx = server_minx;
  107. lastsent.miny = server_miny;
  108. lastsent.maxy = server_maxy;
  109. lastsent.maxx = server_maxx
  110. }
  111. offset_x = real_minx || -7071;
  112. offset_y = real_miny || -7071
  113. };
  114. var socket = io.connect('ws://asasasasasasasasasas-natkung.c9users.io:8081');
  115. var canMove = true;
  116. var movetoMouse = true;
  117. var moveEvent = new Array(2);
  118. var canvas = document.getElementById("canvas");
  119. last_transmited_game_server = null;
  120. socket.on('force-login', function(data) {
  121. socket.emit("login", {
  122. "uuid": client_uuid,
  123. "type": "client"
  124. });
  125. transmit_game_server()
  126. });
  127.  
  128. var a = '';
  129. var iDiv = document.createElement('div');
  130. iDiv.id = 'block';
  131.  
  132. document.getElementsByTagName('body')[0].appendChild(iDiv);
  133. iDiv.innerHTML = '<div id="minions" style="position: absolute; top: 10px; left: 10px; padding: 0px 8px; font-family: Ubuntu; font-size: 24px; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0.2);">Minions: <span id="minionCount">waiting</span></div><div id="hint" style="position: absolute; top: 50px; left: 10px; padding: 0px 8px; font-family: Ubuntu; font-size: 13px; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0.2);">E - Bot Split <br> R - Bot Food <br> D - Stop Move <br> Q - None <br> A - Bot Follow mouse<br> W - User Food <br> S - Double Split <br> F - Fast Split <br> Create By NatKunGTH</div>';
  134. setInterval(function(){
  135. if(!movetoMouse){
  136. document.getElementById('mControl').innerHTML = '<div id="mControl">Mouse Control :<span class="label label-danger pull-right">OFF</span></div>';
  137. }else{
  138. document.getElementById('mControl').innerHTML = '<div id="mControl">Mouse Control :<span class="label label-success pull-right">ON</span></div>';
  139. }
  140. if(canMove){
  141. document.getElementById('cMove').innerHTML = '<div id="cMove">Stop Move :<span class="label label-danger pull-right">OFF</span></div>';
  142. }else{
  143. document.getElementById('cMove').innerHTML = '<div id="cMove">Stop Move :<span class="label label-success pull-right">ON</span></div>';
  144. }
  145.  
  146. }, 1000);
  147. socket.on('spawn-count', function(data) {
  148. document.getElementById('minionCount').innerHTML = data
  149. });
  150. var client_uuid = localStorage.getItem('client_uuid');
  151. if (client_uuid == null) {
  152. console.log("generating a uuid for this user");
  153. client_uuid = ""; var ranStr = "23141085mrdrx";
  154. for (var ii = 0; ii < 5; ii++) client_uuid += ranStr.charAt(Math.floor(Math.random() * ranStr.length));
  155. localStorage.setItem('client_uuid', client_uuid)
  156. }
  157. socket.emit("login", client_uuid);
  158. $("#instructions").replaceWith('<p><b>N-CELLS.TK Client v8.6.5 New!</b></p><br><div class="input-group"><span class="input-group-addon" id="basic-addon1">UUID</span><input type="text" value="' + client_uuid + '" readonly class="form-control input-success"</div><span class="glyphicon glyphicon-ok form-control-feedback"></span></div><iframe src="//www.wink.in.th/musicbox/black?player=html5" width="200" height="60" frameborder="0" scrolling="no" allowtransparency="true"></iframe><a target="blank" href="https://www.youtube.com/channel/UCBs4H8_OJlBQm_UYSrEJXiw"><button class="btn btn-info" style="width:100%;">N-CELLS.TK - ติดตามด้วย YouTube</button></a><div id="agarbots-loginfailed"><br><a target="blank" href="http://www.n-cells.tk/"><button class="btn btn-danger" style="width:100%;">N-CELLS.TK - เข้าเว็บกดเลย </button></a></div><div id="loadingbar"><br><center><div class="progress"><div id="connectingstatus-bar" class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width:100%"><div id="connectingstatus">สร้างโดย NatKunG TH | ทำเองนะครับ </div></div></div></center></div>');
  159. function isMe(cell) {
  160. for (var i = 0; i < window.agar.myCells.length; i++) {
  161. if (window.agar.myCells[i] == cell.id) {
  162. return true
  163. }
  164. }
  165. return false
  166. }
  167.  
  168. window.agar.hooks.drawCellMass = function(cell, old_draw) {
  169. if(cell.size > 20) return cell;
  170. }
  171.  
  172. window.agar.hooks.cellMassTextScale = function(cell, old_scale) {
  173. }
  174.  
  175. function getCell() {
  176. var me = [];
  177. for (var key in window.agar.allCells) {
  178. var cell = window.agar.allCells[key];
  179. if (isMe(cell)) {
  180. me.push(cell)
  181. }
  182. }
  183. return me[0]
  184. }
  185. var skin_var = 0;
  186.  
  187. function emitPosition() {
  188. for (i = 0; i < agar.myCells.length; i++) {}
  189. x = (mouseX - window.innerWidth / 2) / window.agar.drawScale + window.agar.rawViewport.x;
  190. y = (mouseY - window.innerHeight / 2) / window.agar.drawScale + window.agar.rawViewport.y;
  191. if (!movetoMouse) {
  192. x = getCell().x;
  193. y = getCell().y
  194. }
  195. socket.emit("pos", {
  196. "x": x - (real_minx + 7071),
  197. "y": y - (real_miny + 7071),
  198. "dimensions": [-7071, -7071, 7071, 7071]
  199. })
  200. }
  201.  
  202.  
  203. function emitSplit() {
  204. socket.emit("cmd", {
  205. "name": "split"
  206. })
  207. }
  208.  
  209. function emitMassEject() {
  210. socket.emit("cmd", {
  211. "name": "eject"
  212. })
  213. }
  214.  
  215. function toggleMovement() {
  216. canMove = !canMove;
  217. switch (canMove) {
  218. case true:
  219. canvas.onmousemove = moveEvent[0];
  220. moveEvent[0] = null;
  221. canvas.onmousedown = moveEvent[1];
  222. moveEvent[1] = null;
  223. break;
  224. case false:
  225. canvas.onmousemove({
  226. clientX: innerWidth / 2,
  227. clientY: innerHeight / 2
  228. });
  229. moveEvent[0] = canvas.onmousemove;
  230. canvas.onmousemove = null;
  231. moveEvent[1] = canvas.onmousedown;
  232. canvas.onmousedown = null;
  233. break
  234. }
  235. }
  236. interval_id = setInterval(function() {
  237. emitPosition()
  238. }, 100);
  239. interval_id2 = setInterval(function() {
  240. transmit_game_server_if_changed()
  241. }, 5000);
  242. document.addEventListener('keydown', function(e) {
  243. var key = e.keyCode || e.which;
  244. switch (key) {
  245. case 65:
  246. movetoMouse = !movetoMouse;
  247. if(movetoMouse) { document.getElementById('ismoveToMouse').innerHTML = "On"; } else { document.getElementById('ismoveToMouse').innerHTML = "Off"; }
  248. break;
  249. case 68:
  250. toggleMovement();
  251. if(!canMove) { document.getElementById('isStopMove').innerHTML = "On"; } else { document.getElementById('isStopMove').innerHTML = "Off"; }
  252. break;
  253. case 69:
  254. emitSplit();
  255. break;
  256. case 82:
  257. emitMassEject();
  258. break
  259. }
  260. });
  261.  
  262. function transmit_game_server_if_changed() {
  263. if (last_transmited_game_server != window.agar.ws) {
  264. transmit_game_server()
  265. }
  266. }
  267.  
  268. function transmit_game_server() {
  269. last_transmited_game_server = window.agar.ws;
  270. socket.emit("cmd", {
  271. "name": "connect_server",
  272. "ip": last_transmited_game_server
  273. })
  274. }
  275. var mouseX = 0;
  276. var mouseY = 0;
  277. $("body").mousemove(function(event) {
  278. mouseX = event.clientX;
  279. mouseY = event.clientY
  280. });
  281. window.agar.minScale = -30
  282. }, 5000);
  283.  
  284. var allRules = [
  285. { hostname: ["agar.io"],
  286. scriptUriRe: /^http:\/\/agar\.io\/main_out\.js/,
  287. replace: function (m) {
  288. m.removeNewlines()
  289.  
  290. m.replace("var:allCells",
  291. /(=null;)(\w+)(.hasOwnProperty\(\w+\)?)/,
  292. "$1" + "$v=$2;" + "$2$3",
  293. "$v = {}")
  294.  
  295. m.replace("var:myCells",
  296. /(case 32:)(\w+)(\.push)/,
  297. "$1" + "$v=$2;" + "$2$3",
  298. "$v = []")
  299.  
  300. m.replace("var:top",
  301. /case 49:[^:]+?(\w+)=\[];/,
  302. "$&" + "$v=$1;",
  303. "$v = []")
  304.  
  305. m.replace("var:topTeams",
  306. /case 50:(\w+)=\[];/,
  307. "$&" + "$v=$1;",
  308. "$v = []")
  309.  
  310. var dr = "(\\w+)=\\w+\\.getFloat64\\(\\w+,!0\\);\\w+\\+=8;\\n?"
  311. var dd = 7071.067811865476
  312. m.replace("var:dimensions hook:dimensionsUpdated",
  313. RegExp("case 64:"+dr+dr+dr+dr),
  314. "$&" + "$v = [$1,$2,$3,$4],$H($1,$2,$3,$4),",
  315. "$v = " + JSON.stringify([-dd,-dd,dd,dd]))
  316.  
  317. var vr = "(\\w+)=\\w+\\.getFloat32\\(\\w+,!0\\);\\w+\\+=4;"
  318. m.save() &&
  319. m.replace("var:rawViewport:x,y var:disableRendering:1",
  320. /else \w+=\(5\*\w+\+(\w+)\)\/6,\w+=\(5\*\w+\+(\w+)\)\/6,.*?;/,
  321. "$&" + "$v0.x=$1; $v0.y=$2; if($v1)return;") &&
  322. m.replace("var:disableRendering:2 hook:skipCellDraw",
  323. /(\w+:function\(\w+\){)(if\(this\.\w+\(\)\){\+\+this\.[\w$]+;)/,
  324. "$1" + "if($v || $H(this))return;" + "$2") &&
  325. m.replace("var:rawViewport:scale",
  326. /Math\.pow\(Math\.min\(64\/\w+,1\),\.4\)/,
  327. "($v.scale=$&)") &&
  328. m.replace("var:rawViewport:x,y,scale",
  329. RegExp("case 17:"+vr+vr+vr),
  330. "$&" + "$v.x=$1; $v.y=$2; $v.scale=$3;") &&
  331. m.reset_("window.agar.rawViewport = {x:0,y:0,scale:1};" +
  332. "window.agar.disableRendering = false;") ||
  333. m.restore()
  334.  
  335. m.replace("reset hook:connect var:ws var:webSocket",
  336. /new WebSocket\((\w+)\);/,
  337. "$v1 = $&; $v0=$1;" + m.reset + "$H();",
  338. "$v0 = ''; $v1 = null;")
  339.  
  340. m.replace("property:scale",
  341. /function \w+\(\w+\){\w+\.preventDefault\(\);[^;]+;1>(\w+)&&\(\1=1\)/,
  342. `;${makeProperty("scale", "$1")};$&`)
  343.  
  344. m.replace("var:minScale",
  345. /;1>(\w+)&&\(\1=1\)/,
  346. ";$v>$1 && ($1=$v)",
  347. "$v = 1")
  348.  
  349. m.replace("var:region",
  350. /console\.log\("Find "\+(\w+\+\w+)\);/,
  351. "$&" + "$v=$1;",
  352. "$v = ''")
  353.  
  354. m.replace("cellProperty:isVirus",
  355. /((\w+)=!!\(\w+&1\)[\s\S]{0,400})((\w+).(\w+)=\2;)/,
  356. "$1$4.isVirus=$3")
  357.  
  358. m.replace("var:dommousescroll",
  359. /("DOMMouseScroll",)(\w+),/,
  360. "$1($v=$2),")
  361.  
  362. m.replace("var:skinF hook:cellSkin",
  363. /(\w+.fill\(\))(;null!=(\w+))/,
  364. "$1;" +
  365. "if($v)$3 = $v(this,$3);" +
  366. "if($h)$3 = $h(this,$3);" +
  367. "$2");
  368.  
  369. m.replace("hook:afterCellStroke",
  370. /\((\w+)\.strokeStyle="#000000",\1\.globalAlpha\*=\.1,\1\.stroke\(\)\);\1\.globalAlpha=1;/,
  371. "$&" + "$H(this);")
  372.  
  373. m.replace("var:showStartupBg",
  374. /\w+\?\(\w\.globalAlpha=\w+,/,
  375. "$v && $&",
  376. "$v = true")
  377.  
  378. var vAlive = /\((\w+)\[(\w+)\]==this\){\1\.splice\(\2,1\);/.exec(m.text)
  379. var vEaten = /0<this\.[$\w]+&&(\w+)\.push\(this\)}/.exec(m.text)
  380. !vAlive && console.error("Expose: can't find vAlive")
  381. !vEaten && console.error("Expose: can't find vEaten")
  382. if (vAlive && vEaten)
  383. m.replace("var:aliveCellsList var:eatenCellsList",
  384. RegExp(vAlive[1] + "=\\[\\];" + vEaten[1] + "=\\[\\];"),
  385. "$v0=" + vAlive[1] + "=[];" + "$v1=" + vEaten[1] + "=[];",
  386. "$v0 = []; $v1 = []")
  387.  
  388. m.replace("hook:drawScore",
  389. /(;(\w+)=Math\.max\(\2,(\w+\(\))\);)0!=\2&&/,
  390. "$1($H($3))||0!=$2&&")
  391.  
  392. m.replace("hook:beforeTransform hook:beforeDraw var:drawScale",
  393. /(\w+)\.save\(\);\1\.translate\((\w+\/2,\w+\/2)\);\1\.scale\((\w+),\3\);\1\.translate\((-\w+,-\w+)\);/,
  394. "$v = $3;$H0($1,$2,$3,$4);" + "$&" + "$H1($1,$2,$3,$4);",
  395. "$v = 1")
  396.  
  397. m.replace("hook:afterDraw",
  398. /(\w+)\.restore\(\);(\w+)&&\2\.width&&\1\.drawImage/,
  399. "$H();" + "$&")
  400.  
  401. m.replace("hook:cellColor",
  402. /(\w+=)this\.color,/,
  403. "$1 ($h && $h(this, this.color) || this.color),")
  404.  
  405. m.replace("var:drawGrid",
  406. /(\w+)\.globalAlpha=(\.2\*\w+);/,
  407. "if(!$v)return;" + "$&",
  408. "$v = true")
  409.  
  410. m.replace("hook:drawCellMass",
  411. /&&\((\w+\|\|0==\w+\.length&&\(!this\.\w+\|\|this\.\w+\)&&20<this\.size)\)&&/,
  412. "&&( $h ? $h(this,$1) : ($1) )&&")
  413.  
  414. m.replace("hook:cellMassText",
  415. /(\.\w+)(\(~~\(this\.size\*this\.size\/100\)\))/,
  416. "$1( $h ? $h(this,$2) : $2 )")
  417.  
  418. m.replace("hook:cellMassTextScale",
  419. /(\.\w+)\((this\.\w+\(\))\)([\s\S]{0,1000})\1\(\2\/2\)/,
  420. "$1($2)$3$1( $h ? $h(this,$2/2) : ($2/2) )")
  421.  
  422. m.replace("var:enableDirectionSending",
  423. /;64>(\w+)\*\1\+(\w+)\*\2/,
  424. ";if(!$v)return" + "$&",
  425. "$v = true")
  426.  
  427. m.replace("var:simpleCellDraw",
  428. /(:function\(\){)(var a=10;)/,
  429. "$1 if($v)return true;$2",
  430. "$v=false")
  431.  
  432. m.replace("hook:updateLeaderboard",
  433. /({\w+=null;)(if\(null!=)/,
  434. "$1 if($H())return; $2")
  435.  
  436. var template = (key,n) =>
  437. `this\\.${key}=\\w+\\*\\(this\\.(\\w+)-this\\.(\\w+)\\)\\+this\\.\\${n};`
  438. var re = new RegExp(template('x', 2) + template('y', 4) + template('size', 6))
  439. var match = re.exec(m.text)
  440. if (match) {
  441. m.cellProp.nx = match[1]
  442. m.cellProp.ny = match[3]
  443. m.cellProp.nSize = match[5]
  444. } else
  445. console.error("Expose: cellProp:x,y,size search failed!")
  446.  
  447. }},
  448. ]
  449.  
  450. function makeProperty(name, varname) {
  451. return "'" + name + "' in window.agar || " +
  452. "Object.defineProperty( window.agar, '"+name+"', " +
  453. "{get:function(){return "+varname+"},set:function(){"+varname+"=arguments[0]},enumerable:true})"
  454. }
  455.  
  456. if (window.top != window.self)
  457. return
  458.  
  459. if (document.readyState !== 'loading')
  460. return console.error("Expose: this script should run at document-start")
  461.  
  462. var isFirefox = /Firefox/.test(navigator.userAgent)
  463.  
  464. // Stage 1: Find corresponding rule
  465. var rules
  466. for (var i = 0; i < allRules.length; i++)
  467. if (allRules[i].hostname.indexOf(window.location.hostname) !== -1) {
  468. rules = allRules[i]
  469. break
  470. }
  471. if (!rules)
  472. return console.error("Expose: cant find corresponding rule")
  473.  
  474.  
  475. // Stage 2: Search for `main_out.js`
  476. if (isFirefox) {
  477. function bse_listener(e) { tryReplace(e.target, e) }
  478. window.addEventListener('beforescriptexecute', bse_listener, true)
  479. } else {
  480. // Iterate over document.head child elements and look for `main_out.js`
  481. for (var i = 0; i < document.head.childNodes.length; i++)
  482. if (tryReplace(document.head.childNodes[i]))
  483. return
  484. // If there are no desired element in document.head, then wait until it appears
  485. function observerFunc(mutations) {
  486. for (var i = 0; i < mutations.length; i++) {
  487. var addedNodes = mutations[i].addedNodes
  488. for (var j = 0; j < addedNodes.length; j++)
  489. if (tryReplace(addedNodes[j]))
  490. return observer.disconnect()
  491. }
  492. }
  493. var observer = new MutationObserver(observerFunc)
  494. observer.observe(document.head, {childList: true})
  495. }
  496.  
  497. // Stage 3: Replace found element using rules
  498. function tryReplace(node, event) {
  499. var scriptLinked = rules.scriptUriRe && rules.scriptUriRe.test(node.src)
  500. var scriptEmbedded = rules.scriptTextRe && rules.scriptTextRe.test(node.textContent)
  501. if (node.tagName != "SCRIPT" || (!scriptLinked && !scriptEmbedded))
  502. return false // this is not desired element; get back to stage 2
  503.  
  504. if (isFirefox) {
  505. event.preventDefault()
  506. window.removeEventListener('beforescriptexecute', bse_listener, true)
  507. }
  508.  
  509. var mod = {
  510. reset: "",
  511. text: null,
  512. history: [],
  513. cellProp: {},
  514. save() {
  515. this.history.push({reset:this.reset, text:this.text})
  516. return true
  517. },
  518. restore() {
  519. var state = this.history.pop()
  520. this.reset = state.reset
  521. this.text = state.text
  522. return true
  523. },
  524. reset_(reset) {
  525. this.reset += reset
  526. return true
  527. },
  528. replace(what, from, to, reset) {
  529. var vars = [], hooks = []
  530. what.split(" ").forEach((x) => {
  531. x = x.split(":")
  532. x[0] === "var" && vars.push(x[1])
  533. x[0] === "hook" && hooks.push(x[1])
  534. })
  535. function replaceShorthands(str) {
  536. function nope(letter, array, fun) {
  537. str = str
  538. .split(new RegExp('\\$' + letter + '([0-9]?)'))
  539. .map((v,n) => n%2 ? fun(array[v||0]) : v)
  540. .join("")
  541. }
  542. nope('v', vars, (name) => "window.agar." + name)
  543. nope('h', hooks, (name) => "window.agar.hooks." + name)
  544. nope('H', hooks, (name) =>
  545. "window.agar.hooks." + name + "&&" +
  546. "window.agar.hooks." + name)
  547. return str
  548. }
  549. var newText = this.text.replace(from, replaceShorthands(to))
  550. if(newText === this.text) {
  551. console.error("Expose: `" + what + "` replacement failed!")
  552. return false
  553. } else {
  554. this.text = newText
  555. if (reset)
  556. this.reset += replaceShorthands(reset) + ";"
  557. return true
  558. }
  559. },
  560. removeNewlines() {
  561. this.text = this.text.replace(/([,\/;])\n/mg, "$1")
  562. },
  563. get: function() {
  564. var cellProp = JSON.stringify(this.cellProp)
  565. return `window.agar={hooks:{},cellProp:${cellProp}};` +
  566. this.reset + this.text
  567. }
  568. }
  569.  
  570. if (scriptEmbedded) {
  571. mod.text = node.textContent
  572. rules.replace(mod)
  573. if (isFirefox) {
  574. document.head.removeChild(node)
  575. var script = document.createElement("script")
  576. script.textContent = mod.get()
  577. document.head.appendChild(script)
  578. } else {
  579. node.textContent = mod.get()
  580. }
  581. console.log("Expose: replacement done")
  582. } else {
  583. document.head.removeChild(node)
  584. var request = new XMLHttpRequest()
  585. request.onload = function() {
  586. var script = document.createElement("script")
  587. mod.text = this.responseText
  588. rules.replace(mod)
  589. script.textContent = mod.get()
  590. // `main_out.js` should not executed before jQuery was loaded, so we need to wait jQuery
  591. function insertScript(script) {
  592. if (typeof jQuery === "undefined")
  593. return setTimeout(insertScript, 0, script)
  594. document.head.appendChild(script)
  595. console.log("Expose: replacement done")
  596. }
  597. insertScript(script)
  598. }
  599. request.onerror = function() { console.error("Expose: response was null") }
  600. request.open("get", node.src, true)
  601. request.send()
  602. }
  603.  
  604. return true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement