Agar.io Core Mutation by zagar

Adds new skills to Agar.io: Connect server, interactive color, color change, attack range, zoom out, map border/sector/label, mini map, fps control, key for rapid split/feed, stop movement and so on...

  1. // ==UserScript==
  2. // @name Agar.io Core Mutation by zagar
  3. // @namespace agar.io
  4. // @version 3.1
  5. // @description Adds new skills to Agar.io: Connect server, interactive color, color change, attack range, zoom out, map border/sector/label, mini map, fps control, key for rapid split/feed, stop movement and so on...
  6. // @author zagar | zagarcore@gmail.com modified to work by Agario-Love🕹️
  7. // @match http://agar.io/*
  8. // @match https://agar.io/*
  9. // @connect https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
  10. // @require http://code.jquery.com/jquery-3.x-git.min.js
  11. // @run-at document-start
  12. // @license MIT
  13. // ==/UserScript==
  14.  
  15. /*jshint multistr: true */
  16.  
  17. var observer = new MutationObserver(function(mutations){
  18. mutations.forEach(function(mutation) {
  19. mutation.addedNodes.forEach(function(node) {
  20. if (/agario\.core\.js/i.test(node.src)){
  21. observer.disconnect();
  22. node.parentNode.removeChild(node);
  23. var request = new XMLHttpRequest();
  24. request.open("get", node.src, true);
  25. request.send();
  26. request.onload = function(){
  27. var coretext = this.responseText;
  28. var newscript = document.createElement("script");
  29. newscript.type = "text/javascript";
  30. newscript.async = true;
  31. newscript.textContent = editCore(coretext);
  32. document.body.appendChild(newscript);
  33. };
  34. }
  35. });
  36. });
  37. });
  38. observer.observe(document, {attributes:true, characterData:true, childList:true, subtree:true});
  39.  
  40. function editCore(coretext){
  41. var addSkill={
  42. "Başlangıç":[
  43. {bul:/\(function\(\w\)\{/i,
  44. degistir:`$&
  45. var zagar={
  46. skill:{
  47. interactiv_color:true,
  48. attack_range:true,
  49. map_border:true,
  50. map_sector:true,
  51. sector_label:true,
  52. mini_map:true,
  53. no_grid:true,
  54. no_food:false,
  55. transparent:0.8,
  56. virus_mass:false,
  57. other_mass:false,
  58. fps:"normal",
  59. zoom_out:true,
  60. auto_zoom:false,
  61. acid:false
  62. },
  63. connect:null,
  64. onPlayerSpawn:null,
  65. onPlayerDeath:null,
  66. setFpsCap:null,
  67. bgtimeout:null,
  68. reset:null,
  69. canvas:null,
  70. sector:5,
  71. sayac:0,
  72. zoomvalue:0.3,
  73. oyunalanı:{},
  74. stopmovement:false,
  75. selectblob:true,
  76. isactive:false,
  77. ismyblob:null,
  78. myblob:{
  79. x:0,
  80. y:0,
  81. size:[],
  82. selectsize:0,
  83. totalmass:0,
  84. ismycolor:null,
  85. isalive:false
  86. },
  87. minimap:{
  88. fps:50/100,
  89. kontrol:0
  90. },
  91. color:{
  92. big4x:{hex:"#C80815",rgb:[200,8,21]}, //if it's split into four, it eat.
  93. big2x:{hex:"#FF0000",rgb:[255,0,0]}, //if it's split into two, it eat.
  94. big1x:{hex:"#FF7F00",rgb:[255,127,0]}, //if it catch it, it eat.
  95. similar:{hex:"#0000FF",rgb:[0,0,255]}, //similar, no eat.
  96. small1x:{hex:"#008000",rgb:[0,128,0]}, //if you catch it, you eat.
  97. small2x:{hex:"#00FF00",rgb:[0,255,0]}, //if you split in two, you eat.
  98. small4x:{hex:"#FFFF00",rgb:[255,255,0]}, //if you split in four, you eat.
  99. food:{hex:"#30D5C8",rgb:[48,213,200]},
  100. virus:{hex:"#800080",rgb:[128,0,128]},
  101. mycolor:{hex:"#0000FF",rgb:[0,0,255]},
  102. miniblob:{hex:"#0000FF",rgb:[0,0,255]},
  103. border:{hex:"#000000",rgb:[0,0,0]},
  104. sector:{hex:"#808080",rgb:[128,128,128]},
  105. label:{hex:"#0000FF",rgb:[0,0,255]},
  106. foodrainbow:false
  107. }
  108. };
  109. var zagardefaultcolor=zagar.color;var storage=localStorage.getItem("zagarchangecolor");if(storage){zagar.color=JSON.parse(storage)};
  110. /******************************************************************/
  111.  
  112. function appendskill(a){
  113. var elm=[];function sec(a,b){return a==b?"selected":""}function cek(a){return a?"checked":""}
  114. var ad=function(a){var s="";$.each(a.split("_"),function(i,w){s+=w.charAt(0).toUpperCase()+w.slice(1)+" "});return s.trim()};
  115. $.each(a,function(key,val){
  116. if(typeof(val)==="boolean"){
  117. elm.push('<label><input id="'+key+'" type="checkbox" style="margin-top:1px" '+cek(val)+'><span>'+ad(key)+'</span></label>')
  118. }else{
  119. var opt=[];
  120. if(key=="transparent"){
  121. for(i=10;i>0;i--){opt.push('<option '+sec(val,i/10)+'>'+ad(key)+': '+i/10+'</option>')}
  122. elm.push('<select id="'+key+'">'+opt.join("")+'</select>')
  123. }else{
  124. var d={"20":25, "normal":30, "30":35, "40":60, "auto":-1}
  125. $.each(d,function(ky,vl){
  126. opt.push('<option data='+vl+' '+sec(val,ky)+'>'+ad(key)+': '+ky+'</option>')
  127. })
  128. elm.push('<select id="'+key+'">'+opt.join("")+'</select>')
  129. }
  130. }
  131. })
  132. return elm.join("")
  133. };
  134. $("#mainPanel #options").append('<div id="zagarskill"><p>Zagar Skill</p>\
  135. <span id="colorsettings">Color Settings <i class="glyphicon glyphicon-cog"></i></span>\
  136. '+appendskill(zagar.skill)+'\
  137. </div>');
  138. $("#mainPanel .text-muted").append('<div style="border:2px solid #DFDFDF;border-radius:5px;margin-top:3px;">\
  139. <p style="background-color:#DFDFDF;margin:0px;">Zagar Key</p>\
  140. <span>Press <b>S</b> to start/stop movement</span><br>\
  141. <span>Press <b>M</b> to minimap show/hide</span><br>\
  142. <span>Press <b>F</b> to food show/hide</span><br>\
  143. <span>Press Hold <b>W</b> to rapid eject mass</span><br>\
  144. <span>Press <b>A</b> to double split</span><br>\
  145. <span>Press <b>D</b> to triple split</span><br>\
  146. <span>Press <b>R</b> to quadruple split</span><br>\
  147. </div>');
  148. function appendpicker(a){
  149. var elm=[];$.each(a,function(key,val){
  150. if(typeof(val)=="boolean"){
  151. elm.push('<span>'+key+' :<input type="checkbox" id="'+key+'" '+function(){return val&&"checked"}()+'></span>')
  152. }else{
  153. elm.push('<span>'+key+' :<input type="color" id="'+key+'" value="'+val.hex+'"></span>')
  154. }
  155. });return elm.join("")
  156. }
  157. $("body").append('<center><div id="zagarpicker">\
  158. <span class="button" id="close">&#10008;</span>'+appendpicker(zagar.color)+'\
  159. <div style="margin-top:5px;"><span class="button" id="default">Default</span><span class="button" id="ok">Ok</span></div></div>\
  160. </center>');
  161.  
  162. $("head").append("<style>\
  163. #options label{width:33%;}\
  164. #options #zagarskill{border:2px solid #DFDFDF;border-radius:5px;margin-top:2px; padding-left:3px;}\
  165. #options #zagarskill p{border-radius:5px;margin-left:-3px;margin-bottom:4px;background-color:#31B0D5;color:white;font-weight:bold;text-align:center;}\
  166. #options #zagarskill select{width:33%; border:0px; outline:none; -webkit-appearance:none; -moz-appearance:none; appearance:none;}\
  167. #options #zagarskill #colorsettings{display:inline-block;background-color:#E91D00;float:right;color:white; padding-left:6px;padding-right:6px; width:33%; cursor:pointer;}\
  168. #zagarpicker{position:relative; margin-top:5%; display:none; background-color:white; text-align:left; border-radius:5px; font-family:Thoma; width:280px; border:1px solid #808080; padding:28px 5px 10px 5px;}\
  169. #zagarpicker span{margin-left:10px; display:inline-block; white-space:nowrap; width:45%}\
  170. #zagarpicker input{float:right}\
  171. #zagarpicker .button{border-radius:3px; text-align:center; background-color:#C80815; color:white; padding:1px 0px 1px 0px; cursor:pointer;}\
  172. #zagarpicker #close{position:absolute;top:3px;right:3px;padding:0px;width:25px;}\
  173. </style>");
  174.  
  175. /******************************************************************/
  176.  
  177. $('#options #zagarskill').on('change', 'input', function(){
  178. zagar.skill[this.id]=this.checked;
  179. if(this.id=="mini_map"){
  180. $("#minimap").toggle()
  181. }else if(this.id=="zoom_out"){
  182. this.checked?zagar.zoomvalue=0.9:zagar.zoomvalue=1;
  183. }else if(this.id=="acid"){
  184. window.core.setAcid(this.checked);
  185. }else if(this.id=="interactiv_color"){
  186. $("#noSkins").prop("checked", this.checked);
  187. $("#noSkins").prop("disabled", this.checked);
  188. }
  189. });
  190. $('#options #zagarskill').on('change', 'select', function(){
  191. var val=this.value.replace(/^.*?: (.*?)$/,'$1'); zagar.skill[this.id]=val;
  192. })
  193. /******************************************************************/
  194.  
  195. var splittime=null, ejecttime=null, keydown=false;
  196. document.addEventListener("keydown", function(e){
  197. if(!zagar.myblob.isalive){return};
  198. switch (e.code){
  199. case 'KeyS': zagar.stopmovement=!zagar.stopmovement;break;
  200. case 'KeyM': zagar.skill.mini_map=!zagar.skill.mini_map; $("#minimap").toggle();break;
  201. case 'KeyF': zagar.skill.no_food=!zagar.skill.no_food;break;
  202. case 'KeyW': if(ejecttime)break;keytime("eject");break;//rapid eject mass
  203. case 'KeyA': if(splittime||keydown)break;keytime(1);break;//double split
  204. case 'KeyD': if(splittime||keydown)break;keytime(2);break;//triple split
  205. case 'KeyR': if(splittime||keydown)break;keytime(3);break;//quadruple split
  206. }
  207. }),document.addEventListener("keyup", function(t){
  208. keydown=false;clearInterval(ejecttime),ejecttime=null;
  209. });
  210. function keytime(j){
  211. if(j=="eject"){
  212. ejecttime=setInterval(function(){window.core.eject()},100);
  213. }else{
  214. keydown=true;var n=0;
  215. window.core.split(),splittime=setInterval(function(){
  216. window.core.split(),j==++n&&(clearInterval(splittime),splittime=null)
  217. },50);
  218. }
  219. };
  220. /******************************************************************/
  221.  
  222. $("#options #zagarskill #colorsettings").click(function(){
  223. $("#zagarbg").css("z-index","9998").show();$("#zagarpicker").css("z-index","9999").show()
  224. });
  225. $("#zagarpicker .button").click(function(){
  226. if(this.id=="ok"){
  227. $("#zagarpicker input").each(function(){
  228. if(this.type =="checkbox"){zagar.color[this.id]=this.checked
  229. }else{zagar.color[this.id]={hex:this.value,rgb:hexToRgb(this.value)}}
  230. });
  231. localStorage.setItem("zagarchangecolor", JSON.stringify(zagar.color))
  232. }else if(this.id=="default"){
  233. $("#zagarpicker input").each(function(){
  234. if(this.type=="checkbox"){this.checked=zagardefaultcolor[this.id]
  235. }else{this.value=zagardefaultcolor[this.id].hex}
  236. });return
  237. }
  238. $(this).parents("#zagarpicker").hide();
  239. $("#zagarbg").css("z-index","");if(zagar.isactive){$("#zagarbg").hide()};
  240. });
  241. function hexToRgb(h){var rgb=/^#(..)(..)(..)$/.exec(h);return [parseInt(rgb[1],16),parseInt(rgb[2],16),parseInt(rgb[3],16)]};
  242. /******************************************************************/
  243.  
  244. $("#zagararena span").click(function(){
  245. var conn, inputtext = $(this).siblings("input").val();
  246. if(/^ws:/.exec(inputtext)){conn=inputtext}else{conn="ws://live-arena-"+inputtext+".agar.io:80"};
  247. window.core.connect(conn);
  248. });
  249. zagar.connect=function(a){
  250. $("#zagararena input").val(a.replace(/^.*?arena-(.*?)\.agar.*?$/,'$1'));
  251. clearTimeout(zagar.bgtimeout);zagar.bgtimeout=setTimeout(function(){window.core.setFadeout(false),window.core.sendSpectate()}, 500);
  252. $("#zagarbg").show();
  253. };
  254. zagar.onPlayerSpawn=function(){
  255. zagar.myblob.isalive=true; zagar.isactive=true; zagar.reset();
  256. clearTimeout(zagar.bgtimeout);
  257. $("#zagarbg").hide();
  258. };
  259. zagar.onPlayerDeath=function(){
  260. zagar.myblob.isalive=false; zagar.reset();
  261. window.setTimeout(MC.showNickDialog, 500);
  262. };
  263. zagar.setFpsCap=function(){
  264. var cap=$('#zagarskill #fps').find(':selected').attr('data');
  265. return cap
  266. }
  267. $("button.btn-spectate").click(function(){
  268. $("#zagarbg").hide(); zagar.isactive=true;
  269. });
  270. zagar.reset=function(){zagar.stopmovement=false; zagar.myblob.size=[]; zagar.myblob.ismycolor=null;};
  271. /******************************************************************/
  272.  
  273. $("#canvas").click(function(){
  274. zagar.selectblob=!zagar.selectblob;
  275. zagar.selectblob?mm="max":mm="min";
  276. $("#zagardurum #selectblob").text("selectblob: "+mm)
  277. });
  278. setInterval(function(){
  279. $("#zagardurum #fps").text("fps: "+zagar.sayac); zagar.sayac=0;
  280. $("#zagardurum #piece").text("piece: "+zagar.myblob.size.length);
  281. $("#zagardurum #totalmass").text("totalmass: "+zagar.myblob.totalmass);
  282. },1000);
  283. /******************************************************************/
  284. `
  285. }
  286. ],
  287. "Map Border & Map Sector & Sector Label & Mini Map & Transparent & Attack Range & -zagarcanvas-oyunalanı-damga":[
  288. {bul:/((\w)=document\.getElementById\(\w\(\w\)\);)(.*?)(\w=\w\.getContext\("2d"\);)/i,
  289. degistir:`$1 $3 if($2.id=="canvas"){zagar.canvas=$4}else{$4};`
  290. },
  291. {bul:/0;\w\[\w\+...>>3\]=(\w);\w\[\w\+...>>3\]=(\w);\w\[\w\+...>>3\]=(\w);\w\[\w\+...>>3\]=(\w);/i,
  292. degistir:`$&
  293. if(Math.abs($3-$1)>14e3 && Math.abs($4-$2)>14e3){
  294. zagar.oyunalanı={minx:$1, miny:$2, maxx:$3, maxy:$4, width:$3-$1, height:$4-$2, xmerkez:($1+$3)/2, ymerkez:($2+$4)/2}
  295. };`
  296. },
  297. {bul:/\w+\(\d+,\w+\[\w+>>2\]\|0,\+\-(\+\w\[\w+\+\d+>>3\]),\+\-(\+\w+\[\w\+\d+>>3\])\)\|0;/i,
  298. degistir:`$&
  299. zagar.sayac++;
  300.  
  301. /*** Map Border ****/
  302. if(zagar.skill.map_border){
  303. zagar.canvas.lineWidth=20, zagar.canvas.globalAlpha=0.7, zagar.canvas.strokeStyle=zagar.color.border.hex;
  304. zagar.canvas.strokeRect(zagar.oyunalanı.minx, zagar.oyunalanı.miny, zagar.oyunalanı.width, zagar.oyunalanı.height);
  305. };
  306.  
  307. var parselw=zagar.oyunalanı.width/zagar.sector, parselh=zagar.oyunalanı.height/zagar.sector;
  308.  
  309. /*** Map Sector ****/
  310. if(zagar.skill.map_sector){
  311. zagar.canvas.beginPath();
  312. zagar.canvas.lineWidth=10, zagar.canvas.globalAlpha=0.6, zagar.canvas.strokeStyle=zagar.color.sector.hex;
  313. for(var zi=1; zi<zagar.sector; zi++){
  314. zagar.canvas.moveTo(zagar.oyunalanı.minx, zagar.oyunalanı.miny+parselw*zi);zagar.canvas.lineTo(zagar.oyunalanı.maxx, zagar.oyunalanı.miny+parselw*zi);//yatay
  315. zagar.canvas.moveTo(zagar.oyunalanı.minx+parselh*zi, zagar.oyunalanı.miny);zagar.canvas.lineTo(zagar.oyunalanı.minx+parselh*zi, zagar.oyunalanı.maxy);//dikey
  316. }
  317. zagar.canvas.stroke();
  318. };
  319.  
  320. zagar.canvas.textAlign="center", zagar.canvas.textBaseline="middle";
  321.  
  322. /*** Sector Label ****/
  323. if(zagar.skill.sector_label){
  324. zagar.canvas.font=parselw/2.8+"px Segoe Print", zagar.canvas.globalAlpha=0.07, zagar.canvas.fillStyle=zagar.color.label.hex;
  325. var bucw=parselw/2, buch=parselh/2;
  326. for(var sat=0;sat<zagar.sector;sat++){
  327. var label=String.fromCharCode(65+sat);
  328. for(var sut=0;sut<zagar.sector;sut++){
  329. zagar.canvas.fillText(label+(sut+1), zagar.oyunalanı.minx+parselw*sut+bucw, zagar.oyunalanı.miny+parselh*sat+buch);
  330. }
  331. }
  332. };
  333. /*** Damga ****/
  334. zagar.canvas.font="380px Segoe Print", zagar.canvas.globalAlpha=0.07, zagar.canvas.fillStyle='#808080';
  335. zagar.canvas.fillText("Zagar Core Mutation", zagar.oyunalanı.xmerkez, zagar.oyunalanı.ymerkez);
  336.  
  337. /*** Transparent ****/
  338. zagar.canvas.globalAlpha=zagar.skill.transparent;
  339.  
  340. /*** Attack Range ****/
  341. if(zagar.myblob.isalive && zagar.skill.attack_range){
  342. zagar.canvas.beginPath();
  343. zagar.canvas.lineWidth=1, zagar.canvas.strokeStyle=zagar.color.mycolor.hex, zagar.canvas.arc(zagar.myblob.x, zagar.myblob.y, zagar.myblob.selectsize+760, 0, 2*Math.PI);
  344. zagar.canvas.stroke();
  345. };
  346.  
  347. /*** Mini Map ****/
  348. if(zagar.skill.mini_map){
  349. zagar.minimap.kontrol+=zagar.minimap.fps;
  350. if(zagar.minimap.kontrol>=1){
  351. var playerx=$1, playery=$2; //spectate
  352. var minimap = document.getElementById("minimap");
  353. var ctx = minimap.getContext("2d");
  354. var mw=minimap.width/5, blurrylines=0.5;
  355. var leftrate = (playerx-zagar.oyunalanı.minx)/zagar.oyunalanı.width;
  356. var toprate = (playery-zagar.oyunalanı.miny)/zagar.oyunalanı.height;
  357. var minileft = Math.round(minimap.width * leftrate * 100) / 100;
  358. var minitop = Math.round(minimap.height * toprate * 100) / 100;
  359. ctx.beginPath();
  360. ctx.clearRect(0, 0, minimap.width, minimap.height);
  361. ctx.globalAlpha=0.5, ctx.lineWidth=0.5, ctx.strokeStyle=zagar.color.border;
  362. ctx.strokeRect(blurrylines+mw, blurrylines+mw, minimap.width-mw*2, minimap.height-mw*2);
  363. ctx.strokeRect(blurrylines+mw*2, blurrylines+mw*2, minimap.width-mw*4, minimap.height-mw*4);
  364. ctx.globalAlpha=1;
  365. ctx.fillStyle=zagar.color.miniblob.hex;
  366. ctx.arc(minileft, minitop, 5, 0, 2*Math.PI);
  367. ctx.fill();
  368. ctx.closePath();
  369. zagar.minimap.kontrol-=1;
  370. };
  371. };`
  372. }
  373. ],
  374. "Show Virus Mass && Show Others Mass -ismyblob":[
  375. {bul:/(if\(\w\[\w\+\d+>>0\]\|0\)\{\w=\w;return\})if\((\w\[\w\+\d+>>0\]\|0)\)\{(\w=\w;return)\}/i,
  376. degistir:`$1; var isvirus=$2; if(isvirus && !zagar.skill.virus_mass){$3};`
  377. },
  378. {bul:/\w=\w\[(\w)(\+\d+)?>>2\]\|0;\w=\w\[\d+\]\|0;\w=\w\[\d+\]\|0;.*?(\w)=\(\w\|0\)\!=\(\w\|0\);/i,
  379. degistir:`$& if(isvirus||zagar.skill.other_mass){$3=true}; if(!zagar.ismyblob){zagar.ismyblob=function($1){$& return $3}};`
  380. }
  381. ],
  382. "İnteraktif Color -myblob.size-myblob.totalmass-myblob.selectblob":[
  383. {bul:/(do\{(\w)=\+\w\[\(\w\[\w>>2\]\|0\)\+\d+>>2\];)(.*?while.*?;\w=(\w);)/i,
  384. degistir:`zagar.myblob.size=[];$1 zagar.myblob.size.push($2);$3 zagar.myblob.totalmass=$4;
  385. if(zagar.myblob.size.length>1){
  386. if(zagar.selectblob){zagar.myblob.selectsize=Math.max(...zagar.myblob.size)}else{zagar.myblob.selectsize=Math.min(...zagar.myblob.size)};
  387. }else{zagar.myblob.selectsize=zagar.myblob.size[0]};`
  388. },
  389. {bul:/\w\[\w>>2\]=\w\+\(\+\w\[(\w)\+\d+>>2\]-\w\)\*\w;/i, degistir:`var nodex=$&; var cellMemOffset=$1;`},
  390. {bul:/\w\[\w>>2\]=\w\+\w\*\(\+\w\[\w\+\d+>>2\]-\w\);/i, degistir:`var nodey=$&`},
  391. {bul:/(\w\[\w>>\d\]=\w\?\w:\w;)((\w).*?;)/i, degistir:`var nodesize=$1 $2 if(zagar.skill.interactiv_color){$3=true};`},
  392. {bul:/(\{(\w)=\w\[\w(\+\d+)?>>2\]\|0;)(\w=\w\}else\{\w=0;\w=0\})/i, degistir:`$1 if(zagar.skill.interactiv_color){$2=0};$4`},
  393. {bul:/(\w)=-86;(\w)=-86;(\w)=-86;(\w)=-1;(\w)=-1;(\w)=-1\}/i,
  394. degistir:`$&;
  395. var orjstroke=[$1,$2,$3], orjfill=[$4,$5,$6];
  396. if(nodesize<=20){
  397. if(!zagar.color.foodrainbow){[$1,$2,$3]=[$4,$5,$6]=zagar.color.food.rgb}
  398. }else if(zagar.canvas.lineJoin=="miter"){
  399. [$1,$2,$3]=[$4,$5,$6]=zagar.color.virus.rgb
  400. }else{
  401. var lc_ismyblob=false;
  402. if(zagar.myblob.isalive && !zagar.myblob.ismycolor){ //play start
  403. if(zagar.ismyblob(cellMemOffset)){zagar.myblob.ismycolor=""+$4+$5+$6+"";}
  404. };
  405. if(zagar.myblob.isalive && zagar.myblob.ismycolor==""+$4+$5+$6+""){ //less CPU: control from the same color
  406. if(zagar.ismyblob(cellMemOffset)){
  407. lc_ismyblob=true;
  408. [$1,$2,$3]=[$4,$5,$6]=zagar.color.mycolor.rgb;
  409. if(zagar.myblob.selectsize*0.97<nodesize && nodesize<zagar.myblob.selectsize*1.03){
  410. zagar.myblob.x=nodex; zagar.myblob.y=nodey;
  411. }
  412. }
  413. };
  414. if(!lc_ismyblob){ //others
  415. var mymass = Math.floor(zagar.myblob.selectsize * zagar.myblob.selectsize / 100), nodemass = Math.floor(nodesize * nodesize / 100);
  416. if(!zagar.myblob.isalive){mymass=1000};//spectate
  417. if (nodemass > mymass * 1.33*4){ [$1,$2,$3]=[$4,$5,$6]=zagar.color.big4x.rgb}
  418. else if (nodemass > mymass * 1.33*2){ [$1,$2,$3]=[$4,$5,$6]=zagar.color.big2x.rgb}
  419. else if (nodemass > mymass * 1.33){ [$1,$2,$3]=[$4,$5,$6]=zagar.color.big1x.rgb}
  420. else if (nodemass > mymass * 0.75){ [$1,$2,$3]=[$4,$5,$6]=zagar.color.similar.rgb}
  421. else if (nodemass > mymass * 0.75/2){ [$1,$2,$3]=[$4,$5,$6]=zagar.color.small1x.rgb}
  422. else if (nodemass > mymass * 0.75/4){ [$1,$2,$3]=[$4,$5,$6]=zagar.color.small2x.rgb}
  423. else { [$1,$2,$3]=[$4,$5,$6]=zagar.color.small4x.rgb}
  424. }
  425. };
  426. if(!zagar.skill.interactiv_color){[$1,$2,$3]=orjstroke, [$4,$5,$6]=orjfill;}
  427. `
  428. }
  429. ],
  430. "No Grid":[
  431. {bul:/(\w+\(\d+,\w\|0,50\.5,\.5\)\|0;)(\w+\(\d+,\w\|0\)\|0;)/i, degistir:`$1 if(!zagar.skill.no_grid){$2};`}
  432. ],
  433. "No Food":[
  434. {bul:/\}else\{(\w+)=\(\w\[\w\+\d+>>0\]\|0\)==0;/i, degistir:`$& if(!$1 && zagar.skill.no_food){break};`}
  435. ],
  436. "Zoom Out & Auto Zoom -zagarzoomvalue":[
  437. {bul:/;if\((\w)<1\.0\){/i, degistir:`;if($1<!zagar.skill.zoom_out|0){`},
  438. {bul:/(\w)=\w\*\+\w\(\.9,\+\w\);/i, degistir:`;if(zagar.skill.zoom_out){$1=zagar.zoomvalue};$& zagar.zoomvalue=$1;`},
  439. {bul:/(\w+\(\w\);\w=\w\[\w>>2\]\|0;)((\w\[\w>>3\])=\w;)/i, degistir:`$1 if(zagar.skill.auto_zoom){$2}else{$3=zagar.zoomvalue};`}
  440. ],
  441. "KeyS Stop":[
  442. {bul:/setTarget:function\((\w),(\w)\)\{/i,
  443. degistir:`$& if(zagar.stopmovement){var z=document.getElementById("canvas");$1=z.width/2, $2=z.height/2}`
  444. }
  445. ],
  446. "Fps":[
  447. {bul:/setFpsCap:function\((\w)\)\{/i,
  448. degistir:`$& $1=zagar.setFpsCap();`
  449. }
  450. ],
  451. "Connect":[
  452. {bul:/connect:function\((\w)\)\{/i,
  453. degistir:`$& zagar.connect($1);`
  454. }
  455. ],
  456. "OnPlayerSpawn":[
  457. {bul:/\w\.MC\.onPlayerSpawn\)/i,
  458. degistir:`$& zagar.onPlayerSpawn(),`
  459. }
  460. ],
  461. "OnPlayerDeath":[
  462. {bul:/\w\.MC\.onPlayerDeath\)/i,
  463. degistir:`$& zagar.onPlayerDeath(),`
  464. }
  465. ]
  466. };
  467.  
  468. var keyj=0, valj=0, isabet=0, bul;
  469. coretext = coretext.replace(/([,\/;])\n/gm,"$1");
  470. $.each(addSkill, function(key,obj){keyj++;
  471. $.each(obj, function(i,value){valj++; bul=false;
  472. if (value.bul.test(coretext)){isabet++; bul=true;
  473. coretext = coretext.replace(value.bul, value.degistir);
  474. }
  475. //console.log(keyj+"."+(i+1), key, bul);
  476. });
  477. });
  478. console.log("zagar isabet:",isabet+"/"+valj);
  479. $("#mainPanel h2:contains(Agar.io)").parent().html('<h2 style="font-family: Thoma">Zagar Core Mutation</h2><span style="font-family:Thoma; font-size:12px">Inject: ' + isabet + '/' + valj + '</span>');
  480. $("#mainPanel #nick").before('<div id="zagararena" style="margin-bottom:6px; border:2px solid #DFDFDF; border-radius:5px;"><span style="display:inline-block; border-radius:5px; color:white; font-weight:bold; padding:5px; background-color:#31B0D5; cursor:pointer;">Connect to arena: </span><input style="padding:3px; text-align:center; border:0px; outline:none;" size=20 value=""></div>');
  481. $("body").append('<canvas id="minimap" width="180" height="180" style="background-color:rgba(0,0,0,0.4); border:1px solid grey; right:10px; bottom:20px; position:absolute;"></canvas>');
  482. $("body").append('<div id="zagardurum" style="position:absolute; bottom:5px; right:5px; background-color:rgba(0,0,0,0.3); color:#ffffff; line-height:5px; padding-top:10px; padding-left:8px; padding-right:8px;"><table><tr><td id="fps"></td><td>&nbsp;</td><td>&nbsp;</td><td id="piece"></td><td>&nbsp;</td><td>&nbsp;</td><td id="totalmass"></td><td>&nbsp;</td><td>&nbsp;</td><td id="selectblob">selectblob: max</td></tr></div>');
  483. return coretext;
  484. }