Facebook
From Hot Hog, 1 Week ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 43
  1. // ==UserScript==
  2. // @name         Rozbudowane KtoTuJest ver. 4.3
  3. // @version      4.3
  4. // @description  wersja numer cztery-tri
  5. // @author       33
  6. // @match        http://telawel.margonem.pl/
  7. // @match        http://deimos.margonem.pl/
  8. // @grant        none
  9. // ==/UserScript==
  10. (function(d, _p, _nP, _r, _bM) {
  11.     let tmparr = new Array();
  12.     //elementy graficzne
  13.     let box = d.createElement("span");
  14.     box.id = "enepere123";
  15.     box.style = "position: absolute; background: rgba(0, 0, 0, 0.3); color: white; top: 0px; left: 0px; width: auto; height: auto; font-size: 13px";
  16.     d.body.appendChild(box);
  17.     let uciek = d.createElement("span");
  18.     uciek.innerHTML = "UCIECZKA";
  19.     uciek.style.fontWeight = "bold";
  20.     uciek.tip = "Naci┼Ťnij podczas walki, aby po walce automatycznie uciec na Kwieciste Przej┼Ťcie.";
  21.     //zmienne dla ucieczki
  22.     let isUcieczka = false;
  23.     let idZwoja;
  24.     window.hero.searchPath1 = function(a, t) {
  25.                 if (this.isBlockedSearchPath()) return this.blockedInfoSearchPath();
  26.                 for (var h = [], i = 128 & hero.opt ? 8 : 20, r = Math.max(0, Math.min(a, this.x) - i), s = Math.min(map.x - 1, Math.max(a, this.x) + i), o = Math.max(0, Math.min(t, this.y) - i), e = Math.min(map.y - 1, Math.max(t, this.y) + i), d = r - 1; s + 1 >= d; d++) {
  27.                     h[d] = [];
  28.                     for (var x = o - 1; e + 1 >= x; x++) h[d][x] = !(d >= r && s >= d && x >= o && e >= x) || isset(g.npccol[d + 256 * x]) || map.col && "0" != map.col.charAt(d + x * map.x) ? -2 : -1
  29.                 }
  30.                 h[this.x][this.y] = 0, b = -1, road = [];
  31.                 for (var c = {
  32.                     x: -1,
  33.                     y: -1,
  34.                     dist: 99
  35.                 }, y = 1; s - r + e - o + 3 > y; y++)
  36.                     for (var d = r; s >= d; d++)
  37.                         for (var x = o; e >= x; x++) {
  38.                             if (-1 != h[d][x] || h[d][x - 1] != y - 1 && h[d][x + 1] != y - 1 && h[d - 1][x] != y - 1 && h[d + 1][x] != y - 1 || (h[d][x] = y), h[a][t] > 0) {
  39.                                 d = s + 1;
  40.                                 break
  41.                             }
  42.                             c.dist2 = Math.abs(a - d) + Math.abs(t - x), h[d][x] == y && c.dist2 < c.dist && (c.x = d, c.y = x, c.dist = c.dist2)
  43.                         }
  44.                 if (c.hdist = Math.abs(a - hero.x) + Math.abs(t - hero.y), h[a][t] > 0 || c.dist < c.hdist) {
  45.                     h[a][t] < 0 && (a > c.x ? b = 2 : a < c.x ? b = 1 : t > c.y ? b = 0 : t < c.y && (b = 3), a = c.x, t = c.y), road[0] = {
  46.                         x: a,
  47.                         y: t
  48.                     };
  49.                     for (var f = h[a][t] - 1, l = a, m = t; f > 0; f--) h[l][m - 1] == f ? m-- : h[l][m + 1] == f ? m++ : h[l - 1][m] == f ? l-- : h[l + 1][m] == f ? l++ : f = 0, f && (road[h[a][t] - f] = {
  50.                         x: l,
  51.                         y: m
  52.                     })
  53.                 }
  54.                 road.length > 1 && null == g.playerCatcher.follow && $("#target").stop().css({
  55.                     left: 32 * a,
  56.                     top: 32 * t,
  57.                     display: "block",
  58.                     opacity: 1
  59.                 }).fadeOut(1e3)
  60.             };
  61.     uciek.addEventListener("click", function() {
  62.         if (g.battle) {
  63.             if (!isUcieczka) {
  64.                 for (let i in g.item) {
  65.                     if (g.item[i].loc == "g" && g.item[i].name == "Zw├│j teleportacji na Kwieciste Przej┼Ťcie") {
  66.                         isUcieczka = true;
  67.                         idZwoja = i;
  68.                         uciek.style.color = "green";
  69.                         uciek.innerHTML = "UCIECZKA AKTYWNA";
  70.                         break;
  71.                     }
  72.                 }
  73.             } else {
  74.                 uciek.style.color = "white";
  75.                 uciek.innerHTML = "UCIECZKA";
  76.                 isUcieczka = false;
  77.             }
  78.         }
  79.     });
  80.     box.appendChild(uciek);
  81.     let dane = d.createElement("span");
  82.     box.appendChild(dane);
  83.     let style = d.createElement("style");
  84.     style.innerHTML = ".adison9711:hover{background:#686868}";
  85.     d.head.appendChild(style);
  86.     //zmienna numeracji
  87.     let number;
  88.     //zmienne dla poscigu
  89.     let oid = 0;
  90.     let ox;
  91.     let oy;
  92.     let hx;
  93.     let hy;
  94.     let walczacy = [];
  95.     //anulowanie poscigu
  96.     d.querySelector("#nick").addEventListener("click", function() {
  97.         if (oid != 0) {
  98.             oid = 0;
  99.             message(`Przerwa┼ée┼Ť po┼Ťcig!`);
  100.         }
  101.     });
  102.     //zmienne dla hero/tytan i syrena
  103.     let audio = new Audio();
  104.     audio.src = "";
  105.     let szczur = d.createElement("span");
  106.     szczur.id = "adison_zarcik";
  107.     szczur.style = "position: absolute; background-color: blue; top: 100px; right: 100px; color: white; font-size: 35px; display: none; text-align: center; padding: 10px; cursor: pointer";
  108.     szczur.innerHTML = "Wy┼é─ůcz syren─Ö";
  109.     d.body.appendChild(szczur);
  110.     szczur.addEventListener("click", function() {
  111.         szczur.style.display = "none";
  112.         audio.pause();
  113.     });
  114.  
  115.     //stworzenie spana dla osoby
  116.     function wyjebPodswietlenie() {
  117.         for (let i in g.other) {
  118.             d.querySelector(`#other${i}`).style.backgroundColor = "";
  119.         }
  120.     }
  121.  
  122.     function createOtherSpan(nr, id, nick, relacja, lvl, profa, prawa) {
  123.         //caly div
  124.         let sp = d.createElement("span");
  125.         sp.classList.add("adison9711");
  126.         sp.innerHTML = `<br>${nr}. `;
  127.         //nick i relacja(style tez)
  128.         let nickname = d.createElement("span");
  129.         nickname.innerHTML = `${nick}`;
  130.         nickname.tip = "Naci┼Ťnij, aby napisa─ç do tej osoby.";
  131.         nickname.addEventListener("click", function() {
  132.             chatTo(`${nick}`);
  133.         });
  134.         nickname.style.fontWeight = "bold";
  135.         if (prawa > 0) {
  136.             nickname.style.color = "gold";
  137.         }
  138.         switch (relacja) {
  139.             case "fr":
  140.                 nickname.style.color = "green";
  141.                 break;
  142.             case "en":
  143.                 nickname.style.color = "red";
  144.                 break;
  145.             case "cl":
  146.                 nickname.style.color = "lightblue";
  147.                 break;
  148.         }
  149.         sp.appendChild(nickname);
  150.         //lvl i profa
  151.         let lvlpr = d.createElement("span");
  152.         lvlpr.innerHTML = ` ${lvl}${profa} `;
  153.         sp.appendChild(lvlpr);
  154.         //odleglosc
  155.         let odle = d.createElement("span");
  156.         let licz = Math.round(Math.sqrt(Math.pow(g.other[id].x - hero.x, 2) + Math.pow(g.other[id].y - hero.y, 2)));
  157.         odle.innerHTML = `[Odl.: ${licz}] `;
  158.         odle.tip = "Naci┼Ťnij, aby podej┼Ť─ç."
  159.         odle.addEventListener("click", function() {
  160.             window.hero.searchPath1(g.other[id].x, g.other[id].y);
  161.         });
  162.         sp.appendChild(odle);
  163.         //poscig
  164.         let forposcig = d.createElement("span");
  165.         forposcig.innerHTML = `[ATAKUJ]`;
  166.         forposcig.tip = "Naci┼Ťnij, aby aktywowa─ç po┼Ťcig."
  167.         forposcig.addEventListener("click", function() {
  168.             if (!g.battle) {
  169.                 if (map.pvp == 2) {
  170.                     oid = id;
  171.                     message(`Rozpocz─Öto po┼Ťcig za: ${g.other[id].nick}!`);
  172.                 } else {
  173.                     message(`Nie jeste┼Ť na czerwonej mapce!`);
  174.                 }
  175.             } else {
  176.                 message(`Trwa walka!`);
  177.             }
  178.         });
  179.         sp.appendChild(forposcig);
  180.         //kolorek dla postaci po najechaniu
  181.         sp.addEventListener("mouseover", function() {
  182.             wyjebPodswietlenie();
  183.             d.querySelector(`#other${id}`).style.backgroundColor = "rgb(255, 102, 0, .65)";
  184.             d.querySelector(`#other${id}`).style.borderRadius = "7px";
  185.         });
  186.         sp.addEventListener("mouseleave", function() {
  187.             if (g.other[id]) d.querySelector(`#other${id}`).style.backgroundColor = "";
  188.         });
  189.         dane.appendChild(sp);
  190.     }
  191.     //kreacja div'a
  192.     function createDiv() {
  193.         number = 1;
  194.         dane.innerHTML = "";
  195.         for (let i in g.other) {
  196.             let litera = "";
  197.             if (number < 10) litera = `0${number}`;
  198.             else litera = number;
  199.             let o = g.other[i];
  200.             if (o.nick === undefined) continue;
  201.             createOtherSpan(litera, o.id, o.nick, o.relation, o.lvl, o.prof, o.rights);
  202.             number++;
  203.         }
  204.     }
  205.  
  206.     function createMessage(id) {
  207.         let npc = g.npc[id];
  208.         if (npc.wt > 99) {
  209.             //tytan
  210.             audio.play();
  211.             szczur.style.display = "block";
  212.             message(`<center>Tytan: ${npc.nick} ${npc.lvl}lvl<br><img src=${npc.icon} /><br>[${npc.x}, ${npc.y}]</center>`);
  213.         } else {
  214.             //heros
  215.             let odl = Math.sqrt(Math.pow(Math.abs(hero.x - npc.x), 2)) + Math.sqrt(Math.pow(Math.abs(hero.y - npc.y), 2));
  216.             if (!g.battle && odl > 8) {
  217.                 mAlert(`<center>Heros:<br><img src=${npc.icon} /><br><b>${npc.nick}</b> ${npc.lvl}lvl<br>${map.name}(${npc.x},${npc.y})<br>Czy chcesz podej┼Ť─ç?</center>`, 2, [function() {
  218.                     if (miniMapPlus) {
  219.                         miniMapPlus.searchPath(npc.x, npc.y);
  220.                     } else {
  221.                         window.hero.searchPath1(npc.x, npc.y);
  222.                     }
  223.  
  224.                 }, function() {
  225.                     return false;
  226.                 }]);
  227.             } else {
  228.                 message(`<center>Heros: ${npc.nick} ${npc.lvl}lvl<br><img src=${npc.icon} /><br>[${npc.x}, ${npc.y}]</center>`);
  229.             }
  230.         }
  231.     }
  232.     //funkcje podstawowe
  233.     parseInput = function(a, b, c) {
  234.         _p(a, b, c);
  235.         //dodanie do tablicy walczacych graczy
  236.         if (a.hasOwnProperty("emo")) {
  237.             for (let i in a.emo) {
  238.                 if (a.emo[i].name == "battle" && !walczacy.includes(a.emo[i].source_id)) {
  239.                     walczacy.push(a.emo[i].source_id);
  240.                 } else if (a.emo[i].name != "battle" && walczacy.includes(a.emo[i].source_id)) {
  241.                     walczacy.splice(walczacy.indexOf(a.emo[i].source_id), 1);
  242.                 }
  243.             }
  244.         }
  245.         d.querySelector("#enepere123").style.width = d.querySelector("#centerbox").style.left;
  246.         createDiv();
  247.     }
  248.     newNpc = function(e) {
  249.         _nP(e);
  250.         for (let i in e) {
  251.             if (e[i].wt > 79 && map.mode != 5 && g.worldname != "experimental" && !tmparr.includes(e[i].id)) {
  252.                 createMessage(i);
  253.                 tmparr.push(e[i].id);
  254.                 break;
  255.             }
  256.         }
  257.     }
  258.     hero.run = function() {
  259.         if (oid != 0) {
  260.             if (g.other[oid]) {
  261.                 ox = g.other[oid].x;
  262.                 oy = g.other[oid].y;
  263.                 hx = hero.x;
  264.                 hy = hero.y;
  265.                 if (!g.battle) {
  266.                     if (Math.abs(hx - ox) <= 2 && Math.abs(hy - oy) <= 2) {
  267.                         if (!walczacy.includes(Number(oid))) _g(`fight&a=attack&id=${oid}`);
  268.                     }
  269.                     if (hx != ox || hy != oy) {
  270.                         window.hero.searchPath1(ox, oy);
  271.                     }
  272.                 } else {
  273.                     oid = 0;
  274.                     message(`Jest walka!`);
  275.                 }
  276.             }
  277.         }
  278.         _r.apply(this, arguments);
  279.     }
  280.  
  281.     let chudsada;
  282. battleMsg = function(a, b) {
  283.     let ret = _bM(a, b);
  284.     if (a.indexOf("winner=") > -1) {
  285.         _g("fight&a=quit");
  286.         if (isUcieczka) {
  287.             _g(`moveitem&st=1&id=${idZwoja}`);
  288.             isUcieczka = false;
  289.             uciek.style.color = "white";
  290.             uciek.innerHTML = "UCIECZKA";
  291.         }
  292.         chudsada = setInterval(function(){
  293.             if(g.battle){
  294.                 _g("fight&a=quit");
  295.             } else {
  296.                 clearInterval(chudsada);
  297.             }
  298.         }, 100);
  299.     }
  300.     return ret;
  301. }
  302. })(document, parseInput, newNpc, hero.run, battleMsg)