Facebook
From Silly Goat, 1 Year ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 129
  1. // ==UserScript==
  2. // @name         Nie ukrywa mob√≥w na red
  3. // @namespace    http://tampermonkey.net/
  4. // @version      1.0
  5. // @description  Nie ukrywa mob√≥w na red lol
  6. // @author       nieznany lol
  7. // @match        http://brutal.margonem.pl/
  8. // @match        http://gefion.margonem.pl/
  9. // @match        httpw://gefion.margonem.pl/
  10. // @match        http://jaruna.margonem.pl
  11. // @match        https://jaruna.margonem.pl
  12. // @match        http://husaria.margonem.com
  13. // @match        http://*.margonem.com/
  14. // @match        https://*.margonem.com/
  15. // @match        http://steamrealm.margonem.com/
  16. // @match        http://tarhuna.margonem.pl
  17. // @grant        none
  18. // ==/UserScript==
  19.  
  20. (() => {
  21.     new class oooooooooooooooooooo {
  22.         constructor() {
  23.             this.interface = typeof window.Engine === "object" ? "ni" : "si";
  24.             this.npcsOutOfView = new Array();
  25.             this.initAjaxParser();
  26.         }
  27.  
  28.         get hero() {
  29.             return this.interface === "ni" ? window.Engine.hero.d : window.hero;
  30.         }
  31.  
  32.         get map() {
  33.             return this.interface === "ni" ? window.Engine.map.d : window.map;
  34.         }
  35.  
  36.         get npcs() {
  37.             return this.interface === "ni" ? this.npcsOnNewInterface : window.g.npc;
  38.         }
  39.  
  40.         get npcsOnNewInterface() {
  41.             const newNpcs = new Object();
  42.  
  43.             for (const [id, npc] of Object.entries(window.Engine.npcs.check())) {
  44.                 newNpcs[id] = npc.d;
  45.             }
  46.  
  47.             return newNpcs;
  48.         }
  49.  
  50.         npcInOutOfRange({x:hx, y:hy}, {x, y}) {
  51.             return Math.abs(x - hx) > this.map.visibility || Math.abs(y - hy) > this.map.visibility;
  52.         }
  53.  
  54.         initAjaxParser() {
  55.             const self = this;
  56.             const _ajax = window.$.ajax;
  57.  
  58.             window.$.ajax = (...args) => {
  59.                 if (args[0].url.indexOf("/engine?t=") > -1) {
  60.                     const oldsucc = args[0].success;
  61.                     args[0].success = (...arg) => {
  62.                         const canEmit = typeof arg[0] === "object" && arg[0] !== null && arg[0].e === "ok";
  63.  
  64.                         if (canEmit) {
  65.                             arg[0] = self.parseInput(arg[0]);
  66.                         }
  67.  
  68.                         return oldsucc.apply(this, arg);
  69.                     };
  70.                 }
  71.  
  72.                 return _ajax.apply(this, args);
  73.             }
  74.         }
  75.  
  76.         parseInput(data) {
  77.             if (this.map.visibility !== 0) {
  78.                 if (data.hasOwnProperty("npc") && data.npc !== undefined) {
  79.                     for (const [id, npc] of Object.entries(data.npc)) {
  80.                         if (npc.hasOwnProperty("del") && npc.del === 1 && this.npcs[id] !== undefined) {
  81.                             if ([2, 3].includes(this.npcs[id].type) && this.npcInOutOfRange(this.hero, this.npcs[id])) {
  82.                                 this.npcsOutOfView.push(id);
  83.                                 delete data.npc[id];
  84.                             }
  85.                         }
  86.                     }
  87.                 }
  88.             }
  89.  
  90.             if (data.hasOwnProperty("h") && data.h.hasOwnProperty("x") && data.h.hasOwnProperty("y")) {
  91.                 const npcsToRemove = new Array();
  92.  
  93.                 for (const [id, npc] of Object.entries(this.npcs)) {
  94.                     if (this.npcsOutOfView.includes(id) && !this.npcInOutOfRange(data.h, npc)) {
  95.                         this.npcsOutOfView.splice(this.npcsOutOfView.indexOf(id), 1);
  96.  
  97.                         if ((data.hasOwnProperty("npc") && data.npc[id] === undefined) || !data.hasOwnProperty("npc")) {
  98.                             npcsToRemove.push(id);
  99.                         }
  100.                     }
  101.                 }
  102.  
  103.                 if (npcsToRemove.length > 0) {
  104.                     if (!data.hasOwnProperty("npc")) {
  105.                         data.npc = new Object();
  106.                     }
  107.  
  108.                     for (const id of npcsToRemove) {
  109.                         data.npc[id] = {
  110.                             del: 2
  111.                         }
  112.                     }
  113.                 }
  114.             }
  115.  
  116.             return data;
  117.         }
  118.     }
  119. })()